Joyの野望とはUNIXの歴史にはある大きな転換点があり、そこには「もう一つの未来」の可能性が開けていました。この転換期に起こった出来事は「UNIX戦争」として知られていますが、その背景に「UNIXをC++で分散OSに書き直す」という野心的な計画があったことは、今ではほとんど語られることはありません。私は、この一連の出来事の時期に、『日経エレクトロニクス』の記者としてUNIXの動向を追っていました。当時の出来事の概要を、取材者の視点から書き記しておきたいと思います。多くの読者にとって初耳の情報も含まれていると思います。一連の出来事の発端は1987年に発表された、Sun、AT&T、Microsoftによる統合UNIXの発表です。この発表の前夜がどういう時代だったか、という話がまず必要でしょう。統合前夜1980年代後半は、コンピュータの歴史でも重要な時期でした。80386)を搭載したパソコンはすでに存在していました。386が最初の386搭載PCとされています。ところが、このプロセッサの能力をフルに引き出すOS(当時は「32ビットOS」と呼ばれていました)がまだ登場していなかったのです。NTもLinuxもまだありません。80386を積んだパソコンは、単に高速なMS-DOSマシンとして使われていたのです。IBMとMicrosoftは、パソコンOSの主流を目指して、1987年に登場したOS/2の32ビット化を共同で進めていました。Windowsはバージョン2になっていて、386モードを使えるWindows/386というバージョンもありましたが、この時点ではぱっとしない存在でした。IBMとMicrosoftは袂を分かつことになるのですが、この時期には両社はまだ共同戦線を張っていました。いう不安定な時期に、UNIX戦争は起こりました。当時のUNIXは、商用化が始まり、エンジニアリング分野や金融分野で注目されて、一般の企業システムへの展開が進み始めていた頃です。主要なUNIXマシンのベンダーは、Sun、HP、IBM、DEC、といった顔ぶれでした。V」と、カリフォルニア大学バークレイ校が開発して学術コミュニティで普及していた「BSD」、それにMicrosoftがPC向けにUNIXを移植した「Xenix」の各系統が有力とされていました。Microsystemsです。Joyを創業者に迎えた企業で、BSDを商用化したSunOSにより人気を博していました。)の支援があり、ARPAnet(つまりインターネットの祖先です)との親和性も重要視されていました。4.2BSDで新たに加わった機能とは、ページング仮想記憶、TCP/IP、Socketインタフェースと、きわめて重要なものでした。Joyは、UNIXの世界の高位の神々の一人として尊敬を受けていたのです。統合UNIXの発表1987年に、ある大胆なアライアンスが成立します。Microsystems、AT&T、それにMicrosoftです。VとBSDに分かれていたバージョンを統合しよう」とするものでした。4(SVR4)」と呼ばれていました(翌1988年に、SVR4は実際に発表されました)。この統合UNIXとXenixをマージしてPCに載せるという構想も発表されていました。最新バージョンのUNIXが早い時期にPCに載って、大手資本による販売とサポートが付いたなら、32ビットPCのOSの勢力分布は変わっていたかもしれません。前述したように、当時はまだ32ビットOSの主流が確定しない不安定な時期だったのです。当時のUNIXコミュニティにとって、このアライアンスの衝撃は大変なものでした。JoyがいたSunと、UNIXの開発元であり商用ライセンスの提供元でもあったAT&Tが手を組んだのです。「本家と元祖」が手を組んだようなものです。BSDベースのSunOSは、SVR4ベースのSolarisに取って代わられました。これはBSDに慣れ親しんでいた学術コミュニティの人々にとっても大きな出来事でした。このように大きな事件だったわけですが、このアライアンスに対して反旗を翻した人たちがいました。その時点の構図は、数あるUNIXベンダーの中でSunが1社だけ「抜け駆け」して「UNIXの盟主」の座を狙った格好です。他の商用UNIXベンダーにとっては黙って見ている訳にはいかなかったのです。この対抗グループの主要メンバーは、DEC、IBM、Apollo、HPです。この異色の面々が手を組んだことで、業界は騒然となりました。このグループは集会場所のあった通りの名前を取って「ハミルトン・グループ」と呼ばれました。Foundation)」を結成します。OSFは、当時注目されていたMachオペレーティングシステムを中核に、「OSF/1」という新OSを作るという計画を掲げました。Joyの野望さて当時のSunは、ある野望を持っていました。UNIXのバージョンを統合して終わりにする予定ではありませんでした。AT&TとBSDという2つのバージョンを統合した後に、全面的に書き直した「次世代」のUNIXを作ろうとしていたのです。「UNIX戦争」についての資料はWikipediaなどでも見かけますが、この次世代のUNIXに関する記述はほとんどありません。そこで、私が知り得た範囲で概要を記しておきます。UNIXをC++言語とオブジェクト指向で書き直すネットワーク・ワイドな仮想記憶をOSの基本機能として提供する分散環境でのプログラム間通信の手段として、共有メモリ・モデルを採用する25年経った現時点で見ても、大胆な構想だと思います。当時、分散OSに関する研究が学術コミュニティでは一大ブームになっていました。Rashid教授(当時)らのMachオペレーティングシステムです。Machは、4.3BSDのカーネル部分を書き直し、新カーネルと4.3BSDのOSサービスの両方を提供していた点で注目されていたのです。このほか、いくつもの分散OSのプロジェクトが進行していました。Joyも、当時の研究水準から見て最新の知見を取り入れた分散OSを作り、それを商用UNIXのメインストリームにしようとしていたのです。Project」と呼ばれていました。Joyは、シリコンバレーの真ん中のメンロパークに開発拠点を置き、UNIXをC++に書き直すプロジェクトを率いていたのですね。Joyをつかまえて次の質問をしました。「ネットワークワイドな共有メモリ」を通信手段に選んだのはなぜか。その実装はどうするのか、と。その回答は、「共有メモリはプログラマにとって自然な手段だ」ということ。キャッシュ・コヒーレンシ・プロトコルとしてその実現手段もよく調べられていること、というものでした。確かに、ネットワークワイドな仮想記憶がOSの基本機能であるなら、ネットワークワイドな共有メモリはごく自然に作れるはずです。Joy主導のこの新UNIXが登場していたら、一体何が起こったでしょうか。分散コンピューティングが早い段階から(1990年代初頭から)普及した可能性があります。この新UNIXが早い時期にPCのOSとしてシェアを確保できていたら、その後のパソコンOSの勢力図が変わっていた可能性もあります。Winodwsはまだ完成度が低く、OS/2も32ビット化を果たしておらず、パソコンOSの決定版はまだ存在していなかったからです。Joyの計画が実現していたら、ITの歴史の時計の針はもっと速く進んでいた可能性があります。結果として、この次世代UNIXは日の目を見ませんでした。一つの理由は、UNIX戦争で業界が分断してしまい、腰を据えた技術開発よりも業界内バトルの方にリソースが割かれたことがあるでしょう。「UNIXをC++で分散OSとして書き直す」こと自体の困難も大きかったに違いありません。Joyらは「C++で大規模開発をするのはダメだ」という感触を持ったのではないかと思います。Goslingが設計したJava言語が登場した訳ですが、これは別の物語です。DECらが推進していた新OSのOSF/1は、数年後に推進していた各社が製品化します(注1)。DCE」として残っています。Researchに移っています。Rashidは今もMicrosoftの研究トップです。Gatesは、Machなど当時の研究用OSのテクノロジーには興味津々だったようです。Gatesが「C++を使おう」とか「マイクロカーネルアーキテクチャを使おう」と提案して却下される場面が出てきます。Gatesだけではありませんでした。Jobsも、Machに強い関心を持っていました。Tevanianを雇い、Machオペレーティングシステムを中核としたNeXTstepを開発します。NeXTはAppleに買収されましたが、Machの資産は今も生き続けています。XもiOSも、Machカーネルを採用しているのです(なお、誤解を防ぐ意味で付け加えると、NeXT/Appleが使っているMachはマイクロカーネル版ではありません)。StallmanもMachには注目していました。GNUベースの「自由なOS」のカーネルとして使おうと考えていたのです。Hurd」の開発は難航します。気がついてみれば、フィンランドの学生が開発したLinuxカーネルが広く使われるようになっていたのです。Tanenbaum教授との間で「マイクロカーネルか、モノリシックカーネルか」の議論を繰り広げています(Wikipedia)。Tanenbaum教授は、新たに開発されるOSであるLinuxが、当時のOS研究で主流の考え方になっていたマイクロカーネルを採用していないことに苦言を呈したのですが、Linusの方は現実的な観点から反論しています。Joyの新UNIXは登場せず、OSF/1は登場したもののその位置づけはベンダー各社の独自UNIXと同じでした(注2)。「UNIXの世界が統一されて、分散OSとして生まれ変わり、PCの世界でも普及する」というシナリオは夢と消えたのです。この後も、商用UNIXベンダーごとに少しずつ違いがあるバージョンのUNIXが使われ続けることになります。このUNIXの「分断」状況を憂慮する意見もあったのですが、各ベンダーはバージョン統合の努力にはもう懲りたのか、ひたすら自社マシンを売り込むことに注力しました。1990年代に登場したオープンソース・ソフトウエアのLinuxは、商用UNIXの市場を少しずつ侵食していくことになります。Joyの発言を見ると、彼はLinuxは「UNIXクローンにすぎない」として高く評価していなかったようです。』に書き記しています。Joyはオープンソースが分かってないんじゃない?」というものでした。UNIX戦争でSunと闘った会社のうち、Apolloは1989年にHPに買収されます。DECは1998年にCompaqに買収されます。Compaqは2002年にHPに買収されます。Sunは、2010年にOracleに買収されます。商用UNIX大手の系譜は、総合ITベンダーのIBMとHPとOracleに残っています。統合UNIX計画の名残は、SVR4というバージョンとして残っています。MachカーネルはMacBookやiPhoneの中で動き続けています。Phone8の中核として使われています。Technology"を担当するパートナーとなっています。Phone8発表で、今どきのスマートフォンではモダンなOSカーネルが当たり前になったAndroidは、単なるJavaクローンではない追記1:(注1)OSF/1は当初「登場せず」と記述していましたが、実際には各社が製品化していたとの指摘を吉岡弘隆氏より受け、記述を改めました。(参考:Wikipedia)。(注2)注1と同様に記述を改め、文脈を補強しました。追記2:LinuxでもカーネルをC++で書き直そうとして中止した経緯があることを、鵜飼文敏氏より教えて頂きました。Microsystemsの研究所が1990年代前半に研究していた分散OSです。Joyのプロジェクトは商用UNIXの書き直しが目的で、1987年に対外的に存在が明らかになっています。時期が違い、目的(研究用と商用)が違うことから、私は異なるプロジェクトと認識していました。Joyの次世代UNIXのプロジェクトが頓挫した後に、同じチームで開発した別のOSがSpringという流れのようですね。Joyは「ネットワークワイドな共有メモリ」を重視していましたが、Springの論文はIPC(プロセス間通信)の記述の比重が多く、別のコンセプトに基づく研究ではないかと考えています。(2)ただし、このコラボはちょっとミーティングしただけで解散した、とありますから、AT&Tとのコラボについては、実作業の着手に至ってないように見えます。いうわけで、異なるプロジェクトではなく、同一のプロジェクトと言ってよいと思います。died」という書き方も、同一プロジェクトであるというニュアンスでしょう。Abstractおよび6.2に記載があります。分散共有メモリについては、この時期に既にDomain/OSが実用化していましたので、それほど大胆ではないと思います。4の頃でも、NFSでファイルオブジェクトをmmapできましたが、本質的なコンセプトはそれと同一ですし(ただし、NFS経由でmmapした場合、一貫性の制御は非常に緩いんですが)。ここで一貫性制御を厳密に行うとオーバーヘッドが増大するので、分散コンピューティングの普及を助ける役にはあまり立たないように思います(仮想メモリシステムのレベルで一貫性制御した上に、さらに各アプリケーションが排他制御を行う必要がありますから、同様な制御を二重に行うことになり、無駄が多いですし。4でも問題ありませんし)。オーバーヘッドが小さいという意味で、分散技術の基盤としては、IPCの方が、より現実的な選択でしょう。PMご丁寧なコメントありがとうございます。非常に参考になりました。「Springと同じプロジェクト」かどうか、という件に関しては、今回のエントリの立場から、次のように考えています。Joyの名前は入っていません。Joyが考えていたプロジェクトとSpringは、チームのつながりはあったにせよ「別」と認識をしています。ご指摘いただいたような議論がチームの間で出たことは想像に難くなく、「(専門家から見れば)別に新しくない」とか「大変すぎる」という理由でチームがまとまらずに頓挫した、という側面もあるのかもしれません。Joyが「何を考えていたか」は、記録は残す価値があると私は考えています。1987年〜1993年頃にかけてのOS戦争の候補は、OS/2、Windows、商用UNIX、NEXTSTEP・・といった面々でした。UNIXはかなり"惜しい"所でゲームから降りてしまった、私はそのように考えています。System"を読めばわかりますが、SpringのIPC&RPCであるdoorsはメッセージ通信に仮想メモリを使います。Springの仮想メモリは分散共有メモリです。Joyの目指したものそのものではないでしょうか。Springは商業化には至りませんでした。doorsは高速なIPCとしてSolarisに移植されて生き残っています。Springの開発で得られた知見が、Javaやその周辺技術の開発に大きく影響したことはよく知られています。Joyが企図していたものがSpringだったとしても、日の目を見なかったことは確かです。この記事の論旨は変わらないですけどね。AMコメント感謝です。研究用OSのSpringの設計が、商用OSのSolarisのDoorsにつながっている、というお話は特に興味深く拝見しました。Joyが分散共有メモリを取り入れた新UNIXのコンセプトを語ったのが1987年、一方Springの論文が1993年頃で、実に6年が経過しています。途中、空白の時期や紆余曲折の時期もあったことが想像されます。開発チームの間でどういう事が起きていたのか、気になるところです。(XML)@niftyが提供する無料ブログはココログ!。