アンカテ このページをアンテナに追加 RSSフィード

2003-11-17

オープンソース的世界観

Rusty Russellさんのインタビューには、こんな情報いっぱいのコメントをいただきました。(私は何も知りませんでした(^^;;)

それで、その後もいろいろ考えてるんですが、オープンソース的世界観とでも言うべき世界観を彼の言葉からねじり出してみようと思います。結論としてキーワードを並べると、次のようになります。

  • 包括的妥協競争
  • 富豪的知的生産
  • 多様性信仰

今日は、これを順番に説明していきます。

Linusは包括的妥協競争の世界チャンピオン

いきなり話がそれますが、ノゲイラとミルコの試合は凄かったですね。1ラウンドはミルコが押しまくっていて、結果は本当に紙一重の差に見えますが、紙一重の絶対的な差があるようにも思えます。

ノゲイラはくらってもくらっても致命的な打撃だけは受けないように計算していて、しっかりスキをうかがっていて計算通りにしとめたようにも思えるし、あとひとつミドルが入ったら動けなくなって試合が終わっていたようにも見える。結局、素人には再戦してもらわないとどっちが強いのかわかりません。

スポーツの結果はそういうもので、常に運不運がつきものです。だからと言って、格闘技でリーグ戦を何試合もやるわけにはいかないし、まあ、チャンピオンは実力と運をひっくるめたチャンピオンだから面白いわけです。

それで、突然、本題に戻るんですが、Linusはある種目ではまぎれもなく世界チャンピオンです。Prideのような紛れ、勝負のアヤの一切無い正真正銘の実力派チャンピオンなんです。なぜかと言うと、何度も何度も再戦してその種目で勝ち残っているからです。何の種目かと言うと、はなはだ即物的な色気の無い命名ですが、私は「Linuxカーネル開発における包括的妥協競争」と名づけました。

Linuxカーネルの開発リーダの仕事は、Russellさんの言うように自分でコードを書くというより、世界各地から毎日毎日、山のように送られてくるパッチとの格闘です。パッチを送る方は、自分の都合だけで特定のローカルな機能だけを見てパッチを作るわけです(例外もあるでしょうが)。Linusはそれを採用するか拒否するかひとつひとつ判断しないとなりません。

たくさんのパッチが送られてきて、それが全部使えれば苦労はないのですが、あるパッチを使うと別のパッチが使えなくなったりします。特定の機能を実現する代わりに、将来の拡張性を失なうことになったりする。1億円のマシンで素晴しい性能向上をもたらすパッチだけど、その為にPDAや携帯で電池を余分に食ったりする。要するにパッチ同士はケンカしまくっているわけです。

あるパッチを採用するとは、それの天敵を全部リジェクトすることを意味します。絶対に全てのパッチを生かすことはできない。つまり、妥協、妥協、果てしない妥協の連続です。せっかくの提案の中で、何を退けていくかという意思決定なのです。その時、なるべく多くの人が納得する、つまりその選択でハッピーになるようにならなければいけない。これが「包括的妥協」です。

そして、Linusはこれが世界一うまいのです。彼はおそらく全部のパッチを自分で見てません。機能別に、Russellさんを含む腹心の部下がいて、その人の判断で決めている所もたくさんあると思われます。「こういうパッチでこいつがOK出せば大丈夫」そういうノウハウをフルに活用している。そうやって、本当に自分が考えるべき問題を絞りこんでいると思います。そういうプライオリティの決め方、権限委譲の仕方が天才的にうまいのだと思います。

なぜ、そう断言できるかと言うと、もし、Linusがその判断を間違えていたら、他の人がやってしまうからです。Linusに送られてくる情報(パッチとそれに対するサブリーダクラスの開発者のコメント)はほとんど全てが公開されています。誰かが「Linusは間違っている、俺の方が正しい判断ができる」と思ったら、その人が自分でやってしまえます。自分で、Linusと違うパッチのセットを選んで違うカーネルを作れるんです。だから「競争」なのです。

つまり、Linusは24時間365日、常に、暗黙のチャレンジャーを受けいれているわけです。いつ何どき、この作業をLinusよりもっとうまくこなす天才が出てこないとも限らない。それを一切、Linusは制限していません。GPLでリリースするとは、そういうことです。「この俺に挑戦する命知らずがいるとはな。さっさとかかってこいや」と各ソースの頭に書いてあるようなもんです。

これがオープンソースの世界です。市場競争より猶予の無い、弱肉強食の世界なのです。

はてなダイアリーのキーワードを巡る仕様変更もこれと似たものがあると思います。いろいろなニーズがあって、いろいろなアイディアがある。両立するアイディアもあるし、両立しないアイディアもある。誰かにとって便利だけど、誰かが不便でこれまでしてたことができなくなるアイディアもある。誰にも文句が出ない提案でもうまく実装できるとは限りません。開発者の近藤さんは「包括的妥協」を常にせまられています。なるべくたくさんの人がハッピーになる選択をしないといけない。

もし間違うと、別の日記サイトが立ちあがって、一瞬でみんなそちらに移動してしまう。ライセンス的にも道義的にも、それを制限することはできないでしょう。人のアイディアで勝負するということの中には、そういう厳しさが含まれているのです。

オープンソースのエライ人は、みんな「包括的妥協競争」という市場競争よりはるかに厳しい競争の勝者なのです。そして、常時、暗黙の挑戦を受け続けている。だから、常にイイモノができるわけです。

富豪的知的生産〜日本史屋さんとかの危機

Russellさんのインタビューで確認できたことは、「事前の調整」という概念が無いことです。せっかくの開発者という貴重なリソースを無駄使いしている。二人が同じ機能を(別のやり方で)開発しても、全然OKみたいです。たいてい、どちらかは捨てることになります。「努力はマージできる」けど、コードは捨てるんです。それを反省している気配はありません。

なぜでしょうか?

実に簡単な話で、開発者はクリティカルなリソースではないのです。オープンソースでは原理的にこれは常に成り立つ真理です。来る者を拒まずネットで募集すれば、世界のどこかに、必ずそういう物好きがいるわけです。それも複数いるわけです。

現在は、その原理通りになっているのは、限られたプロジェクトかもしれません。湯水のように開発者というリソースを無駄遣いできるのは、カーネルとApacheくらいかもしれない。でも、それは一時的なものです。ちょっと待てば、インドと中国から湧いて出てきます。

これから、インドと中国では何億という人が食えるようになって座業を志します。そのうち優秀な人は英語を覚えてMITとかに留学するでしょうが、その次の次くらいは日本語を覚えて来日する。そのうち何割かは、武蔵丸のように日本の文化に見事に適応する。そのうち何割かは学者になり、例えば日本史のようなマイナーな学問をやる人も少しは出てくる。そのうち何割かは、今それをやってる人よりだいぶ頭よかったりする。とにかく母数が大きいので、そういう何段階ものフィルターを通っても残るのが数千人という規模だったりします。おそらく二十年たったら、日本史や日本の古典文学の研究はインド人と中国人に牛耳られてしまうのではないか。いわんや、ソフト開発なんていくらでも要員がいるに違いありません。

おそらく、もう少ししたら飢えている人に食事を与えるより、ネットにアクセスできる環境を与える方が安く簡単になります。飢えなくて生き残った人の何割かは、絶対に知的生産に携わる。ネットさえあれば勉強できるからです。

そうなれば、人間量子コンピュータのようなことができるようになります。みんなが好き勝手にやって100人のうち1人が正解を出せばよいという、富豪的な知的生産システムです。オープンソースの人は、本能的にそれを感じてそれに最適化した方法論を練っているような気がします。

多様性信仰〜「君が僕と違う考え方の人でうれしい」

もうひとつ、Russellさんの発想で面白いのは、「君が僕と違う考え方の人でうれしい」という雰囲気です。これは直接的に言葉になっていませんが、パッチが競合した時、「同じ問題について君と同じくらいよく知ってる人がいてよかったじゃないか」と言っています。同じ問題を違う目で議論できてよかったね、つまり、「君が僕と違う考え方の人でうれしい」ということです。

Linusの基準と自分の基準が違うことも、「どちらが正しい」という話にならないで、(パッチを採用してもらう為に)Linusの考え方を知ることで、自分が成長できて、それがうれしい、つまり、「君が僕と違う考え方の人でうれしい」です。

これはオープンソースの人が共通に持つセンスだと思います。オープンソースの事を「共産主義的」と非難する人がいますが、筋違いもはなはだしい。共産主義は「正解はひとつ、その正解は政府が知っている」という考え方です。資本主義も「正解はひとつ、その正解は市場が知っている」という考え方です。私に言わせると、どちらも最適化信仰です。

オープンソースは多様性信仰、そこが根本的に違います。みんなが違っていることがハッピーなんです。違っているパーツに優劣をつけようとはしない、その代わりにそれを組合せる段階で「包括的妥協競争」をします。ここで最適な解が選ばれるという保証があるので、個別の要素は、多様性があるほどいいわけです。