IAJapan Top インターネット協会 Java 研究部会TOPへ
最終更新日:2001-06-19

「SOAPって?」レポート
「SOAPとその周辺」

萩原氏 講師:萩原正義氏
(マイクロソフト株式会社)
[ 1. 資料萩原氏、野村氏(PDF 1.8MB)]
 最近雑誌やインターネット上のニュースなどにとりあげられるようになってきた注目キーワードにSOAP(Simple Object Access Protocol)がある。SOAPとはXMLを用いてアプリケーション間の通信を実現するための仕様で、リモート・プロシージャ・コールの次世代仕様として注目されつつある。この日のセミナーの最初のセッションは、このSOAPの仕様策定に参画されているマイクロソフト株式会社より、萩原正義氏、野村一行氏の両氏を招き、萩原氏にはSOAPの概要の解説を、野村氏にはSOAPを利用したWebサービスの構築と題し、SOAPの周辺技術にあたるWSDLやUDDI等をピックアップして解説していただいた。

SOAPの概要

 萩原氏はまず最初に、SOAPの概要について簡単に説明した。萩原氏によると、SOAPとは、構造化された情報を交換するためのXMLベースの軽量プロトコルであり、単純さと拡張性に重点をおいている。そのため、プログラミングモデルやアプリケーションのセマンテックスは定義しておらず、高い拡張性を持っている。また、SOAPには、2つの主なパートとして、データをエンカプセレートするためのエンベローブと、アプリケーションで定義されたデータタイプとグラフのインスタンスを表現するためのエンコーディングルールがあるといい、それぞれについて説明した。さらに、萩原氏はSOAP構成要素の説明として、たまねぎを輪切りにした模式図を用いた。模式図を利用することで、構成要素のそれぞれの関係が非常に理解しやすいものであった。

 次に萩原氏はSOAPの意義やSOAPへの誤解についての説明が行われた。SOAPの意義としてまず、ミドルウェアなどに依存しないデータ交換手法の確立ができ、システム間のゆるやかな連携による疎結合化が可能であること、必要な機能を必要なときに探し出して結合することが実現できることといったことがあげられるが、それはじつにVery Late Bindingであるとも述べていた。

 続いてSOAPへの誤解ついて、萩原氏は、現在次のような点で誤解されている方も多いのではないかと述べた。まず、SOAPはRPCのみ表現可能という誤解である。SOAPはRPCのみならず、メッセージング、分散オブジェクトシステムでも利用することができる。次はSOAPはHTTPのみで転送可能という誤解である。SOAPはHTTPのみならず、SOAPエンベロープを乗せるあらゆるプロトコルで転送可能である。次はSOAPは要求/応答メッセージのみ可能という誤解である。SOAPはメッセージ交換のパターンを定義するものではないので、SOAPで定義、あるいはプロトコルバインドから継承することが可能であると述べた。

 続いて萩原氏は、SOAP HTTPの利点、SOAPの問題について説明した。SOAP HTTPの利点では、ファイアウォールの通過及びファイアウォールによる通信の管理、スケーラブルなプロキシの配布、異なるミドルウェア間でのオブジェクト呼び出しの3点が利点であると述べた。SOAPの問題点では、相互接続性に関する問題と未実装のプロトコルの問題の2点について説明した。相互接続性に関する問題では

  • 仕様におけるProtocol Binding(HTTP)部分の不明確さ
  • HTTPプロトコルシーケンス
  • SOAPActionの符号化
  • Actorによるルーティング
  • XMLインスタンスデータのデータ型

という点を、未実装のプロトコルの問題では

  • ディレクトリサービス
  • サービスディスクリプション
  • リライアブル
  • セキュリティー
  • トランザクション
  • アタッチメントドキュメントサポート

の点を指摘した。

 最後に萩原氏は、今後のSOAPについて以下のような課題を挙げ、話を締めくくった。

  • 各ミドルウェアへの実装と相互接続試験による仕様解釈のすりあわせ
  • SOAPをサポートするプロトコルの仕様化
  • SOAPの進化といわれているXML Protocol

野村氏 講師:野村一行氏
(マイクロソフト株式会社)
SOAPを利用したWebサービスの構築(SOAP関連技術)

 萩原氏に続いて野村氏がSOAPを利用したWebサービスの構築と題して、SOAP関連技術について解説した。
 まず最初に野村氏はWebアプリケーション、Webサービスについて説明した。野村氏はWebの目的は、情報の交換、問題の解決であると述べ、それらを満たすWebアプリケーションの要件は、

  • ファイアウォール越えのメッセージ交換
  • スケーラブル
  • 実行時に他のアプリケーションと統合が可能
  • アプリケーションサービスの検索・発見
  • Time to marketの短縮(開発期間の短縮)
といった点であると説明した。そして、WebサービスとはWeb対応のコンポーネントウェアのことをいい、XMLはWebサービス間のメッセージ交換のための契約を記述したものであると述べた。

 次に野村氏は、Microsoft社が提供しているSOAP Toolkit V2について説明した。SOAP Toolkit V2とは、SOAPを利用したWebサービスの構築、配布、利用を容易にするツールキットであり、COMをプログラミングモデルとして採用している。そのため、Visual Studio6.0が利用可能であり、既存アプリケーションのWebサービス化が今日から始められるとのことである。

 続いてSOAP周辺技術としてWSDL、UDDIの説明がなされた。野村氏によると、Webサービスを利用するまでの手順は3つのプロセスから構成されるという。その3つのプロセスとは公開されたサービスの発見と検索、サービス情報の取得、サービスの利用である。SOAP関連技術として、このサービス発見・検索にはUDDI、サービス情報取得にはWSDLといった技術が最近話題となっている。野村氏の説明によるとWSDLとは、Web Services Description Languageの略であり、サービス記述のためのXMLベースの文法である。WSDLを使って、他社Webサービスによって提供されているメソッドやパラメータの情報を取得し、その情報を自社システムとマッピングし、他社Webサービスと通信することができるようになる。将来的にはXLANG(BizTalkサーバに実装)のようなワークフロー的な考え方を取り入れていくとのことである。次のUDDIについて野村氏は、UDDIとは、Universal Description, Discovery,and Integrationという、Webサービスの相互運用性と適用を早めるためのプロジェクトのことをいい、サービスの記述と発見のための標準仕様であるという。UDDIでは、レジストリとしてWebサービスの登録機能があり、利用者はUDDIレジストリにアクセスし、必要なサービスを取り出し、Webサービスを利用することができるようになる。UDDIロードマップとしては、現在v1でv3まではAriba、IBM、Microsoftの3社が引き続き仕様をすすめるが、それ以降は標準化団体が仕様を策定していき、ebXMLのリポジトリ仕様とのオーバーラップ部分は調整していくということである。

 最後に野村氏はWebサービスのまとめとして次の3点を述べ話を締めくくった。

  • Webサービスは顧客、パートナーなどとの電子的な関係をJust-in-Timeで結ぶ
  • Webサービスは密結合サービスの疎結合な連携を実現する  .NETはCOM(+)とXMLの統合
  • Webサービスはプラットフォーム非依存なメッセージ交換インフラを活用する

質疑応答

Q: .NETフレームワークの中でC#はどれくらい使われているか?

A: .NETのクラスライブラリはC#、ランタイムはC++。

Q: 例えばJavaソース上のOutputStreamクラスのバイナリレベルでの入出力フォーマットはJavaVMと、JUMPを利用した後の実行環境「CLR」で、同じなのか?

A: 同じでは無い。

Q: SOAPのキャンセル要求をこれからどう改善されていくのか?

A: プロトコルレイヤ、SOAPの要求モデル、ビジネスモデルのそれぞれの世界で改善していかなければならない。

(レポーター 篠原氏)


  • インターネット協会 Java 部会についてのお問い合わせは java-info@iaj.or.jp まで
  • このサイトに問題があった場合は webmaster@java-conf.gr.jpまでご連絡ください
  • ※Sun, Sun Microsystemsは米国およびその他の国における米国Sun Microsystems, Inc.の商標または登録商標です。 Javaおよびその他のJavaを含む標章は、米国Sun Microsystems, Inc.の商標であり、同社のJavaブランドの技術を使用した製品を指します
  • インターネット協会 Java 研究部会は、米国 Sun Microsystems, Inc. とは独立の団体です。

sec@iajapan.org
Copyright (C) 2001 Internet Association Japan