オペレーティング・システムの地政学
この文章は、毎週火曜日に発行している「週刊 Life is beautiful」からの抜粋です。米国西海岸で暮らす起業家・エンジニアとして、テクノロジーやビジネスのことを書いています。先々週に書いた「プロセッサの地政学」に対してはたくさんのフィードバックをいただきました。その中に「OS(オペレーティング・システム)についても書いて欲しい」というリクエストがあったので、今回はOSをテーマにして書きます。
世界の各地で起こっている戦争や紛争も(例えば、シリアとトルコの紛争)、その事象だけ見ると局地的ですが、実際にはその背後にもっと大きな力(米国とロシアの覇権争い)や、別の力(宗教対立、石油利権争い、武器商人の暗躍、米国大統領選など)が働いています。そういったものを巨視的な視点で研究することを「地政学」と呼びますが、経済の世界においても、同じことが言えるのです。
特に、パソコンやスマートフォンの世界で重要な役割を果たしている OS(オペレーティング・システム)は、単にそれだけを見るだけでなく、一歩下がって、それぞれのOSの成り立ちや相互の関係を俯瞰的に見て、理解することが重要です。
OSに関しては、私自身が、CP/M の移植、Windows 95 の開発、iOSアプリの開発などで、直接・間接的に深く関わっているので、それぞれのOSが生まれた背景や成功した経緯なども含めて、時間をパソコンの黎明期まで遡った上で、そこから現在に至る経緯を書いてみようと思います。
パソコン黎明期:Apple II、CP/M、IBM-PC、MS-DOS
Apple II が発売されたのは1977年ですが、そのころのパソコンは、ごく一部のマニア向けのものでしかなく、市場はとても小さいものでした。Apple II には、Apple DOSと呼ばれる OS が載っていました。マシンに電源を入れると「BASIC インタープリタ」と呼ばれる開発環境をメモリに読み込み、その「Basic インタープリタ」から(外部記憶装置である)カセットテープやフロッピー・ディスクにアクセスする仕組みを提供するだけの役割を果たしているとてもシンプルなOSでした。
ちなみに、DOS とは Disk Operating System の略で、フロッピーディスクやハードディスクなどのディスク(Disk)にアクセスするためのオペレーティング・システム、と言う意味です。
私はその頃、NECから発売された TK-80 というパソコン(そのころは、マイコンと呼ばれていました)でプログラミングをしていましたが、TK-80 にはOSに相当するものは存在せず、BIOS (Basic Input/Output System)と呼ばれる、さらに下のレイヤーのソフトウェアしか載っていませんでした。
パソコン向けの汎用的な(=さまざまな機器に移植することを前提に設計された)OSとして最初に誕生したのは CP/M です(1974年)。Digital Research の Gary Kildall という人が Intel の 8-bit プロセッサ 8080 向けに一人で開発したものです(当時のOSは、一人のエンジニアが数ヶ月で作れるような規模だったのです)。
CP/M は当初、(Apple II よりもさらに古い)MITS社の Altair 8800 やそれの互換機である IMSアソシエイツ社の IMSAI 8080 と呼ばれるコンピュータで動いていました。開発したのが(Apple のようなハードウェア会社ではなく) Digital Research というソフトウェア会社だったこともあり、一時は業界標準になりそうな勢いを持って他の機種にも移植されました。
私自身も、NECの PC-8001 向けに CP/M を移植するという作業を担当したことがありますが、キーボードからの入力、画面への文字出力、ディスクからのデータの読み書きをするドライバーを作れば簡単に動いてしまう、とても単純な仕組みでした(当時の私は高校生で、2週間会社に泊まり込むような状態で移植したことは、良い思い出です)。
しかし、1981年にリリースされたIBM PCに Microsoft 製の DOS (MS-DOS)が採用された結果、CP/M の時代は突如として終わってしまいました。IBM は当初、CP/M を採用していたがったにも関わらず、Digital Research 側がまともな対応をしなかった結果、「BASIC インタープリタ」の分野で活躍していた Microsoft に IBM-PC 向けのOSの開発の仕事が転がり込んで来た話は、この業界では有名です。
IBM が Microsoft にOSの開発を依頼した当時、Microsoft はOSを持っていませんでした。そこで Seattle Computer Products という会社から86-DOSと呼ばれるOSを購入し、さらにそれを開発していた Tim Patterson を雇った上で、MS-DOS という名前をつけて IBM にライセンスしたのです。
IBM へのライセンスそのものは、Microsoft にとって大きなビジネスではありませんでしたが、他の会社(Compaq、Gateway Computer、Dell など)がIBM PC 互換機(クローン)と呼ばれる IBM PC と同様の機能を持つパソコンを発売し、それらのマシンを動かすには MS-DOS が不可欠だったため、Microsoft のビジネスは急成長しました。
この IBM PC 互換機市場が急速に立ち上がった結果、「CPU は Intel、OSは Microsoft」というパソコン業界のデファクト・スタンダードが作られ、その流れが40年近く経った今でも、脈々と続いているのです。
米国では、Apple以外のメーカーが全て IBM PCの互換機ビジネスに走りましたが、日本では NEC が PC-8001 という独自のハードウェアを発売し(1979年)、国内では一番のシェアを握っていました。OSは独自のもので、N-BASICと呼ばれるBASICインタープリタを搭載していましたが、同時にCP/Mも採用していました。
GUIの時代:Macintosh、Lisa、Windows 1.0/2.0
画面への出力APIとしては、MS-DOS は、文字の出力しかサポートしていませんでした。そのため、ほとんどのアプリケーションは、画面に文字を表示するだけのキャラクター・ベースのアプリケーションでした。IBM PC にも若干のグラフィックス機能はありましたが、とても貧弱(300x200、4色)で、グラフィックス・アプリケーションに使えるようなものではありませんでした。IBM 製のパソコンにまともなグラフィックス機能がついたのは、IBM PS/2 (1987年)からです。
NECはPC-8001の後継機としてPC-9801を1992年に発売しましたが、「640x400、16色」と、当時としては、画期的なグラフィックス性能を持っていました。私が、世界初のパソコン用CADであるCANDYを作ったのは、このPC-9801上でしたが、それが可能になったのは、このグラフィックス性能のおかげです。しかし、PC-9801のOS(独自のOS)には、グラフィックス用のAPIが存在しなかったので、当時はアプリケーションからVRAM(ビデオメモリ)に直接アクセスする必要がありました。
グラフィックス用のAPIを持ち、OSそのもののユーザー・インターフェイスにグラフィックスを活用するOSのことを、GUI OS (Graphics User Interface OS)と呼びますが、世界で最初に GUI OS を搭載したパソコンは、Apple のMacintoshでした(1984年)。
Macintoshは、当時のハードウェア・ソフトウェアのことを考えれば、本当に画期的なパソコンで、IBM陣営が Windows 3.0 (1990年)でようやく同じレベルに追いつくまでに、6年の月日を要しています(Windows 1.0 や 2.0 は遅くて使い物になりませんでした)。つまり、Macintosh は「市場で唯一使い物になるGUIパソコン」という地位を6年間も保有し続けることが出来たのです。「IBM PCとその互換機」という強力なライバルがいるにも関わらず、80年代に Apple が成長し続けることが出来たのは、Macintoshのおかげです。
しかし、Apple はその圧倒的に有利な地位を生かして90年代に更なる飛躍をすることには失敗してしまいました。
失敗の理由としては、1983年にCEOとして雇われた John Sculley と Steve Jobs の間の確執(Jobs は1985年に解雇)などがよく取り上げられますが、最も致命的だったのが「次世代 OS」の開発の失敗です。
Macintosh は、Mac OS System 1(今の MacOS とは全く異なるもの。区別するために Classic Mac OS と呼ばれます)と呼ばれるオペレーティング・システムを搭載していました。System 1 はマルチタスクをサポートしておらず、ー度に一つのアプリケーションしか走らせることは出来ませんでした。
5世代めの System 5(1987年)になって、ようやくマルチタスクをサポートするようになりましたが、cooporative multitasking と呼ばれる、アプリケーション側が明示的にコントロールをOSに渡す仕組みのマルチタスクだったし、メモリ空間もアプリケーション間で共有していました。
Pink、Taligent、Copland
しかし、その頃になると、「ムーアの法則」により着実な進化を続けるハードウェアのの性能を最大に生かすには、本格的なマルチタスクOSが必要であることが明確になって来ました。
そこで Apple は社内に Pink と呼ばれる次世代OSを開発するチームを設立し(1988年)、1993年ごろのリリースを目指して開発を始めました。しかし、開発は困難を極め、計画は大幅に遅れていました。
1991年になると、CEOの John Sculley が IBM との商談をまとめ、Taligent という合弁会社を作って次世代OSを共同開発をすることを決めてしまいました。Pink プロジェクトのメンバーはそちらに移籍して IBM から来たメンバーと開発を続けましたが、ここでも開発は順調には進まず、1995年には Apple はこの合弁会社からは手を引くことになりました。
その後 Apple は、Copland という新たな次世代OSを開発するプロジェクトを1994年に立ち上げましたが、こちらも同様に破綻してしまいました。
80年代後半から90年代前半にかけて、Apple が本格的なマルチタスクOSの開発にことごとく失敗してしまったことが、Microsoft に付け入る隙を与えてしまったのです。
OS/2、Cairo、Windows 3.x
しかし、Microsoft 側でも本格的なマルチタスクOSの開発は順調ではありませんでした。
Microsoft は、1985年の段階で IBM とパートナーシップを結び、Windows (当時は 1.0)の後を継ぐ、本格的なマルチタスクOSであるOS/2 を共同開発することを決めました。MS-DOS が IBM PC に採用された結果、デファクト・スタンダードになった経験から、今度もIBMと組むのが最適と判断したのです。
グラフィックス・インターフェイスを含む OS/2 1.1 がリリースされたのは1988年でした。私は、当時、Microsoft の日本法人で、日本語化を担当していましたが、まだ小さなベンチャー企業だった Microsoft とIBM の間には大きなカルチャーギャップがあり、Microsoft のエンジニアたちは、IBM の官僚主義に大きな不満を持っていることは明確でした。
Microsoft は、IBMとのパートナーシップの締結後も Windows の開発を別のチームで続け、Windows 3.0 が市場でそれなりの成功を納めると、IBM とのパートナーシップを解消することを決めました(1990年)。このまま IBM と OS/2 の共同開発を続けるよりも、独自で Windows を本格的なマルチタスク OSに進化させる方が良いと判断したのです。
DEC から1988年に引き抜いた Dave Cutler のチームが、OS/2 の後を注ぐ OS/3 のマイクロ・カーネル(OS のコアとなる部分)の開発を順調に進めていたことも、その決定を後押ししたと言われています。
IBMとの契約を解消した Microsoft は、David Cutler たちが作っていたマイクロ・カーネル(後の Windows NT)の上に次世代OSを開発する Cairo というプロジェクトを立ち上げ、Banyan から引き抜いたばかりの Jim Allchin に任せることにしました(1990年)。
その時、私は日本から Microsoft 本社に移籍したばかりで、OOSH(Objected Oriented Shell)と呼ばれる小さなチームで OS/3 向けのGUI のプロトタイプを作っていましたが、Cairo プロジェクトの発足とともに、そこに移籍しました。
Cairo の開発は、順調とは言い難いものでした。急激にエンジニアの数を増やした上に(約400人)、ソフトウェア・アーキテクトと呼ばれる立場にある人が、私も含めて10人いました。ソフトウェア・アーキテクトは、船でいれば船頭の役割をする人で、まさに「船頭多くして船山に上る」という諺(ことわざ)通りのことが起こっていたのです。
毎日の長時間の「アーキテクト会議」にウンザリしていた私は、92年にそれまで作っていたものの全面描き直しが決まると堪忍袋の尾が切れ、Jim Allchin に「このままでは、プロジェクトが破綻する。もっと少人数で作るべき」と直談判に行きました。しかし、私の意見は聞き入れられませんでした。
私は、その足で、当時 Windows 3.1 チームを率いていた David Cole に会いに行き、そこでより着実な仕事をすることにしました。私としては、「次世代OS」のような一見格好は良いけど中身がグタグタなプロジェクトに関わるよりも、自分が書いたコードが1日でも早く世の中に出て多くの人に使われることが重要だったのです。
ちなみに、私の知り合いに同時期に Apple の Pink プロジェクトに関わっていたエンジニアがいますが、Microsoft の Cairoと似たような状況だったそうです。「次世代OS」のような重要なプロジェクトになると、経営陣は大きな予算を付け、会社中の優秀な人材をそこに集めて作らせようとしますが、それが逆に破綻を招くのです。
パソコンの性能が大幅に進歩し、それまで一部のホビイストのものでしかなかったパソコンが、本格的なマルチタスクをサポートし、誰にでも使える一般的なツールに昇華する重要な過程で、AppleによるPink と MicrosoftによるCairoという「次世代OS」の開発プロジェクトがどちらも破綻してしまった事実には、重要な教訓が含まれてます。
逆に、現在でも開発プラットフォームとして重要な役割を果たしている Linux、Node.js、Ruby on Rails、React.js、Vue.js などが、いずれも最初はたった一人のエンジニアによって作られたことに注目すべきです。
ソフトウェアはエンジニアリングでありながら、同時にアートでもあるのです。特にOSやフレームワークなどはその傾向が強く、基本的なアーキテクチャは、一人の優秀なエンジニアが、自ら実装しながら進めた方が一本の筋が通った良いものが出来るのです。Pink や Cairo のように、最初から大勢のエンジニアをアサインしてしまうと、一つのことを決めるのに膨大な時間がかかる上に、「実装しながら決めていく」ことも難しくなります。
その結果、仕様の作成に膨大な時間と労力が費やされ、エンジニアたちの生産性は地に落ち、何時までたってもものが出せないデスマーチ状態に陥り、最終的には破綻してしまうのです。
ここから先は
¥ 1,000
この記事が気に入ったらサポートをしてみませんか?