目次


会議施設を予約するための Android アプリを作成する

Bluemix 開発プラットフォームのクラウド・サービス (Cloudant DB、MQ Light、Twilio) を利用することでアプリの作成を容易にする

Comments

モバイル端末を持ち歩く従業員や、自分の端末を業務で使用する従業員が増えたことから、会議施設を予約するアプリがあると重宝するはずです。このチュートリアルでは、スマートフォンから職場の会議施設を予約するために使用できる、単純な Android アプリと Java Web アプリケーションを作成する方法を紹介します。このアプリケーションを作成してデプロイするには、Bluemix 開発プラットフォームのクラウド・サービス (Cloudant DB、MQ Light、Twilio) を利用します。

多くの職場には、従業員のコラボレーションを目的とした予約可能なオンサイトの会議施設があります。この単純なアプリでは、ユーザーが Android 端末から予約リクエストを送信してレスポンスを受信することができます。

サンプル Android アプリは、IBM の施設に対するリクエストを送信し、そのデータを CouchDB に保管するようになっています。このアプリに加え、DB からリクエストを取得して、そのリクエスト・データを MQ Light に送信するための Web ベースの Java アプリケーションも必要になります。この Java アプリケーションはメッセージ・エンジンを使用して、リクエスト送信側に SMS を送信したり、応答キューからデータを受け取ったりします。

アプリを実行するコードを入手する

アプリを実行する

サンプル・アプリケーションは、Android 端末または Android エミュレーターから送信されたリクエストを処理します。このアプリケーションを実行すると、承認ページが表示されます。

リクエストを送信するには、以下のようにします。

  1. お使いの Android 端末で「Unknown Source (不明なソース)」を使用可能にして、不明なアプリを Android 端末にインストールできるようにします。
  2. zip フォルダーに含まれている IICRequestForm.apk をこの Android 端末にインストールし、そのアプリを実行します。

独自のアプリケーションを作成するために必要となるもの

  • Bluemix アカウント。Bluemix の下記サービスをアプリケーションで利用する上で必要です。
    • Cloudant。NoSQL DBaaS です。これまでに Cloudant やクラウド・データベース・オファリングを使用したことがない場合、この承認ツールが優れた入門ツールとなります。
    • MQ Light。IBM Bluemix にデプロイされるアプリケーション向けの柔軟かつ簡単に利用できるメッセージング・サービスです。
    • Twilio。クラウド通信 IaaS です。Bluemix サービスとして提供されていて、アプリケーションに追加することができます。
  • DevOps Services アカウント。
  • Twilio アカウント。
  • エミュレーターが含まれる Android SDK
  • 以下のプラグインがインストールされた Eclipse IDE
    • IBM Eclipse Tool for Bluemix。
    • ADT。
    • EGit。

ステップ 1. Cloudant を使用する Java Web アプリケーションを作成する

サンプル Java Web アプリケーションのソース・コードは、DevOps Services に用意されています。zip フォルダー内にある resource.zip ファイルは、Eclipse にインポート可能な Android プロジェクトです。AndroidLib.rar にはすべての .jar ファイルが含まれています。これらの .jar ファイルは、ビルド・パスに追加する必要があります。smartiic_v0.zip ファイルは Java プロジェクトです。このファイルも、Eclipse にインポートすることができます。
 

  1. Java プロジェクトを Eclipse にインポートするには、「File (ファイル)」 > 「Import (インポート)」 > 「General (一般)」 > 「Existing Project Into Workspace (既存プロジェクトをワークスペースへ)」の順にクリックした後、「Next (次へ)」をクリックします。
  2. zip フォルダー (DevOps Services からダウンロードすることができます) に含まれる smartiic_v0.zip ファイルを選択します。インポートが完了したら、プロジェクト構造を表示します。
  3. Bluemix ツールを使用してアプリケーションを作成します。「IBM Bluemix」サーバーを右クリックし、表示されるコンテキスト・メニューで「Add and Remove… (追加および削除…)」をクリックします。
  4. SmartIIC アプリケーションを選択してから、「Add (追加)」ボタンをクリックします。
  5. Configured (構成済み)」フレームに SmartIIC が表示されたら、「Finish (完了)」をクリックします。
  6. Name (名前)」フィールドに「SmartIIC」と入力して、「Next (次へ)」をクリックします。
  7. Subdomain (サブドメイン)」、「Deployed URL (デプロイ先 URL)、「Memory Limit (メモリー制限)」の各フィールドを入力し、最後に「Finish (完了)」をクリックします。
  8. コンソールでプッシュ・プロセスを確認します。
  9. 自分の Bluemix アカウントを使って Bluemix にログインします。Eclipse によって作成された SmartIIC アプリケーションが表示されているはずです。このアプリケーションをクリックして、詳細ページを表示します。
  10. SmartIIC アプリケーションに対し、「ADD A SERVICE (サービスの追加)」をクリックします。
  11. Cloudant NoSQL DB」サービスを選択します。
  12. Service name (サービス名)」として「myCloudant」と入力してから、「CREATE (作成)」をクリックします。
  13. ダッシュボードで「Show Credentials (資格情報の表示)」をクリックして、「Cloudant NoSQL DB」サービスの username、password などを表示します。
  14. Cloudant NoSQL DB」サービスをクリックして、操作 UI を表示します。
  15. LAUNCH (起動)」をクリックして、「Database Management (データベース管理)」ツールを表示します。
  16. Add New Database (新規データベースの追加)」をクリックします。
  17. iicsupport」という名前の新規データベースを作成します。
  18. iicsupport データベースでは、「New (新規)」 > 「Document (ドキュメント)」の順にクリックし、新規のインタラクティブ・ドキュメントを作成します。
  19. 以下のデータをドキュメントに貼り付けた後、「SAVE (保存)」をクリックします。
    {
      "_id": "iicsupport_constant",
      "flag": "0",
      "main_id":"null"
    }
  20. ドキュメントを保存すると、データベースはこのドキュメントのバージョンを記録するための新規フィールド "_rev" を自動的に生成します。

ステップ 2. Cloudant に接続する Android アプリを作成する

  1. Android プロジェクトを Eclipse にインポートするには、「File (ファイル)」 > 「Import (インポート)」 > 「General (一般)」 > 「Existing Project into Workspace (既存プロジェクトをワークスペースへ)」の順にクリックして、「Next (次へ)」をクリックします。
  2. File (ファイル)」 > 「Browse (参照)」の順にクリックしてアーカイブを選択し、zip フォルダーから resource.zip を選択した後、「Finish (完了)」をクリックします。
  3. AndroidLib.rar (resource プロジェクトの関連ライブラリー) を解凍します。
  4. lib ディレクトリーを右クリックし、表示されるコンテキスト・メニューで「Properties (プロパティー)」をクリックします。
  5. Properties (プロパティー)」パネルで「User Libraries (ユーザー・ライブラリー)」をクリックします。次のパネルで、「New (新規)」ボタンをクリックします。「User library name (ユーザー・ライブラリー名)」に「lib」と入力してから、「OK」をクリックします。
  6. Add External JARs (外部 JAR の追加)」をクリックし、すべての .jar ファイルを外部ライブラリーとして lib に追加してから、「OK」をクリックします。
  7. AndroidManifest.xml ファイルを編集して、以下の行を追加します。
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
        <uses-permission android:name="android.permission.USE_CREDENTIALS" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  8. com.appResouce.acitivity パッケージ内に、cloudant.properties という名前の新規ファイルを作成して、その新規ファイルに以下の行を追加します。userpass の値は、自分の資格情報に置き換えてください。この作業が終わったら、ファイルを保存します。ユーザー名やパスワードの値を確認するには、Cloudant サービスの「Show Credentials (資格情報の表示)」をクリックします。
    user=add your username here
    pass=add your password here
  9. resource プロジェクトを右クリックして、「Run As (実行)」、「Android Application (Android アプリケーション)」の順にクリックします。
  10. Eclipse に Android エミュレーターが開き、アプリが実行されます。すべての必須項目に入力した後、「Submit (送信)」をクリックしてレスポンスを確認します。
  11. Cloudant DB の操作 UI に戻り、Android アプリによって作成された新規ドキュメントを確認します。

ステップ 3. Cloudant および MQ Light に接続するためのコードを Java アプリケーションに追加する

  1. Bluemix のダッシュボードで、「MQ Light」を新規サービスとして追加します。
  2. このサービスには「mqlsampleservice」という名前を付けます。以下に示されているように、アプリケーションには 2 つのサービスが追加された状態になりました。
  3. FrontendServlet.java ファイルを開き、ライン 194 に以下のコードをコピー・アンド・ペーストして try{} の中に含めます。
                    Connection connection = connHelper.getJmsConnectionFactory().createConnection(connHelper.getUsername(),
                                    connHelper.getPassword());
                    Session session = connection.createSession(false,
                            Session.AUTO_ACKNOWLEDGE);
                    MessageProducer producer = session
                            .createProducer(myRequestQueue);
                    producer.setTimeToLive(30000);
                    connection.start();
                    TextMessage requestMsg = session.createTextMessage(message);
                    requestMsg.setJMSReplyTo(myReplyQueue);
                    requestMsg.setIntProperty("batchID", ID);
                    requestMsg.setIntProperty(WMQConstants.JMS_IBM_CHARACTER_SET,
                            WMQConstants.CCSID_UTF8);
                    producer.send(requestMsg);
                    messagesSent = 150;
                    producer.close();
                    session.close();
                    connection.close();
  4. アプリケーションをもう一度 Bluemix にプッシュします。「Server (サーバー)」タブで「SmartIIC」アプリケーションを右クリックし、「Update and Restart (更新して再起動)」をクリックします。
  5. コンソールでプッシュ・プロセスを確認します。
  6. 公開が完了したら、アプリケーション・リンクを開きます。このリンクは、例えば smartiic.mybluemix.net のようなリンクです。
  7. 承認待ちのドキュメントをデータベースから選択し、「Approval Opinion (承認の見解)」を選択してから「Send (送信)」をクリックします。
  8. すると、「SMS Result (SMS 結果)」メッセージを受け取ります。

ステップ 4. Twilio を使用した SMS で Java アプリケーションを拡張する

  1. SmartIIC アプリケーションの Twilio サービスを作成します。
  2. Service Name (サービス名)」、「Account SID (アカウント SID)」、「Auth Token (認証トークン)」の各フィールドに、Twilio から提供された値を入力します。これらの情報は、Twilio アカウントから取得することができます。
  3. 現時点で、SmartIIC アプリケーションには 3 つのサービスが追加されています。
  4. Eclipse を開き、新規 Java ファイルを作成します。com.ibm.iic を右クリックし、「New (新規)」、「Class (クラス)」の順にメニュー項目をクリックします。
  5. Name (名前)」フィールドに「SmsSender」と入力し、「Finish (完了)」をクリックします。
  6. SmsSender.java の中身を、zip フォルダーに含まれる SmsSender.java ファイルのコードで置き換えます。
  7. Worker.java を開き、以下のコードをコピーします。
    msg =new String(((TextMessage) message).getText().getBytes("UTF-8"), "UTF-8");
    String convertedMsg = sendMsg(msg);
    replyMessage.setText("The message \"" + convertedMsg + "\""
            + " have been sent to the applicant via SMS.");
  8. Worker.java のライン 119 から 122 を、上記のコードで置き換えます。
  9. 以下の関数を Worker.java にコピーし、そのファイルを保存します。
        private String sendMsg(String message)throws JMSException,
                MalformedURLException {
            String result = "";
            OperatorDB odb =new OperatorDB();
            Map<String, String> map = odb.getRequestMap();if(message.equals("approve")){
                result = "Your request has been approved, please record this request ID: "
                        + map.get("id");}elseif(message.equals("reject")){
                result = "Your request has been rejected.";}try{
                SmsSender.sendSMS(map.get("mobilephone"), result);}catch(TwilioRestException e){
                e.printStackTrace();}
            odb.updateTag(map.get("id"), message);
            odb.updateMainDoc();return result;}

    ヒント: Ctrl+Shift+F キーを押下することで、ファイルのフォーマットを整えることもできます。

  10. SmartIIC アプリケーションを Bluemix に再公開するために、「Update and Restart (更新して再起動)」をクリックします。
  11. 公開が完了したら、最初に Android アプリを開きます。resource プロジェクトを選択して、「Run As (実行)」、「Android Application (Android アプリケーション)」の順にクリックします。これにより、エミュレーターが開き、この Android アプリが実行されます。

    注: 携帯電話番号の先頭に、「+」記号と国別コードを追加する必要があります (例: +16461234567)。

  12. SmartIIC アプリケーションのウェルカム・ページを開きます (例えば、smartiic.mybluemix.net)。
  13. Android アプリから送信されたドキュメントを取得します。「Approval Opinion (承認の見解)」を選択してから、「Send (送信)」をクリックします。
  14. メッセージを MQ Light に送信した後、施設の予約リクエストを送信したユーザーの携帯電話に、メッセージ処理エンジンから Twilio サービスを介して SMS が送信され、リクエストの結果が通知されます。

    Congratulations! Your approval tool is complete!

おめでとうございます!承認ツールはこれで完成しました。

まとめ

このサンプル・アプリケーションでは、Bluemix 上で Cloudant DB サービス、MQ Light サービス、および Twilio サービスを利用するのがいかに簡単であるかを示しました。ほんのわずかなコードで、あらゆるワークフローで使用できる承認ツールをデプロイすることができました。モバイル・オフィスが日常当たり前のこととなりつつある今、このように会議の場所を予約するためのリクエストをスマートフォンから送信して、スマートフォンでレスポンスを受信できるようにする必要が生まれてきています。その目標を達成するには、このツールが役立つはずです。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Mobile development, Cloud computing
ArticleID=999126
ArticleTitle=会議施設を予約するための Android アプリを作成する
publish-date=03052015