米Microsoftがこの6月,満を期して発表した「Microsoft.NET」構想への受け止め方は様々だ。メディアでは「まだ良く分からない」という反応が多い。実際,具体的な製品が揃い始めるのが2~3年先というのだから,まだ評価を下す時期とはいえない。

 ここで,Microsoft.NETをいち早く理解するためのヒントがある。それは,Java技術を知ることだ。なにしろ,「Javaを知っていればMicrosoft.NETは理解が早い」とマイクロソフト自身が語っているのだ。

    *    *    *    *    *    *    *    *

 Microsoft.NETのポイントはいくつかある。一番大きなポイントは,ビジネス・モデルの変革である。Microsoft社は,パッケージ・ソフトウエアを販売するビジネス・モデルだけでは未来はないと感じており,今後はネットワーク上で利用できる「サービス」にビジネスの中心を移そうとしている。

 そこで,まず重要になるのは,ネットワーク上の「サービス」を開発し,実行するためのプラットフォーム,つまりMicrosoft.NETである。このプラットフォームは,現在のWindowsの資産を継承しつつ,競合する技術(すなわちJava技術)に引けを取らない現代的なものである必要がある。

 新プラットフォームは,開発生産性を高め(もうメモリ・リークのエラーにいつまでも悩みたくない!),アプリケーションの配布を容易にすることを狙っている(もうDLLのバージョン違いに悩まされたくない,リスタートなしにアプリケーションをセットアップしたい)。そのためには,プラットフォームを現代的な内容にアップデートする必要がある。かくして,Microsoft.NETの青写真は,Javaとかなり似たものとなった。

 Microsoft.NETプラットフォームは,プログラム実行環境の仮想化を進めている。プログラミング言語で書かれたコードを,いったん中間コード「IL」に変換し,一種の仮想マシン「Common Language Runtime」で実行する。実行時には,中間コードをネイティブ・コードに変換して速度を向上させる「JIT(ジャスト・イン・タイム)コンパイラ」を適用する。さらに,メモリ管理を自動化するGC(ガーベジ・コレクタ)や,中間コードの検証機構も備えている。仮想マシン環境から利用できる共通クラス・ライブラリ「Microsoft.NET Framework」がある。

 これらの特徴は,驚くほどJavaプラットフォームと似ている。その結果として開発生産の向上,ソフトウエア配布の容易さ(インストールは,単なるコピーで可能となる)といった特徴が得られる。これは,Java技術と相通じるものがある。

 ただJavaとMicrosoft.NETは,もちろん似ているだけではなく違いも多い。この違いを見ていくことから,両技術の今後の力関係も読めてくるものと思う。以下に主な違いをまとめてみよう。

(1)Java技術は現在利用可能。Microsoft.NETの登場は2~3年先。

(2)Javaは一つの言語(Java言語)による開発。Microsoft.NETは,Visual Basicや新言語C#を始め,あらゆるプログラミング言語による開発を認める。

(3)Javaは複数OSに対応する。Microsoft.NETは,原理的には複数OS対応も可能だが,当面はWindows環境を対象とするものとなろう。

(4)XMLソリューションではMicrosoft構想が先行。ネットワーク対応の「サービス」を実現するため,XMLに基づく遠隔オブジェクト呼び出しプロトコルSOAPを採用した。XMLによるプロトコルは,原則的には特定のプラットフォームに縛られない。この点は競合他社も高く評価している。

 Java技術に基づくネットワーク対応サービス提供プロトコルとしてJiniがある。ただ,JiniはJavaを前提とする技術であり,異種分散のための技術とは言いにくい。

    *    *    *    *    *    *    *    *

 以上,Java技術とMicrosoft.NET技術の共通点と相違点を見てきた。Microsof社は,新戦略を「180度の戦略変更」(同社)と言ってはいるが,筆者としては,同社にとっての原点への回帰と見ることも可能ではないかと思っている。

 Microsoft社には,いくつも不得意分野がある。特に,ハイエンド・サーバOSやハイエンド・データベース,大規模Webアプリケーション・サーバ,トランザクション・ミドルウエアのような分野で,米Sun Microsystemsや米IBM,米Oracle,米BEA Systemsなどのライバルに打ち勝つことは,もはや困難だ。一方,デスクトップ分野ではMicrosoftはいぜんとして圧倒的なシェアを持つ。同社の得意分野は,結局はVisual Basicに代表される取っつきやすい開発ツール群であり,Officeに代表されるデスクトップ環境なのだ。

 デスクトップ環境での膨大なユーザが同社を支持している限り,ネットワークの一方の端を押さえることができる。Javaを活用した大規模Webサイトが優秀なサービスが提供するなら,それらを統合して使いやすくするクライアントを開発すればいいのだ。

 結局は,デスクトップ環境での強みをネットワーク時代に生かすことが,Microsoft社存続のための最も有効な戦略だ,という結論になったのではないか--Microsoft.NETの説明を聞いていると,そう思える。

 それにしても,古い既存環境を継承しつつ,複数の言語をサポートするMicrosoft.NETの開発は,Java技術の開発よりも難易度が高いはずだ。一方で,Java技術の開発は着々と進んでいる。同社の今後は,まだまだ平坦ではないのである。