読者の皆さんは,米Microsoftが次期Windows(開発コード名:Windows 7)向けに新しい軽量カーネルを開発している,という報道をご存じだろう。「MinWin」と呼ばれるこの新カーネルは,いくつかの点で注目に値する。第一に,MinWinはWindows 7に関して明らかになった最初の大きなニュースである。第二に,MinWinは,MicrosoftがWindowsをより幅広い市場に売り込もうとしている,ということを示唆している。なぜならMinWinは,たった40Mバイトのメモリーで動作可能だからだ。

 このニュースは非常に興味深い。ただし,1つだけ問題がある。MinWinは新しいものではないのだ。Windows Vista,あるいはWindows Server 2008のプレ・リリース版を持っている人は,既にこの技術を使用している。実際のところMinWinは,それら2つのOSにおけるMicrosoftのコンポーネント化作業の基盤なのである。

MinWinの始まりは「Longhorn」

 筆者は2003年3月,MicrosoftがLonghornをコンポーネント化している(このプロジェクトが最終的にWindows Vistaになった)ことを伝える記事の中で,初めてMinWinを紹介した。MinWinは,Longhornの「基盤となるOS」の部分を担うコンポーネントである,と筆者は書いた。当時の筆者の記事を引用する。「この基盤となるOSコンポーネントは,完全な言語非依存で,Microsoftが今後開発するLonghornの全エディションのサブセットである。従って,Microsoftと同社のハードウエア・パートナーは,この基盤となるOSを使って,実際のLonghornエディション(業界の専門用語にならって『Longhorn SKU』と呼ばれる)を開発できるようになるのだ。現在明らかになっている情報では,IT管理者(そして,当然個人ユーザーも)はSKUを開発できないため,特定のWindows SKUをライセンス使用することになりそうだ」。

 そして,記事に書いたことはそのまま現実となった。Microsoftは,MinWinとVistaのコンポーネント化されたベース部分を使って,記録的な数のVista製品バージョンを開発したのである (筆者は,これらの記事でもMinWinに触れている)。

 Longhorn Serverの初期のバージョン(最終的にWindows Server 2008になった)では,MinWinは「Server Foundation」と呼ばれていたが,後に「Server Core」に名前が変わった。この名前は読者の皆様もよくご存知だろう。Longhorn Serverに関する2005年の記事の中で,筆者は次のように書いた。「Server Foundation(MinWin)はコア部分のみのサーバーOSコンポーネントで,最小限のサーバーOS機能を提供し,特定のジョブ専用のサーバー実装や他のLonghorn Serverエディションの基本構成要素として使われることになる。Server Foundationは,同コンポーネントに機能を追加する数々のサーバー・ロールで拡張されるだろう」。これも,そのまま現実になった。

 それでは,なぜ今ごろになってMinWinが話題になっているのだろうか?

 2007年10月下旬,MicrosoftのDistinguished EngineerであるEric Traut氏がオンライン・プレゼンテーションに登場し,MicrosoftのWindows 7向けMinWinの開発状況を説明した。「多くの人がWindowsのことを肥大化した巨大なOSと考えている。そして,その考えは,あながち間違っていないかもしれない」と彼は語った。完全版Vistaのインストール・イメージのサイズが4Gバイトを超えるのに対して,MinWinのサイズはたったの25Mバイトだった。そして,Microsoftはそれをさらに小さくしようと努力しているである。このことを知った地球上のあらゆるテクノロジ関連の通信社は,それを記事にした。彼らは皆,Windows 7関連の記事をようやく書けるようになったことに興奮していたのである。

 彼らは記事を書く前に,MinWinという言葉をGoogleで検索すべきだった。Windows 7バージョンのMinWinが,VistaやWindows Server 2008のものよりも優れているのは間違いない。しかし,それが全くの別物であるかのようにほのめかすのは,不誠実なことだ。だが,もっとひどいのは,記事で取り上げる事柄について基本的な調査さえしなかったということだろう。

 だが,筆者がお伝えしたいことは他にもある。

開発スタイルの変更とMinWinの関係

 Microsoftの技術部門にいる友人のMark Russinovich氏は,筆者のMinWinについてのコメントの件で,以下のような内容のEメールを送ってくれた。「Windows 7におけるMinWinの開発は,依存という観点から見たシステムの階層化を行い,構成部品をそれぞれのビルド・ツリーに隔離するための第一歩だ。そのため,Longhorn(Windows VistaとWindows Server 2008)におけるMinWinの開発とは若干異なる」。MinWinに関するこの説明は,Windows Server 2008が開発されたプロセスと全く同じであるように筆者には聞こえる。そのプロセスについては,まもなく印刷版のWindows IT Pro Magazineに掲載される連載で,詳しく解説している 。その連載記事は,「Inside Windows Server 2008(Windows Server 2008の内側)」と題された単一記事として,SuperSite上でも公開されるので,楽しみにしていて欲しい(訳注:ITproにも翻訳記事を掲載する予定)。

 同記事の簡単な抜粋を以下に紹介する。

 Microsoftは,Windows Server 2008のビルド・プロセスを再構築した。同製品と同様に,ビルド・プロセスも区分化するためである。過去の製品バージョンと同じく,Windows Server 2008でもメインとなるOSのデイリー・ビルドは存在する。しかし,修正点をそのメイン・ビルドに組み込むプロセスは,以前よりもはるかに細かくなった。

 Windows Server 2008では開発プロセスがコンポーネント化されたため,Windows Server 2003以降,出荷室戦略も変容している。「同戦略は進化を遂げた」とWindows Server 2008のプロダクト・マネージャであるAlex Hinrichs氏は話す。「今は,メインの出荷室の他に,7つのサブ出荷室がある。そして,それぞれのサブ出荷室の運営者は,会議を開いて,コードのチェックインを担当する部下と協議を行う。メインの出荷室と同様に,すべてのサブ出荷室で毎日会議が行われる。メインの出荷室で話し合われるのは,次のようなシンプルな内容だ。7つあるサブ出荷室の誰のコードが,採用(ツリーをメイン・ビルドに組み込む)可能な段階に達しているだろうか?,ということだ」。

 言い換えると,Windows Server 2008は正に先述のRussinovich氏の説明通りに構築されているようである。つまり,下部ビルド・ツリーの1つで,隔離された下部コンポーネントの依存問題が解決したときのみ,メインのOSビルドにコードが追加されるのだ。

 それでは,これら2つは本当に全く別の技術なのだろうか? Microsoftは筆者と異なる主張をするかもしれないし,Russinovich氏が内情に通じていることも間違いない。しかし,2つの名前は同じであり,ゴールも同じである。そして,それらに関する説明や機能もほとんど同じなのだ。筆者は,2つが全く同じものであると言っているのではない。だが,外部の傍観者の立場から言わせてもらえば,Windows 7におけるMinWinの開発は,Longhornプロジェクトから始まった開発の延長線上にあるように思えるのだ。