矢沢久雄 文化オリエント アドバイザリースタッフ

●はじめに

 この講座では,マイクロソフトが提唱する新しい考え方である.NET(ドットネット)の基礎を解説します。すでに様々な雑誌などで.NETが取り上げられ,難しそうな技術用語が飛び交っています。聞けば聞くほど.NETのことが分からなくなってしまったという人はいませんか? そんな人を対象として,今回から5回にわたり,できる限りやさしく.NETを語りたいと思います。よろしくお付き合いください。

●.NETを理解するキーワードはWebサービス

 「企業の経営者は,どんなに難しい技術であっても,それを誰にでもわかる言葉で説明できなければならない」などとよく言われます。以下は,マイクロソフトのパンフレットの冒頭で,ビル・ゲイツ氏が.NETのことを説明している文書です。まずは,じっくりと読んでみてください。

「.NETの登場により、インターネット革命は次の段階へステップアップしていきます。.NETの中核ともいえるWebサービスにより、分散されたコンピュータを連携させ、顧客に新しい革新的なサービスを提供できるようになります。.NETの目標は、開発者、企業、消費者が、本当に自由自在にインターネットとコンピュータを操れるようにするための基盤を提供することです。弊社は、すべての製品やサービスを.NET対応へと機能アップしていきます」

 .NETに対するマイクロソフトの意気込みが感じられる文書ですね。この文書の中に登場する技術用語の中で目新しいものは,「Webサービス」だけでしょう。難しい技術用語を避けた説明文の中であっても,Webサービスという言葉だけはカットできなかったわけです。それほど,Webサービスは,.NETにとって重要なものなのです。Webサービスが分かれば,.NETを理解できると言っても過言ではありません。

図1 現状では,手作業で複数のWebページの情報をまとめている

●Webサービスを連携させてソリューションを提供する

 .NETの中核となるWebサービスとは何かを説明しましょう。新しい技術というものは,現状の技術の問題点を改善するために考案されます。Webサービスは,現状のインターネット利用形態の問題点を改善します。何が問題なのかと言えば,せっかくインターネットでつながった数多くのコンピュータと大量の情報があるのに,それらを連携させて目的の結果を自動的に得る汎用的な技術が確立されていない,ということです。

 たとえば,皆さんが旅行代理店のWebページを運営しているとしましょう。様々な旅行プランを作るためには,皆さん自身が,様々なWebページから宿泊先や交通機関などの情報を探し出さなければなりません。それらをまとめて1つのWebページにするのが手作業だなんてナンセンスだと思いませんか。それぞれのコンピュータは,インターネットでつながっているにもかかわらず,です(図1[拡大表示])。

 現状のWebページは,文字や画像で構成した単なるデータなのですから,それらをまとめるのは手作業になります。それなら,情報の提供元のWebページを,プログラムにしたらどうでしょう? 旅行代理店のWebページから宿泊先と交通機関の情報を自動的に連携できるはずです。このようなプログラムが,すなわちWebサービスです。Webサービスは,現状のWebの情報をサービス化(プログラム化)したものです。今までWebに情報を提供していた企業は,サービスを提供することになります。ちょっと発想の転換が必要になるかもしれませんが,このようなWebの利用形態のことを「サービス指向」と呼びます。いままでのWebは,言わば「情報指向」だったわけです。

 Webサービスの実態は,インターネット上の様々なコンピュータに配置された関数だと考えてください。異なるコンピュータに配置された関数を呼び出すことを一般的にRPC(Remote Procedure Call)と呼びます。Webサービスはインターネット版のRPCのようなものです。

図2 .NETは,複数のWebサービスを連携させてソリューションを提供する
 Webサービスを呼び出すのは,Webブラウザを使うエンドユーザーではありません。先ほどの旅行代理店の例で言えば,旅行代理店のサーバー上のアプリケーションが,他の企業のサーバー上に配置されたWebサービスを呼び出し,それらを連携させた結果を通常のHTML形式でエンドユーザーに提供するのです。このように,複数のWebサービスを連携させて得られる結果のことを「ソリューション」と呼びます。ソリューションは,従来の「アプリケーション」に取って代わる言葉です。分散されたWebサービスを連携させてソリューションを提供するための基盤が.NETというわけです。(図2[拡大表示])。

●.NETはインターネットそのものをプラットフォームとする

 .NETのWebサービスは,従来のように特定のOSをプラットフォームとする技術ではなく,インターネットそのものをプラットフォームとする技術です。もちろん,OSはWindowsに限定されません。Webサービスは,従来のアプリケーションのように,特定のOS上で稼動するのではなく,インターネットに繋がった環境ならどこでも実行できるのです。

 Webサービスを実現するには,OSやマシンに依存しない汎用的な技術でWebサービスを利用できなければなりません。現状のDCOMやCORBAといった技術を使ってもRPCを実現できますが,汎用性や互換性がありません。.NETでは,SOAP(ソープ)と呼ぶHTTPベースのプロトコルでWebサービスを呼び出します。データの形式には,XMLを使います。HTTPとXMLは,インターネットにおける標準的かつ汎用的な技術です。Webサービスの実態は何であってもかまいません。SOAPで呼び出すことができ,XML形式で結果を返すものなら何でもOKなのです。ただし,Webサービスの開発と運用にはOSとしてWindowsを使うことが最も適したものとなるでしょう。何と言っても,.NETを提唱しているのはマイクロソフトなのですから。

図3 Windowsプラットフォームと.NETプラットフォームの比較

●.NETで何が変わるのか?

 図3[拡大表示]は,現状のWindowsプラットフォームと.NETプラットフォームの対応関係を示したものです。これを見れば,.NETによって何が変わるのかがわかるでしょう。

 Windowsの実行環境はPCですが,.NETの実行環境はPCに限定されません(PC and other devices)。インターネットに接続されているなら,携帯端末でも携帯電話でも何でもOKです。WindowsはOSとしてAPI(関数ライブラリ)を提供していますが,.NETで提供されるものはWebサービス(Buliding BlockはWebサービスの別名だと考えてください)です。Windowsで使われるファイル(File System)は,.NETではXML形式のデータ(XML Store)に相当します。Windowsアプリケーションでは,Wordの文書の中にExcelのシートを埋め込むような複合ドキュメント(Compound Document)が実現できますが,.NETでは複数のWebサービスを結びつけたソリューションがユニーバーサル・キャンバス(Univarsal Canvas)に表示されます。ユニーバーサル・キャンバスとは,現状ではWebブラウザのことだと考えてください。Windowsアプリケーションはウインドウ形式のユーザー・インタフェース(User Interface)を提供しますが,.NETによって提供されるのはユーザー体験(User Experience)です。ユーザー体験とは,音声認識や手書き入力などを含んだ高度なユーザー・インタフェースのことです。Windowsプラットフォームではマイクロソフトと他のメーカーが様々なアプリケーションを提供していますが(MS Apps,Partner Apps),.NETではマイクロソフトも他のメーカーもWebサービスを提供することになります(MS Services,Partner Services)。皆さんが開発者なら,従来のアプリケーションの代わりに,Webサービスを作成することになります。

●おわりに

 今回は,.NETの全体的な概念だけを解説しました。次回からは,具体的に.NETを実現するための様々な技術を詳しく見ていきたいと思います。Webサービスのソース・コードなども紹介する予定です。お楽しみに!
第2回 .NETを実現するための基盤技術
第3回 .NETのプログラミング・スタイル
第4回 新しいプログラミング言語C#
第5回 Webサービスの作成と活用