コラム / Sun View 第5回
Sun ONEへの道のり
渡邉 利和(toshi-w@tt.rim.or.jp) [著]
2001年3月5日
Webサービスとは?
今回のテーマは「Webサービス」である。Microsoftの.Net構想の発表によってにわかに騒がしくなったこの分野だが、もちろんSunもさまざまな取り組みを続けている。
Webサービスとはなんだろうか? 明確な定義があるのかどうか、不勉強のためよく知らないのだが、一般的なイメージとしてはWeb上で実行されるアプリケーション機能を提供するコンポーネントを統合し、付加価値の高い“サービス”を実現する、といったところだろう。ごく単純化した例を挙げると、航空機の検索/予約の機能を提供するコンポーネントとホテルの検索/予約機能を提供するコンポーネントを組み合わせて旅行予約サービスを実現する、という感じだろうか。さらに、必要であればレンタカーの予約だのレストランの予約だのといった機能を必要に応じて任意に組み合わせ、すべてをWebブラウザから利用できるように提供する、というのがWebサービスのごくおおざっぱなコンセプトである。そして、現在問題になっているのは、こうしたサービスを実現するためのフレームワークを誰がどう提供するか、ということのようだ。少なくとも、Microsoftは.Net構想の発表によって名乗りを上げたようだ。
渡邉 利和(toshi-w@tt.rim.or.jp) [著]
アプリケーションからコンポーネントへ
Webサービスは、次世代のWebと目されることもあり、最新の話題のように扱われているようだ。しかし、基本的なコンセプトは別段そう目新しいものでもない。そもそも、ソフトウェアを小さな機能単位(コンポーネント)に分割し、必要に応じて組み合わせることで目的に応じたアプリケーションを任意に構成できるようにしよう、という発想はずいぶん昔からある。オブジェクト指向に基づくプログラム言語はこの発想をベースにしているわけだし、アプリケーションのレベルでも、かつて一太郎を擁するジャストシステムもこうしたコンセプトを掲げて「一太郎のコンポーネント化」に取り組んだことがあった。もっとも、今ではコンポーネント化は特に重要な目標ではなくなっているようだが。
Webサービスは、ソフトウェア業界が長らく暖め続けてきた「コンポーネント化」というアイデアをWeb時代に適合させた結果だ、ということも可能だろう。つまり、革新的なアイデアというよりは、長らく期待され続けながらいまだに実現していない悲願の最新バージョンなのである。
従来は、コンポーネント化を推進しようにもそれを支える市場を育てられず、うまく行かなかった。しかし、今は状況が変わっている。たとえば、Javaの存在もその例といえるだろう。プラットフォームに依存せず、可搬性をこれまでにないレベルで実現したJavaの成功は、コンポーネントの作成がビジネスとして成立するという確信を開発者に与えたようだ。Javaが成功しているといえるかどうかについては異論を唱える人もいるだろうが、実際に多くの開発者に支持され、大きな影響力を発揮しているという点は間違いないものと思う。
Webの普及も、当然コンポーネント化の発想を後押ししている。ユーザーがどのようなプラットフォームを利用しているかにかかわらず、Webブラウザさえ動いていれば情報にアクセスできる、というWebの環境は、特定のプラットフォームを対象としたパッケージソフトウェアビジネス以外にも成功の道があることを示したといえよう。Webサーバ側でロジックが実行され、結果がHTMLでクライアントに返されればとりあえず利用できるWebアプリケーションは、特定のプラットフォームでしか利用できないパッケージアプリケーションよりも広範な市場を獲得できる可能性がある。こうして増加したWebアプリケーションをさらに統合し、組み合わせてより便利なサービスを実現しようと考えるのは、ある意味ごく自然な発想といえるだろう。
渡邉 利和(toshi-w@tt.rim.or.jp) [著]
Webサービスは画餅か?
Webサービスは、実現すれば確かに便利そうだが、実際作るとなるとそう簡単ではないはずだ。そもそもアプリケーション機能がコンポーネント化されていたとしても、必要なコンポーネントを見つけだし、利用することができなくては話が始まらない。Web上のどこかにあるコンポーネントを見つける手段は? そして、そのコンポーネントをどうやって利用すればよいのか? こうした技術的課題を解決しないことにはWebサービスは現実のものとはならない。例えるなら、人間並みにインテリジェントなサーチエンジンを作りましょう、というようなものだろうか。たとえば、「Webサービスとは何か、一言で説明しているWebページが見たい」と思ったとしよう。しかし、現在のサーチエンジンで“Webサービス”を探してみたところで、“分かりやすく一言で説明している”ページが提示されるわけではない。ページのどこかに“Webサービス”という語が使われているページが山のように表示されることになる。「ほかからリンクされている数が多いものを優先する」というgoogleのアプローチはかなりの場合に有効だが、これも期待通りの結果を出すとは限らない。
とはいえ、実のところコンポーネントの検索や利用方法の確認といった作業は、魔法のように非現実的だというわけではない。基本的にはXMLを活用することで、基本的な枠組みが作られている。中核をなすのは、UDDI(Universal Discription. Discovery and Integration)とSOAP(Simple Object Access Protocol)である。ここでは詳細には踏み込まないが、XMLメッセージを交換するための通信プロトコルがSOAPで、コンポーネントの機能や特徴、使い方といった情報を公開/検索するために使われるのがUDDIだとしておこう。SOAPもUDDIもMicrosoftやIBMが熱心に取り組んでいる技術であるため、Sunとは対立する関係にあるように思われる向きもあるようだが、実のところSunもこれらの規格を支持しており、実際利用していく意向である。現実に「Webサービスの理想」がどのレベルで実現するかはともかく、技術的な道具立てがそろいつつあるのは間違いない。
渡邉 利和(toshi-w@tt.rim.or.jp) [著]
Webサービスを越えて
Sunは2月5日にSun ONE(Sun Open Net Environment)を発表した。Sun ONEが何かを一言で表現するのは難しい。ソフトウェアであり、製品体系であり、アーキテクチャであり、コンセプトでもあるように私には思える。ともあれ、Sun ONEが実現しようとしているのは、“Open, smart Web Services”である。「オープンでスマートなWebサービス」と言い換えてみてもあまり意味はないようだ。単に英字をカタカナに置き換えただけである。
「オープン」はまぁよいとして、スマートとはどういう意味だろう。英単語としてのスマートは、日本ではなぜか「痩せている」というニュアンスで使われることも多いが、実のところ「知性を感じさせる格好良さ」といった意味合いを持った言葉だ。Sun ONEでいうsmartは、別の表現では“Context-Aware”と言い換えられている。これまた日本語にしにくいのだが、その意味するところは「状況を理解して適切な動作ができる」という感じである。Contextという語にはよく「文脈」という訳があてられるが、Sun ONEの説明の中でContextの例として挙げられたものは実に多岐に渡る。ユーザーに関する情報として、誰なのか? 役割は? どこにいる? 今は何時? 好みは? 制約事項は? などなど、さまざまな情報を勘案して最適なサービスを提供するというわけだ。
Sun ONEの関連ドキュメントの中で例示されているのは、たとえばメッセージを送ってくる電子メールのようなサービスが、ユーザーが自動車を運転している最中であれば音声でメッセージを読み上げ、会議中であればテキストでPDA等に表示する、といった具合にデータの形式を変換してくれる、というものだ。
Sun ONEはとても大きな世界で、膨大な技術分野を含む統合的なものだ。正直言うと私自身もまだ全貌を整理できていないので今後理解できた部分から折に触れてご紹介させていただきたいと思っている。ここでは、Sun ONEの詳細に踏み込む代わりに、その広がりの大きさを指摘しておきたい。
Sun ONEでは、あらゆるプログラミング言語、あらゆるネットワーク、あらゆるデバイスが対象となる。プログラムやサービスは、WebだのPCだのコンピュータだのといった領域に閉じこめることなく、デジタル社会全域をカバーすることになる。先ほど例としてあげた「自動車を運転中」という状況では、ユーザーが自動車を運転していることをサービスが検知する必要がある。これを、ユーザーが明示的に「自動車運転モード」に切り替えるのでは「スマートなサービス」とは言えない。今時の携帯電話には「運転モード」がボタン1つで設定できるものが多いようだが、これは面白くも何ともない話だ。ユーザーがいる場所をサービスが自動的に認識する。さらに、サービスによってはGPSや携帯電話、PDAなどさまざまなデバイスに情報を送り、逆にそれらが持つ情報を取得する。ネットワークの中のバーチャルな世界に実装されているサービスがリアルな世界とついに密接なコンタクトを取ることになるのだ。
このアイデアは、実は数年前に示されている。Jiniがそうだ。Jiniでは、狭い範囲のネットワークを利用し、その場の状況に応じたプログラムを動的に配信してサービスを提供する、というコンセプトが語られた。この考え方が発展して“Open, smart Web Services”に繋がっているはずだ。Bluetoothのような狭い範囲をカバーするネットワークに、動的に配布されるソフトウェアコンポーネントを用意しておけば、ユーザーがいる場所に応じて適切なサービスを提供することは不可能ではない。ここに時刻情報を追加し、あるいはユーザーのスケジューラに格納された情報を参照し、ユーザーの好みや固有の条件を格納したデータベースを参照し……、という具合に発展させていけば、前述の「スマートなサービス」を実現するための道具がそろっていくことになる。Jiniは約2年前、1999年に正式に発表されている。このときから、“Open, smart Web Services”への道のりが始まっていると言ってよいだろう。さらに遡ると、Sun Microsystemsの創立10周年を記念してBill Joyが来日し、講演したのが1992年のことだったと記憶しているが、このときにすでに「たとえばこの部屋自体がコンピュータとしての機能をもち、この場に必要な機能を提供するようになる……」といった話をしているのである。
“The Network Is The Computer”と言い続けたSunといえども、最初からこのような“Open, smart Web Services”を想定していたわけではないだろう。しかし、その歩んできた道のりは、確かにここを目指してきたものだといえるように思われる。そういえば、Sun Microsystemsが創立3カ月後に出荷した最初の製品は、TCP/IPとEthernetを標準装備した革新的UNIXワークステーション“Sun-1”なのだった。
渡邉利和
|