MerapiはAdobe AIRプラットフォーム上で動作するアプリケーションとJavaアプリケーションを連携させるためのソフトウェアである。Merapiを利用することで、AIRアプリケーション側に外部のJavaプログラムと対話するためのインタフェースを仕込んでおき、そのインタフェースを利用してJavaアプリケーションとの間でオブジェクトの受け渡しをすることが可能になる。
Merapi自体はJavaで実装されており、ユーザのクライアントマシン上で実行されるAIRおよびJavaアプリケーションをターゲットとしている。MerapiはJavaアプリケーションとAIRアプリケーションの間を繋ぐブリッジとして動作し、極めてシンプルなメッセージ交換だけで両者間のデータ(オブジェクト)の受け渡しを行うことができるようになっている。
プロジェクトサイトには、Merapiが開発された経緯としてAIRアプリケーションによるOS固有の機能やローカルリソースへのアクセスが制限されていることが挙げられている。例えば次のようなケースを想定した場合、現状のAIRの仕様ではこれを実現することはできない。
- AIRアプリケーションでWii Remote(ニンテンドーWii用リモコン)を利用する
- USBに接続された電話機を利用してAIRで通信する
- TWAIN対応のカメラやスキャナから動画や画像を取り込む
- AIRアプリケーションからロボットを操作する
- AIRを使用してネットワーク越しにMIDIシグナルを送る
- ハードウェア機器に制御されたAIRアプリケーションのソーシャルネットワークを構築する
AIRそのものは極めて魅力的なRIAプラットフォームである。もしそのAIRで上記のようなことを実現できると考えたらどうだろうか。アプリケーションの可能性はさらに大きく広がっていくに違いない。しかし現実には、移植性の確保などの問題からAdobe自身が上記のような機能をAIRに盛り込む予定は無さそうだ。
そこで、サードパーティによってこれを実現するためにスタートしたのがMerapiプロジェクトだという。Merapiの選択は、Javaを利用することでOSの機能に対するアクセスの問題を解消するというもの。加えて、Javaの豊富なライブラリをそのまま利用できるというメリットもある。
Merapiプロジェクトでは、現在登録ユーザ向けに初のベータ版であるMrapi 0.09を公開している。本稿ではこれを利用して、AIRアプリケーションとJavaアプリケーションの連携を試してみようと思う。
※ ちなみに「Merapi」の名称はインドネシアのジャワ(Java)島にあるムラピ山(Mount Merapi)に由来しているそうである。活火山であり、Merapiプロジェクトのロゴマークもそれに因んだ熔岩風の液体が溢れるティーカップになっている。