株式会社ホコサキ

「趣味です」と言った男——Linus Torvaldsの哲学と矛盾を読む

天京祐輔
天京祐輔
「趣味です」と言った男——Linus Torvaldsの哲学と矛盾を読む

Linus Torvaldsという名前を知らないエンジニアはほぼいないだろう。Linuxカーネルの生みの親であり、Gitの作者でもある。しかし「知っている」と「理解している」の間には、けっこうな距離がある。

彼の言動を追っていくと、天才プログラマーの武勇伝というより、一人の頑固な実用主義者の肖像が浮かび上がってくる。怒りっぽくて、自己評価が高くて、でも「ビジョナリーではない」と言い続けた男。その矛盾した人間像の中に、エンジニアとして何か刺さるものがあるはずだ。

1991年、「趣味です」と言った男

1991年8月25日、21歳のLinus Torvaldsはcomp.os.minixというニュースグループに一通の投稿を送った。今では伝説的な文章として語り継がれているが、当時の温度感はずいぶん違った。

Hello everybody out there using minix — I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

「趣味でやってます。GNUみたいに大きくはならないでしょう」——この一文が、後に世界のサーバー・スマートフォン・クラウドインフラを支えるOSの産声だった。本人が最も驚いているかもしれない。

なぜLinuxを作り始めたのか。動機はシンプルだった。Linuxはアンドリュー・タネンバウムが開発したMinixへの不満から生まれている。Minixは教育目的で設計されたUNIXライクなOSで、タネンバウムの著書に付属していた。Linusはそれを使って自宅のPC(Intel 386搭載機)でUNIX環境を動かしたかったのだが、Minixは商用ライセンスの制約があり改変できない。しかも教育用設計ゆえに、実用的な用途には耐えられない部分があった。

「自分のかゆいところを掻く」という動機は、オープンソースの文脈でよく語られる言葉だが、Linusの場合はそれが文字通りだった。壮大なビジョンも、Microsoftへの対抗意識も、世界を変えようという野心も、少なくとも最初はなかった。目の前に不便なOSがあって、自分が使いたいものが存在しなかった。だから作った。それだけだ。

この「趣味です」宣言の裏にある実用主義は、後の彼の行動原理とも一貫している。美しい理論や崇高な理念より、今日動くコードを優先する。投稿から30年以上が経ち、Linuxカーネルは約3000万行のコードを持ち、累計2万人以上の貢献者を擁するプロジェクトになった。「大きくはならないでしょう」という予言は、歴史上最も外れた自己評価の一つとして記録されている。

Gitを2週間で作った男——BitKeeper騒動と「じゃあ俺が作る」

2002年から2005年まで、Linuxカーネルの開発はBitKeeperという商用の分散バージョン管理システムを無償で使っていた。当時のLinusは「ソース管理ツールはコンピューター業界において最も興味がないものだと見なしていた」と後に語っている。それが一変するきっかけが、2005年の騒動だった。

Andrew Tridgell(通称Tridge)がBitKeeperのプロトコルをリバースエンジニアリングし始めた。これはBitKeeperの利用規約に反する行為で、BitMoverはLinuxコミュニティへの無償提供を撤回した。Linusは数週間にわたってTridgeとBitMoverのLarry McVoyの間を取り持ったが、交渉は決裂した。

そこでLinusが取った行動は、「じゃあ自分で作る」だった。最も興味がないと言っていた分野のツールを、自分で。

Gitの開発がどれほど速かったかは、リポジトリの記録が証明している。Linus自身がインタビューで語っているように、最初の一日分のコミットは残っていない——Gitでgit自身をセルフホストするのに一日かかったため、その前の作業は記録されていないのだ。しかしそれ以降の履歴はすべて残っており、「すぐに形になった」ことが分かる。最初のコミット時点でコード量は多くなかったが、基本的な動作——自分自身をコミットするのに十分なほど——はすでに実現していた。

Gitの設計を理解する上で欠かせないのが、Linusのこの言葉だ。

Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

悪いプログラマーはコードを気にする。良いプログラマーはデータ構造とその関係性を気にする——この哲学は、Gitの内部設計にそのまま反映されている。Gitの本質はコマンドの集合ではなく、blob・tree・commitというコンテントアドレス可能なオブジェクトモデルだ。

実際に覗いてみると、その設計思想が手に取るように分かる。

# 文字列からblobオブジェクトのハッシュを生成する
$ echo "hello" | git hash-object --stdin
8c7e5a667f1b771847fe88c01c3de34413a1b220

# コミットオブジェクトの中身を確認する(出力例はイメージです)
$ git cat-file -p HEAD
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
author Your Name <you@example.com> 1234567890 +0000
committer Your Name <you@example.com> 1234567890 +0000

Initial commit

# treeオブジェクトの中身
$ git cat-file -p HEAD^{tree}
100644 blob 8c7e5a667f1b771847fe88c01c3de34413a1b220    hello.txt

commitはtreeを指し、treeはblobを指す。blobの名前はファイル名ではなくコンテンツのSHA-1ハッシュだ。この設計があるからこそ、Gitは分散環境でも整合性を保てる。

「コードよりデータ構造」という言葉は、Gitを使うたびに静かに証明されている。コマンドの使い方を覚えるより先に、このオブジェクトモデルを理解した方が、Gitの挙動が腑に落ちる。それはLinusが設計段階で「問題はコード量ではなく、どのようにデータを扱うかだった」と語ったことと、まっすぐにつながっている。

「怒り」は哲学だった——毒舌レビューの背景にあるもの

Linusの名前を検索すると、技術的な業績と同じくらい「炎上」「毒舌」「暴言」という言葉が引っかかる。LKML(Linux Kernel Mailing List)でのコードレビューは、しばしば激烈だった。パッチを送った開発者が「このコードはゴミだ」「お前は何を考えているんだ」と返されることは珍しくなかった。特定の企業やプロジェクトへの公開の場での辛辣な発言も、たびたびコミュニティの話題になってきた。

彼が怒る典型的なパターンを整理すると、こうなる。

  • 安全性を無視した設計: セキュリティホールになりうるコードを「とりあえず動く」で通そうとする姿勢
  • パフォーマンスの軽視: 「後で最適化すればいい」という思想で明らかに非効率なコードを送ってくる行為
  • 問題を隠蔽するコード: バグを修正せず、症状だけを抑えるような回避策
  • 説明のない変更: なぜそう書いたのかの文脈がなく、レビュアーに調査コストを押し付けるパッチ

本人は「怒りの対象は人ではなくコードと判断だ」と主張する。実際、同じ開発者でも良いパッチには素直に賛辞を送る。怒りの矛先は一貫して「悪い判断」であり、「悪い人間」ではない——というのが彼の自己認識だ。

ここで興味深いのが、対面でのLinusとのギャップだ。彼を直接知る人々は口をそろえて「物静かで礼儀正しい」と言う。Linusの母語はスウェーデン語で、英語は第二言語だ。オンラインの激烈さと対面の穏やかさのギャップは、彼を知る人々が必ず言及するポイントでもある。

テキストによるコミュニケーションが感情の抑制を外してしまうのか、それとも対面では別の何かが働くのか。理由は定かではないが、「オンラインでのLinus」と「オフラインでのLinus」は別人のように見える。

「悪いコードを黙って通すことは、将来の誰かへの負債だ」——これがLinusの品質哲学の核心だ。カーネルは何百万台ものサーバーで動く。一つの悪い判断が、何年も後に誰かの夜中の障害対応を生む。その重さを知っているからこそ、妥協を許さない。その哲学自体は正しい。問題は、その伝え方が人を傷つけることがあったという点だ。

2018年、Linusが謝った日

2018年9月、Linuxカーネルは**行動規範(Code of Conduct)**を採択した。そしてLinusは公開書簡で、これまでの自分の言動を謝罪した。

謝罪文の中でLinusは、自分が他者の感情に対して鈍感だったこと、コミュニティメンバーを傷つける言動を取ってきたことを認めた。そして一時的にカーネル開発から離れ、自分の行動を振り返る時間を取ると宣言した。

コミュニティの反応は真っ二つに割れた。WIREDの報道が伝えた声を見ると、「これは重要な動きだ。テクノロジーでは人間だって大事なのだから、業界の未来にとってよい兆候だ」という歓迎の声がある一方で、「もう50歳に近いでしょ。いまさら感情面で大人になりましたって言い出して、友達をぶったことを謝ってる6歳の子どもみたいなことをされても喜べない」という冷ややかな声もあった。

「遅すぎる」という批判は、感情的な反発ではなく事実の指摘でもある。何十年にもわたって積み重なった言動は、謝罪一つで消えるものではない。傷ついてコミュニティを去った人々は、もう戻ってこない。その現実は変わらない。

一方で、「変化の兆し」として読む視点も成立する。50歳近くなってから自分のコミュニケーションスタイルを問い直すのは、簡単なことではない。制度的な圧力があったとしても、公開の場で非を認めることには一定の意味がある。

どちらの読み方が正しいかは、おそらく決着がつかない。謝罪後にLinusのトーンが実際に変わったかどうかについても、「以前よりは穏やかになった」という観察と「本質的には変わっていない」という観察が混在している。人間が変わることの難しさと、変わろうとすることの意味を、同時に示したエピソードだと言えるかもしれない。

「ビジョナリーではない」と言い続けた男の遺産

Linusの名言の中で、最も本質を突いていると思うのはこれだ。

I am not a visionary. I'm an engineer. I'm happy with the people who are wandering around looking at the stars but I am looking at the ground and I want to fix the pothole before I fall in.

「私はビジョナリーではない。エンジニアだ。星を見ながら歩き回っている人たちは好きだが、私は地面を見ている。穴に落ちる前に、そのポットホールを直したい」——この言葉は、自己卑下でも謙遜でもなく、彼の行動原理の正確な記述だ。

LinuxもGitも、「世界を変えよう」という動機から生まれていない。Minixが使いにくかった。BitKeeperが使えなくなった。だから作った。その積み重ねが、結果として世界のインフラを変えた。ビジョンなき実用主義が、最大のビジョナリーたちより大きな変化をもたらしたという逆説は、痛快でもあり示唆的でもある。

もう一つの名言、「Talk is cheap. Show me the code.」 も同じ文脈にある。議論より実装、理念より動作、言葉よりコミット。これはLinusの個人的な性格でもあるが、同時にオープンソース開発の文化的な核心でもある。コードは嘘をつかない。動くか動かないかは、誰の目にも明らかだ。

Linusから何を受け取るかは、読む人によって違うだろう。毒舌を「正直さの美学」と読む人もいれば、「単なる攻撃性」と読む人もいる。謝罪を「成長」と読む人もいれば、「遅すぎた」と読む人もいる。どちらも間違いではない。

ただ、「自分のかゆいところを掻く」という動機の普遍性は、エンジニアなら誰でも共感できるはずだ。不便を不便のまま放置せず、自分で解決する。その解決策が他の誰かの役にも立つかもしれない。それだけのことが、世界規模のインフラになることがある。

地面のポットホールを直し続けた男が、結果として星を動かした。それがLinus Torvaldsという人間の、最も正直な評価だと思う。


株式会社ホコサキは、山口県宇部を拠点にWeb制作・業務システム開発・AI活用支援・DX推進に取り組んでいます。Linuxが体現したような実用主義の開発姿勢を自社プロジェクトに取り入れたい方は、お問い合わせページからお気軽にどうぞ。

    「趣味です」と言った男——Linus Torvaldsの哲学と矛盾を読む | 株式会社ホコサキ