基本情報技術者 2011年 秋期 午前(科目A) 問49
問題文
Webサービスを利用するときのSOAPの役割として、適切なものはどれか。
選択肢
ア:Webサービスのインタフェースを記述して、プログラムからサービスを利用できるようにする。
イ:Webサービスの情報を登録しておき、利用者がそのサービスを検索できるようにする。
ウ:Webサービスの送受信プログラム間で、XML形式のメッセージを受け渡す。(正解)
エ:Webサービスプログラム間の配信保証や重複防止など、データ転送の信頼性を確保する。
##: Webサービスを利用するときのSOAPの役割【午前2 解説】
要点まとめ
- 結論:SOAPはWebサービス間でXML形式のメッセージをやり取りするためのプロトコルであり、メッセージ構造を定義します。
- 根拠:SOAPはEnvelope/Header/Body/Faultの構造を持ち、HTTPなどのトランスポート上でXMLメッセージを交換する仕様です。
- 差がつくポイント:インタフェース記述はWSDL、サービス登録はUDDI、信頼性はWS‑ReliableMessagingなど別仕様である点を押さえてください。
正解の理由
SOAP(Simple Object Access Protocol)は、Webサービス間でXML形式のメッセージを送受信するための仕様です。メッセージの外枠(Envelope)やヘッダ、本文(Body)、エラー表現(Fault)などを定義し、HTTPやSMTPなどの下位プロトコルを利用してXMLメッセージを運ぶ役割を担います。そのため「XML形式のメッセージを受け渡す」という選択肢が正解になります。
よくある誤解
- SOAPがサービスのインタフェース(API定義)を作ると誤解されやすいが、実際のインタフェースはWSDLで記述します。
- SOAP自体が配信保証や重複排除などの信頼性機能を提供すると思い込みがちですが、それらはWS‑ReliableMessaging等の別仕様やトランスポート層の機能に依存します。
- SOAP=HTTPでしか動かないと考える誤解。SOAPは複数のトランスポート(HTTP, SMTP, JMS等)上で動作可能です。
解法ステップ
- 問題文のキーワードを抽出:「SOAP」「Webサービス」「役割」「XML」などを確認。
- 各選択肢を標準仕様に照らし合わせる:インタフェース記述→WSDL、登録検索→UDDI、メッセージ交換→SOAP、信頼性→WS‑RM/トランスポート。
- 最も仕様に合致する選択肢を選ぶ:SOAPはメッセージ交換に該当するため該当選択肢を選択。
- 二重チェック:残りの選択肢が別仕様の説明になっていないか確認する。
選択肢別の誤答解説
- ア: Webサービスのインタフェースを記述して、プログラムからサービスを利用できるようにする。
→ これはWSDL(Web Services Description Language)の役割であり、SOAP自体はインタフェース定義言語ではありません。 - イ: Webサービスの情報を登録しておき、利用者がそのサービスを検索できるようにする。
→ これはUDDIの役割で、サービスのレジストリ/ディレクトリ機能に該当します。 - ウ: Webサービスの送受信プログラム間で、XML形式のメッセージを受け渡す。
→ 正解。SOAPはXMLメッセージを構造化して送受信するためのプロトコル/仕様です。 - エ: Webサービスプログラム間の配信保証や重複防止など、データ転送の信頼性を確保する。
→ 配信保証や重複排除はWS‑ReliableMessagingやトランスポート層の機能であり、SOAP単体の規定ではありません。
補足コラム
SOAPメッセージの基本構造は次の通りです。Headerで付加情報(認証やルーティング等)を持たせ、Bodyで実際の要求/応答を表現します。Fault要素でエラーを返します。SOAPはRPCスタイルとドキュメントスタイルの双方に対応し、WS‑Security等の拡張仕様でセキュリティやトランザクション機能と組み合わせて使われます。
例:簡単なSOAPリクエスト(抜粋)
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<!-- 認証情報など -->
</soap:Header>
<soap:Body>
<m:GetPrice xmlns:m="https://example.org/stock">
<m:Item>ABC</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
近年は軽量なREST/JSONベースのAPIが増えていますが、トランザクションやセキュリティ、標準化された拡張が必要な企業間連携では今もSOAP/WS‑*が使われる場面があります。
FAQ
Q. SOAPはプロトコルですか、フォーマットですか?
A. 両方の側面を持ちます。XMLベースのメッセージ構造(フォーマット)と、その交換ルール(プロトコル)を定めた仕様です。
A. 両方の側面を持ちます。XMLベースのメッセージ構造(フォーマット)と、その交換ルール(プロトコル)を定めた仕様です。
Q. SOAP単体でメッセージの再送や重複防止はできますか?
A. いいえ。再送や重複排除、確実配送はWS‑ReliableMessagingなどの別仕様や、下位のトランスポート層に依存します。
A. いいえ。再送や重複排除、確実配送はWS‑ReliableMessagingなどの別仕様や、下位のトランスポート層に依存します。
Q. SOAPとRESTはどちらが有利ですか?
A. 用途次第です。標準化されたセキュリティやトランザクションが必要な大規模システムではSOAPが有利、単純で軽量なAPIにはREST/JSONが好まれます。
A. 用途次第です。標準化されたセキュリティやトランザクションが必要な大規模システムではSOAPが有利、単純で軽量なAPIにはREST/JSONが好まれます。
関連キーワード: SOAP、XMLメッセージ、WSDL、UDDI、WS‑ReliableMessaging、Envelope、HTTP、REST、WS‑Security

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

