メッセージ指向のイロハ
複数のシステムを組み合わせる際によく使われる「メッセージ指向」について議論しよう。まずは、そもそもメッセージとは何を指しているのかから考えてみる。
メッセージとは何か
メッセージとは何だろうか。まずメッセージには送り手と受け手がいるはずだ。そして送り手は受け手に対して伝えたいことがあるはずだ。そこで、受け手側に伝わるよう、しかるべき方法で何かを発することになる。その何か、というのが「メッセージ」といわれるものとなる。
ここから転じてプログラミングの中でオブジェクト、サービスといった単位同士が通信して転送する指示のことをメッセージと称する。なお実際にメッセージが送付されることを「メッセージ・パッシング」と称する。
メッセージの受け手には何らかの責務があり、送り手は依頼があるためにメッセージを送信する。受け手にはメッセージを受け取るためのインターフェースが用意されており、このインターフェースに従ったメッセージが届けられることを前提としている。そのため送り手は受け手が規定しているインターフェースに従ったメッセージを組み立てて送信することになる。受け手がメッセージを受け取ると、これが起動トリガーとなり何らかの処理が行われるのだ。
オブジェクト指向であればオブジェクト間に現れるメソッド呼び出しであり、SOA(サービス指向アーキテクチャ)であればサービス間でWebサービスなどを使った呼び出しということになる。
メッセージを利用するメリット
では、こうしたメッセージ・パッシングを利用するメリットとは何だろうか。前述のとおりメッセージ・パッシングはオブジェクト指向の基本といえる。つまりオブジェクト指向のメリットは、そのままメッセージ・パッシングを利用するメリットといって良い。オブジェクト指向のメリットはいささか旧聞に属するだろうが以下のような理解が一般的だろう。
- オブジェクトとメッセージという概念が人間に理解しやすい
- オブジェクトごとの責務が明確になり品質が向上する
- オブジェクトという単位で再利用性を向上させることができる
簡単にいえば「処理をオブジェクト単位でまとめると、分かりやすく、間違いにくく、使いやすく便利だね」ということだ。
このように処理をある単位でまとめて扱いたいというニーズは昔からある。オブジェクト指向ができるまでは構造化プログラミングという考え方が一般的であった。
構造化プログラミングはプログラムをツリー構造にまとめる。まず大まかな処理を記述するメインルーチンがあり、そこから詳細な処理を記述するサブルーチンへと階層化して管理した。たとえばメインルーチンには「サブルーチンAを繰り返す」であるとか「値が1であればサブルーチンB、値が2であればサブルーチンCを動かす」というように記述した。こうした構造化の考え方自体は今でも一般的なテクニックだ。たとえば1つのメソッドに処理を書きすぎないように適度に分割するというのはプログラミングの初歩である。
こうした構造化の手法は一見すると簡単そうなのだが、ある程度以上の複雑な処理を論理的に細分化して考えていくことは簡単なことではない。読者でも論理的な思考が苦手という方もいるだろう。複雑な処理の構造化では、いわゆる数学や物理学的な独特のセンスが要求されるのだ。
そこで、より簡単にプログラミングが可能なように、メッセージパッシングのアイデアを取り入れながら、オブジェクト指向という考え方がまとめられた。よく聞く言葉だが、次ページでは改めてその意味を考えてみたい。
- 2人の推薦記事
- 0人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
-
- タグ
- メッセージ指向、SOA
- 特集: マッシュアップ時代のアーキテクト (3件)
- ホワイトペーパー
- 話題のタグ
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
iPhoneに付く指紋が…… ひとまずおすすめのシリコンケース
contentプロパティでコンテンツを追加する(2):FirefoxとSafariのCSS
iPhone 24時間耐久レース:バッテリーは実際何時間?
フォームデザイン虎の巻:フォームの基礎をおさえる
ZDNet Japan ホスティング特集
Techno Exchange
DELLが掲げる「新・仮想化アセスメントサービス」
ZDNet Japan Green IT