SOAPを中核にブームとなったWebサービス。WSDLやUDDIの実態が明らかになるにつれSOAPの役割はオブジェクトのメソッド呼び出しからドキュメントのやり取りへ変化した。さまざまな周辺規約も提案され,Webサービスが企業間の分散システムの基盤技術として確立し,普及するのはもう確実であるかのように見えた。

(本誌)

 WebサービスがSOAPの登場によって芽吹き,ブームとなった2000年ごろ。WSDL(Web Services Description Language)やUDDI(Universal Description,Discovery and Integration)が登場し,Webサービスは新たな展開を迎える。同時にSOAPの位置付けも変わってゆく。

 まず,Webサービスがブームとなった,2000年当時の状況をもう一度整理してみよう。前回述べたように,登場し始めのWebサービスは,「遠隔地にあるオブジェクト」にアクセスするためのものだった。このオブジェクトは,プログラムの一要素となるもの。SOAPがSimple Object Access Protocolの略称であったことがそれを象徴している。

 SOAPの特徴の一つに,XMLをデータ表現に使ったことがある。SOAPはXMLをドキュメントとして取り扱うのではなく,Javaや.NETなどのオブジェクトをネットワーク上で表現するためのプロトコルとして利用した。このため,SOAPで運ばれるXMLには,Javaや.NETなどのオブジェクトが持つ,データ型の概念を必要としていた。整数(int)や文字(char)などの原始型や,クラス,構造体,配列などの構造を持つ型,さらには参照や多次元配列などの複雑な型も表現できなくてはならなくなった。

 SOAPのプロジェクトが米Microsoft社内で始まったときには,XMLにデータ型の概念を付加する仕様が乱立していた。Microsoftは「XML Data」と「XML Data-reduced(XDR)」を推進していたが,後にW3Cにおいてそれらを統合する形でXML Schemaのワーキング・グループが発足すると,SOAPのデータ型はXML Schemaをそのまま使う方向になった。DevelopMentorやMicrosoftをはじめとするSOAP推進グループは,XML Schemaを仕様として固めない限り,SOAPを使って「オブジェクト」を転送できないと考え,XML Schemaワーキング・グループに参加することになる。2001年にXML SchemaはW3Cによって勧告(標準化)され,XMLでデータ型を表現する方法として主流になることが予想されていた。

 SOAPでは,整数などの単純型についてはXML Schemaの定義をそのまま流用する。XML Schemaでは表現しづらい配列と参照については,SOAP仕様でそれを表現するための符号化形式を定義している。「SOAPエンコーディング」と呼ばれるものだ*1

 SOAPの実装に携わる技術者のコミュニティである「soapbuilders」では,各ツールやライブラリが前提とする開発環境・プログラミング言語の間で,これらのデータ型の定義に基づいて相互接続できるかどうかを主に検証していた。XML Schemaの標準化と,soapbuildersの活動のような相互接続性の検証と実装を通して,SOAPでオブジェクトをやり取りする基盤は2002年ごろには整っていた。

インタフェースとしてのWSDL

 ただし,SOAPエンコーディングによって決定できるのはXMLデータのスキーマ情報だけである。分散オブジェクト環境において最初に定義する,インタフェース(仕様,契約)の定義としては不足である。インタフェースをクラスの実装より先に定義するのは,分散オブジェクト環境の常識である*2

 分散オブジェクトの流儀に大きな影響を受けていた当初のSOAPにも,当然インタフェース定義言語があった。米IBM社と米Microsoft社はそれぞれ,SOAPのためのインタフェース定義言語をXMLベースで策定した*3。2000年にはすでに自社の実装で利用し始めている。

 しかしインタフェース定義言語を各社が独自に定義すると,その種類によって実装言語が決まってしまうことになりかねない。IBMの定義言語ならJava,MicrosoftのものならVisual Basicといった具合だ。こうした事態を避けるため,MicrosoftとIBMは再び手を握り,2001年3月,W3CにWSDLを共同提案する。WSDLはXMLの構造を定義するXML Schemaと密接に関連づけられている。Webサービスでやり取りされるXMLデータの具体的な構造や,あるXMLを送信するとどんなXMLデータが返されるか(リクエストとレスポンスの組み合わせ),WebサービスはどのURLに存在するか,などのメタ情報を記述する言語だ。

 WSDLによって,プログラミング環境とWebサービス機能がより密接に結びついた。やり取りされるXMLデータの構造がXML Schemaで定義されていれば,基本的にクラスや構造体などプログラミング言語用の定義に変換できる。またどのXMLデータ構造を送るとどのXMLデータ構造が返されるかが分かるので,そこから関数やメソッドの定義を作成できる。逆もまた真で,いったんオブジェクト指向プログラミング環境でクラスとメソッドを実装すれば,それをXML SchemaやWSDLに容易に変換できる。WSDLは,MicrosoftとIBMそれぞれの開発環境で,Webサービスのサービス側とクライアント側の両方の開発を容易にするものと考えられていた。