Soapbox: 私がSOAPを使っている理由

一人の開発者がSOAPを買って出た理由を語る

XML分野の新理論の領域において、Benoît Marchal氏は、ソープボックス (せっけんの出荷用の木箱) を演台にして立ち上がり、なぜSOAPが彼の心をつかんだかを語っています。SOAPのセールス・ポイントはその単純さにあるとMarchal氏は言います。新しいプロトコルがなじみ深いテクノロジーの上に構築されているため、特にWebサーバーとXMLにおいて、SOAPサーバーを設計して配備することは開発者にとって比較的簡単なことです。

Benoit Marchal (bmarchal@pineapplesoft.com), Consultant, Pineapplesoft

Benoit MarchalBenoit Marchal氏は、ベルギーのナミュールを拠点にしたコンサルタントおよび著述家です。彼の著作には、 XML by Example(Que社、邦訳: インプレス社「実例で学ぶXML」。間もなく第2版が出版される予定です)、 Applied XML Solutions および XML and the Enterprise があります。また、Gamelanのコラムや、developerWorks XML zoneのコラムWorking XML の著者でもあります。最新プロジェクトの詳細については、www.marchal.com をご覧ください。



2001年 2月 01日

SOAPはSimple Object Access Protocolの頭文字語であり、HTTP上のリモート・プロシージャー・コール (および、その他の複雑な要求) をサポートするために、IBM、Microsoft、Userland、およびDevelopMentorの技術によって開発された新しいプロトコルです。

SOAPは2つの別々の環境から引き出されたものです。HTTPおよびXMLの上に構築されたSOAPは、Webと同様にシンプルであることを目指しています。さらにそれは、CORBAおよびDCOMから借用したオブジェクト指向のリモート・プロシージャー・コールをターゲットとしています。

SOAPを採用することの主な利点は、その構築がWebサーバー上で行われることだと思います。ですから、SOAPを理解するためには、Webサーバーを理解することから始める必要があります。最新のWebサーバー、特に、WebSphere、WebLogic、ColdFusionなどのアプリケーション・サーバーは、強力な開発プラットフォームです。それらは要求を効率的に処理するよう、最適化されています。

SOAPはこれらのWebサーバーをオブジェクト・サーバーに転換しようとする試みです。オブジェクト・サーバー とは、3層アーキテクチャーのうちの中間層サーバーを意味しています。SOAPは、HTTP上に薄いXMLレイヤーを加えるという方法によって、オブジェクト・サーバーをサポートします。

一例を示しましょう。検索エンジン (たとえばAlta Vista) からのランキング情報を、まとめるように求められたことがありました。私の顧客は、その情報をもとに、サイトの人気についてのレポートを作成しました。アプリケーションからブラウザー要求をシミュレートするのは簡単ですが、問題は応答をデコードすることでした。HTML形式で受け取る情報を、自作のアプリケーションで構文解析し、リンクを抽出するのです。不幸にも、検索エンジンがレイアウトを変更するたびに、アプリケーションは誤動作してしまいました。これはWebの限界の1つですが、1人のユーザーがWebサーバーに照会を行うときにはうまく対処できますが、それを自動化することは大変困難なのです。

さてここで、検索エンジンがオブジェクト・サーバーを実行すると考えてみましょう。更新されたバージョンの自作のアプリケーションで照会を行うことができます。オブジェクト・サーバーがSOAP上に構築されていれば、要求と応答はXML応答になります。XMLにはフォーマットの指示が含まれていないので、今度、検索エンジンがレイアウトを変更しても、アプリケーションが誤動作することはないでしょう。

あなたもSOAPを考慮しますか?

実のところ、最初はSOAPを疑っていました。初めのうち、SOAPが単純すぎるのではないかと心配していたのです。新しいプロトコルはすでに混雑したマーケットをターゲットとしていました。他のオブジェクト・プロトコルとしては、DCOM (Microsoft提供)、RMI (Sun提供のJavaネットワーキング)、そしてCORBA (オープンソース) があります。CORBAとSOAPを比べたとき、SOAPは現実のアプリケーションにはあまりにも限定的と感じざるを得ませんでした。

その後、SOAPを使いはじめたとき、その主な利点が、Web上に構築されている点にあることに気付きました。なるほど、SOAPはCORBAやDCOMよりも限定的ではあります。たとえば、SOAPは 継承のようなオブジェクト指向の概念には限られたサポートしか提供しませんし、トランザクション管理ができません (それはDCOMではMTSにより、CORBAではOTSにより提供されます)。

しかし、パワーは欠けるとしても、SOAPはその単純さにおいて補って余りあるのです。たとえば、SOAPはHTTPを使用するので、SOAPサーバーはWebサーバーです。多くのビジネスは、Webサーバーの配備やWebアプリケーションの開発では、かなりの経験を積んできています。SOAPを使えば、それらの経験をてこにして、オブジェクト・サーバーに応用することができます。


どんなときにSOAPを使いますか?

SOAPの欠点は2つしか思い浮かびませんが、プロジェクトによってはそれが重大な意味を持つ可能性があります。まず第1に、SOAPはまだ公式の規格ではないということです。W3Cは独自のプロトコル活動を立ち上げましたが、その結果がSOAPと互換性のあるものになるという保証はありません。

第2に、SOAPは新しいため、CORBAやDCOMには共通にあるようなツールがそろっていません。特に、SOAPにはトランザクション管理が欠けています。これはSOAPの本質的な限界ということではなく、ゆくゆくはトランザクション管理機能が市場に出回ると確信していますが、今のところは利用できません。

現在のところSOAPは、軽量なリモート・プロシージャー・コールを必要とする分散アプリケーションに最適です。"軽量" といっても厳密な定義はないのですが、本質的な意味合いとしては、継承とかトランザクション管理といったオブジェクト指向の概念に、要求が依存していないということです。

最近私は、CORBAの教本の例として始まった、あるプロジェクトに取り掛かりました。しかし、最終的にそれはSOAPのプロジェクトになってしまいました。皆さんがSOAPを評価する助けになればと思い、その主な問題点をお伝えすることにします。

そのプロジェクトは古典的な3層アプリケーションです。Oracleデータベース・サーバーがあり、中間層サーバー上にビジネス・オブジェクトがあり、そしてユーザー・インターフェースがJavaサーブレットで書かれています。サーブレットはXMLとXSLTの組み合わせを使用しています。これはXMLとXSLによる共同作業 で述べたとおりです (参考文献を参照)。

当初、顧客はビジネス・オブジェクト・サーバーとプレゼンテーション・サーブレットの間にCORBAを配備したいと考えていました。しかし、私たちは2つの問題に直面しました。それは、コストと訓練の不足です。ORB、つまりCORBAランタイムは高価であり、アプリケーションを配備する私たちの能力は限られたものになります。また、開発チームにはWeb開発の豊富な経験がありながら、CORBAには不慣れでした。

私たちが分析を洗練したところ、プレゼンテーションと中間層の間のコミュニケーションが単純なリモート・プロシージャー・コール (たとえば、商品のリストや商品の詳細を求めるもの) だったことに気付きました。プレゼンテーション・サーブレットがXMLに依存しているとすれば、SOAPの方がCORBAよりもエレガントなソリューションなのではないかという結論に至りました。SOAP応答 (XML形式) は、直接XSLTプロセッサーに渡すことができます。

私たちは一連のテストを終えたところであり、SOAPのこの事例は心をつかんで離さないものでした。私たちはCORBAのライセンスとトレーニングを蓄えただけでなく、中間層とプレゼンテーション層の両方にWebサーバーを配備しました。このことは、同じ経験からサーバーの良好な調整を引き出せることを意味しています。


結論

SOAP という名前は、いつももう1つのプロトコルを思い起こさせます。それは単純さを主要な利点として誇っているSMTP、つまりSimple Mail Transport Protocolです。SMTPと同様、SOAPはパワーは乏しいですが、理解しやすく、素早く配備することができます。SOAPにはSMTPよりも強力な電子メール・プロトコルがあるのですが、SMTPよりも知名度は低いです。SOAPがSMTPのような成功を収める時は来るのでしょうか?

参考文献

  • Apache SOAP は、SOAPのオープン・ソース・インプリメンテーションです。これはJavaおよび各種のスクリプト言語で入手できます。
  • IdooXoap は、SOAPのもう1つのオープン・ソース・インプリメンテーションです。
  • MicrosoftはSOAP Developer Resources をリリースしました。これには、Visual Studioの中のSOAPベータ・サポートが含まれています。
  • Jon Bosak は、最近のXML 2000コンファレンスでSOAPとebXMLについてコメントしています。
  • W3C Protocol Activity の結果として、SOAPに取って代わる規格が出される可能性があります。
  • developerWorks のsoapbox forum に質問を出し、回答を得ることができます。
  • 別の見解をお持ちですか?あるいは、XMLの別の局面について強いご意見をお持ちですか?Soapboxに投稿してください。お持ちのアイデアの要旨をXML分野の編集者へndunn@us.ibm.com 宛にお送りいただくか、すでに入力済みの原稿をお持ちでしたら、Submit content form をご利用ください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML
ArticleID=241339
ArticleTitle=Soapbox: 私がSOAPを使っている理由
publish-date=02012001