珈琲 , Jazz & 巡礼と…
現代ITの神様、ケン・トンプソンから学ぶ「究極のシンプル思考」:私たちが毎日使う道具の裏側にある物語1. イントロダクション:あなたのキーボードの下に眠る「一人の男」の影
あなたが今日、何気なくターミナルで叩いたlsやcdといったコマンド。手元のMacやサーバーで動いているLinux、そして日々恩恵を受けている文字検索の仕組みやプログラミング言語。これらの原流を辿っていくと、ある一人の人物に突き当たります。
彼の名は、ケン・トンプソン。
Unix、C言語、そしてGo言語。現代のコンピューター・サイエンスの土台を築き上げた、歴史上最も偉大なプログラマーの一人です。しかし、彼は決して「教科書の中にだけ存在する気難しい学者」ではありません。その素顔は、自分が最高に気持ちよく作業をするための「道具」を、生涯を通じて追い求め続けた、根っからのハッカーです。
私たちが今、当たり前のように享受している技術の裏側には、彼のどのような設計思想が隠されているのでしょうか。彼が歩んだ軌跡は、単なる過去の記録ではありません。それどころか、過剰な複雑さに飲み込まれそうな現代の設計思想に対する、もっとも鋭い「警告」と「指針」に満ちているのです。
ケン・トンプソンの卓越した設計思想の源泉は、少年時代の「面倒を徹底的に減らしたい」という強烈な合理性にありました。
海軍パイロットだった父親の仕事で世界中を転々とした彼は、行く先々で「ゼロから物を作る」習慣を身につけます。フェンスの鉄線で電話を引き、廃材でロボットを組み立てる。そんな彼が計算機を手にした時、ある疑問を抱きました。「なぜ人間は10進数を使うのか」。指が10本あるからという理由に納得できなかった彼は、学校の宿題をすべて「2進数」で解いて提出するという驚くべき行動に出ます。
なぜ2進数だったのか。その理由は「掛け算の九九が 1 \times 1 = 1 しかなく、覚える手間が最小限で済むから」という、極めて合理的なものでした。面倒を避けるために世界の見方そのものを変えてしまう――この姿勢こそが、彼のキャリアを貫く核となります。
大学で時代遅れのドラム式コンピューターに出会った時、彼はそれを「野原の真ん中で燃える火炎」のようだと感じ、夜な夜なのめり込みました。勉強の道具としてではなく、解きたいパズルを解くための「最高の遊び道具」として。この「欲しいものは自分で作る」という執着心が、後に世界を変えることになります。
ベル研究所に入所したトンプソンが直面したのは、巨大プロジェクト「Multics(マルティクス)」でした。次世代OSを目指したこの計画は、あらゆる機能を盛り込もうとした結果、恐ろしいほどの複雑さに陥っていました。
そのユーザーマニュアルは本棚2.4メートル分にも達し、専用の巨大マシンがなければ動かないほど重厚長大。トンプソンはこの「オーバーエンジニアリング(過剰設計)」を次のように切り捨てました。
「信じられないほど過剰に設計されていた。生まれる前から死んでいたようなものだ」
結局、プロジェクトは空中分解。トンプソンは「使うのが苦痛なほど複雑なものは価値をなさない」という教訓を深く刻みます。この教訓は、現代のマイクロサービスやクラウドネイティブな環境で、不必要にシステムを巨大化させてしまう私たちへの痛烈な皮肉としても響きます。複雑さというモンスターは、設計の段階で排除されなければならないのです。
Multics撤退後、上層部から「OS開発禁止」を言い渡されたトンプソンでしたが、彼の情熱は消えませんでした。彼は研究所の片隅に放置されていた、非力な小型マシン「PDP-7」を見つけ出します。巨大なマシンが使えないという制約を逆手に取り、彼は「自作の宇宙旅行ゲームを滑らかに動かしたい」という極めて個人的な理由で、こっそりOSを書き始めたのです。
ここで面白いのは、彼がいかにして予算を勝ち取ったかです。「OSを作っている」と言えば反対されるため、彼はこれを「特許書類を作成するための文書処理システム」だと偽って報告しました。ベル研究所が特許を重視する文化であることを利用した、見事なハックです。
こうして生まれたUnixの原型は、当初のユーザーIDがわずか1桁(10人以下)という非常に小さなコミュニティから始まりました。
このシンプルかつ強力な哲学は、制約だらけの環境だったからこそ、究極まで研ぎ澄まされたのです。
私たちが日々使うgrepコマンドも、トンプソンの「自分の作業を楽にしたい」という欲求から生まれました。
彼はテキストエディタ「QED」を改良する中で、大学で学んだ「有限オートマトン」という数学理論を、古典文学のテキスト解析というアルバイトに応用しました。その過程で、彼は遊び心で文中にある「God(神)」という単語をすべて「Frog(カエル)」に置き換えて楽しんでいたと言います。そして、すべてのマッチ行を表示する命令g/re/p(Global Regular Expression Print)が、そのままコマンド名となりました。
この技術には、もう一つの知的なエピソードがあります。当時、ソフトウェアは特許として認められない時代でした。そこでベル研究所は、この検索アルゴリズムを「ハードウェアの回路図」として偽装して提出し、世界初となるソフトウェア特許の一つを勝ち取ったのです。法的な制約さえも、シンプルな知恵で乗り越えてしまう。これこそがトンプソン流の合理性です。
文字コードの混乱を解決した「UTF-8」の誕生秘話は、シンプル設計の勝利を象徴しています。当時、世界中の文字をコンピューターでどう扱うかは大混乱の中にありました。
この問題を解決する完璧な設計図は、トンプソンが同僚のロブ・パイクと夕食を食べている時、食堂の「紙ナプキン」の上にさらさらと書き上げられました。英語のデータ量を抑えつつ、世界中のあらゆる文字を表現でき、かつ後方互換性も維持する。
このナプキンの上のスケッチから始まった設計は、一晩で実装され、即座に世界標準となりました。現在、あなたが目にしているウェブページのほとんどがUTF-8で記述されているのは、あの日の食堂での「シンプルなひらめき」のおかげなのです。
2000年代、Googleに移籍したトンプソンは、再び「複雑さ」という怪物に直面します。巨大化したC++のシステムは、たった数行の修正でもコンパイルに15分以上かかるという「悪夢のような状況」でした。
彼はこの「モンスター」を退治するために、再びペンを執ります。そうして生まれた「Go言語」には、鉄のルールがありました。「開発メンバー3人全員が納得しない機能は、絶対に入れない」というものです。
Go言語が目指したのは、単なる高速化ではありません。「誰でも1時間で習得でき、若手でもベテランと同じ品質のコードが書けること」。これは、複雑さによってエンジニアを分断させないという、彼の深い人間愛に近い信念です。難解な機能を競い合うのではなく、誰もが同じように道具を使いこなせること。それこそが、技術における真の「優しさ」なのです。
ケン・トンプソンの人生を貫くのは、「自分のために作る」という純粋な情熱と、不要なものを削ぎ落とす「徹底したミニマリズム」です。
しかし、彼の功績を語る上で忘れてはならないのが、1983年のチューリング賞受賞講演「Reflections on Trusting Trust(信頼に対する考察)」です。彼はそこで、コンパイラ自体にバックドアを仕込めばソースコードをいくら検証しても見抜けないという、現代のサイバーセキュリティの根幹に関わる警告を発しました。「自分が完全に把握していないものを、本当に信頼することはできるのか」という問いは、シンプルさを追求し続けた彼だからこそ到達できた真理です。
機能を追加することは簡単ですが、価値あるものを残すために「削ること」は非常に困難です。
あなたが今日使っている道具や、今まさに書いているコードに、不要な複雑さは紛れ込んでいませんか?「本当に必要なものは何か」を問い続け、自分自身が最高のユーザーであり続けること。その姿勢こそが、複雑すぎるこの世界を生き抜くための、最強の武器になるはずです。
2. 【教訓1】面倒を減らすための「合理性」が世界の見方を変える3. 【教訓2】「モンスター」は生まれる前に殺せ:複雑すぎる設計の末路4. 【教訓3】禁じられた遊びと「ハッカーの機転」:Unix誕生の秘密5. 【教訓4】「grep」に込められた遊び心と、法をも欺く知恵6. 【教訓5】世界標準は「食堂のナプキン」から始まる7. 【教訓6】Go言語が目指した「1時間で覚えられる」という究極の優しさ8. 結論:自分自身が「最高のユーザー」であること
元ネタ https://youtu.be/x9URSzYuwDE?si=uOaQZugIahTr38Ge