前々回,RESTとSOAPを対比して,リソースの呼び出しや連携の手順の違いを図解しました。そして前回,RESTの本質を確認し,「RESTであればWeb 2.0だ」というのは誤りだと論じました。RESTというだけでは,Webの原点に強く回帰して「できる限りRESTに準拠した方がよい」という程度の,Web 2.0にとっての「緩い必要条件」と言えそうです。

 その一方で,RESTに関心を持つ人が増えているのもまた事実です。前々回,Internet Magazine2006年4月号(インプレス発行)の記事「API公開ウェブサービスカタログ」に,各サービスのプロトコルがRESTかSOAPかが明記されていることを紹介しました。現在は,「REST準拠の連携の仕組みが新しい」という印象を与えていると言って間違いありません。

 筆者も最近まで,SOAP/WSDLベースのWebサービスのことを「伝統的なWebサービス」と呼んだりしていました。「Web上のXML版分散オブジェクト技術」として2001年にブレークしたSOAP/WSDLベースのWebサービスを,レガシー(遺産)と表現するのはもちろん時期尚早でしょう。現時点では,どちらの技術が「本当に新しい」のか,あるいは,両立するのか否か,両立するならどのように使い分けたり組み合わせたりすればよいのか,など問いかけてみる意義が大いにありそうに思えます。今回と次回にわたって,これらの疑問に答えていきます。

 前回見たように,RESTは古くて新しい思想であり,アプローチであると言えます。Roy Fielding氏が博士論文でRESTを定義したのは5年以上前の2000年。しかもその内容は既にhttpを中心とするWebの仕組みとして,その10年以上前から存在していたものを理論化したものです。しかし,Google MapsのAPIが2005年6月29日に公開されて以後, にわかに有名になった,と言うこともできます。XHTMLからJavaScriptでGoogle Mapsを操作するAPI関数を直接呼び出して使う方法は,確かにRESTの制約群を満たしています(もちろんREST準拠の唯一のアプローチではありませんが)。

Webサービスとは何かを改めて問う

 ちなみに,それ以前からGoogleが公開していたWeb検索のAPI(Google Web API)や,AdWordsのAPI(AdWords API)は,SOAPベースです。SOAPベースのWebサービス・インターフェースは,Java,Perl,Visual Studio .NETなど,特定の開発環境に依存せずに利用できることをGoogle自身がうたっています。

 言葉の定義や使い分けをすっきりさせるため,いっそのことRESTベースのWebシステム間連携はWebサービスではない,としてしまえば簡単そうです。しかし,幸か不幸か,これはWebサービスの定義を見事に満たしているのです。

 以下は,「Web Services Architecture Requirements,W3C Working Group Note 11 February 2004」の中にある「1.1 What is a Web service?」を筆者が翻案したものです。

Webサービスとは:
- URIによって識別され,
- 公開インターフェースとバインディング情報がXMLで定義・記述され,
- これらの情報が別のシステムから検索可能になっていて,
- インターネット・プロトコルで伝えられるXML形式のメッセージを使用して,
- 事前に定義されたやり方でほかのWebサービスとやりとりする,
- ソフトウエア・システムである。

 SOAP/WSDLベースのWebサービスは,真剣に議論され,厳しい実証評価を経て徐々に実用に供されていく過程で,様々な変遷を経てきました。公開UDDI(Universal Description, Discovery, and Integration:目的に合うWebサービスを見つけるためのディレクトリ・サービス)が実質的に淘汰されたことなどがその例です。またSOAPやWSDLの必須要素やオプション要素についても,Webサービス技術を提供するベンダー間の相互運用性の確保に尽力したWS-Iの貢献などで議論が進みました。理論面でも,WebサービスとRESTやSemanticWebとの関係を吟味して「Web Services Architecture Requirements」が作られました。「Web Services Architecture Requirements」のリファレンスを見ればそのことが分かります。

 こうした理由から,SOAP/WSDLベースのものも,RESTベースのものも合わせて,今後のWebサービスの仕組みを考えていくことは必須と思われます。少なくともW3Cは2年前にその決断をしていたのです。Google Maps APIに象徴される最近のRESTベースのWebシステム間の連携が,Webサービスの極めてシンプルな実現系の一つであると言えるのは,このような背景を考えれば理解できるでしょう。

 次回は,いよいよRESTタイプのWebサービスとSOAPベースのWebサービスが両立することを示します。そして,併用したアーキテクチャのイメージをご紹介します。さらに,両者の役割分担や経済コストを考慮した使い分けについても触れたいと思います。