CORBA・DCOM・SOAP(CORBA / DCOM / SOAP)
離れた場所にあるプログラムを、手元の関数のように呼び出すための決まりごと。SOAPはそれをXMLとHTTPで行う。
もう少し詳しい説明
まず、「関数を呼ぶ」とは何か
このページの話は、全部「関数」から始まります。先にそこを説明します。
関数は、まとまった処理に名前を付けて、あとから呼び出せるようにしたものです。たとえば「2つの数を足す」という処理に 足す という名前を付けておきます。すると、プログラムの別の場所で 足す(3, 5) と書くだけで、その処理が動いて 8 が返ってきます。
呼ぶ側は、中でどう計算しているかを知りません。 名前と、渡す値と、返ってくる値だけを知っていれば使えます。これが関数の便利なところです。
3つは同じ願いから生まれている
離れた場所にあるプログラムを、手元の関数を呼ぶのと同じ感覚で呼び出したい。 この願いから生まれた仕組みが、いくつか世代を重ねてきました。
ここで扱う3つは、同じ目的の、時代の違う答えです。
| 出どころ | つなげる相手 | |
|---|---|---|
| CORBA | 業界団体(OMG) | 言語も製品も問わない(ことを目指した) |
| DCOM | Microsoft | 主にMicrosoftの製品どうし |
| SOAP | W3Cほか | XMLとHTTPが使えればよい |
表に出てきた団体の名前を補っておきます。
- OMG(Object Management Group)… 複数の会社が集まって、オブジェクト指向の技術の決まりごとを作っていた業界団体
- W3C(World Wide Web Consortium)… HTML(Webページの中身を書く言語)やXML(札で囲んでデータを書く書き方)など、Webの決まりごとを作っている団体
何をしたかったのか
ふつう、プログラムが別の機械の機能を使うには、通信の手順を自分で書きます。相手につなぐ、データを送る、返事を受け取る、受け取ったものを組み立て直す。処理の本筋と関係ない仕事が増えます。
そこで、通信の部分を隠して、関数呼び出しのように書けるようにしようという考えが出てきました。これをRPC(Remote Procedure Call。日本語では遠隔手続呼出し。離れた場所にある処理を、手元の関数のように呼ぶ仕組み)といいます。
呼ぶ側のプログラムは 計算する(3, 5) と書くだけです。通信していることを意識しません。
CORBA・DCOM・SOAPは、どれもこの発想の上に立っています。オブジェクト指向(データと、そのデータを扱う処理を1つにまとめた「オブジェクト」を部品として組み立てる考え方)が広まってからは、関数ではなく離れた場所のオブジェクトを呼ぶ形になりました。
CORBA
CORBA(Common Object Request Broker Architecture、コルバ)は、OMG(Object Management Group。複数の会社が集まった業界団体)が定めた規約です。
特定の会社に縛られないことを目指しました。ORB(Object Request Broker、オブジェクトリクエストブローカ)という仲介役が、呼び出しを相手まで運びます。
IDL(Interface Definition Language。日本語ではインタフェース定義言語。インタフェースとは、部品どうしがやり取りするときの受け渡しの決まりのことです)という専用の言語で「この機能はこういう引数(呼ぶときに渡す値)を取る」と書いておくと、各プログラム言語(人がプログラムを書くための言葉)用の受け渡し部品が自動で作られます。言語が違っても呼び合えるのが売りでした。
ここでいう「言語」は、プログラムを書くための言語(Java、C++、Python など)のことです。日本語や英語の話ではありません。
仕組みが大きく、設定も複雑だったため、広くは普及しませんでした。
DCOM
DCOM(Distributed COM。分散COM)は、MicrosoftのCOM(Component Object Model。1台の機械の中で、プログラムの部品どうしを呼び合わせるためのMicrosoftの仕組み)を、ネットワーク越しに使えるよう広げたものです。
Windowsの中では扱いやすい一方、相手もMicrosoftの製品である必要が実質的にありました。会社をまたいでつなぐ用途には向きません。
SOAP
SOAP(ソープ)は、XMLで書いたメッセージを、HTTPなどに載せてやりとりする規約です。
この1文に出てくるXMLとHTTPの2つを、先に説明します。
XML(Extensible Markup Language)は、データを <名前>中身</名前> のような札で囲んで書く書き方です。<金額>1500</金額> と書けば、1500という数字が金額だという意味まで一緒に運べます。人が目で読んで分かる形になっているのが特徴です。
HTTP(HyperText Transfer Protocol)は、ブラウザ(Google Chrome、Microsoft Edge、Safari など、Webページを見るソフト)がWebページを取ってくるときに使っている決まりごとです。http:// や https:// で始まるアドレスの、http の部分がこれです。
この2つを選んだことで、SOAPは前の2つの問題を解きました。
| 選択 | 何が解けたか |
|---|---|
| メッセージをXML(札で囲んだ書き方)で書く | 言語にも製品にも縛られない。人が読める |
| HTTP(Webページを運ぶ決まりごと)に載せる | ファイアウォールを通る |
2つめが大きいところです。
ファイアウォールは、社内と社外の境目に置いて、通してよい通信だけを選んで通す仕組みです。何を基準に選ぶかというと、ポート番号(同じ機器の中の、どのアプリケーション宛ての通信かを示す番号)です。許可された番号だけを通し、それ以外は止めます。
CORBAやDCOMは専用のポート番号を使うので、会社のファイアウォールに止められます。管理者に「この番号を開けてください」と頼むところから始めなければなりません。
いっぽうHTTPは、Webページを見るための通信です。どの会社でも、Webが見られるように最初から開いています(80番と443番)。そこに相乗りすれば、新しく開けてもらう必要がありません。
すでに空いている道(HTTP)を使う
これがSOAPの、いちばん大事なところです。
関連する語も組で出ます。
| 語 | もとの言葉 | 何か |
|---|---|---|
| WSDL | Web Services Description Language | そのサービスの使い方(引数や戻り値)をXMLで書いた説明書 |
| UDDI | Universal Description, Discovery and Integration | サービスを登録・検索するための仕組み |
SOAP・WSDL・UDDIの3つで、Webサービスの枠組みと呼ばれました。
その後:RESTへ
SOAPはXML(札で囲んだ書き方)で書くため、メッセージが長く、扱いが重いという問題がありました。<金額>1500</金額> のように、1500という4文字を運ぶために札を前後に付けるので、そのぶんかさばります。
いまのWeb API(Webを通して、他のプログラムから機能を呼び出せるようにした窓口)の多くは、REST(REpresentational State Transfer、レスト)と呼ばれる考え方で作られています。
| SOAP | REST | |
|---|---|---|
| 形式 | XML(決まった形) | 多くはJSON |
| やり方 | 独自の規約を重ねる | HTTPの仕組みをそのまま使う |
| 重さ | 重い | 軽い |
JSON(JavaScript Object Notation、ジェイソン)は、データを {"金額": 1500} のように、名前と値の組で書く書き方です。XMLと同じことを、札を使わずに書けるので短くなります。
RESTは、HTTPのGET(取ってくる)・POST(送って作る)といった動詞と、URL(https://example.com/items/3 のようなアドレス)で表す資源を、そのまま使います。新しい規約を重ねません。
SOAPは「HTTPを運び屋として使う」、RESTは「HTTPの仕組みごと使う」と考えると、違いが見えます。
試験ではこう出る
科目A(旧・午前)では、SOAPの説明を選ばせる形がほとんどです。「XMLで記述したメッセージをHTTPなどで送る」が答えになります。
SOAP・WSDL・UDDIの役割分担も出ます。WSDL(Web Services Description Language)が使い方の説明書、UDDI(Universal Description, Discovery and Integration)が登録と検索です。
CORBAとDCOMは、名前と出どころを聞かれる程度です。CORBAはOMG(業界団体)、DCOMはMicrosoftと押さえておけば足ります。
応用情報では、SOAPとRESTの比較が出ます。軽さ、形式、HTTP(Webページを運ぶ決まりごと)の使い方の3点が軸になります。
この分野は出題数が多くありません(このサイトでは重要度2としています)。SOAPの1行の説明と、RESTとの違いに絞るのが効率的です。
関連する用語
- XML
- SOAPのメッセージはXMLで書かれる
- クライアントサーバシステム
- 呼ぶ側と呼ばれる側に分かれる構成。その上で動く仕組み
- オブジェクト指向
- 離れた場所にあるオブジェクトを呼ぶ、という発想が土台にある
- SaaS・PaaS・IaaS
- いまはWeb APIとして提供される。SOAPはその前の世代の形
ミニクイズ
SOAPの説明として、適切なものはどれか。
正解は 1番:XMLで書いたメッセージを、HTTPなどに載せてやりとりする規約
SOAPは、XMLで書いたメッセージを、HTTPなどの既存のプロトコル(通信の手順を決めた約束ごと)に載せてやりとりする規約です。XMLもHTTPも特定の製品に縛られないため、異なる会社の、異なる言語で作られたシステムどうしをつなげます。特定のベンダ(製品を作って売っている会社)の製品どうしに限られるのはDCOM(Microsoftの製品が中心)です。データベースへ問い合わせる言語はSQL(Structured Query Language)、画面の中身を記述するのはHTML(HyperText Markup Language)、見た目を決めるのはCSS(Cascading Style Sheets)で、どれもSOAPとは別の役割です。
この分野をまとめて解く → システム構成要素とソフトウェアのミニテスト(全28問)
最終更新:2026-10-20