2000年6月22日に米マイクロソフト社が発表した「Microsoft.NET」。国内でも2度ほどプレス向けの説明会があった。7月26日~28日の日程で開催されるマイクロソフトのセミナー「Tech Ed2000」でも話題を呼んだ。.NETはNGWS(次世代Windowsサービス)と呼んでいた,次世代のサービス/ソフトウエア構築の基本構想である。

 マイクロソフトが作った,.NETが描く世界のイメージ・ビデオにはたとえばこんなシーンがある。男性が出張先の都市の空港で携帯電話を借りる。この端末に自分のICカードをかざすと,自動的にその人のアドレス帳やスケジュール帳がダウンロードされて,その人専用のPDA(携帯情報端末)に早変わりする。

 なるほど便利そうだとは思うものの,「これが.NETだ」といわれると,どうもわかったようなわからないような気持ちになる。ここ数年のマイクロソフトの発表でも屈指のわかりにくさという印象である。

 何がわかりにくいか考えてみて思い当たったのは,これまでマイクロソフトが打ち出してきたコンセプトとの関係性があまり明確になっていないことである。.NETのベースとなっている分散アプリケーションの思想,その実現のためにマイクロソフト自身が提供する仕組み,その仕組みの上でマイクロソフトが提供するサービス,あるいはサード・パーティが提供するサービス,そして実際に提供予定の製品がどういうものなのか想像しにくいのだ。

ソリューション構築の枠組みはWindows DNA2000そのもの

 しかし,よくよく考えてみると,従来のコンセプトとの関係性は案外単純だった。

 .NETでは,インターネット経由で利用可能な単機能のサービス(ビルディング・ブロック)を組み合わせて,ソリューションを構築する。マイクロソフト自身がコンシューマ向けのポータル・サイトMSN.NETやオフィス・ソフトのASPサービスOffice.NETなどの.NETソリューションや,認証サービスであるPassportなど,.NETソリューション構築ための基本的なビルディング・ブロックを提供すると発表しており,これがいっしょくたになっているのでわかりづらいが,この流れはWindows DNA2000そのものである。

 ビルディング・ブロックを利用するために,通信プロトコルとしてSOAP(シンプル・オブジェクト・アクセス・プロトコル)を,データ形式としてXML(拡張可能マークアップ言語)を使うというのも変わりない。SOAP/XMLを用いることで,ソリューションの部品となるビルディング・ブロックは非Windowsのプラットフォームでも構築可能というのもDNA2000からうたっていた。

 ソリューションの実体は上述のイメージ・ビデオにも出てくるさまざまなサービスそのものである。たとえばICカードをかざすだけで自分のアドレス帳やスケジュール帳を使える携帯電話サービスといったイメージである。

 このソリューションを構成するのがビルディング・ブロックと呼ぶ,さまざまなサービス群である。上記の携帯電話端末の例でいうと,端末が読みとったICカードの情報を受け取ってユーザーを認証するサービスや,パソコンや携帯電話端末からネットワーク経由で利用できるアドレス帳やスケジュール帳のサービスがこれにあたる。つまりこの携帯電話サービスでは,SOAP/XMLを使って,まず認証サービスから認証を受け, 次にこの認証を受けたという証拠を持ってスケジュール帳のサービス会社からそのユーザーのスケジュールをSOAP/XMLでもらってくるというソリューションを構築しているわけである。

もうCOMに苦しめられることはない

 ビルディング・ブロックを組み合わせてソリューションを構築する,という部分はDNA2000が名前を変えただけだが,ビルディング・ブロックそのものの構築についてはDNA2000より.NETの方が一歩進んでいる。

 DNA2000ではCOM(コンポーネント・オブジェクト・モデル)やDCOM(分散COM)さらにはWindows2000 ServerのCOM+サービスを使ってビルディング・ブロックを構築するとしていた(DNA2000ではメガサービスと呼んでいた)。一方,.NETではCOMという用語は姿を消した。代わりに.NET Frameworkというビルディング・ブロックを構築のためのフレームワークを発表している。

 用語としてのCOMは消えたが,.NET Frameworkの実体はCOM+を進化させたものである。事実,.NET FrameworkのSDK(ソフトウエア開発キット)のリリース・ノートはCOM+2.0というタイトルが残っている。COM+はCOMの枠組みはそのままにセキュリティや負荷分散といった処理の面倒をOS側で見ることで,実装の手間を軽減するランタイム・サービスとして生まれたものだ。

 COM自体はさほど複雑な仕様ではないが,さまざまな約束事があるために実装に非常に手間がかかったためである。.NET Frameworkはこの「面倒を見る」部分をさらに拡大し,COM+で相変わらず残っていたCOMの枠組みを完全に取り去った。もはやCOMオブジェクトとしてオブジェクトを実装する必要がない。

 この実現形態がふるっている。一口で言えばCOMオブジェクトをJavaプログラムのようにしたのである。つまり,.NET Frameworkのオブジェクトは,プロセッサのネイティブ・コードではなく,IL(中間言語)と呼ぶ仮想的なマシン・コードにコンパイルされる。実行時には,Java仮想マシンに相当するCLR(共通言語ランタイム)と呼ぶモジュールがILコードをネイティブ・コードに変換して実行する(実際に変換するのは最初の1回だけ)。

 オブジェクト同士の通信はCOMではなく,普通の手続き呼び出しとして記述すればよい。CLRを移植すればWindows以外のクライアントやサーバーでも同じコードが動作する。しかも開発言語は何でも構わない。マイクロソフトの開発環境であるVisual Studioは時期版でC/C++,Visual Basicおよび新開発のC#を.NET Frameworkに対応させるほか,すでにサード・パーティが多数名乗りを上げ,現在のところJava以外の主要な言語ほぼすべてを使えるようになりそうな情勢である。

 7月11日~14日のPDC(プロフェッショナル開発者会議)で,米マイクロソフトの副社長であるポール・マリッツ氏が「(COMの典型的な約束事である)IUnknownやGUIDもういらない」といったときに,開発者から拍手がわき起こったというのもうなづける話だが,この.NET Frameworkは開発が楽になるとかJavaに似ているとかを通り越して,純粋にソフトウエア技術として実におもしろい仕組みである。

 実際には.NETの発表は.NETソリューションを構築するためのさまざまなサービスも含んでいるが,結局.NETのプラットフォーム部分はWindows DNA2000とCOM+なのかと理解したところで,「なーんだ,今までと大して変わりないや」とも思ったのも事実だ。その一方で,話をわざわざわかりにくくしてまでWindows色を消して新しさを強調したマイクロソフトには,インターネット時代に生き残るためのなみなみならぬ決意も感じることができる。