dellblorin日記

袖擦り合うも他生の縁

Surfsharkの使用感と設定方法

Surfsharkのトップ画像

VPN(Virtual Private Network)を導入した。この記事を訪れた人はVPNの概要は既知だろうから説明は省く。格安VPNのSurfSharkの導入や使用感を紹介する。

VPNは沢山あるが有名所は以下の3つだ。

NordVPN
ExpressVPN
Surfshark

この中で最も安いのがSurfsharkだ。2年契約だと6,585円、月額274円(2021年8月時点)。これなら使えなくても大した損にならない。

速度は十分出る

VPNは世界中のノードを経由するためどうしても回線速度が落ちる。通常のネット接続時とVPN使用時の速度の比較をしてみた。回線はWiMAX2+、Surfsharkは最速サーバーを自動選択、通信プロトコルはWireGuardを選択している。

VPN無し・AM7時
SurfSharkの速度チェックVPN無し・AM7時

VPN有り・AM7時
SurfSharkの速度チェックVPN有り・AM7時

VPN無し・PM12時
f:id:dellblorin:20210830171036p:plain

VPN有り・PM12時
f:id:dellblorin:20210830171100p:plain

VPN無し・PM5時
f:id:dellblorin:20210830171128p:plain

VPN有り・PM5時
f:id:dellblorin:20210830171148p:plain

計測する時間帯で変動するがDOWN速度で大体20%程度減速する印象(私の環境では最低で80Mbpsだった)。しかしこれだけ速度が出ていれば困らないだろう。UP速度はVPN経由だと大きく落ち込んだ。

そこそこブロックされるサイトがある

f:id:dellblorin:20210829111546p:plain

調べ物などでGoogle検索からサイトを開いていくと、10~15サイトに1サイトが非表示になる印象だ。単なる個人ブログでもブロックされるため、大本のブログサービスがVPNでのアクセスを禁じているのだろう。Surfsharkアプリは「静的IP」から好きな国の好きなサーバーを選択できる。当初ブロックが多く使いにくいと感じたが、ブロックされにくい日本サーバーに固定することで問題は解決した。

ちなみにWordPressの管理画面に入れなかった。ネットで調べるとレンタルサーバー会社が海外からのアクセスを弾いているのではという話。後述するVPNアプリのバイパス機能によって特定サイトを迂回できる。この機能で無事管理画面にも入ることができた。

Surfsharkの設定

SurfsharkVPNを使う上で、取り敢えずやっておきたい設定を紹介する。以下はWindows版での説明。

スタートアップ起動

Surfsharkのスタートアップ設定

SurfSharkアプリを起動し、左下の①「設定(歯車)」をクリック。

Surfsharkのスタートアップ設定2

スクロールし②「接続性」をクリック。

Surfsharkのスタートアップ設定3

③「Windowsで起動する」をONにすると、Windowsを立ち上げた時に自動でアプリが立ち上がる。

④「起動時にアプリを最小化する」にチェックすると、その名の通り画面中央に表示されずタスクバーにしまった状態になる。私は結局クリックから表示させバツボタンを押して消してしまうためチェックしていない。消しても右下のタスクトレイの常駐アプリには残っているため、後から呼び出す時はそこを利用している。

⑤「自動接続」をONにすると起動後、自動でVPNネットワークに接続してくれる。ON必須。

Kill Swich

Surfsharkのキルスイッチの設定

①ONにすると、何かのきっかけでVPNが切断した場合、自動でインターネットの接続を遮断。VPNはセキュリティ目的で使用するためONを推奨。

プロトコル

①「詳細設定」をクリック。

Surfsharkのプロトコルの設定

②プルダウンメニューをクリックすると選択可能なプロトコル一覧が表示。「自動」でも問題無いが速度の早い「WireGuard」がおすすめ。Wireguardは最新のプロトコルのため最速通信が特徴。

Wireguardでも問題無いだろうが安全性第一なら「OpenVPN」がよい。OpenVPNは多くのVPNが採用する高安全性のプロトコルTCP版はデータが正しい順序で送信されることを保証するのに対し、UDP版はよりデータを高速に送信することに重きを置いている。

特定のサイトやアプリをバイパス(迂回)できる

サイトによってはVPN経由のアクセスを弾く所もある。いちいちVPNアプリを終了させるのも面倒臭く、キルスイッチをONにしているとネット自体に繋がらなくなる。そこで特定のサイト(URL)やアプリケーションをホワイトリストとして登録することで、VPN非経由でアクセスできるようになる。

Surfsharkのスプリットトンネリングの設定


「詳細設定」→①「Whitelister」をクリック。

Surfsharkのスプリットトンネリングの設定2

②「VPNをバイパスする(アプリ)」でバイパスするアプリを指定、③「VPNをバイパスする(WEBサイト/IPアドレス)」でサイトを指定する。

Surfsharkのアプリケーションのバイパス設定

アプリケーションのバイバスは③「VPNをバイパスする」をON。下に現れた「アプリを追加」をクリックしてアプリケーションを登録。④更に下には代表的なアプリケーションが一覧で表示される。

SurfsharkのサイトURLのバイパス設定

サイト(URL)のバイパスは⑤「VPNをバイパスする」をON。下に現れた⑥「ウェブサイトまたはIPアドレスを追加する」をクリック。

SurfsharkのサイトURLのバイパス設定2

現れたポップアップウィンドウにURLまたはIPを入力し「追加」をクリック。

Linux版Surfsharkアプリの使い方

Surfsharkは様々なデバイス毎に専用アプリを提供している。

私はWindows版(デスクトップ)、Android版(スマホ)、Linux版(ノートPC)を使っている。Android版はWindows版と同じくGUIアプリケーションであり設定項目もほとんど同じだ。Windows版の使い方でそのままAndroid版も使えるため非常に使いやすい。

Linux版はGUI版が提供されておらずCUI版のみ。公式サイトにダウンロードからインストール方法が分かりやすく紹介されている。

surfshark.com


非公式GUIクライアントは有志によりGitHubで公開されている。

github.com

公式サイトの説明に補足する形で使い方を備忘録として記録。Linux版はDebianUbuntu系のみで下記はLinux Mintでの説明。

Linux版Surfsharkの起動

f:id:dellblorin:20210828170433p:plain

端末を起動。

sudo surfshark-vpn

と入力。SurfSharkで登録したメールアドレス、パスワードが求められるため入力しエンター。

f:id:dellblorin:20210828170507p:plain

選択できるノードの一覧が表示。①エンターを押し送っていく。最終ページに到達すると選択するノード番号を求められる。入力してエンター。日本は「43」。

f:id:dellblorin:20210828172029p:plain

Linux版の通信プロトコルOpenVPNのみ。②OpenVPNTCPUDPがあるためどちらか選ぶ。UDPの方が高速のためそのままエンター(デフォルトではUDP)。しばらくしてSurfsharkが起動する。

他のコマンド

f:id:dellblorin:20210828172044p:plain

③ヘルプの表示。各種コマンドを確認できる。

sudo surfshark-vpn help

Surfsharkの終了

sudo surfshark-vpn down

現在の接続ステータスの表示。

sudo surfshark-vpn status

マルチポップロケーションをON(VPNを二重にすることで速度を犠牲にして安全性を大幅向上)。

sudo surfshark-vpn multi

クライアントからログアウト。

sudo surfshark-vpn forget

SurfSharkをアンインストール。

sudo apt-get remove surfshark-vpn

幻の近代アイドル史と松旭斎天勝


日本のアイドルを「若い男性を中心に、大衆が熱狂的に支持する人物」という定義のもと、明治時代まで遡った書籍。本書のレビューには明日待子(表紙の写真の人物)を取り上げるものが多い。戦争に絡めたエピソードや出版当時、本人が存命だったのもあったかもしれない。ちなみに97歳でテレビ番組「バク報フライデー」に出演している。

www.buzzfeed.com

だが、私が最も興味を引かれたのは女流奇術師・松旭斎天勝(しょうきょくさいてんかつ)である。大正7年に雑誌「女の世界」の推奨すべき新しい女という読者投票で、松井須磨子、森律子と並んで松旭斎天勝が選ばれている。当時の人気は天勝が一番だったらしい。

松旭斎天勝のサロメ

天勝の人気は何といってもその容姿の良さで、「美人」「愛嬌がある」「肉感的」「ひそかに人魚の肉を食べている」と表現されている。天勝は美人だが頭は悪いという評価がされていたようだが、彼女のエピソードを見ると賢く逞しいのが分かる。天勝は雑誌で「男を喜ばす手品的操縦法」と題してこう語っている。

之は術という程の事もありますまいが、ただ眼と眼と合いさえすればそれでよいとはいえませんの。先ず妾(わたし)の方からアノ人と目星をつけた方を、演芸中に凝っと注目するのです。(中略)処女が秋波を送る様な風に顔面も挙動も普通にして、それに少し真面目という様な気分を加えて、注目した方が一層効果がある様です。こうすれば、此方の注目が浮薄なものでなくて誠実なものだという事が先方に通じるわけなんですの。そうして、此の注目を二回続ける所に妙味があるんです。最初の一回でも(中略)まだ先方の心を奪ってしまうことは出来ません。
第二回目に今度は、奇術の種類に依って、観客席から何かを拝借物を致します時に、それをお貸し下さるお客様の方へ歩を進めながら、視線を先方の顔へ注ぐのです。(中略)こうなるともう占めたもので、先方では「は丶ア、彼女俺に意(こころ)があるんだね」と思い込んでしまいなさるのです。そうして其翌日も其翌々日も、同じ桟敷に来て見物して下さる様になるのです。(女の世界・大正4年5月)

さらに天勝の舞台を見た者の多くが、天勝が笑うと口元がキラキラと光ったと印象深く語っている。実は天勝は欧米巡業した際、実際に義歯にダイヤを入れていたというのだから恐れ入る。

彼女は自分の人気がその容姿と肉体にあることをはっきり自覚しておりそれを存分に活用した。さらに天勝一座の若い女弟子にもセクシーさを求めた。これについて天勝はこう語っている。

男の方で、ほんとに演技を観るために演技場にお入りになる方が幾人ありましょう。技術上の事をお尋ねしても一向解っていなさらない方が多う御座います。その癖大抵の方が、女弟子の名前や顔はよく覚えていらっしゃいます。こんな塩梅ですから、万事色気のタップリあるのが大いに受けるわけですの。(女の世界・大正4年5月)

さらに天勝は広告女王であり様々な商品とタイアップしている。インタビュー等でも全然違うことを聞かれていたのに、途中からタイアップしている商品の宣伝にすり替わったりする。

天勝はスキャンダル女王でもあり、多くのゴシップ記事が書かれたようだ。40を過ぎた天勝は「婦人公論」で自分の男性遍歴を赤裸々に告白する「天勝恋ざんげ」という連載を行う。その中には伊藤博文など大物政治家の名前が沢山登場する。今でも往年の有名女優が男性遍歴などの暴露本を出版したりするが、天勝はこの時期すでに先鞭をつけている。

松旭斎天勝は10代初めに人気アイドルになった。ほとんどのアイドルはその後良くて結婚引退、大抵は短い絶頂期を経験した後、長い不人気時代が続くだけだ。だが天勝は持ち前の利に聡い賢さと私生活さえネタとして提供する逞しさで、引退する50歳まで第一線で活躍し続けた。だが今や彼女の名は忘れられている。そう考えると松旭斎天勝こそ、書名通り幻の近代アイドルと言えるだろう。

萩焼の目止め方法

萩焼の徳利を購入したがこれが漏れる。萩焼が漏れる器なのは知っていた。中に入れた液体が染み込むことで独特の風合いに変化し、これを萩の七化けとして楽しむ。分かってはいたものの使ってみると面倒臭い。

漏れるといっても置いた所に三日月程度の輪染みが出来る程度だが、問題は胴体部分も漏れること。入っているのが清酒だから触るとベタつく。お猪口に酒を注ぐ度に手がベタつく。

使い続けていけば茶渋が陶器の細かな隙間に埋まっていき漏れなくなる。だが酒で止まるか分からなかったし、手をベタつかせながら使うのも嫌気が差してしまった。無粋だとは思ったが土鍋でいう目止めを施すことにした。

ネットで検索すると米の研ぎ汁に全体を漬けて、弱火で20分煮込み半日から1日放置せよとのこと。やってみたが全く意味無し。そこで小鍋に200mlの水と小さじ3倍の片栗粉を溶かし沸騰させたものを徳利に注ぎ、そのまま1日放置した。すると見事漏れが止まった。水溶き片栗粉の濃度は障子を貼る糊を少し水っぽくした程度がいいらしい。

Twitchのシステムと収益の相場を調べてみた

サブスクライブ

視聴者に配信チャンネルに入会してもらう時の会費。月額料金。ストリーマーはサブスクライブの7割を受け取り、3割をTwitchが取る。

料金プランはストリーマーが選択可能。
・4.99ドル(約510円)
・9.99ドル(約1,100円)
・24.99ドル(約3,300円)

ほとんどのストリーマーは4.99ドルプランを選択している。スマホからの入会は割増料金になっており750円かかる(恐らく1.5倍)。

視聴者側の特典。
・ストリーマーが設定したオリジナルスタンプが使用可能(チャット欄で表示できる)。
・バッジが付く(チャット欄で発言した時に、ユーザー名の頭に表示)。
・そのチャンネル動画での広告の非表示。
・ストリーマーが設定したサブスク会員限定動画を視聴できる。

Bits(ビッツ)

投げ銭。視聴者がTwitchから有料でビッツを購入、配信者にプレゼントする。
ビッツは100%ストリーマーの収益となる。
ビッツざっくり考えて「1bits = 1円」。

Amazon Blacksmith

Amazonの商品リンクを自分の配信ページに貼り付け、視聴者が購入すると収益になる。一般的なアフィリエイトと同じ。
取り分は平均で購入金額の約10%。

広告配信

ストリーマーは配信画面やアーカイブ動画に広告を貼ることができる。

ゲーム販売

配信中のゲームやゲーム内の課金コンテンツを視聴者が購入すると、購入金額の5%が収益になる。
対応ゲーム作品のみ可能で、現在対応ゲームは非常に少ない。

サブスク会員数と収益の相場

或るストリーマーA氏をサンプルにチャンネル登録者数、サブスク会員数における収益の相場を計算する。A氏のチャンネルは2020年10月現在、チャンネル登録者数3,100人。A氏はサブスク会員のみが視聴できるサブスク限定動画を公開しており再生回数は30~50回。直近の自作小説公開動画は110回程度だが、これは特殊な事例なので省く(恐らく小説読みたさに当月だけ一時的に会員が増えたと思われる)。

お金を払っている以上、サブスク会員限定動画は一応見ておこうと考えるのが人情だろう。サブスク会員の9割程度が視聴したとして、A氏チャンネルのサブスク会員数は多くて50人程度だろう。A氏チャンネルのサブスクプランは4.99ドルを採用しているため50人 × 510円 = 25,500円。7割がストリーマーの取り分なので25,500円 × 0.7 = 17,850円となる。ここにビッツの収益も足され、A氏の月の収益はおおよそ2万~2万5千円前後と見積もられる。

月間収益をチャンネル登録者数で割った数字を「1登録者あたり利益」と定義すると、A氏モデルでは25,000円 ÷ 3,100人 = 8円となる。TwitchではAmazonプライム会員は、特典として月に1チャンネル無料でサブスク登録することができる。この登録では半額扱いで収益は半額に対する7割になるが、今回は全てのサブスク会員が満額払っている前提で計算した。

チャンネル登録者数3,100人でサブスク会員数が50人と仮定すると、サブスク会員率は50人 ÷ 3,100人 × 100 = 1.61%となり、100人あたり平均1.6人がサブスク登録してくれることになる(A氏はお世辞にも人気ストリーマーとは言えないし、熱狂的ファンを持つストリーマーでもないため、もっと人気の高いストリーマーの場合、会員率は上昇するだろうことに注意)。

A氏のチャンネルの分析の結果、以下となる。

・1登録者あたり利益 = 約8円
・サブスク会員率 = 約1.6%

このA氏モデルを正しいと仮定し、月20万円(一人暮らしなら何とか生活可能な金額)の収益をTwitchで稼ごうとした場合の試算が以下だ。

・必要チャンネル登録者数 = 2万5千人
・サブスク会員数 = 400人(収益142,800円)

日本人ストリーマーとして人気のfps_shaka氏のチャンネル登録者数は340,657人(調査日時点)。予想月間収益は2,725,256円。予想サブスク会員数は5,451人、月間サブスク収益は1,945,833円となる。彼はA氏よりもファンの信仰心が篤そうだから金額はもっと高くなり、恐らく月収300万円前後なのではないだろうか。

2030年:すべてが「加速」する世界に備えよ 読書メモ


「2030年:すべてが「加速」する世界に備えよ」は、テクノロジーの発展で2030年までに実現する社会変化を列挙している。この中で実現可能性のありそうな気になった点を抜粋してみる。

自動運転により通勤が苦痛でなくなる

寝ている間に通勤したり、車内で飲酒しながらエンタメを享受することもできる。これにより長時間通勤が許容され、より広く土地代が安い郊外に住む人が多くなる。本書ではそのような未来が描かれるが、新型コロナウイルスの出現でリモートワークが普及し、通勤自体減少していくのかもしれない。

記事はAIが書く

既にナラティブ・サイエンス社のAIが人間の手を一切借りずに、雑誌に掲載可能なレベルの記事を作成している。アメリカではフォーブスは企業レポートを書かせているし、何十という日刊紙が野球(マイナーリーグ)の記事を書いているという。

3Dプリンターの飛躍的発展

現在でも金属、ゴム、プラスチック、ガラス、コンクリート、細胞、皮革、チョコレートなどの有機材料など数百種類の材料をフルカラーで印刷できる。プリントできる製品もジェットエンジン、マンション、基盤回路、義肢、人工臓器と高度化している。
3Dプリンターの進化で在庫とそれに伴うコストが消滅する。印刷用の材料とプリンターを置くスペース以外に必要なものはなくなり、製造業は窮地に立たされる。サプライチェーンは消え、製造過程のゴミが消え、交換部品が消え、商品のデザインは消費者が行うよになる。読んでいていずれ人間もプリントする時代が来るのではと考えてしまう。

遺伝子編集技術の高速化

既に存在する遺伝子の部分的交換(ゲノム・シークエンシング)が高速化する。
今まで治療不可能だった難病も、遺伝子の特定部分を切除したり書き換えたりする技術(CRISPR)で治療することが出来る。

フェイク技術の進歩

今の音声合成技術でも極僅かなデータから本人の声を再現できる。30個の文や3分の動画があれば十分。百度の技術なら3. 7秒の音声サンプルが10個あれば音声認識システムのトレーニングは95%の確率で成功し、5秒の音声サンプルが100個あればほぼ100%成功する。
映像のフェイクであるディープフェイクは現在の技術でも人間では判別不可能な映像を作れるほどレベルが上がっている。人と人を合成するにはかつては複数のセンサーやカメラが必要だったが、今はスマホのカメラだけでよい。
ディープフェイクはエンタメの世界を変える。死者が蘇る。既に鬼籍に入った過去の有名人の新作映画が作られ、存命中の老齢芸能人が若かりし頃の姿でドラマに出演する。10年でそうなるかは分からないが、20年もあれば確実に以下の以下のようになるのではないか。

休日の朝に起きる。AIに曲をかけてと言えばたった今作られた曲がBGMとして流れる。気に入らなければまた新たに作曲してもらい、おおまかなイメージを伝えればそれに合致した曲が作られる。
映画が見たい時は推理物で銃撃戦はいらないけどカーチェイスは欲しいといえば、その通りの作品が作られる。好きな俳優の何々を登場させたり、全くの架空人物だけで構成することも可能で、途中から展開をリクエストすると動的にストーリーは変化する。ちなみに登場人物が気に入ればそれを別のポルノ作品に出演させることも可能だ。
作品が面白ければお気に入りとして保存できるし、つまらなければ削除(使い捨て)になる。好きな作品はオンライン上にアップロードして公開することも出来るし、他人のお気に入り作品を楽しむことも出来る。
音楽も小説も漫画も映画もゲームもポルノも、有りとあらゆるエンタメが即時的に制作され、ほとんどは使い捨てられていく。

広告業界を脅かす

AIは所有者以上に所有者の嗜好を理解するようになり、インターネット上の膨大な情報を取得整理し所有者にとって最適な物を購入する。人間は欲しい物を一般名詞で伝えればAIが最適な商品を選び購入してくれるし、日用品は無くなる前に事前に購入するようになる。これにより広告が意味を成さなくなる。テレビコマーシャルを流してもAIはテレビ自体見ない。

垂直農法の普及

広大な農地ではなく高層ビル内で食料を育てる垂直農法により、真の地産地消が実現する。垂直農法は従来の農業の様々な問題を解決する。食品の移動時間がなくなる、完全閉鎖型の環境で栽培されるため殺虫剤がいらなくなる、水の使用量も減る。水は従来の農法と比べて90%も抑えられる。さらに屋外の農地と比べて収穫量は350倍、水の使用量は1%以下。

培養肉の普及

培養肉は環境に優しい。通常の肉に比べて土地の使用量は99%、水の使用量は82~96%、温室効果ガスの排出量は78~96%抑えられる。電気の使用量は肉の種類によって7~45%削減可能。
さらに新たな病気の70%は家畜から発生するため、パンデミックのリスクを抑えられる。
肉だけではなく牛乳についても研究されており、牛を一切使わずチーズを生産する方法も開発済み。

ブレイン・コンピュータ・インターフェース(BCI)の登場

BCIは脳に直接アクセスして脳と脳を接続する。脳波図(EEG)センサーを使い、頭皮から脳波を読み取って手を使わず物を制御できるようになる。すでにゲームの世界で始まっている。
30年までには実現しないと注釈した上で紹介されていたのがブレインネット。参加者の脳と脳を接続したブレイン・トゥ・ブレイン・コミュニケーション・ネットワーク。脳波図を使い脳のシグナルを読み、経頭蓋磁器刺激(TMS)を使って脳シグナルを書く。被験者は相互に接続した状態でテトリス風ゲームをプレイしたという。ゲームに限らずあらゆるエンタメに消費者の脳に合わせて内容をカスタマイズするエンタメが現れる。
テレパシーは既に実現済み。2014年ハーバード大学の研究チームが、インターネットを通じて脳から脳へ言葉を送った(フランスからインド)。これがブレイン・トゥ・ブレイン・コミュニケーション。EEGヘッドセットで読み取った脳シグナルを、接続しているインターネット経由で送信し、受け手はTMSで脳に弱い磁器パルスを送信。被験者達は思考を伝え合うまでには至らなかったがメッセージに相当する光の点滅を正確に読み取った。
さらに個人の意識がクラウドに移行するという。自分の脳をクラウドに接続することで、私達の処理能力と記憶能力が大幅に高まる。理論上はインターネットに繋がる地球上のあらゆる頭脳にアクセスできるようになる。世界中の人間の脳がネットワークで繋がることでメタ知能が生まれる。メタ知能により未来は想像を越えて加速する。それは恐らく100年後だろうと本書は予測。

内容はかなり楽観的でテクノロジー進歩の負の側面はほとんど触れていない。ちょっと非現実的な予測も多く、訳者のあとがきにも以下の一節がある。

「「未来予測」というジャンルには悪書も多い。間違った予測を吹聴することで負うデメリットが少ない論者が、とにかく世間の人びとが想像しにくい未来を衝撃的に語り、そうした予測が10回中1回でも当たれば有名になる、という歪んだ構造がある」

昔、アルファブロガーに関して批判的な記事を書いたことがあるがそれと同じだ。本書が悪書かは分からないが、現状のテクノロジーを鳥瞰するには手軽な一冊だと思う。

5G 次世代通信規格の可能性 読書メモ

5G 次世代移動通信規格の可能性 (岩波新書)

5G 次世代移動通信規格の可能性 (岩波新書)


5G 次世代通信規格の可能性を読み、気になった所をメモ。

5Gの周波数帯は3種類ある
  • ハイバンド(24GHz帯以上)
  • ミッドバンド(1~6GHz帯)
  • ローバンド(1GHz帯)

所謂、5G凄い(2時間の映画を3秒でダウンロード)と言われる帯域はハイバンド。日本は外国と比べて5Gの取り組みが遅れているわけではない。比較によく挙げられる韓国の5Gはミッドバンド(今の所)。5Gは従来より密に基地局を作る必要があり、基地局は有線の光回線で接続される。日本の光回線敷設率は外国と比べて格段に高い。

日本が世界初に拘らなかったのは3Gで失敗した経験から。どこよりも早くサービスを導入した結果、世界が追いついてこず。初期の機器の不具合にも悩まされた。

5年後のエリアカバー率

通信4社の5年後のエリアカバー率は、

ドコモかKDDを選べば、どこに住んでいても5年後には5Gを使えることになる。

自動車業界にゲームチェンジの可能性

5Gではよく取り沙汰されるのが自動運転。自動運転が本格的に実用化されれば車は汎用品化する。自動運転の頭脳とサービス(付加価値)の大半が遠隔側に移り、車体に残るのは自動ブレーキや安全機能のみとなるからだ。結果、車の生産技術が低下し新たなプレイヤーが参入する。事実、最近はソニーなど家電メーカーが自動車を発表している。自動運転車時代は開発コストが一気に下がり、車内で過ごす体験コンテンツで勝負する時代になる。

作業現場の無人

建設、土木現場でショベルカーなどが遠隔操作されるようになる。人間が直接入るには危険な場所も作業しやすくなり、労働力不足解消の切り札としても期待されている。

工場の製造ラインの無線化

従来の製造ラインは一つの製品を大量生産するのに最適化されていた。これは主にケーブル類がネックとなり製造ラインのレイアウトに柔軟性がなかったため。工場内の機械が5Gで繋がることでケーブルレス化できる。製造ラインを動的に変更可能になりオーダーメイドや小ロットの商品生産が可能になる。

中国の目指すデジタル・シルクロード

海底ケーブルは情報機関にとって格好の情報収集の的。エドワード・スノーデンが海底ケーブルと接続される地点でアップ・ストリームと呼ばれる通信監視工作をアメリカが行っていたことを暴露。通信ネットワークを支配した国が事実上、地球のデータ流通を牛耳る。

中国は海底ケーブルを5Gと同じく重要視しており、デジタル・シルクロードを築きサイバー空間の覇権を握ろうとしている。アメリカはこれに強い懸念を抱いている。

6Gの概要

6Gの実用化は2030年頃。世界中が6Gの研究開発を始めようとしている。中国は世界最先端を目指している。NTTドコモはIOWN(アイオン)と呼ぶ6Gのネットワーク構想を発表。すでに100ギガビット/秒超の伝送に成功している。

6Gの明確な定義はまだない。人々の通信の進歩に対する要求に際限はない。

メルカリのサイトから新着情報をPHPでスクレイピングする

PC内を整理していると2年前に書いた、メルカリの商品情報をWebサイトからスクレイピングして取得するPHPスクリプトが出てきた。登録したキーワードで検索し、取得した情報はテキストデータとして保存。以降取得データと過去データを突き合わせて新しいものがあればメールで送信。まだ動いたため記録しておく。

サンプルプログラムではkeywordに「雑誌」、sort_orderに「新着」を設定している。xampp環境で実行したがsendmailを使う場合、下記サイトが設定に役立った。

qiita.com

blog.saboh.net

レンタルサーバーを借りているならcronで動かせばいいが試していない。下記プログラムではwhile文を使い無限ループで定期実行させている。

スクレイピング処理はphpQueryという外部ライブラリを使用した。

<?php
/**
 * メルカリからHTMLをスクレイピング
 */
require_once("phpQuery-onefile.php");
ini_set("max_execution_time", 0);

$url = "https://www.mercari.com/jp/search/";    // 基本のURL
$sortOrder = "?sort_order=created_desc";        // 安い順:price_asc、高い順:price_desc、新着:created_desc、いいね:like_desc
$keyword = "&keyword=雑誌名等";                 // 検索ワード
$categoryRoot = "&category_root=";              // 親カテゴリ
$categoryChild = "&category_child=";            // 子カテゴリ
$priceMin = "&price_min=";                      // 最低価格
$priceMax = "&price_max=";                      // 最高価格
$parameter = urldecode($sortOrder . $keyword . $categoryRoot . $categoryChild . $priceMin . $priceMax);
$filename = "cache.json";
const LIMIT_ITEMS = 5;

while (true) {
    // スクレイピング開始
    $jsonScrRes = scraping($url . $parameter);

    // キャッシュの読み込み
    if(file_exists($filename)) {
        $jsonCache = mb_convert_encoding(file_get_contents($filename), 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
        $jsonCacheRes = json_decode($jsonCache, true);

        // 今回と前回の取得アイテムの比較
        checkNewItem($jsonScrRes, $jsonCacheRes, $filename);
    } else {
        // 新規データをセーブファイルにJSON形式で保存
        file_put_contents($filename, json_encode($jsonScrRes, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
        chmod($filename, 0666);
    }

    // 5分おき
    sleep(5 * 60);
}




/**
 * スクレイピング処理
 */
function scraping($url) {
    $agent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0)";
    $header = array(
        'Accept-Encoding: deflate',
        'Accept-Language: ja,en-US;q=0.9,en;q=0.8',
    );
    $conn = curl_init();
    curl_setopt($conn, CURLOPT_URL, $url);
    curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($conn, CURLOPT_USERAGENT, $agent);
    curl_setopt($conn, CURLOPT_HTTPHEADER, $header);
    $res = curl_exec($conn);
    curl_close($conn);

    $doc = phpQuery::newDocument($res);
    foreach ($doc["section"]->find(".items-box") as $entry){
        $link = pq($entry)->find("a")->attr("href");
        $title = pq($entry)->find("h3")->text();
        // jsonデータとして保持
        $jsonData[] = ['link' => $link, 'title' => $title];
    }

    return array_slice($jsonData, 0 , LIMIT_ITEMS);
}

/**
 * スクレイピング結果とキャッシュを比較し、新規アイテムのみ記録及びメールで通知。
 */
function checkNewItem($JsonScr, $jsonCache, $filename) {
    // 最初に新着アイテムをコピーし、キャッシュと重複するものは削除する
    $addItems = $JsonScr;
    $scrMax = count($JsonScr);
    $cacheMax = count($jsonCache);
    
    for ($i = 0; $i < $scrMax; $i++) {
        for ($j = 0; $j < $cacheMax; $j++) {
            // URLから出品商品のユニークIDの抜き出し
            $scrItemId = str_replace("/jp/items/", "", substr($JsonScr[$i]['link'], 0, strpos($JsonScr[$i]['link'], "/?")));
            $cacheItemId = str_replace("/jp/items/", "", substr($jsonCache[$j]['link'], 0, strpos($jsonCache[$j]['link'], "/?")));
            if (strcmp($scrItemId, $cacheItemId) == 0) {
                // 添字で配列を削除
                unset($addItems[$i]);
                continue;
            }
        }
    }

    // 歯抜けになった添字を詰める
    $addItems = array_values($addItems);

    if (0 < count($addItems)) {
        $tmp = array_reverse(array_merge(array_reverse($jsonCache), array_reverse($addItems)));
        $jsonWritedata = array_slice($tmp, 0, LIMIT_ITEMS);
        
        // 新規データをセーブファイルにJSON形式で保存
        file_put_contents($filename, json_encode($jsonWritedata, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));

        sendMail($addItems);
    }
}

function sendMail($items) {
    $mercariUrl = 'https://www.mercari.com';
    $to = "メール送信先のアドレス";
    $subject = "メルカリで新着あり";
    $message = "";
    $max = count($items);
    for($i = 0; $i < $max; $i++) {
        $message .= "新着:" . ($i + 1) . "\n";
        $message .= $items[$i]["title"] . "\n";
        $message .= $mercariUrl . $items[$i]["link"] . "\n\n";
    }
    $headers = "From: メール送信先のアドレス";

    mb_language("Japanese");
    mb_internal_encoding("UTF-8");
    if (mb_send_mail($to, $subject, $message, $headers)) {
        echo "送信成功";
    } else {
        echo "送信失敗";
    }
}
?>

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」を読んでpythonでも同じスクリプトを書いたが紛失。BeautifulSoup4を使ったと思う。