次のステップへのヒント
Hello Thing-IF の内容を確認後、次のステップに進むためのヒントを紹介します。
次にすべきこと
このチュートリアルを終了後、さらに理解を深めるには次のページを確認するのが近道です。
機能概要の確認
IoT ソリューションの本格的な設計に入る前に、Thing-IF SDK の機能概要を確認しておくことをおすすめします。不要な機能を読み飛ばしながら Thing-IF SDK 以下のコンテンツをひととおり確認しておくと、適切な設計ができるはずです。Hello Thing-IF では扱いませんでしたが、コマンドを自動的に実行するトリガーの機能なども利用できます。
プログラムを作成する段階になったら、Thing-IF SDK v2 ガイド に従ってプログラムの実装方法を確認してください。
新規プロジェクトでの作業
特に、モバイルアプリの開発では、実際のアプリケーションを作成する場合、新規プロジェクトに Thing-IF SDK を導入する形になるはずです。
Thing-IF SDK の導入方法は、Thing-IF SDK v2 ガイド 以下にある各プラットフォーム向けの手順を参照してください。
また、これらの導入手順にも案内がありますが、プッシュ通知をモバイルアプリに新しく組み込む場合は プッシュ通知設定チュートリアル を試しておくと導入が容易になるはずです。
ソリューション構築のヒント
実際のソリューションを設計する際には、以下の情報も参考にしてください。
ログインせずにユーザーを利用する
モバイルアプリでユーザーを使用する際、仮ユーザー(Pseudo User)の機能を使うと、明示的なログインを行わずにユーザーを扱うことができます。仮ユーザーとは、ユーザー名やパスワードなしで KiiUser を作成し、ログイン状態を示すアクセストークンだけを取得・保持しておく機能です。再ログインはできません。
Thing-IF SDK v2 ガイド では、仮ユーザーを使ってユーザーを用意する方法を案内しています。仮ユーザーの機能の詳細は、以下のドキュメントを参照してください。
ターゲットのハードウェアに移植する
Thing 上のプログラムをターゲットのハードウェアや OS に合わせた実装にしたい場合、Thing SDK Embedded の OS 依存の処理の実装 を参考に、OS に依存する処理を用意してください。Thing SDK Embedded は、Thing-IF SDK の内部で使用しているライブラリーです。
vendorThingID を UUID で自動生成する
工場出荷時に vendorThingID として一意の値を Thing に記憶しておくことが困難な場合、モバイルアプリから UUID などを使って vendorThingID を自動生成することもできます。この場合、Thing を初期登録した際に Kii Cloud が割り当てた thingID と Thing のアクセストークンを、Bluetooth などによって Thing に転送し、Thing はそれらを使って初期化します。
Thing では転送された thingID とアクセストークンを記憶するため、数十バイト程度の不揮発性メモリを搭載する必要があります。
実装方法の詳細は、初期登録の モバイルアプリから初期登録を行う方法 をご覧ください。
ステートのチューニング
現在の Thing Interaction Framework では、ステートは JSON 形式で記述された最新の情報 1 件分だけを扱うことができます。実際のアプリでは、より複雑な情報を扱う機会があります。
以下のような使い方を検討している場合、Kii Cloud SDK の データ管理機能 を使って、データの保存方法をチューニングすることができます。IoT ソリューションで Kii Cloud SDK を使用する場合は、Kii Cloud SDK for Thing によるチューニング のガイドに従って、Thing とモバイルアプリを実装してください。Hello Kii を確認して、Kii Cloud SDK の概要を知るのも有効な方法です。
ステートの履歴を記録する
これは、ステートの時系列での変化を履歴として記録しておき、モバイルアプリからグラフ表示などの形で利用するケースです。このケースでは、Thing スコープの Bucket に時系列で発生した KiiObject を格納し、それを時刻順に取得するように実装することで履歴を扱うことができます。
時系列でのステートの取り扱いは、将来の Thing Interaction Framework で利用できるようになる予定です。この機能では、決められた時間間隔でのステートの保存が前提となっています。ステートの送信間隔が見積もれない場合や、発生したデータをすべて残しておきたいような場合は Kii Cloud SDK の機能を利用できます。
なお、時系列でのステートの保存を行う場合は、API 使用量(利用料金)やサーバー負荷の観点から、あまり高頻度に保存しすぎないようにご注意ください。
Thing とモバイルアプリの間でバイナリデータをやりとりする
画像データなどの大きなデータをやりとりしたい場合、Kii Cloud SDK の「Object Body」(Android、iOS、REST)の機能を利用できます。
比較的小さなバイナリデータは Base64 などで文字列化することでステートとして扱うこともできますが、Web カメラの画像のようなサイズになると Object Body の利用が適切です。
このケースでは、Thing スコープの Bucket に Object Body を持った KiiObject を作成することで実現できます。モバイルアプリから作成した ObjectBody を参照して利用します。なお、Object Body は、来訪者の顔画像を保存しておくような用途には向きますが、リアルタイムでの動画データを Kii Cloud 経由でモバイルアプリと共有するような用途には向きません。
ユーザーに紐付けてデータを保存する
体重計の計測履歴のように、Thing 単位ではなくユーザー単位でデータを保存したい場合、Kii Cloud SDK の利用が適しています。複数のユーザーから 1 つの Thing を共有する一方、生成したデータは自分以外から参照されたくないようなケースに応用できます。
このケースでは、Thing のオーナーとなっている KiiUser の Bucket に、KiiObject を作成します。ユーザースコープの Bucket はユーザーごとに存在し、他人からはパスワードがない限りアクセスできないため、強固なセキュリティ要件を実現できます。
なお、デフォルトでは Thing からオーナーの Bucket には書き込めないため、ACL(Access Control List)の設定によって、書き込み権を与えておく必要があります。