ITエンジニア/デザイナ向けにオープンソースを毎日紹介

小飼弾(@dankogai)

まずはMOONGIFTさん、10周年おめでとうございます。今調べたら、404 Blog Not Foundも今年の11月が開設で、今年は個人的にも社会的にも節目の年なのかも知れません。

節目といえば、 "Open Source"という言葉も今年の2月3日に0x10歳の誕生日を迎えます。オープンソースのこれまでの沿革を振り返り、これからのことに思いをはせるには絶好のタイミングとも言えます。これまた偶然にも、その8ヶ月後に私は一児の父となりました。私にとって、オープンソースが育っていた月日は娘たちが育っていた日々と重なっています。

ただし同い年の長女とオープンソースには違いが一つあります。「オープンソース的」なものはすでに長らく存在していて、なかったのはオープンソースという名前だけだったのです。

俺のサーバーがこんなに売れないわけがない

いわゆるLAMPを構成するLinux(1991年)もApache(1995年)もMySQL(1995年)もPerl(1987年)もPHP(1995年)もPython(1990年)もすでに出そろっていましたし、Unixあたりまで遡れば1969年。なんとLinuxの父、Linus Torvaldsと同い年です。実は私も同い年なのですが、なぜすでに歴史もあり、インターネットの基盤として定着していたこれらに「オープンソース」という名が改めて与えられることになったのでしょう?

インターネットが、オープンになったからです。

私がカリフォルニア大学に在学していた当時、インターネットには大学とそこにコンピューターを納品する一部企業のみが接続していました。実家全焼により私は同校を1991年の終わりに退学することになったのですが、すでにネットがないと生きていけない体になっていた私は、その代替として実家から市内通話でアクセスできるNifty-Serveに加入しました。その時最も驚いたのは、それが有料だったこと。電話代はもとより、接続時間に応じて従量課金されるというのは家がなくなったのと同じぐらいショックなことでした。

もちろん大学のインターネットも、本当に「無料」だったわけではありません。費用を大学が負担していて請求書が私に回ってこなかっただけなのですが、しかし利用者の見た目には無料なわけです。

そんな象牙の塔の中で育まれたヒッピーな"Free Software"と、TANSTAAFL(There ain't no such thing as a free lunch; フリーランチなんてありえない)でヤッピーな娑婆の世界との軋轢は、1994年頃にインターネットが一般にも開放されてから日に日に増しており、Windows 95でインターネットが一般人にも知れ渡り、Windows 98が出る頃にはのっぴきならないところまで来ていました。

ややこしいことに、パソコン通信の世界では"Freeware"という言葉がすでに一般的になっていました。「無料の」Freeですが、これは「自由な」"Free Software"とは似て異なる概念です。自由というからには、ただ課金から自由であるだけではなく、コードの閲覧と改変も自由でなければならないのに、大半の"Freeware"ではそうではなかったからです。

それどころか、当時のFreewareは、Netscape NavigatorもInternet ExplorerもWebサーバーを売るための撒き餌でさえありました。ところがその思惑を、LAMPが打ち砕いてしまったのです。Webサイトの運営者たちは、Netscape ServerやIISを買うよりも、単に無料であるに留まらず、ソースコードを元に自在にカスタマイズできる方を好んだのです。

それで根を上げたのは、Netscape社でした。Microsoftの方はIISが売れなくてもPCとともにWindowsが売れましたが、Netscape社の方はサーバーしか売り物がなかったからです。そこで同社がとった手は、ある意味ヤケクソとも言えるものでした。「もしLAMPがIISに勝てるなら、Navigatorのソースコードも公開してしまえばIEに勝てるのではないか?」

「オープンソース」という言葉は、ある意味同社の断末魔の叫びだったと言えなくもありません。1999年を見ることなく、同社はAOLに吸収合併されたのですから。しかしそれは同時に、Firefoxの産声でもありました。オープンソースとなったことで、親と道連れになることを避けられたのです。

ちなみに当時の私は、これまた今は亡きMac OS版のポーティングをお手伝いしました。おかげでMozilla Japanから毎年年賀状を頂いております。

俺のOSSと株価が修羅場すぎる

「オープンソース」という言葉が注目を集める次のきっかけは、ドットコムバブルとその破裂。特に重要なのがVA LinuxのIPOの大成功と株価崩壊でしょう。1999年12月、公開価格30ドルの同社株の初値は299ドル。今なお市場史上最高の株式公開ですが、一年を待たずしてIPO価格を割り込み2002年7月24日には54セントまで落ち込みました。

ちなみに私がCTOを勤めた、後にライブドアとなるオン・ザ・エッヂの上場は2000年4月。ドットコムバブル破裂前にぎりぎり滑り込みセーフでした。

当時すでにインターネットの隆盛は誰の目にも明らかだったのですが、そこからどうリアルな収益を上げればいいかは手探り状態だったのです。私は2000年の秋、京都で「オープンソース」の名付け親でもあるエリック・レイモンドに夕食をおごりながら、実際にどうやって収益を上げていくかを訊ねてみました。返って来た言葉は「サポート」。「ソフトウェア自体は無料でも、そのサポートをドットコム企業は必要としている」。しかしそのドットコム企業はどうやって収益を上げたらよいかを尋ねると「それは彼らの問題だ」とも。

レイモンドの答えは、不正解とは言い切れません。Red Hatのようにドットコムバブル崩壊を生き延びた会社もあるからです。しかしその株価は、未だドットコムバブルの頃の最高値を取り戻していない以上、正解だったとは言い切れないでしょう。

しかしその後、オープンソースはある意味最大の敵を味方につけることになります。Appleです。

X元突破$AAPL

今は亡きSteve JobsのAppleへの帰還とAppleの復活劇は、すでに多くの記事が書かれていますので、ここでは繰り返しません。以下のグラフをあげておくにとどめます。

この復活劇の中でOS Xの基礎部分であるDarwinのオープンソース化とSDK、後のXcodeの無料配布が果たした役割は、誕生から13年経った今では忘れられがちです。

当初のOS Xは、今では笑わずにはいられないほど「ないないづくし」でした。起動ディスクのフルバックアップを取る方法すらなかったんですから。おかげで私はMacOSX::Fileを書く羽目になりました。これを使うことで、Unixの流儀でMac OS 9のファイルシステムであるHFS+のフルバックアップのみならず、rsyncのように差分バックアップもとれるようになったのです。

しかしなぜ私がそれを書けたかといえば、OS XにはPerlが標準搭載されていて、SDKが無料で入手できたから。Appleの対応を指をくわえて待つ必要はなかったのです。

同様にして、OS Xに足りない部分はあれよあれよという間に Linux や FreeBSD からの移植で補われていきました。特に後者に関しては、FreeBSD Projectの共同設立者である Jordan Hubbard を引き抜いてさえいます。

そうしてv10.4になる頃には、Mac OS 9のエミュレーターであるClassic環境を必要としないほどソフトウェアが充実し、Intelアーキテクチャーへの移行や64bit対応も他には例がないほど順調に進みました。Windowsが8.1になっても32bit版と64bit版が存在するのとは対照的です。

そしてその過程で、多くのオープンソースプログラマーたちがMacへのSwitchをはたしました。今ではオープンソース関係のカンファレンスにおいて、Mac以外のノートPCを使っている人々の方が稀なぐらい。

OSSだけどUXさえあれば関係ないよねっ

ここでAppleが巧妙だったのは、オープンソースにしたのはあくまで基礎部分で、UI/UXの根幹を成す部分はあくまで自家薬籠(じかやくろう)中にとどめたこと。これによりMac OSとOS Xという、サカナとイルカほどに異なるOSに連続性を持たせることに成功しました。

これと対象的なのが、Linuxや*BSDにおけるデスクトップ環境。作っては壊し、気に食わなければ分裂しを繰り返したあげく、未だに決定打がない状態が続いています。KDEと人気を二分するGnomeの父、Miguel de Izacaにして"What Killed the Linux Desktop"(何がLinuxデスクトップを殺したか)という記事を書かせるほどに。

もう一つ巧妙だったのが、Intel化を果たした後にも、OS XをMac専用OSに留めたこと。BootcampでWindowsをインストールできるようになったことからもわかるように、今やMacはふつうの「AT互換機」でもあります。つまりその気になればふつうの「AT互換機」でも動かせるOSでもあり、実際"Hackintosh"という言葉が登場したように動かそうと思えば動かせるのですが、OSをパッケージソフトという製品ではなく、Macという製品の部品に留めておくことで、Macというハードウェアがコモディティ化することを防いでいるのです。

コードの夏への扉

そしてOSSのもう一つの成功例が、「ウェブ進化論」でいうところの「あちら側」に重きを置く企業。Google も Amazon も Facebook も DeNA も Cookpad も LINE もそうですが、これらの企業はOSSのヘビーユーザーであると同時にコントリビュターでもあり、スポンサーでもあります。

特にGoogleはSummer of Codeという企画を通して主要なOSSプロジェクトを財政面のみならず感情面も支援していて、OSSコミュニティというものをよくわかっていると感心します。私も同企画で Mentor を勤めたことがありますが、報酬はTシャツ一枚。いわゆる6-figure(10万ドル超え)の年俸が当たり前、ストックオプションなどでミリオネアになったものも珍しくない現代のトップエンジニアにとって、こちらの方がよほどうれしい「おもてなし」といえるでしょう。

永遠のゼロコピー

それではなぜ、彼らはOSSを支援するのでしょう。たとえそれが「利敵行為」になるとしても。WebkitにとってのChrome、AndroidにとってのKindle Fire…こうした例は枚挙に暇がありません。

答えは簡単で彼らにとっての中核事業は、そうしたところでびくともしないからです。

たとえばGoogleの本業は何でしょうか。そう。広告です。その広告はどこにあるでしょうか。彼らのサーバーの中、つまり「あちら側」です。

「著作権」という言葉がありますが、これは"Copyright"と同一の概念ではありません。読んで字のごとく、それはcopy、つまり複製に関するright、権利に過ぎません。かつてソフトウェアで収益を上げることは、複製を売ることを意味していました。OSであれゲームであれ、複製を買ってもらってなんぼというわけです。それ故違法コピーするインセンティブがあり、そこから違法コピーを防ぐインセンティブも生じ、両者はいたちごっことなり、それは今も「複製売ってなんぼ」なソフトウェアで続いています。

ところが、「あちら側」には複製がありません。何万台、いや何百万台というサーバーから構成されていようとも、サイトはたった一つ。それを複製するのは不可能ではありませんが、DVDイメージをP2Pで落としてきて一丁上がりというわけにはとてもいきません。その何百万台のサーバーを、それもただ並べるだけではなく適切に配置した上で、ユーザーのデータでそれを埋め尽くしてやっと複製ができあがりです。しかしそれだけの手間暇は一から自分でサイトを構築するのに匹敵しますし、複製が出来たところでサイトが違う以上、それは明らかな偽物であることは明らかで、価格や機能など何らかの違いがなければわざわざ別のサイトを使う理由もユーザーにはありません。

つまり、「あちら側」に「本体」がある企業は、違法コピーを心配する必要がないのです。コピーしようがないのですから。

だとしたら、その「本体」を構成する部品は、むしろコモディティの方がいい。わざわざお金を払わないと使えないソフトウェアより、無料でしかも改変自由なソフトウェアの方が「部品」として遥かに優れています。

そしてそこで使った「部品」をオープンソースとして配布することでその「部品」が普及すれば、人材確保にも有利です。雇用側は、すでに応募者がその部品に関する知識を有していることを期待できるからです。

そしてまだその部品に関する知識を有していない人々にも、オープンソースは「教材」として有利に働きます。すでに使われているのは確かなので、習得に対する報酬が約束されている上、無料なので教材費も節約できます。

かくしてオープンソースは「あちら側」の「部品」として大成功を収めました。オープンソースに真っ向から対立していた Microsoft でさえ、 Windows Azure で Linux を正式サポートせざるを得ないぐらいに。

Ubuntuがいまいち萌えない理由

UbuntuといえばLinuxデスクトップで最大シェアを誇るディストリビューションですが、バグトラッキングシステムの最初のEntryはMicrosoft has a majority market shareでした。

これはプロジェクトの創設者である Mark Shuttleworth によって閉じられたのですが、これはUbuntuの功績ではないことは Shuttleworth 本人も認めているとおりです。功績者は iOS と Android なのですが、なぜ Ubuntu は Windows を王座から引きずり落とすという功績を逃してしまったのでしょうか?

インストールが、必要だったからです。

Linuxディストリビューションは、ソフトウェアの階層としては「部品」ではなく「完成品」です。その機能と使い勝手は Mac や Windows に劣るものではありません。が、オープンソースであるということを除いて、明白に優れている点もまた見当たりません。

だとしたら、ふつうの人々にとってわざわざインストールする手間は、宗教的理由を除けばほとんどありません。「なぜ最初から入っているWindowsとOfficeを、よく出来てるとはいえニセモノで上書きしなければならないの?」というのがほとんどの潜在ユーザーの率直な感想でしょう。

人々がどれほどインストールを嫌っているかは、Windows XPのゾンビ化を見れば疑いようがありません。それで一番困っているのがMicrosoftというのがなんともはや、CEO自ら"Nobody Ever Buys Windows. They Buy Windows PCs"と告白しなければならないほど、明白な現実なのです。

なぜ iOS や Android が普及したか?

はじめからインストールされていたから。

しかもはじめからインストールされているに留まらず、特にiOSの場合はハードウェアと一緒に開発されています。それに対し、Ubuntuは常にすでに市場に出てしまった後のPCの後追いをせざるを得ませんでした。プリインストール版はなきにしもあらずですが泣かず飛ばずで、Googleも"Gubuntu"ではなく、ブラウザーしか動かないChrome OSをプリインストールしたChrome PCを出させることを選びました。

アップデートは嫌われていないことは、iOSが証明しています。iOS7が出た時、全米のインターネットのトラフィックの実に二割がアップデーターのダウンロードで占められたそうです。

しかし、インストールは大っ嫌いなのです。たとえそれが無料であっても。

若者のGPL離れ

こうしてドットコムバブル崩壊後のオープンソースの傾向をざっくり顧みると、だいたい以下の傾向が見えてきます。

  • 「GPL型」、つまり上から下まで必要箇所すべてオープンソースというのはなかなか厳しい

    • GNUもLinuxを得てやっと「フルスタック」のOSが手に入ったし、そのLinuxもGPLv3には移行していない(以上からもわかるように、私は GNU/Linux とは表記しない派です;-)。
  • オープンソースを製品固有の「部品」として使うとビジネスも回る

    • より permissive (自由放任的)なライセンスが好まれるようになってきた

以下のグラフは、GitHubにおける使用言語別の permissive/copyleft ratio の変遷をまとめたものですが、今では copyleft のものはトータルで1を切っています。

PerlがGPLよりなのは、PerlがArtisticとGPLのデュアルライセンスで、そしてCPANに上がっているモジュールのほとんどがPerl本体と同じライセンスを選択していることを反映していると思われます。ただしArtistic Licenseの方はcopyleft義務を課していないので、見ようによってはこのグラフよりずっと permissive とみなせるかもしれません。

これらは小さなプロジェクトの数で見た場合ですが、大きなプロジェクトの傾向ともなるとさらに露骨ともいえるほど顕著です。特に大きいのが、gccからllvmへのシフト。後者をAppleが後援しており資金面でも人材面でも恵まれているだけあって、開発は順調に進み、OS XのみならずFreeBSDの標準コンパイラーにも採用されるにいたっています。

GNUの弓矢

フリーソフトウェアに立脚すれば、近年のこの傾向は「家畜の安寧 虚偽の繁栄 死せる餓狼の自由を!」と唾棄すべきところなのかもしれません。実際困ったときだけ頼りにして、要済みになったらポイなのかという印象は、一受益者として感じなくもありません。例えば Android 3 (Honeycomb) のソースコードを、Googleは Android 4 (Ice Cream Sandwitch) になるまで開示しませんでした。そういったこともあって、Androidがオープンソースであることに疑念を抱く人々は少なくありません(私もその一人です)。

しかし改めて考えてみて下さい。

もし「フリーソフトウェア」から「オープンソース」が「フォーク」しなかったら、OS Xはありえたのかと。

OS Xがなかったら、iPhoneも登場せず、iPhoneが登場せねば、Androidも登場しなかったことになります。

つまりモバイルインターネットは開花せず、OSSのヘゲモニーは相変わらず「あちら側」のみに留まり、「こちら側」はあいもかわらずWintelの領域だった可能性は低くありません。

それはPCに手が届く人のみがインターネットに接続し、さらにLinuxやFreeBSDでWindowsを上書きできる「強者」のみが「あちら側」へのチケットを手にできるという世界に他なりません。

それは、現代以上に Richard Stallman が望まぬ世界なのではないでしょうか。

Richard Stallman は、 Steve Jobs の死にこんな言葉を手向けています。

Steve Jobs, the pioneer of the computer as a jail made cool, designed to sever fools from their freedom, has died.

「コンピューターを、愚者どもを彼らの自由から断絶させるための監獄に仕立て上げた尖兵、Steven Jobsは死んだ」。なかなか痛烈ですが、しかしよく考えれば、Richard Stallman自身をはじめ我々はみな母の子宮という監獄から生まれ、そして生まれ落ちた後も長期に渡って家庭という監獄で育まれないと死んでしまう弱い存在でもあります。そしてその後も、地球という監獄の囚人で一生ありつづけます。

定性的に、我々は一生囚人ということになります。しかし定量的には、監獄は年を経るごとに大きくなり、行ける場所もどんどん増えてきます。大人になる頃には、一生かけても全ての場所を訪れることは無理なほどに。

そして、ソフトウェアもまたハードウェアという名の監獄の囚人です。

だとしたら、脱獄ではなく監獄を拡げることもまた、自由を拡げることにはならないでしょうか。

厳しいことを言うようですが、フリーソフトウェアムーヴメントは、監獄内の自由を拡げることには大いに功績はあっても、監獄そのものを拡げる役にはほとんどたちませんでした。それがオープンソースとなり、「看守」たちと和解が成立してはじめて、監獄の拡張工事に口を出せるようになったのだと私は感じています。

僕は友達が少な…くない

それでは、AppleやGoogleと行った大企業や、Richard StallmanやLinus Torvaldsといった大人物でないあなたが、オープンソースに関わるべき理由はあるのでしょうか?あるとしたらそれはなんでしょうか?

はじめるにあたってそんなものは必要ない、と答えておきましょうか。

私がJcode.pmを書いたのは、jcode.plに足りない二つの機能がどうしても欲しかったから。一つは、Perl 5で加わったオブジェクト指向のサポート。そしてもう一つは、Unicodeのサポート。まだ無かったので書いた。一人で使うのはもったいないと思って公開した。それだけのことです。

そしてそれを使っているユーザーの中に、たまたま堀江貴文という人がいて、私は彼の興したオン・ザ・エッヂという会社でCTOを勤めることになります。同社にいたのはわずか二年弱のことでしたが、山崎徳之(現ゼロスタート・コミュニケーション)や宮川達彦(現Cookpad)といったとびきり優秀な人物たちとの知己を得ました。

残念ながらCTOというのはコードを書くよりコードを書いてもらう仕事でもあり、そして今のようにオープンソースへのコミットメントを会社の業務として行う環境はまだ整っていませんでしたが、私の退社後、それは同社のみならず日本のIT企業では当然のこととなっていきました。その環境づくりにおいていくばくかは足跡を残せたとは自負しておりましたが、OSSへの直接的なコミットメントは、Jcode.pmのメンテナンス以上の余裕はありませんでした。

私が同社を退社した頃、Perl 5.8の開発がはじまっていました。Perl 5は私が最もよく使っていたOSSでもあり、同社の上場のおかげで財政的な余裕も出来たこともあり、恩返しのつもりで何か手伝えることがないかをメーリングリストを見ながら探していました。Encode.pmはその結果です。5.8以降のPerlの標準装備となり、Jcode.pmのようなモジュールを後からインストールしなくても、日本語はおろかUnicodeで扱える言語であれば、およそすべて扱えるようになりました。

そしてPerlに標準装備となったことで、私が書いたコードはPerlを標準装備しているほとんど全ての環境でも標準装備となったわけです。OS X v10.3以降のMacに大多数のLinuxディストリビューション…今や私のサインしたコードが何千万台というコンピューターに入っている。胸熱です。懐はちょっと寒くなりましたが。

しかし何よりも胸を暖かくしてくれたのは、Perlの父、Larry Wallからの一通のMail。

Omedetou, and thanks for the insane amount of work.

そうして私はLarry Wallとの友誼も得たのです。

こうして振り返ると、私は一からコードを書き下ろしたわけでもありませんし、プロジェクトを創立したわけでもありません。ましてやそれを通して、大いなる野望を遂げようとしたわけではありません。目の前の問題を、公衆の目の前で解決しただけです。

それで得られたものの大きさときたら!

そしてよくよく見てみると、大企業や大人物のオープンソースとの関わりもまた、深慮遠謀どころか後先を考えぬ足掻きの結果であったことに気づかされます。虫の息だったAppleは言うに及ばず、Googleとて画期的な検索技術はあってもそれをどう換金すればよいのか誰も知りませんでしたし、Linuxをはじめた時点でTorvaldsは一介の大学院生でしたし、そして今や人の形をした理想主義者であるStallmanですら、GPLにたどりついたのはGosling Emacsのライセンス変更で痛い目にあってからでした。みんな泥縄だったんですね。

もちろんそれは足掻きが常に報われることを意味しませんし、そして報われたとしても思わぬところでそれが呪いとして働くことすらあります。Netscape社の沿革は前述のとおりですし、Sunに至ってはLinuxにとどめを刺されたようにすら見えます。そしてそのLinuxのサーバーを売りまくったIBMが、PC事業の譲渡先であるLenovoに二束三文でサーバー事業を譲渡する羽目になったのも、AWSをはじめとするサーバーのクラウド化が背景にあることは否めません。

しかしそれで傾いて滅ぶのは、結局のところ企業という器であって、そこで育まれたOSSな成果物も中の人々も、別天地で健在どころか古巣以上の活躍をしていることこそ多いのです。Solarisのために書かれたZFSは、今やFreeBSD(UFS2)でもLinux(EXT3/4/XFS/btrfs)でも、それぞれのプロジェクト発祥のファイルシステムにひけを取らない人気を博していますし、Netscapeで納期に負われながらJavaScriptを作っていたBrendan Eichは、現在MozillaのCTO。

会社や製品はなくなっても、残るのです。

コードも、人も、友情も。

ならば何をおそれる必要がありますか。

開けよ、さらば開かれん。

Dan, an Open Source Programmer


次はEC-CUBE - OSS・Eコマースの進化を見る!です。日本のOSS界隈において最も成功しているのではないかと思うEC-CUBEの今を見ます!

10周年記念特集!「オープンソース×10年」

 

MOONGIFTの関連記事

コメント

  • MOONGIFTプレミアム
  • Mobile Touch