ニフクラ mobile backendはmBaaS(mobile Backend As a Service)として知られていますが、IoT分野においても多数利用されています。デバイス側の開発も必要なIoTにおいて、サーバサイドの開発をmBaaSに委ねられるのは開発工数を減らす上でもお勧めです。
そこで今回はNCMBをIoTにおいて利用する際のテクニックを幾つかご紹介します。
SDKがなくとも大丈夫
IoT分野においてはフットプリントの小さい、低負荷なプログラミング言語が選ばれます。例えばCやC++などになります。そうした言語向けにNCMBではデフォルトではSDKを提供していません。でも利用する方法はあります。
データを新規登録するPOSTメソッドの場合、タイムスタンプを固定にすると生成される署名も同じものになります。例えば温度や湿度、輝度などの数値が変わったとしても同じ署名を使ってNCMBへデータ登録ができます。
この特性を使うことで、正しいタイムスタンプと署名の組み合わせを生成しておけば、プログラムの固定値として書き込めるようになります。HTTPSアクセスするプログラムであればC/C++はもちろん、他のプログラミング言語であっても問題なく書けることでしょう。
データを取得する場合
データ登録ではなくデータを取得する場合、以下の二つがよくある処理です。
- デバイスのメタデータをNCMBに保存しておき、定期的に取得する
- 直近○件のデータを取得する
デバイス側で頻繁なネットワークアクセスは避けるはずなので、多くは1の使い方になるでしょう。これは例えばTwilio Syncであったり、AWS Device Shadowのような使い方になります。この場合、自分(デバイス)のメタデータが入っているデータのObjectIdが分かっていれば問題ありません。この場合もタイムスタンプが固定されれば、署名も同じものが使えます。
これもプログラム中に固定値として定義すれば定期的にデータを取得して、データが変わっていれば動作を変更すると言った仕組みが作れます。
ファイルストアにはHTTPSでアクセスする
デバイスのファームウェア、プログラムをバージョンアップする場合、リモートに多数あるデバイスを手作業でアップデートする訳にはいきません。まずデバイスのメタデータが入ったデータストアに更新命令を書き込みます(updateカラムをtrueにするなど)。
そのデータを受け取ったデバイスでは新しいプログラムを受け取りますが、その際にはファイルストアのHTTPSアクセスがお勧めです。この場合はURLさえ分かっていれば署名はいりません。ただのHTTPSアクセスでファイルを取得し、その内容を展開できます。
データを更新する
アップデート後、デバイスから更新完了した旨書き込みを行います。つまり、データストアを更新する必要があります。この場合、ObjectIdが分かっているデータの更新であれば、データの登録や取得と同じように同じ署名が利用できます。
まとめ
IoTプロジェクトでは巨大なSDKをインストールするのは現実的でない場合もあるでしょう。利用する機能がデータストアくらいであれば署名をあらかじめ生成しておくことで対応できます。署名生成アルゴリズムを実装しなくともNCMBを使えますので、ぜひお試しください。