Linuxの背後にある精神

Linus Torvalds / 青木靖 訳

2016年2月 (TED2016)

クリス・アンダーソン 奇妙な話です。あなたのソフトウェアであるLinuxは何百万というコンピュータの中にあり、インターネットのかなりの部分を動かしています。さらに実際に使われているAndroid端末が15億台くらいあって、その１台１台にもあなたのソフトウェアが入っています。これはすごいことで、その開発本部ともなれば、さぞ大層な施設なんだろうなと思っていたので、この写真を見たときはびっくりしました。これがその — Linux世界本部なんですよね？(笑)(拍手)

リーナス･トーバルズ 大したものには見えませんよね。この写真の中で最も興味深く、多くの人が反応する部分は、あのトレッドミル・デスクです。私の仕事場で一番興味深いものですが、私はもう使っていません。この２つは関連していると思います。私の働き方として、外的な刺激をなくしたいんです。壁が薄緑色なのが分かるでしょう。精神病院で壁に使っている色だと言われましたけど。(笑) 落ち着く色です。刺激されることがありません。ここにコンピュータ本体は写ってなくて、ディスプレイしかありませんが、私が自分のコンピュータについて主に気にかけるのは、そんなにパワフルでなくとも良く — それはそれでいいんですが — まったく静音である必要があります。Googleで働いている知人がいて、彼らは自宅に小さなデータセンターを持っていたりしますが、私はやりません。私の仕事場はおよそ退屈なものです。私はそこに独り静かに座っています。猫が入ってくると、私の膝にのります。猫が喉を鳴らすのを聞くのはいいですが、コンピュータのファンの音は聞きたくありません。

クリス 驚きですね。そのような働き方をしながら、この巨大な技術の帝国とも呼ぶべきものを運営できるというのは。オープンソースの持つ力の見事な証明と言えるでしょう。どのようにしてオープンソースを理解するようになり、それがLinuxの開発に繋がったのでしょうか？

リーナス 私は今も独りで仕事しています。独り自宅で、時にはバスローブ姿のままで。あの写真ではカメラマンが来たので、ドレスアップしていますが — (笑) 私はいつもそんな風に働いてきました。Linuxを始めたのもそうです。Linuxは共同プロジェクトとして始めたわけではありません。自分のためにやっていた沢山のプロジェクトの１つとして始めたものです。欲しいものを作ろうとしてのことですが、それ以上にプログラミング自体を楽しんでいました。道のりの最後の目的地には25年経っても、まだたどり着いていませんが、私は自分自身のためのプロジェクトを探していたのであって、オープンソースというのは私の視野には入っていませんでした。そのうちにプロジェクトが大きくなって、人に見せたくなりました。それは｢ねぇ僕の作ったもの見てよ！｣というのに近く、当時は本当に大したものではありませんでした。公開はしましたが、その時点ではオープンソースではありませんでした。ソースは公開していても、現在のような、改良していくためにオープンソース手法を取る、という意図はありませんでした。それはむしろ、｢半年これに取り組んできたんだけど、意見を聞かせてほしい｣というものでした。すると他の人たちが寄ってきました。ヘルシンキ大学で、当時は主に｢フリーソフトウェア｣と呼ばれていたオープンソースをやっている友人がいて、彼が教えてくれました。オープンソースライセンスを使うといいよと。そういうのが既にありましたから。私はしばらく考えていました。商業的な利害が出てくることを懸念していたんです。始めようとする人の多くが抱く不安の１つは、自分の成果を誰かに食い物にされるんじゃないかということです。私はやることにしました。｢どうとでもなれ｣と。そうしたら —

クリス そうしたら誰かがソースコードに寄与してくれて、｢へえ面白いな、こんなの予想してなかった。これで改良できるぞ｣と。

リーナス 当初の貢献はソースコードではなく、むしろアイデアでした。誰かが自分のプロジェクトを見てくれるというだけでも — 他のことでもそうだと思いますが、プログラミングではなおさら、自分のプログラムに誰かが興味を示し、フィードバックやアイデアを返せるくらいにちゃんと見てもらえるなんて、私にとっては大したことだったんです。当時21歳でしたが、既に人生の半分はプログラミングをしていました。それ以前のプロジェクトは完全に個人的なもので、自分のコードにコメントやフィードバックをもらえるというのは、驚くようなことだったんです。ソースコードを受け取るようになる前に、そういう私にとって大きな瞬間があって、｢人間っていいな｣と思ったんです。どうか誤解しないで、私は決して人付き合いの良い人間なんかじゃありません。(笑) 人が本当に好きというわけではありません。(笑) 私はコンピュータが好きで、人とのやり取りにはメールを使うのを好みます。一種のクッションになってくれるので。でも自分のプロジェクトにコメントし協力してくれる人は好きです。そのおかげでずっと大きなものになったんです。

クリス ｢この瞬間｣というのはあったんですか？ 成長していき、軌道に乗り始めるのを目にして、｢待てよ、これは素敵なコメントをもらえる個人プロジェクトというのに留まらず、テクノロジーの世界全体で爆発的に発展するような、すごく大きなものになるかもしれないぞ｣という。

リーナス ないですね。私にとって大きな変化は、それが巨大なものになったときではなく、小さなものになったときでした。独りでやっていたのが、10人とか100人という人が関わるようになった。それが私にとって大きな変化でした。それ以外は徐々に起きたことで、100人から100万人というのは大したことではありませんでした。いや大したことかもしれませんが — もし成果を売ろうと思っていたなら、大したことでしょう。しかし関心があるのがテクノロジーやプロジェクト自体であるなら、コミュニティができるというのが大きな部分で、それからコミュニティがゆっくり成長していきました。何か特定の｢すごい、大成功だ！｣と思う時点があったわけではありません。結構長い時間がかかっているわけですし。

クリス 私が話した技術畑の人はみんな、仕事の仕方を大きく変えたと、あなたのことを高く評価しています。それにはLinuxばかりでなく、Gitというのもあります。ソフトウェア開発管理のためのシステムです。それに関してあなたの果たした役割を教えてください。

リーナス 私たちの抱えていた問題は、しばらくして現れ始めたことですが、10人とか100人という人がプロジェクトに取り組んでいるところから１万人へと成長するというのは — 現在ではカーネルだけでも各リリースに千人が携わっていて、それが２、３ヶ月に１度あります。多くのことをしない人もいます。ごく小さな変更をする人が沢山いるんです。そのような規模の変更をどうやってまとめたものか、それが長らく苦痛でした。ソースコード管理だけのためのプロジェクトがいろいろあります。CVSが最も一般的に使われていたものでしたが、私は大嫌いで、触るのも拒否し、何か根本的に違う面白いやり方を試みましたが、みんなは嫌がっていました。(笑) 協力したい人が何千人もいるのに、私が一種のブレークポイントになり、つっかえているというまずい状況でした。何千人と一緒に作業できるほど、私は伸縮自在ではなかったんです。Gitは私にとって２番目の大プロジェクトですが、それはただ自分の最初の大プロジェクトを維持管理するために作ったんです。それが私の仕事の仕方なんです。ただ楽しみのためにプログラムを書くこともありますが、私は役に立つプログラムを作りたいんです。だから私のプロジェクトはどれも私自身が必要としていたものでした。

クリス つまりLinuxにせよGitにせよ、あまり多くの人と働かずに済むようにしたいというあなたの欲求から、予期せず生まれた結果だったわけですね。

リーナス まったくもってそうです。(笑)

クリス いやはや驚きです。

リーナス まったく。(拍手)

クリス あなたはテクノロジーを１度ならず２度まで変革したわけですが、なぜそんなことが出来たのか知りたいですね。いくつか手がかりをもらいましたが、これは子供時代のあなたの写真で、ルービックキューブをやっています。10歳か11歳の頃からプログラミングをしていたということでしたが、あなたはコンピュータの天才、というかオタクだったのか、何でもできる学校の人気者だったのか、どんな子供だったんですか？

リーナス 典型的なオタクだったと思います。当時は人付き合いの良い人間ではありませんでした。あれは弟ですが、明らかに弟なんかよりルービックキューブに関心がありました。(笑) 妹の方はこの写真に写っていませんが、親戚の集まりがあったとき — そんな大家族ではなく、従兄弟が２人いたくらいですが — 妹が前もって私に心の準備をさせたものです。部屋に入る前に、｢こういうわけだから･･･いい？｣と。なにしろ私は技術馬鹿で、コンピュータとか、数学とか、物理が好きでした。得意でしたが、飛び抜けていたとは思いません。妹によると、私の最も非凡な点は、決して諦めないことだそうです。

クリス そこをもう少し聞きましょう。面白そうだ。諦めない。それは技術の達人ということでも、頭が良いということでもなく、頑固ということなんでしょうか？

リーナス 頑固でしょうね。それはつまり、何かを始めたとき、｢もういいや。何か他のイカしたものをやろう｣とはならないんです。私の人生の他の面でもそうです。私はシリコンバレーに７年住んでいて、その間ずっとシリコンバレーの同じ会社で働いています。そんなの聞いたことがない。シリコンバレーはそういう所ではありません。シリコンバレーの要点は、人が職から職へと跳び回ってまぜこぜになることでしょう。でも私はそういうタイプの人間ではないんです。

クリス しかしLinuxの開発においては、その頑固さが他の人との摩擦を生じることもあったわけですね。その点について伺いましょう。あなたが作っているもののクオリティを維持するために、それは不可欠なことなんでしょうか？ あなたから見るとどういうことなんでしょう？

リーナス 不可欠なのかは分かりません。人付き合いの良い人間でないという話に戻りますが、私は時々、何というか、他人の感情に｢ド近眼｣になることがあり、それで他の人を傷つけるようなことを言うこともあります。その点を良いことだとは思っていません。(拍手) 一方でもっと人に優しくすべきだと言ってくる人がいるので、説明してやろうと思って、君は人に優しいのかしらんけど、もっと押しが強くなった方がいいよと言うと、それがイヤな奴と取られるんです。(笑) 私が言いたいのは、人は違うということです。私は人付き合いが良くなく、その点良いこととは思っていませんが、それが私なんです。私がオープンソースの本当に好きな点は、異なる人々が一緒に働けるようにしてくれるということです。互いを好きな必要はなく、本当に互いに嫌っていることもあります。とても激しく議論をすることもあります。気付くのは — 意見の違いを認め合ってさえなく、ただすごく違ったことに関心があるということです。さっき自分の成果を食い物にする営利的な人々への怖れという話をしましたが、すぐに分かったのは、そういう商業的な人たちが実に感じの良い人たちだということです。私がまったくやろうとも思わない様々なことをやり、私とはまったく違う目的を持っています。彼らがオープンソースを使おうとするやり方は気に入りませんでしたが、オープンソースなので彼らはやることができて、実はその組み合わせが見事に機能するんです。同じ仕組みなんだと思います。そういう人たちも必要なんです。人付き合いの上手い人たち、コミュニケーター、温かくてフレンドリーな、こう、本当に抱きしめて仲間に迎え入れてくれるような人々です。みんながそうではなく、私は違います。私は技術に関心があり、ユーザインタフェースに関心がある人もいます。私は命が助かるためだろうとやれませんが。もし無人島に取り残され、島を抜け出せる唯一の方法が小綺麗なユーザインタフェースを作ることだとしたら、私はそこでのたれ死ぬでしょう。(笑) 違う種類の人間がいるということです。言い訳しようというのではなく、説明しようとしているだけです。

クリス 先週話したとき、あなたの別な特質について触れていて、私はそれをとても面白いと思ったんですが、センスと呼ばれるものです。２つ画像がありますが、こちらのプログラムはあまりセンスが良くない例で、こちらの方がセンスが良いのは一目で分かるのだと。この２つの違いは何なのでしょう？

リーナス 皆さんの中でプログラミングしたことのある人はどれくらいいますか？ (聴衆の多くが手を挙げる)

クリス こんなにいるんだ。

リーナス 手を挙げた皆さんは、単方向リストを作ったことがあるかと思います。こちらのあまりセンスの良くないやり方は、初歩のプログラミングで教わるものです。このコードは別に理解できなくて構いません。ここで最も興味深い点は、最後の if 文です。単方向リストで起きるのは、ここでは既存の要素を削除しようとしているんですが、要素が最初か最初以外かで処理が異なるということです。最初の要素の場合は先頭要素へのポインタを書き換えなければなりませんが、中間要素の場合は手前の要素のポインタを書き換える必要があります。まったく異なる２つのケースがあるわけです。

クリス その点こちらの方が良いと。

リーナス こちらの方が良いです。if 文がありません。なぜ if 文がないか分からなくて構いませんが、分かってほしいのは、問題を違った見方をして書き換えることで、特殊ケースを一般ケースに変えられることがある、ということです。そういうのが良いコードです。これはごく単純なプログラミング入門のコードで、重要なものではありません。細部は大事ですけど。私が一緒に働きたいと思うような人の目印になるのは、良いセンスを持っているということです。このつまらない例は小さすぎてあまり意味がありませんが。センスの良さというのはもっと大きなものです。センスが良いというのは、大きなパターンを見て取って直感的に正しいやり方が分かるということです。

クリス ちょっと整理しましょう。あなたには良いセンスがある — ソフトウェア界隈の人には意味を持つような。(笑)

リーナス この中にもわかる人はいるはずですよ！

クリス あなたはプログラマとして非常に聡明で、どうしようもなく頑固だと。でも、他にも何かあるはずです。あなたは未来を変えました。未来についての大きなビジョンをお持ちなんだと思います。あなたはビジョナリーなんですよね？

リーナス この２日間TEDにいて、少し居心地が悪く感じていました。ビジョンの話がたくさんされていますが、私はビジョナリーではありません。５カ年計画なんて持っていません。私はエンジニアです。歩き回っては雲を見つめ、星を見上げ、｢あそこに行きたいものだ｣と言う人々と一緒にいるのはまったく問題ありません。でも私の方は地面を見ていて、目の前にある穴をどうにかしたいと思っています—落っこちる前に。私はそういう人間なんです。(拍手)

クリス 先週この２人について話を伺いましたが、彼らは誰で、どのようにお考えなんでしょう？

リーナス このテスラ対エジソンというのは、テクノロジー分野では言い古された感がありますが、テスラはビジョンを持った科学者、すごいアイデア・マンとして見られていて、みんなテスラが大好きです。その名を会社名にしている人たちもいます。(笑) もう一方のエジソンは、もっと凡俗で悪く言われることが多いです。そして彼の最も有名な言葉というのが、あの｢天才とは1%のひらめきと99%の努力｣です。私はエジソンの側なんです。みんなはあまり好きでないかもしれませんが、2人を比べたとき — テスラは近頃は人々の心を掴んでいますが — 実際に世界を変えたのはどちらでしょう？ エジソンはいい奴ではなかったかもしれません。いろいろやっています。そんなに知的でなく、ビジョナリーではないかもしれません。でも私はテスラよりはエジソンに近いと思います。

クリス 今回のTEDのテーマは大胆で野心的な大いなる「夢」ですが、あなたはその反対ですね。

リーナス 私は少し引き戻そうとしています。

クリス そりゃいい。歓迎しますよ。Googleやその他の企業は、あなたのソフトウェアで何十億ドルも儲けています。そのことを不快に思いますか？

リーナス ちっとも。理由はいくつかあります。私自身上手くやっていて別に問題ないというのがひとつ。別の理由は、もしオープンソースにして自由に使えるようにしていなければ、Linuxが今のようになることはなかったということです。それによって苦手なことも経験することになりました。人前で話すとか。しかし、これも１つの経験だと思っています。本当に。だから私を幸せな人間にする沢山のことが起きていて、自分は正しい選択をしたと思うわけです。

クリス これは最後の質問になりますが、オープンソースの考えは現在の世界ですっかり実現されているのか、それとももっとやれることがあるのでしょうか？

リーナス どちらとも言いかねますね。オープンソースがプログラミングにおいてこうも上手く機能するのは、結局のところプログラムは黒白つけられるものだからだと思います。これは良い、これは良くないというのを判断できる、適当な方法があることが多いのです。プログラムは動くか動かないかのどちらかで、議論の余地があまりありません。それでも結構議論していますが。他の領域でも、オープン・ポリティクスなどについて議論されていますが、同じ原理を他の領域にも適用できるとは言い難い場合があります。黒か白かがグレーになるだけでなく、他の色まで出てきます。科学におけるオープンソースが復活しているようです。はじめはオープン化していたのに、やがて閉じたものになってしまい、非常に高価な学術誌の問題なんかがあります。arXivやオープンアクセス・ジャーナルのようなものによって、科学分野でオープンソースが復活しつつあります。ウィキペディアもまた世界を変えました。他にも例はあります。間違いなくもっと出てくるでしょう。しかし私は —

クリス あなたはビジョナリーではないので、予想はあなたの役割ではないでしょう。

リーナス 違いますとも！(笑) それをするのはあなた方でしょう？ (聴衆を指す)

クリス まったく。リーナス･トーバルズ、Linuxをありがとう。インターネットをありがとう。Androidをありがとう。TEDに来てご自身のことをこんなにも話していただき、感謝しています。

リーナス こちらこそ。(拍手)