SOAP 【Simple Object Access Protocol】
概要
SOAP(Simple Object Access Protocol)とは、ネットワーク上でWebサービス間やサーバとクライアントがメッセージを交換しあって連携するためのプロトコル(通信規約)の一つ。メッセージの記述にXMLを、データ伝送に主にHTTPを用い、Webサービスの提供や利用に適している。システム間で処理の依頼や応答、データの受け渡しを行うための仕様で、「XML-RPC」から発展した技術である。特定のシステムに固有の技術を用いず、Web標準を応用して構成されており、WindowsとLinuxなど様々な環境が混在していても相互運用性を確保することができる。
SOAPメッセージ/SOAPエンベロープ
SOAPで送受信されるXML形式のデータを「SOAPメッセージ」(SOAP message)という。SOAPメッセージであることを示すため一番外側を「エンベロープ」(envelope:封筒)と呼ばれるタグで覆った構造になっているため、「SOAPエンベロープ」とも呼ばれる。
エンベロープの内側には宛先などの制御情報を記述する「SOAPヘッダ」(SOAP header)、送受信したい内容本体が記述された「SOAPボディ」(SOAP body)が並んでいる。これをHTTPなどのプロトコルで送り合うことで、異なる種類のシステム間で処理要求や応答などを伝達することができる。
SOAP自身はXMLベースの規格でプロトコルには依存せず、適切なヘッダを付加することにより様々なプロトコルによる送受信が可能になっている。最も一般的なHTTP経由での場合は、通常のHTTPヘッダに加えて「SOAPAction」というヘッダを付加し、送り先のURLをHTTPヘッダに含められるようになっている。
SOAPヘッダ/SOAPボディ
SOAPメッセージ内で制御情報などを記述する冒頭部分を「SOAPヘッダ」(SOAP header)という。伝達内容の本体であるSOAPボディに記述した内容の宛先や認証情報、改竄防止のためのハッシュ値、セッションID、その他関連する属性情報が記述される。不要な場合は省略できる。
SOAPによって相手方のシステムへ渡される伝達内容そのものを記述した部分を「SOAPボディ」(SOAP body)という。具体的なデータや処理の依頼(リクエスト)や、それに対する応答内容(レスポンス)などが格納される。データ形式や内容はアプリケーションによって異なり、SOAP規格自体では関知しない。
関連仕様
SOAPで実装されたWebサービスの呼び出し方、引き渡すパラメータの種類やデータ型などのインターフェース情報は「WSDL」(Web Services Description Language)呼ばれるXMLベースの言語で記述され、サービスの利用者に公開される。
様々なWebサービスのWSDL文書を集め、どこでどのようなWebサービスが利用できるのかといった情報を収集して利用者が検索・発見できるようにしたデータベースもあり、「UDDI」(Universal Description, Discovery and Integration)と呼ばれる。
SOAPを基盤に、「WS-Addressing」や「WS-Security」「WS-Reliability」「WS-Routing」など、名称が「WS-」で始まる様々なプロトコルやメッセージ規格が機能や用途に応じて策定されており、これらを含めたSOAPベースの技術全体を指してSOAPという場合もある。
歴史
SOAPの仕様は1999年に米マイクロソフト(Microsoft)社などが発表したもので、2000年5月にW3Cが最初の標準規格を勧告した。2000年台前半には企業システムのWebサービス化と共に同社製品などの対応も進んだ。
しかし、WS-*プロトコル群などを含む巨大で複雑な仕様が次第に敬遠されるようになり、「REST」と呼ばれるシンプルな設計原則に則った軽量なWebサービスのAPI仕様「RESTful API」の方が好まれるようになった。現在では同社のWinRMがWS-Managementに対応している程度で、ほとんどのWeb APIはRESTful APIとして提供されている。
関連用語
関連リンク (外部サイト)
他の辞典による解説 (外部サイト)
この記事を参照している文書など (外部サイト)
- 福岡県福岡市総務企画局ICT戦略室「福岡市システム刷新計画」(PDFファイル)にて引用 (2015年3月)