『名前空間の子どもたち―Plan 9とGoの系譜』を書きます
Plan 9は死んだ。だが、その言語は世界を動かしている。
Go言語を書いている人は多い。では、Goがどこから来たのかを知っている人はどれくらいいるだろうか。
goroutineとchannelの設計は、1978年のHoareのCSP理論に遡り、Rob PikeがNewsqueak(1988年)、Alef(1992年)、Limbo(1995年)と繰り返し実験してきた並行処理モデルの到達点である。GoのコンパイラはKen ThompsonがPlan 9のために書いたCコンパイラの直系の子孫だ。runeという型名はPlan 9で生まれたUTF-8のコードポイントを指す用語がそのまま持ち込まれたものだし、GoのstringがUTF-8バイト列であるという設計判断は、1992年にPikeとThompsonがダイナーのプレースマットの上でUTF-8を発明したときからの一本の線でつながっている。
Goの出自はPlan 9にある。そしてPlan 9とは、Unixを作った人々がUnixを「やり直す」ために設計したOSだ。
本書『名前空間の子どもたち ― Plan 9とGoの系譜』は、ベル研究所で生まれたPlan 9というOSの設計思想を起点に、それがGo言語の中にどのように受け継がれたかを追う技術史/設計思想史である。連載記事または本として執筆・公開していく。
目次
第Ⅰ部 父たちの設計
第1章 ベル研という惑星
ベル研究所の文化と風土。Thompson、Ritchie、Pike、Kernighan。研究所という制度が生んだ「実用と美学の共存」。
第2章 Unixの成功と不満
Unixが広まるにつれ設計者たち自身が感じた限界。"everything is a file"の理想と現実の矛盾。
第3章 Plan 9の誕生
1980年代後半、「Unixをやり直す」プロジェクト。名前空間、9Pプロトコル、rfork。
第4章 UTF-8 ― ある週末の発明
1992年9月、PikeとThompsonがプレースマットに書いたエンコーディング。Plan 9から世界標準へ。
第Ⅱ部 名前空間の王国
第5章 すべてはファイルである、今度こそ
Plan 9における名前空間の徹底。/proc、/net、/dev。Unixとの本質的な違い。
第6章 9P ― ファイルという万能プロトコル
9Pプロトコルの設計。分散システムとしてのPlan 9。
第7章 プロセスと並行性 ― rforkからCSPへ
Plan 9のプロセスモデル。HoareのCSP理論。Newsqueakの実験。
第8章 Alefという言語
C + CSPという構想。Alefが成功しなかった理由と、残した遺産。
第9章 rio、acme、sam ― インターフェイスの思想
GUIではなくテキストプロトコルとしてのインターフェイス。「道具としてのOS」の哲学。
第Ⅲ部 忘れられたOS
第10章 なぜPlan 9は普及しなかったのか
技術的に優れたOSが市場で敗北した構造的理由。Linuxの台頭、ベル研の変質。
第11章 Inferno ― 仮想マシンへの転生
Plan 9の思想をポータブルにする試み。Dis仮想マシンとLimbo言語。
第12章 Limbo ― Goの最も近い祖先
Limboの言語設計を詳細に読む。Goとの類似と差異の逐一比較。
第Ⅳ部 子どもたちの言語
第13章 2007年9月 ― Goの着想
Griesemer、Pike、ThompsonがGoogleで始めた言語設計。C++への怒りとPlan 9の記憶。
第14章 goroutineとchannel ― CSPの最終形
Newsqueak → Alef → Limbo → Go。並行処理モデルの進化の通史。
第15章 名前空間からパッケージへ
Plan 9の名前空間がGoのパッケージシステムにどう変形したか。
第16章 コンパイラの血統
Plan 9のCコンパイラからGoコンパイラへの直接的な系譜。
第17章 runeとstring ― UTF-8の帰郷
Plan 9で生まれたUTF-8が、Goのstringとrune型として帰ってきた物語。
第18章 Plan 9の亡霊たち ― Goの標準ライブラリを歩く
os/exec、net、io、context。「見えないPlan 9」を発掘する考古学的探索。
第Ⅴ部 系譜の先へ
第19章 Goが継がなかったもの
Plan 9にあってGoに来なかった思想。意図的な切断か、時代の制約か。
第20章 系譜は続く
9front、Harvey OS。TinyGo、Wasm。Plan 9の遺伝子は次にどこへ向かうのか。
終章 名前空間のゆくえ
コンテナ、マイクロサービス、AIの時代における名前空間の変奏。
なぜこの本を書くのか
Plan 9について日本語でまとまった形で書かれたものは少ない。ましてや、Plan 9からGoへの設計思想の継承を一冊の通史として描いた本は、英語圏にもほとんど存在しない。
Goは「シンプルな言語」と言われる。しかしそのシンプルさは、30年にわたる試行錯誤の蒸留である。その過程を知ることは、Goをよりよく使うためだけでなく、ソフトウェアの設計思想そのものについて考えるための補助線になるはずだ。
連載の更新は不定期。気長にお付き合いいただければ幸いです。
Discussion