No Bugs, No Life

読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。

MQTTを使って通信するAndroid アプリの開発を始めてみる

プロジェクトの合間でちょっと余裕もあるし、次の仕事もPMOっぽいから開発の仕事もなさそうだし、遂に携帯もスマホに変えたことだし、androidアプリの開発に手を出してみる。
あと、せっかくのandroidアプリならば、ここは5年ぐらい前に手を出しそびれていたMQTTを使ってみよう。と思い付きDriven。

何を作りたいのか

mqttを使って通信するandroidアプリを作りたいというだけなので、実用性やニーズは考慮外。
とりあえず思い付きで、位置情報確認用のアプリ。
各種センサーを使って安否確認用のアプリにしとけば、実家の両親の安否確認にも使えるかなと思ったけど、今回はmqttとandroidプラットフォームにフォーカスする。*1
もっともハイレベルなコンポーネント図はこんなイメージ。
f:id:kazyury:20150701181058p:plain

(また)開発環境を構築する

Android Studio(デバイス側)の導入

Android SDKってEclipseプラグインだと思ってたけど、最近は変わったらしい。
Android Developer Tools | Android Developersによると、

Important: Support for the Android Developer Tools (ADT) in Eclipse is ending, per our announcement. You should migrate your app development projects to Android Studio as soon as possible. For more information on transitioning to Android Studio, see Migrating to Android Studio.

とのこと。おとなしく、Android Studioを以下からダウンロード。約900MB。
Download Android Studio and SDK Tools | Android Developers
インストーラの指示に従っていればいっちょあがり。

サーバー側環境の構築(IBM Bluemixを使用)

MQTTのサーバーを提供しているクラウドサービスをちょっと探してみたけど、結構いろいろなところでサービスを提供している模様。2010年頃にはMQTTなんてキーワードで検索してもmqtt.orgぐらいしかヒットしなかったし、mqtt.org内の文書もibmの文書って感じだったのに隔世の感。でもここで胸熱とか口走らない。

とりあえず、IDを持っていたのでIBM Bluemix上でサーバー側を準備してみる。(試行錯誤しながらなので、途中で方針を変えるかも)
以下は、環境構築の手順。

1. 普通にIBM IDを用いてIBM Bluemix - Next-Generation Cloud App Development Platformにログインする。IDがなければ作る。
f:id:kazyury:20150701220718p:plain

2. カタログのボイラープレートから Internet of Things Foundation Starterを選択する。
f:id:kazyury:20150701220854p:plain

3. アプリ名とホスト名を適当に入力
f:id:kazyury:20150701224109p:plain
プランは選択できなさそうだけど、SDK for Node.jsのデフォルトプランは「1 つ以上のアプリを無料で 30 日間 (375 GB 時間無料) 実行できます。」、Cloudant NoSQL DBのsharedプランは「20 GB の無料データ・ストレージ、毎月 500,000 の無料軽負荷 API 呼び出し、毎月 100,000 の無料高負荷 API 呼び出し」なので、試してみる程度なら十分かな。
お試しが終了したら削除する。

4. アプリがDeployされて自分のダッシュボード上に表示されることを確認
f:id:kazyury:20150701225211p:plain

とここまで書いてみたけど、dotnfs様のブログ"Bluemix の Node-RED サービスで IoT アプリを作る(1/2) : まだプログラマーですが何か?"や、DeveloperWorksの記事"Node-RED を使用してリアルタイムのチャット・アプリケーションを 5 分で作成する"があるので、そちらをご覧下さいませ。

*1: センサー類の取り扱いで苦労しそうな予感がするので