• Unix in the Windows Machine

WindowsとUnixは競合し、かつては激しく競り合っていたと言われることがある。しかし、実際には、Unixを搭載しPCのように個人利用を想定したUnixワークステーションが隆盛を極めたのは、1980年台のことで1990年台後半にはブームが沈静化している。もちろん、Unixはなくなったわけではなく、いまでも使われているが、1980年台には、将来の主要なオペレーティングシステムはUnixで広く一般にまで普及するだろうと考える人は少なくなかった。

このあたりで、UnixとWindowsが激しく火花を散らしたと思われるかもしれないが、当時、Unixと直接競合したMicrosoft製品は、1987年に登場OS/2だった。もちろんMS-DOSやWindowsはあったが、16bit CPU向けの製品であり、32bit CPUを主体にしたUnixやUnixワークステーションとは性能も価格も違い過ぎた。

たしかに当時UnixとWindows、OS/2を対決させるような雑誌記事(インターネットは商用化さされてなかった)は多かったが、筆者の実感では、ほとんど対決していなかった。しかも、勝負は、Unix陣営側の「自滅的」な結果で終わった。Unixと対決していたと言われているWindows NTの発売は1993年。Unix業界で対立していたUI(Unix International)と、OSF(Open Software Foundation)が歩み寄りを見せた頃である。ただ、業界内は落ち着いておらず、1992年には、AT&Tの子会社でUnixの開発とライセンスを担っていたUSL(UNIX System Laboratories)が、BSD系Unixのソースコード利用に関して訴訟を起こす。1994年には和解するが、その間にUSLは、Novellに売却(1993年)され、AT&TはUnix業界から去ることになる。Novellも一時は、WordPerfect(ワードプロセッサ)やQuattro Pro(表計算)を購入し、Microsoftと対決する姿勢を見せたが、1995年にはUnixを、翌年にはワープロ、表計算も売却、短時間で撤退した。

90年台前半、Unixワークステーションの普及を加速したRISC CPUは64bitに移行、その性能から多くはサーバー系のマシンに使われた。Unixを採用するメーカーがサーバーなど上に展開した。

インテルが64bit CPUを投入するのは2000年台に入ってからで、Windowsの64bit化もその後になる。Windows NTは32bit CPUで動作していたが、一般消費者向けのWindows 95が登場するのは1995年、NT系と統合されて32bit オペレーティングシステムになるのは2001年のWindows XPからである。1990年台、結果的にUnixとWindowsは住み分けが行われ、競合は部分的なものでしかなかった。

こうした影であまり知られていないが、Windowsは、1994年のNT3.5からVistaまで、POSIXサブシステムと呼ばれていたUnixアプリケーションを動かす仕組みを持っていた。最初は、POSIX準拠のAPIが利用できる程度だったが、NT 4.0では、POSIX用に作られたプログラムを実行可能とした環境になる。

1989年に米国政府の調達ルールとして俗に「POSIX要件」と呼ばれるものができた。これは、米国政府に納入するコンピュータは、POSIXとの互換性を持つことが義務づけられたもの。POSIXはUNIXをベースにして作られたAPI、動作環境であり、POSIXアプリケーションとは、UNIXアプリケーションとほぼ同義である。

このため、Windows NTには異なるAPIセットを、提供する実行環境を作るための「サブシステム」という仕組みが導入された(このサブシステムという仕組みはOS/2との互換性を持たせるためにも使われた)。POSIXの実行環境は、これを利用して作られたため、「POSIXサブシステム」と呼ばれた。

POSIXサブシステムは途中名前を変え、単独パッケージ製品化された時期もあったが、最終的には、無料の拡張パッケージとしてWindows Vistaまでサポートされた。LinuxもUnix系と考えれば、Windows 10のWindows Subsystem for Linux(WSL)でWindowsの中のUnixが復活したといえる。正式搭載は2017年のWindows 10 Ver.1709だが、前年からプレビューまたベータ版として提供されていた。Windows NT系でUnixが動かなかったのはWindows 7と8のみと意外に短い。Windowsは、ずっと、その内部にUnixを抱えていたのである。

今回のタイトルネタは「The Ghost in the Machine」。1967年のArthur Koestlerによる書籍が有名だが、言葉自体は、1949年の「The Concept of Mind」(Gilbert Ryle。邦訳「心の概念」,みすず書房)で使われたのが初出。多くの音楽やテレビドラマのエピソードタイトルや映画のタイトルで使われ、そのバリエーションも少なくない。Wikipediaの曖昧さ回避ページには、多数のGhost in the machineがリストされている。