WSDLをめぐる誤解

図1●WSDLをめぐる誤解
WebサービスのディレクトリとなるUDDIから連携できるサービスを動的に探し出し,そのサービスのWSDLファイルを基にコードを生成する。その後SOAPを利用してそのサービスとやり取りする。こうすることで,ビジネス同士が動的に連携できるという誤解が生まれた。WSDLファイルを基にコードを自動生成できることは事実だ。しかし異なるビジネス同士を自動的に連携させるのはそれほど甘いものではない。

 WSDLのようなインタフェース定義言語の利点として盛んに吹聴されたのは,WSDLを使えば,それが示すWebサービスにアクセスするコードを自動的に生成できるということである。単純に「つなぐ」部分だけをとればこれは事実で,実際にさまざまな開発環境で,WSDLからアクセス用のコードを自動生成したり,コードからWSDLを生成する機能が提供されている。

 しかし,この機能が誤解を招いた。いわく,「WebサービスがWSDLファイルを公開していれば,ビジネスとビジネスがダイナミックに接続できる。システム同士が動的に連携するようになる」というのである。当時,SOAP,WSDLと並べて三種の神器などと呼ばれたUDDIの登場もあり,このような誤解がメディアを通じて業界を駆け巡った。UDDIとはWebサービスのディレクトリ・サービスのようなもので,Webサービスを動的に検索し,接続するための仕組みである。「UDDIで結合すべきサービスを探し出し,そのWSDLからコードを自動生成する。そしてSOAPを利用して接続する」という一連の手順を,実行時にダイナミックに実行できるという妄想が新しいパラダイムとして喧伝された(図1[拡大表示])。

 一歩下がって考えてみれば,SOAPやWSDLの標準化によってシステムの接続にかかる技術的なコストが下がるという話と,ビジネスとビジネスの連携が素早く動的になるという話では,レベルに差がありすぎる。SOAPやWSDLは純粋にコンピューティング技術の話であって,ビジネスを円滑に進めるための契約や運用手順を不要にするわけではない。UDDIが当初の目論見どおりに成功したとはとても言えないことはすでに明らかだ。このような話はいまだに聞こえてくることがある。誤解に基づく吹聴と熱狂は,結果としてWebサービスへのネガティブな反応を増幅させることになった。

 ちなみに筆者は,2001年に公開されたマイクロソフトと日本ユニシスによる,SOAP,WSDL,UDDIを利用したXML Webサービスによる企業間連携実験システム1の開発に携わった。SOAP,WSDL,UDDIを利用したXML Webサービスの解説文書2なども執筆した。少々懐疑的ではあったものの,当時は筆者も三種の神器によるビジネス連携などという吹聴の片棒を担いでいたのである。

動的型付け可能な言語にWSDLは不要

 WSDLに対して過剰な期待がかけられる一方で,実はWSDLを必要としない人々も少なからず存在した。筆者は前者の立場を取っていた。この時期,ある雑誌に「…システムの実現にとって本当に必要なのはSOAPではなく,Webサービスが登録されているレジストリであり,アクセス方法を教えてくれるフォーマットの標準なのです」と書いたことがある。前者はUDDIを,後者はWSDLを念頭に置いていた。MicrosoftやIBMをはじめとするエンタープライズ製品ベンダーの多くも,WSDLはWebサービスにとって欠くことのできない要素であると考えていたはずだ。しかし,主にスクリプト言語を利用する人々は,これとは異なる見方をしていた。

 例えばsoapbuildersには,Perl,Python,Ruby,PHPといった言語のライブラリやツールキットのユーザーや開発者が多く参加していた。これらの言語では,オブジェクトやメソッド(関数,サブルーチン)の概念はあるが,一つひとつの変数に静的な型付けを必要としない。動的な型付けを許容する言語にとって,intやstringといった各変数の型情報まで事前に知っておく必要はない。配列や構造体のような構造を持つ型についても,SOAPエンコーディングである限りは受信したSOAPのメッセージだけ見れば判断できる。つまりスクリプト言語の場合,WSDLによって厳密なデータの構造や型の情報が示されていなくても,それほど問題が起こらないのだ。実際,Webサービスのディレクトリとして著名なWebサイトの「XMethods」3には,ただSOAPメッセージの構造だけが指定されていて,WSDLは用意されていないサービスもあった。

 しかし,静的な型付けを行うプログラミング言語をビジネスの中心においているIBMとMicrosoftにとって,WSDLのないWebサービスは,Webサービスではなかった。SOAPの仕様策定の中心的な役割を果たしたDon Box氏はMicrosoftに移籍し,静的な型付けを必要としない言語(スクリプト言語)のコミュニティに対して,WSDLを記述するように呼びかけている4

 この呼びかけは聞き入れられたとは言いがたい。Perl用の老舗SOAPライブラリである「SOAP::Lite」の開発者Patrick Logan氏5や,SOAP仕様の共同執筆者であるDave Winer氏6は,この呼びかけを重要なものと考えていない。むしろ,スクリプト言語を利用する開発者コミュニティを中心に,XML SchemaやWSDLはWebサービスの必須要素ではなく,開発やテストが容易になるというのも幻想に過ぎない,という考え方が広まり始めていた。おそらくWebサービスをビジネス連携に利用するためにWSDLは必須であると考えるグループには,WSDLを必要としないグループは取るに足らない存在にだったに違いない。これが誤算であったことは,後になってから明らかになる(詳細は最終回で述べる)。