藤井太洋『ハロー・ワールド』文庫版の解説を書きました&表題作用語解説(非公式版)

ちょっと間が空いてしまいましたが、先月発売された藤井太洋さんの『ハロー・ワールド』の文庫版に、大変僭越ながら解説(!)を書かせていただきました。

bookclub.kodansha.co.jp

追記:2021年4月14日まで、Kindleで講談社文庫の50%ポイント還元をやっているそうです。

いやー、コンピュータ書関連の書評みたいなやつならともかく、文庫、しかも一般向けの小説の解説を書く機会をいただけるとは思っていませんでした。頑張って書いてはみたものの、果たして本書を読まれる方の参考になっているかどうか心もとない限りですが、貴重な機会をいただけたのはありがたい限りです。 怖くて藤井さんご本人の感想はうかがっていないのですが(直接やりとりしたのは編集者の方だったので。大変お世話になりました)、苦笑していただけたのであれば幸いです。

ちなみに本書ですが、「なんでも屋」タイプのITエンジニアを主人公とした私小説みたいな短編集です。IT寄りの私小説と言うと、作品の傾向を度外視すれば円城塔『プロローグ』を思い出したりしますが、あちらが私小説というのはどうかという程度にはこちらも私小説というのはどうかという感もあるかもしれません。

あ、あと短編「巨象の肩に乗って」はMastodonがそのままの名前で出てくるMastodon小説なので、Mastodon使ってる人はぜひどうぞ。正直この短編についてはいろいろと言いたいことがあるのですが、ネタバレ全開だし解説という感じでもないので、ほとぼりが冷めたら何か書くかもしれません。

という話はさておき。

先述の通り、解説なるものは今まで一度も書いたことがなかったのに加えて、最近書いているようなITエンジニアをターゲットとした文章ではなく、しかもSF読者とかですらなく(藤井さんは一般的にはSF作家と思われているような気がしますが、本書は『ビッグデータ・コネクト』などと同様、基本的にはSFではないのです、たぶん)一般のエンターテインメント系読者を想定していったい何をどういう書けばいいのか……と悩んだ末に、とりあえず作中の用語解説から書いてみたのですが、これがいくら書いても書いても終わらず、表題作の途中までで力尽きました(そして文庫解説用の原稿はゼロから書き直しました)。

ある意味ではこの用語解説の方がよほど「解説」になっているとは思わないでもないとはいえ、質・量ともに文庫に添付される解説にはなりようがありません。さりとて塩漬けにしておくのももったいないので、表題作に関しては最後の方まで追記したものを、こちらで公開してみます。

もっとも、以下をざっと見ていただいただけでも「これがエンタメ小説の用語解説……?」と思う方もいらっしゃるかもしれませんが、この本はこういう小説で、しかもしっかり一般向けのエンターテインメントなのです。そういう意味で興味を持たれた方なら、きっと本書を読んでうなづいたり突っ込んだり唸ったりで楽しめると思います。ぜひどうぞ。

「ハロー・ワールド」用語解説

8ページ

  • Tシャツ

特に海外のIT系のイベントではやたらTシャツを配りたがる傾向がある(※個人の見解です)。

  • グーグル

会社としては、昔はGoogle Inc.だったが現在はGoogle LLCになっている。 というか持株会社はAlphabetになっていたりXXVI Holdings Inc.になっていたりするので難しい。 日本だと「グーグル合同会社」だったり「グーグルクラウドジャパン合同会社」だったりする。

9ページ

  • Hello, World!

本書の説明の通り。もちろん実際にはどんな文言でも構わないのだが、とりあえず手癖のように「Hello, world」と出力させてみたりする。 カンマやエクスクラメーションマークは省略したりしなかったりする。 Wikipediaにもそこそこ詳しい解説がある。

ja.wikipedia.org

  • これを表示するところからソフトウェア開発は始まる

表示端末がある場合はそれでよいが、例えば組込みソフトウェアの場合、そもそも画面出力もなければ通信もできない場合もあるので、ハロー・ワールドの代わりにLEDを点滅させるところから始める場合も多いらしい。これは「Lチカ」と呼ばれており、LEDをチカチカ点滅させることを指す。

「The C Programming Launguage」、通称K&R。現在は第2版が流通している。 日本でも200刷を超える大ベストセラーとなっているが、さすがにちょっと書き方が古いという批判もある。

  • LISPのようにマイナーな開発言語

そそそんなにマイナーじゃないですよ!!!1と弁護したくなるひとは単なる言語おたくの可能性も高い。 とはいえLispと言えば歴史と伝統を誇る超有名な言語であり、今でもその流れを組む言語(ここではSchemeClojureを念頭に置いています)もある。

ちなみに郭瀬のように「放っておけば……説明しかねない」タイプは筆者の周りにも多いというか、正直なところ他人のことは言えないのはこの文書を書いている時点でお察しの通りである。

10ページ

アップルの開発者向けイベント。Steve Jobsが日本時間の夜中にプレゼンしていたのが有名だが、あれはメディアや一般人向けの発表で、開発者にとってはその後のテクニカルな発表が本番だそう。 2020年はさすがにオンラインでの開催となった。

developer.apple.com

  • サンフランシスコのホテルは高い

そのため参加者はAirBnBを使ったりするそうだが、それでもWWDCの期間は大変高いとのこと。

11ページ

  • 学者臭いコード

ちょっと言い過ぎ感もあるけど、まあそういうのもある気がする。学者というか研究者は検証してベンチマークをとったり、とりあえず使い捨てのコードを書くことが多そうなので、業務アプリケーションのコードとは異なるのは納得感がある。

  • 西新宿でランチ

西新宿にはなぜかカレー屋が多い。

12ページ

若干重いけれども画面の大きさには代えられないので頑張って持ち歩く人も多い。 なお筆者は体力がないのでMacbook Air派だったが、本書解説を書いている時点でいきなり壊れた(!)ので13インチMacbook Proの薄いやつに乗り換えた。

  • エッジ

「エッジ」と言えば堀江貴文氏が創業した会社「オン・ザ・エッヂ」が「ライブドア」になる前に一瞬「エッジ株式会社」という名前になっていたのを思い出すが、年代も雰囲気も違うので関係なさそうである。

  • 五反田のIT企業

家賃が高すぎる渋谷を嫌った企業が五反田に集まっているらしい。

13ページ

  • Swift

Appleの開発している、比較的新しいプログラミング言語iOS開発といえば、少し前まではObjective-CというCの流れを汲むオブジェクト指向プログラミング言語が使われていたが、現在ではSwiftに置き換わりつつある。

Webブラウザ用言語として今はなきNetscape Communications社が開発したもので、現在では各種ブラウザは元よりWebサーバー等でも動作する。 初心者でも比較的簡単に書けるようになっているが、プロの書くJavaScriptは別世界の言語とも言えるくらい似ても似つかないものであり、かつては「世界で最も誤解されたプログラミング言語」という異名も持っていたほどである。

norastep.hatenablog.com

スティーブ・ジョブズがNeXT社で開発したOSであるNeXTSTEPの開発環境の流れを汲む、それなりに歴史の長い開発環境ソフトウェア。 macOSiOS開発には欠かせない。

  • もしそのアプリを育てるつもりがあるなら

ソフトウェアに対して「育てる」という用語(メタファー)は一部の界隈ではよく使われる。 もちろん、ふつうのアプリは生物のように勝手に育つわけではないのだが、手間暇がかかること、環境にも影響されること、設計工程と製造工程に分かれるのではなく少しずつ追加・改修していくことなどの意味を込めて「育てる」と呼んでいる。

14ページ

汪がノートPCではなくiPadを持っているのは、もりもり開発をする役割(ロール)ではないことを示唆している。

16ページ

  • 「コーヒー、置いていいですか?」

iPadはともかく15インチMBPはわりとでかかったので、それを2台並べた机にコーヒーを置くのはちょっと気を使いそうではある。

  • CAD

元は「Computer-Aided Design」の略であり、「コンピュータ支援設計」という意味になるはずだが、一般的には設計支援のためのソフトウェアのことを指す。 最近だと3Dプリンター用のデータを作ったり、VR用の人やモノのデータを制作したりするのにも欠かせない。

17ページ

素人っぽくも見えるかもしれないが、こういうタイプのひとの一部は異常な速度で人差し指キー入力をしたりするので侮れない。

CADの会社は比較的安定していて、そんなにガツガツしてない印象があるが、実際のところはよくわからない。

18ページ

  • グーグルアースを立ち上げた

Google製のネット地球儀、のようなサービス。 Googleマップの写真モードと混同しがちだけれどちょっと違う。少なくともPCアプリ版はGoogleマップには存在しない(2020年10月現在)ので、「グーグルマップを立ち上げた」という表現は難しい。

earth.google.com

  • アメリカの都市部に住んでいれば

アメリカの通信回線はあまり良くなかったと言われている。

https://www.akamai.com/us/en/multimedia/documents/state-of-the-internet/akamai-state-of-the-internet-connectivity-report-q2-2016.pdf

  • データ通信が定額料金でない東南アジア

日本でも公衆Wifi光回線は定額だけれど、スマートフォン等は定額料金ではないので状況は近そう。 俗に言う「ギガが減る」という現象である。

  • 広告に含まれる識別コード〈Cookie

広告配信サービスではその閲覧情報を記録(トラッキング)するためcookie内にIDを生成し、ブラウザから送信させるようにすることがある。最近ではサードパーティーcookieを忌避する動きがあるため、cookie以外の方法でトラッキングする方法が提唱され揉めている。一方でそのようなトラッキングからユーザーを守るブラウザ拡張やアプリもあり、いたちごっこが現在でも続いている。

  • Webに広告がなかった頃のインターネット

Web広告については、1994年にhotwired.comが掲載したバナーが最初と言われている。

thefirstbannerad.com

日本では1996年、「Yahoo! JAPAN」のバナー広告がはじまりとのこと。

dmlab.jp

  • 自由なWebが広告に汚染されていく

広告があること自体は自由なWebを阻害するものではないが、広告収入を期待し始めると広告のポリシーにそぐわない(アダルト等)コンテンツの掲載をやめたり、コンテンツの内容も広告に最適化し始めたりするため「自由」が減らされることが危惧されている。

原理主義者」かどうかはさておき、例えば電子フロンティア財団(EFF)は実際に広告ブロッカーを開発したりしている。

scan.netsecurity.ne.jp

19ページ

  • 専門を持たない何でも屋

ネットには「稀によくいる」タイプ。 ネットでは様々な専門技術があり、専門家ほど詳しくなくても多少なりとも知っているだけで作業が捗ることが多々あるので、実際重宝されがちという面もある。

  • ソフト開発の部門にいる人間にしては口も回る

もちろんふつうに社交的な人もいるが、ソフト開発部門の人は普通の意味での社交性はあまり評価されないので、無口な人、自分に興味のあることしか話さない人でも排斥されず居心地が悪くない傾向はありそうである。

20ページ

  • Swiftを十分に活用しているからだ

ここで想定している広告ブロッカーは、おそらくWebKitを使った専用ブラウザとして配布するか、ブラウザのプラグイン的な形で動くのではないかと推測される。

*「Swiftは難しくないぜ」

JavaScriptも特に最近は簡単ではなさそうだが、この書き方だと現代風の複雑なbuildプロセスを使うJavaScriptの書き方ではなく、ベタ書きでできるJavaScriptを使っているように見える。それと比べるとSwiftは難しいかもしれない。

プログラミング言語はある程度似通った言語が多いため、20言語をマスターするために1言語マスターする20倍の労力が必要、というわけではない。いろんな分野のコードを書くのが得意・好きな人はそれに近いくらいなんとなくマスターしていてもおかしくはない。

22ページ

  • 中国は金盾という国民のネット利用を監視して内外の通信を分断している。

英語では「great firewall」とも呼ばれるが、「firewall』自体は一般的な技術である。ただし、それは企業内や特定拠点などで外部との通信を制御・遮断するためのものであり、国家で行っているところは多くない……と言いたいところだが、実際には国家によるブロッキングはさまざまな形で行われている。日本でも一般社団法人インターネットコンテンツセーフティ協会が提供する「児童ポルノ掲載アドレスリスト」を各インターネット・サービス・プロバイダISP)がブロックする、という形で行われている。

www.netsafety.or.jp

23ページ

  • オーストラリアのすぐ北に浮かぶ島

本書で後述される通り、ニューギニア島

24ページ

  • 三人がかりで半年かけて、百万円にもならない

確かにこの売上で独立してメインの仕事にするのはちょっと厳しい。 というか単行本版では200万円だったのに文庫版では半減していてちょっとびっくりした。

25ページ

  • Slack

同種のチャットサービスとして、最近は企業ではTeams、企業以外ではDiscordも使われているが、やはりSlackの人気も根強い。

26ページ

  • A/Bテスト

実際のコンテンツとユーザーを使って行うテスト。具体的には本書の説明の通り。 ネット上でのマーケティングでは一般的なもので、そのための機能やツールも多い。

  • marketing_framework.dylib

dylibという拡張子はmacOSiOS用の(動的リンクできる)ライブラリに使われているもの。何かしらの便利なフレームワークのライブラリを使っていることが分かる。

27ページ

  • 画像はスマートフォンで二行ほどの小さなもので、閲覧の邪魔にはならない。

とは言うものの、あまり画面が大きくない端末では気になることは気になるし、誤ってタップしてしまうとストレスになるので、嫌っている人も一定数いる。もっとも、だからといってたった数百円でもお金を払って有料版を買う人は多くないのも現実であり、世の中は厳しい。

  • こいつでプログラムも書きますよ

実際にそういう人もいる。すごすぎる。 もう少し穏当なタイプでは、Bluetoothでキーボードを使うという話も聞く。

29ページ

  • 離脱率

マーケティングの人は「チャーンレート」と言うことが多そうなイメージがある。

30ページ

インターネット上での「アドレス=住所」を示す数値。元々はIPv4という仕様が使われていたが、最近はIPv6という新しい仕様も少しずつ使われる機会が増えつつある。

アドレス数は、ざっくりとした上限はIPv4では32ビット=4バイト=約43億個になる。これがIPv6では10の38乗個まで増える。

いつ・どこからアクセスがあったのかを記録するデータ。このような時系列の記録データのことを一般的に「ログ」と呼ぶ。

最近は個人情報の扱いについて厳しくなったため、アクセスログの扱いも何かとセンシティブではある。 また、以前はアクセスログを単なるテキストファイルとして保存していたが、クラウド・コンテナ等の利用により、生のアクセスログは直接扱わないことも多い。

IPアドレスは(大まかには)地理ごとに使われるアドレスが決まっているため、どこからアクセスされるかがわかることもある。

31ページ

  • ドットで区切られた三桁の数字の羅列

IPv4の4バイトのIPアドレスは、「192.168.1.2」というように各バイトを「.」で区切って表現することが多い。1バイトは0から255までなので、「3桁の数字」となる。

IPアドレスは必ずしも地理的な場所と紐ついているわけではないため、IPアドレスがわかっても場所が分からないこともありうるが、「無料のフリースポット」では地理的な場所とIPアドレスが対応している、という想定を示している。

32ページ

  • Tor

接続経路を匿名化するためのソフトウェア(元々はそのための規格のことを指していたらしい)。 アンダーグラウンドなネットワークを作るのにも利用される。

実際のネットワークの上に、仮想的なネットワークを作ることができ、それをVPNと呼ぶ。 ここでは、Torの通信を使ってその上にVPNを作ることを想定している。

33ページ

  • 無料無線スポットに侵入して、そのコンピューターを踏み台に

ここでは無線スポットにそれを管理・制御するコンピューターがある想定で、そのコンピューターに(勝手に)侵入し、そこに(iPhoneブラウザーに偽装した)Macbookブラウザーをつなぐような形と思われる。

34ページ

  • 広告なんかにカメラを乗っ取らせるわけがない

アップルのSafariGoogle Chromeなどと比べ、ブラウザのセキュリティにはうるさく、ブラウザと外部との連携は制限を緩めたがらない(※個人の見解です)。ましてや第三者の広告から操作できたとなると大問題になりかねない。

35ページ

スクリプト」とはプログラムのこと。ここではブラウザー上でのJavaScriptを指している。

  • 〈金盾〉みたいなものがあればインターネットの経路を汚染して、偽のアップデーターを食わせることも可能だ

通信の中身を傍受して、アップデーターへのアクセスだと判断すれば、実際のアップデーターにはアクセスにいかず(あるいはアクセスしても返ってきたデータは捨てて)偽のアップデーターのファイルを返すように差し替えることで、ここで言っていることは実現可能となる。実装はそれなりに大変そう。

36ページ

コンピューター(特にソフトウェア)の欠陥。脆弱性とも言う。

  • セキュリティアップデートがすぐ行われる

iOSAndroidでは、OSや基本アプリケーションのアップデートが不定期で行われるが、そのうちセキュリティの修正を含む場合「セキュリティアップデート」などと呼ばれたりする。

support.apple.com

38ページ

SwiftはiOS上で動くアプリケーションのための言語だが、JavaScriptは通常はWebブラウザーの中で動作する言語であり、動作速度に差があることに加えて、ブラウザーの制限も受けるため、Swiftの方が融通が効く、ということを言わんとしている。

39ページ

  • 政府広報の広告プログラムで使われている命令を上書き(オーバーライド)して

元からある関数・メソッド等を実行しようとしたときに、別の関数を実行するように書き換えることができる。それを「上書き」と呼んでいる。

  • サーバーはアマゾンで借りた

おそらくAWSAmazon Web Service)のEC2という仮想サーバーのインスタンスを新しく建てた、と思われる(意表をついてLightsailの可能性もあるけど。最近であればAWS Lambdaを使っていたところかもしれない)。別にAmazonにあるサーバーのハードウェアを一個借りる、というわけではない。

詳細は不明だが、転送された画像データを保存するようなスクリプトと思われる。

  • 上限は200台

クラウドでは誤って数千・数万のインスタンスを立ち上げてしまう可能性もある。そのようなことを防ぐため、あらかじめ上限を設定できたりする。 とはいえ、AWSでは通常はもっと厳しい上限が設定されているはずなので、すでに上限緩和の申請は適用済みかと思われる。

48ページ

京王線京王高尾線)の終着駅。明大前からでは準特急でも50分近くかかる。

52ページ

  • アップルから追放(バン)される。二度とアプリを作れなくなるぞ。

例えばWindowsLinuxなどであれば、自作アプリを第三者の端末にインストールすることは容易だが、iOSは通常AppStore経由でしか配布できず、TestFlightという試作版アプリの配布すら制限がある。そのため、たとえアプリを作り、自分の端末では動かせたとしても、他人には一切配布できなくなる、と懸念している。

ハロー・ワールド (講談社文庫)

ハロー・ワールド (講談社文庫)