【ハウツー】

Javaを使ってAIRを制約から解放! - 新開発ツール「Merapi」β版を試す

3 Merapiを利用したサンプルプログラム

    杉山貴章  [2009/03/18]

    Merapiを利用したサンプルプログラム

    それでは、実際に簡単なアプリケーションを作成してみよう。公式サイトにあるサンプルプログラムも合わせて参照していただきたい。今回はAIR側をFlex SDK 3を利用して、Java側をJava SE 6を利用して作成する。

    まず、Java側のプログラムは次のようにした。MerapiSampleクラス自身がIMessageHandlerをimplementsしており、AIRからメッセージを受信したら、それに反応して返事を返すようになっている。

    import merapi.Bridge;
    import merapi.messages.Message;
    import merapi.messages.IMessage;
    import merapi.messages.IMessageHandler;
    
    public class MerapiSample implements IMessageHandler
    {
            public static void main(String[] args) {
                    System.out.println("Merapi sample started...");
                    // メッセージハンドラを登録
                    Bridge.getInstance().registerMessageHandler("merapiSample", new MerapiSample());
            }
    
            /**
             * メッセージハンドラ
             */
            public void handleMessage(IMessage message) {
                    try {
                            // メッセージを受け取って表示
                            System.out.println("Get data from flex: " + ((Message)message).getData());
    
                            // メッセージを作成して送信
                            Message response = new Message("merapiSample", "Hello Merapi from Java.");
                            Bridge.getInstance().sendMessage(response);
                    }
                    catch(Exception e) {
                            e.printStackTrace();
                    }
            }
    }
    

    コンパイルおよび実行には、Merapiで提供されるmerapi-core-0.0.80.jar、flex-messaging-core.jar;C:\software\merapi-0.0.90、flex-messaging-common.jar、tools.jarの4つのJARファイルが必要。

    > javac -classpath [PATH_TO_JAR_FILES] MerapiSample.java
    

    AIR側の本体はMerapiSample.mxmlというファイル名で以下のようにした。このプログラムはボタンをクリックする度にメッセージを送信し、返ってきたメッセージを受け取る。

    <?xml version="1.0" encoding='UTF-8'?>
    <mx:WindowedApplication 
       xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:merapi="merapi.*">
      <mx:Script>
        <![CDATA[
            import merapi.messages.Message;
            import mx.rpc.events.ResultEvent;
    
            private function handleResult(event:ResultEvent): void {
                // メッセージを受け取って表示
                var message:Message = event.result as Message;
                if (message.data != null) {
                    var data:Object = message.data
                    resultText.text += data + '\n';
                }
            }
    
            private function sendMessage(): void {
                // メッセージを作成して送信
                var message:Message = new Message("merapiSample", "Hello Merapi from Flex");
                bridge.sendMessage(message);
            }
        ]]>
      </mx:Script>
    
      <merapi:BridgeInstance id="bridge" result="handleResult(event)"/>
      <mx:Button x="20" y="10" label="SendMessage" id="button" click="sendMessage();"/>
      <mx:Text id="resultText" x="20" y="40"/>
    </mx:WindowedApplication>
    

    これを、次のようにMerapiで提供されるmerapi-core-0.0.80.swcをライブラリパスに含めてコンパイルする。

    > amxmlc -library-path+=merapi-core-0.0.80.swc -- MerapiSample.mxml
    

    アプリケーション記述ファイルはMerapiSample-app.xmlというファイル名で次のようにする。

    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://ns.adobe.com/air/application/1.5">
        <id>MerapiSample</id>
        <version>v1</version>
        <filename>MerapiSample</filename>
        <initialWindow>
            <content>MerapiSample.swf</content>
            <visible>true</visible>
            <systemChrome>none</systemChrome>
            <transparent>true</transparent>
            <width>400</width>
            <height>200</height>
        </initialWindow>
    </application>
    

    以上で完成だ。AIRアプリケーションとしてAIRデバッガーランチャー(ADL)を用いて実行してみよう。インストールする前にまず、先にJava側のプログラムを起動する。

    > java -classpath [PATH_TO_JAR_FILES] MerapiSample
    Merapi sample started...
    

    続いて、adlコマンドを使ってAIRアプリケーションを実行する。

    > adl MerapiSample-app.xml
    

    すると、以下のようにウィンドウが表示され、ボタンを押したらJava側のコンソールに「Hello Merapi from Flex」と表示されて、AIR側にメッセージが返って「Hello Merapi from Java」という文字列が出れば連携成功だ。

    Merapiを利用したAIRアプリケーションの実行例

    あとはadtコマンドを使って、AIR側のアプリケーションをパッケージ化すればよい。まずはパスワードを指定して自己証明書ファイルを生成し、それを用いてインストーラファイルを生成する。

    > adt -certificate -cn SelfSigned 1024-RSA myCert.pfx [PASSWORD]
    > adt -package -storetype pkcs12 -keystore myCert.pfx MerapiSample.air MerapiSample-app.xml MerapiSample.swf
    password:
    

    成功すると「MerapiSample.air」というファイルが生成されるので、これを実行すれば作成したAIRアプリケーションがローカルのマシンにインストールされる。あとは先程と同様にJava側のプログラムを起動した上で、インストールされたAIRアプリケーションを実行すればよい。

    * * *

    以上、Merapiを利用してAIRとJavaを連携させる簡単な例をお見せした。

    AIR、Javaの基本的な知識があれば、ここまで試すのに1時間はかからないだろう。Merapiはそれくらい手軽に使うことができるツールなのだ。Merapiを仲介にしてAIRとJavaのパワーを最大限に活用すれば、様々な魅力的なアプリケーションを実現することができるだろう。まだ開発初期段階だが、今後の発展を期待して試してみる価値のあるツールである。

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン