いっそ、「.NET」なんてわけのわからない言い方をやめて、「バーチャルWindows構想」と言い換えれば、ずっとわかりやすいだろう。実際、米Microsoftの.NETアーキテクチャは、Windowsを“バーチャル化”する構想なのだから。なのに、Microsoftはなかなかそうした説明をしない。そこにMicrosoftの抱えるジレンマがあるようだ。
.NETから余計なものを取り去って、基本部分だけにすると次のようになる。
まず、.NETでは、OSの上にランタイム環境「Common Language Runtime(CLR)」を載せる。これが、中間言語(IL)コードをJITコンパイラで、CPUのネイティブコードにコンパイルする。CLRはマルチランゲージ対応で、コンパイルする以外にもいろいろなサービスを提供する、一種の“バーチャルマシン(Microsoftはこう呼ばないが)”となっている。
そして、CLRの上には、Microsoft版Javaと言うべき新言語「C#」で書かれたクラスライブラリが乗る。CLRとこのクラスライブラリの組み合わせが.NETのプログラミングフレームワークである「.NET Framework」だ。この.NET Frameworkは、OSをラップしてしまう。つまり、.NET Frameworkを使うならWindowsのAPI群は使わないし、CPUのネイティブコードを使わなくてもすむ。そのため、.NET Frameworkの下のOSやCPUは、何だってよくなってしまう。
そして、.NET Frameworkは、ネットワーク上のオブジェクトもシームレスに引っ張って来ることができる。.NET Frameworkでのアプリケーションは、基本的にネット経由のサービスと融合した「Webサービス」になる。また、ユーザーのデータはXMLストアとしてネット上のサーバーに保存され、ユーザーのローカルディスクにはそのコピーが保存される。
●どこかで見たことがある.NET構想
この構想、どこかで聞いたことがある。そう、WebブラウザとJavaとNC (Network Computer)で、Windows支配を破ろうとしたモデルによく似ているのだ。
Java+Webブラウザ+NCでは、Webブラウザをユーザーインターフェイスに、Javaをプログラミングフレームワークにすることで、ソフトウェアのOSとCPUへの依存を解き放つ。まず、Windowsの上に乗ったWebブラウザが、OSに依存しないユーザーインターフェイス/プレゼンテーションレイヤーとなる。アプリケーションはJavaバイトコードで提供され、Javaバーチャルマシンがバイトコードをコンパイルして実行する。Javaバーチャルマシンの上には、Javaベースのクラスライブラリが構築され、それがプログラミングフレームワークになる。もちろん、CPUのネイティブコードもOSのAPIも使わないので、下のOSやCPUはWindows+x86でなくても構わない。
また、アプリケーションはネットワーク経由で提供する。Javaは、ネットワークをオブジェクトの海のように見立てて、必要なコンポーネントをダウンロードしてくる。ユーザーのデータも、ネット経由でサーバーに保存する。
ラフに単純化してしまうと、これが「Java+Webブラウザ+NC」の基本的な構想となる。こうやって単純にすると、これと.NETが、いかに似ているかがよくわかる。もちろん、両者をきちんと比べると違いは色々ある。部分的にはまったく逆の要素もある。しかし、.NETが、これまでのMicrosoftのモデルを覆すものであり、その覆すアプローチが、ライバルの構想と基本的に同じ方向にあることは確かだ。
●Windowsをランタイム環境の上に再構築する試み
従来のMicrosoft支配は、アプリケーションがOSやプロセッサに縛られるため、Windowsとx86 CPUから抜けられない点に立脚していた。Java+Webブラウザ+NCは、Windowsの上にOSやCPUを隠蔽してしまうレイヤーを置くことで、その支配をうち破ろうとしている。OSやCPUが何でもよくなってしまえば、重厚長大なWindows PCに、軽量なNCが取って代わることができる。つまり、Windows PCに対して、別なプラットフォームで戦うのではなく、プラットフォームのパラダイムを変えてしまうことで挑戦したのだ。
ところが、.NETは同じようにパラダイムをシフトさせてしまう。.NETを構想したアーキテクトたちの目的は、最終的にMicrosoftのプラットフォームを完全に.NET Frameworkに移すことだと思う。これは逆を言えば“Windows(MicrosoftのOSという意味でWindowsという言葉を使うなら)”を、.NET Frameworkで再構築してしまうことだ。つまり、ランタイムの下にあるのがWindowsではなく、ランタイムの上に構築されるのがWindowsになってしまうわけだ。
これは、言い換えれば、Windowsをバーチャル化してしまい、どこへでも移植できるようにすることだと言ってもいい。冒頭で、.NETがバーチャルWindows構想だと言ったのは、そういう意味だ。JavaがミドルウエアOSになるように、バーチャルWindowsというミドルウエアOSを提供することになる。
●すでにWindowsの利点が失われているという認識
.NETのこの大胆なバーチャルWindows構想の背後には、もはやWindowsをセコセコ守るのでは、勝てないという強烈な危機感が見える。
実際、あるマイクロソフト関係者は「インターネットにアクセスするという今のPCの使い方では、Windowsの利点は、たんに回りに同じOSを使っている人がいっぱいいるだけになってしまっている」と言い切った。つまり、インターネット中心のユーザーはWindowsが使いたくてWindows PCを選んでいるのではなく、インターネットアクセス端末としていちばん使われているという、あやふやな理由でWindows PCを選んでいるだけだと認識しているわけだ。そして、それならWindowsの優位性なんて幻想にしがみつかずに、いっそのことWindowsをバーチャル化しようと考えたらしい。
Microsoftの開発者向け会議「Microsoft Professional Developers Conference(PDC) 2000」(7月11~14日、米オーランドにて開催)では、Microsoftが根本から変わらなくてはいけないという危機感を抱いていることはかなり感じ取れた。Windowsを守るという保守的な態度ではないということだ。そして、.NET自体も、何年もかけた技術(.NET Framework)がベースで出てきたアーキテクチャであることも説明できていた。つまり、ここ数年Microsoftが続けていた、すぐに書き変わってしまうマーケティングスローガンとは異なるということだ。
●.NETをきちんと説明できないMicrosoft
ところが、開発者の内輪の集まりであるPDCを一歩出ると、これが消し飛んでしまう。最悪なのは、Microsoft自身が、.NETがいかに根本的なチェンジかを、モゴモゴとしか説明できていないことだ。
Microsoftの中でも.NETに関係する現場の人たちは、.NETが根元的な変化であることを明晰に話しをする。Microsoftの幹部でも、このプロジェクトのキーマンであるポール・マリッツ グループ副社長(Platforms Strategy and Developer Group担当)は、それが感じ取れるスピーチをする。ところが、それ以外のMicrosoftはというと、わざとわかりにくく説明しているとしか思えない。Microsoftの公のステートメントだけを見ていると、.NETはMicrosoftがASPサービスをやると言っている程度にしか聞こえない。だから、「また新しいマーケティングスローガンか」と受け止められてしまうのだと思う。
これは、もちろん、Microsoftの人間が.NETの意味がわかっていないから説明できないのではない。むしろ、.NETがMicrosoftの土台をひっくり返すとわかっているからこそ、明瞭に説明できないのだと思う。Microsoft内部でも意志統一ができていないのかもしれないし、カモフラージュしているのかもしれない。ビジネスモデルを根本から崩してしまうのだから、それも不思議はないが。いずれにせよ、.NETを推進する上ではマイナスにしかなっていない。
●.NETの重大さを伝えられないMicrosoft
そもそも、.NET Frameworkの理念を押し進めるなら、これをあらゆるOSの上に移植してコモンのプラットフォームにすることを目指すべきだ。.NET FrameworkがバーチャルWindowsとして新しいOSレイヤーになり、その下のOSやCPUを隠蔽してしまうというのは魅力的なアイデアだ。ところが、相変わらず、MicrosoftはWindowsが.NETのプライマリのプラットフォームだと言っていて、“脱Windows”だとは決して言わない。それに、.NET Frameworkを移植する先も今のところ組み込み向けのリアルタイムOS(RTOS)だけだ。まあ、これは今後のネットアクセスデバイスがデジタル家電になっていくことを考えると、当然のターゲットかもしれないが。
しかし、Microsoftの小規模組み込み向けOSであるWindows CEも生き残らせようとしているからさらに話が複雑になる。RTOSの上に.NET Frameworkが乗り、.NET Frameworkが次世代のプラットフォームになるのなら、その下のOSがWindows CE(Windows APIサブセット)である意味はなくなるはずだ。ところが、PDCの説明では、Windows CEは、他のRTOSよりもリッチなフレームワークをサプセットで提供するという差別化で守ることになっている。こうした展開だと、結局、Windowsを守りながら.NETに移行という話でしかない。せっかくの.NETのラディカルさが薄れているように見える。
ともかく、.NETは一過性のマーケティングスローガンではなく、Microsoftが根元的な変革を目指すものなのに、今のMicrosoftは、それを説明できていない。Microsoftがとてつもなく大きな賭けを始めたのに、ほとんどの人はそれに気づいていない。Microsoftにとって、これは不幸なことだろう。
(2000年7月28日)
[Reported by 後藤 弘茂]