話題の開発ツール、MonacaとKii Cloudを用いたIoT開発講座

2016/02/18

カテゴリー:開発お役立ち

2月10日、夜7時より、HTML5ハイブリッドアプリ開発プラットフォーム「Monaca」をご提供されているアシアルさまと共同で、「​【IoT】Kii Cloud×MonacaによるIoT開発体験講座​」と銘打ってハンズオンセミナーを開催いたしました。お陰様でご好評をいただき、満席で出席が叶わなかった方もいらっしゃいました。この記事では、残念ながら出席いただけなかった方々にも内容がわかるよう、講座の中身を解説しております。

必要なプログラミング言語はJavascriptだけ..iOS、Android、デバイスもこれ一つでOK

「Monaca」はHTML5を用いてiOS、Androidむけのアプリを開発できる開発環境です。今回は、IoTのT=ThingすなわちデバイスとしてIntel Edisonを用い、こちらではnode.jsを用いることでアプリ側もデバイス側もJavascriptを用いた開発講座となりました。

monaca_0218_1.png

事前準備はMonacaクラウド、Kii Cloudへの登録とMonacaデバッガアプリのインストールのみ

Monacaはクラウド型の開発プラットフォームです。WebUI上でコードを書いていくことで実際のアプリを作成することができます。2015年11月、Kii Cloudへのプラグインを作成いただきました。このことでアプリ側はMonaca、サーバ側はKii Cloudを用いた開発が可能になり、非常に手間を省いたアプリ開発が可能になりました。事前準備もMonacaクラウド、Kii Cloudへの登録、そして必要があればMonacaデバッガアプリのスマートフォンへのインストール、Windows機であればsshをつかえるTeratermのインストールなど、必要最小限ですみます。

Kii Cloudの根本

Kii Cloudの根本は、「key­-valueペアをREST APIで更新/参照する仕組み」です。REST APIとの通信部分のプログラミングがやや煩雑になるため、様々な言語むけにSDKが準備されています。(2016年1月現在、提供されているSDKはiOS、Android、HTML5、Unity、組み込みLinux、RTOS等) Kii Cloudにログインしてアプリを作成すると、クラウド上に「アプリ空間」が作成され、その空間上にデータバケツを作成することでデータを蓄積していきます。バケツの種類は、用途に応じ「User Scope」「Thing Scope」等があります。その作成も、アプリからREST APIを通じて行うことができます。

monaca_0218_2.png

Kii Cloudを用いたクラウド型IoT開発

Kii Cloudを用いたIoT開発は、この仕組みを活用して行っていきます。基本的な概念は「ユーザとデバイス(Thing)」の間に所有関係を規定するということで、バケツ間の所有関係を様々に規定することで柔軟なIoT開発が可能になっています。例えば、下図の1のパターンではユーザとデバイスが1対1の関係でひも付けられています。一人で一つのデバイスを操作する場合にはそれでいいのですが、一人で複数のデバイスを操作、確認したり(2のパターン)、複数人で一人のデバイスを管理したり(3のパターン)する場合があります。このような場合にも対応できるよう、「User Scope」のバケツと「Thing Scope」のバケツの所有関係は自由に規定することができます。

monaca_0218_3.png

以上が概念のご説明になります。続いてハンズオンの解説です。

アプリの作成

Kii Cloudの開発者ポータルサイトでアカウントを作成し、クラウド上でアプリ(アプリ空間)を作成していただきました。
https://developer.kii.com/jp/signup

アプリケーション作成方法の詳細はこちらをご覧ください。
http://docs.kii.com/ja/starts/application/application/

Intel EdisonからKii Cloudに温度を記録する

ハンズオンでは、Edisonで動作するプログラムはインストール済みとなっています。プログラムは温度センサーとBLEで通信して温度データを定期的にKii Cloudにアップロードします。

Edisonで動作するプログラムはこちらのブログで提供・紹介されておりますので、より詳しく知りたい方は是非ご覧ください。

「IoTっぽい温度ロガーを作った」2015年8月16日

ハンズオンセミナーでは、データの格納先としてのアプリ(アプリ空間)の指定のみを行いました。app.jsonというファイルにIDとKeyを書き込むことで指定します。

sshでIntel Edisonにログインし、ファイルを編集します。

vi app.json
{
	"ID" : "Kii CloudのアプリケーションのID",
	"KEY" : "Kii CloudのアプリケーションのKey",
	"SITE" : "JP"
}

ここに記入するためのアプリIDとKeyはKii Cloudの開発者ポータルで確認します。ログイン後、アプリを指定した後、右上の歯車アイコンから鍵のマークをクリックするとアプリIDとKeyが確認できます。

monaca_0218_4.jpg

monaca_0218_5.jpg

アプリ側からデバイスを指定するためには"Vender ID","Vender Thing ID"等と呼ぶIDを用います。ハンズオンではあらかじめ設定されているので中身を確認するだけです。

cat thing.json
{
	"VENDOR_ID" : "kii-edison-4",
	"PASSWORD" : "設定されたパスワード",
	"TYPE" : "thermometer"
}

実際には、IoT機器を開発するメーカが、対応するアプリを作成し、その情報を含んだ形で出荷することでクラウド側へのデータ記録をするような形を想定しています。

登録、ログイン処理の実装

デバイス側の準備ができたので次はアプリ側です。ハンズオンセミナーではサンプルプログラムの登録部分、ログイン部分を​オンラインドキュメント​を参考に編集していただき、登録とログイン部分を実装していただきました。

ユーザ、デバイス間の所有関係の規定

登録、ログイン処理を実装したら、所有関係を規定します。
アプリから「Vender thing ID」を入力させ、そのIDをもつバケツとの所有関係を規定します。
これは、IoT機器ベンダーが販売したデバイスのバケツがあらかじめKii Cloud上にあり、購入したユーザが、製品に印字等されているその個体に特有のIDを読んで、アプリから入力することを想定しています。このことによって、同じアプリ、同じ製品であってもユーザとその製品の所有関係をクラウド上でも実現することができます。

monaca_0218_6.png

ハンズオンセミナーでは、上記の$scope.ownerGegitration()関数の中身を実装していただきました。

Thing Scopeのバケツを読み取り、グラフに表示

所有関係を規定したThing Scopeバケツを読めるようになりました。そちらをよみとり、アプリ上のグラフに表示させたところで今回のハンズオンセミナーは終了です。

monaca_0218_7.png

如何でしたでしょうか。実際に手を動かしてみたい方は是非次回のハンズオンセミナーにご参加ください。

Kii Cloud

前の記事< | トップへ戻る | >次の記事

無料トライアル