SOAP
ソフトウェア同士が構造化した情報を交換するための、XMLに基づくメッセージのプロトコル。メッセージの構造や処理規則を定め、HTTPなどを使ってネットワーク越しにやり取りする。
イマシルちゃんの解説
別々に作られたプログラム同士が情報をやり取りするには、送るデータの書き方や扱い方をそろえる必要があるんだ。
SOAPは、そのためのメッセージの構造や処理規則を定めたプロトコルだよ。
データにタグを付けて構造を表すXMLを使い、送りたい内容をBodyという本体部分に入れるの。
必要なら、認証などの追加情報をHeaderという部分に添えられるよ。
こうして組み立てたメッセージを、HTTPなどで相手へ送るんだ。
要求や結果を共通のルールで扱えるので、作り方の違うシステム同士でも仕事をつなぎやすくなるよ。
この解説はわかりやすかったですか?
より深い解説
定義
SOAPは、W3Cで標準化された、XMLで記述したメッセージを交換するためのプロトコルである。もとは Simple Object Access Protocol の略だったが、バージョン1.2からは略語ではなく固有の名前として扱われている。トランスポートには主にHTTPを使い、SMTPなどを使うこともできる。
メッセージの構成
| 要素 | 内容 |
|---|---|
| Envelope(封筒) | メッセージ全体を包む |
| Header(ヘッダー) | 認証、トランザクションなどの付加情報(省略可) |
| Body(本体) | 呼び出す処理と引数、または結果 |
| Fault | エラーの情報 |
サービスが提供する処理や、メッセージの形式は、WSDL(Web Services Description Language)というXMLの文書で記述する。
RESTとの比較
| SOAP | REST | |
|---|---|---|
| 性格 | 厳密に定められたプロトコル | 設計の考え方(アーキテクチャスタイル) |
| メッセージの形式 | XML(決まった構造) | JSON、XMLなど自由 |
| 操作の表し方 | メッセージの中で、呼び出す処理を指定する | URIで資源を指定し、HTTPのメソッド(GET、POST、PUT、DELETE)で操作を表す |
| 機能 | セキュリティ(WS-Security)やトランザクションなどの拡張仕様が豊富 | シンプルで軽い |
| 主な用途 | 企業の基幹システム同士の連携 | Web API、スマートフォンアプリ |
現在の多くのWeb APIは、より軽量なRESTの考え方で作られているが、金融機関や官公庁のシステムなどでは、SOAPも使われている。
ほかの技術との区別
| 技術 | 内容 |
|---|---|
| SOAP | HTTPの上でXMLのメッセージをやり取りし、ネットワーク上に分散したアプリケーションを連携させる |
| WebDAV | HTTPを拡張して、サーバ上のファイルの参照・作成・削除やバージョン管理を行う |
| CoAP | IoT機器向けに、UDPの上でRESTの考え方を実現する軽量なプロトコル |