メッセージ指向ミドルウェア(1)

わけありで、なぜかActiveMQと戯れる日々。
ActiveMQのようなメッセージ指向ミドルウェアというやつは、実は最近(と言っても1年前ほどだが)まで知らなかった概念だ。しかし、触ってみると結構面白く、直に手に馴染むツールとなった。
大学の頃、PCAと呼ばれるFPGAの一種を触っていた。PCAは、ストリーム処理+自律再構成を実現するための回路である。このPCA用アプリケーションは、マイクロパイプラインという概念を用いて作成される。
さて、面白いのがメッセージ指向ミドルウェア。こいつを使うとSEDAスタイルなアプリケーション開発が簡単に出来るようになる。実は、このSEDAスタイルのアーキテクチャと、マイクロパイプラインのアーキテクチャは、粒度や抽象度、そして目的こそ違えど概念的には全く同じものである。だから直に手に馴染んだと言える。
PCAは、非常に柔軟性が高い。1データにつきわずか4ビットの情報しか扱えないが(PCA2では8ビットに拡張されている)、その4ビットのデータを駆使することで、メッセージルーティングを柔軟に変更したり、アプリケーションの構成を変更したりすることができる。さらに、非同期で動作するため、回路特有のクロックの問題などを考えずとも動作するアプリケーションができる。この制限されたデータ(メッセージ)と非同期による動作、柔軟に変更可能という特徴のおかげで、スケーラブルで拡張しやすく、機能変更なども容易に行えるアプリケーションが開発可能だ。
この性質は、メッセージ指向ミドルウェアを用いて開発したソフトウェアでも有効だと感じている。もし、柔軟なアプリケーションを開発したければ、メッセージ指向ミドルウェアを用いて、メッセージドリブンなプログラムを記述してみると勉強になると思う。
メッセージ指向ミドルウェアは、古くから存在していたらしい。だけど、なぜか積極的に利用しようという雰囲気は感じられない。私は、このミドルウェアだけで、デザインパターンの本が一冊書けるぐらい、奥が深いと思っている。もしかしたら、その理由は、開発者側にあるのかもしれない…
さて、最近日記のネタがないので、ActiveMQをサンプルにしたメッセージドリブンなアプリケーション開発を今後何回かに分けて取り上げてみたい。*1

*1:三日坊主にならないよう、がんばれ>俺