nifty_cloud1

mBaaS × IoTの良い関係

  • このエントリーをはてなブックマークに追加

by [2015年3月27日]

ncmb-7.017IoTという単語が声高に騒がれるようになっているが、構成する要素の中で大事になってくるのがIoTのIでもあるインターネット(ネットワーク)の存在ではないだろうか。ついデバイスにばかり目が向いてしまうのだが、ネットワークにつながってこそのIoTなのは間違いない。

そこで今回はニフティ株式会社が主催した開発者向け勉強会「ニフティクラウド mobile backend #7 – IoT × ネットワーク」からBaaS(Backend as a Service)とIoTを組み合わせた際の利点、使い方について紹介したい。講演したのは中津川篤司氏だ。

中津川篤司 ニフティクラウド mobile backend エヴァンジェリスト。オープンソース・ソフトウェアを毎日紹介するブログMOONGIFT、およびスマートフォン/タブレット開発者およびデザイナー向けメディアMobile Touch運営。B2B向けECシステム開発、ネット専業広告代理店のシステム担当を経た後、独立。多数のWebサービスの企画、開発およびコンサルティングを行う。2013年より法人化。

ニフティクラウド mobile backend とIoTの良い関係

ニフティクラウド mobile backendというのはmBaaS/BaaSと呼ばれるサービスの一つになります。mBaaSというのは「Mobile Backend as a Service」の略で、アプリのバックエンドを支えるサービスになります。最近ではモバイルだけに特化せず、mを除いたBaaSという名称も使われています。データやファイルを保存する、ユーザ登録の仕組みを提供するなどといったサーバサイドで良くある要件を提供するサービスになります。

ncmb-7.001

IoTというキーワード自体は昔からあったのですが、ここ数年で一気に注目が集まっています。デバイスの小型化と高機能化、無線/有線ネットワークの発展が要因として考えられています。15年くらい前のデバイス開発と言えば、マイコンのボード/抵抗/電圧計などを買ってきて半田でつけて動かしてみると言ったのが当たり前でしたが、今ではArduino、Raspberry PIに加えてIntel Edison、mbed、konashiなど様々なデバイスが登場しています。これらはEdisonを除けば概ねプロトタイピングやホビー用途ですが、Raspberry PIなどは機能も向上してきているのでそのまま箱に入れて製品化しているケースもあります。この部分を改めて開発するメリットはないかも知れません。

ncmb-7.006

そしてこういうデバイスだけではIoTは成り立ちません。当たり前ですが、IoTといわれる所以はインターネット、つまりネットワークが必須です。もし先ほど挙げたようなデバイスをIoTデバイスにしたければ、ネットワークにつながなければなりません。例えばArduinoでも無線LANモジュールがあり、HTTP通信ができます。Raspberry PIもあります。デフォルトでは有線LANだけですが、各社が出しているUSBのWi-Fiアダプタが使えます。Intel EdisonはデフォルトでWi-fiが入っています。

デバイスをネットワークに接続してこそIoTの楽しみがようやく始まるのではないでしょうか。

ではネットワークにつないだとして問題は「何をするか」です。コンソールでつないでpingを打つだけでは面白くありません。それではLチカ(LEDをつないでチカチカさせる行為)と変わらないレベルです。恐らくやりたいと思っているのはそうではないはずです。

IoTデバイスにおけるネットワークの良くない使い方

データの保存
IoTデバイスにおけるネットワークの良くない使い方を3つほど挙げてみたいと思います。一般的にIoTデバイスというのは小さいというイメージがあります。小さいということは自ずとバッテリーも小さくなります。先日発表されたMacBookの中身は殆どがバッテリーです。バッテリーはどうしてもかさばりますし、軽量化しづらいのが実情です。また、データを蓄積する容量も小型です。組み込みの場合は8GBくらい、ものによってはマイクロSDカードスロットがついていますが、それでも大量のデータを小さなIoTデバイスに保存したいと思う方は多くないと思います。ということでIoTデバイスは小型でバッテリーもなるべく小さく、データを貯めない方が良いのです。しかしIoTデバイスに接続するセンサーはほぼ定常的にデータが流れ込んできます。これらのデータをどんどん破棄してしまっては非常に勿体ないです。これは特にIoTがビッグデータと結びついていることにも依ります。

そのため、IoTデバイスの中にHTTPサーバを立てて、外部から接続するという構成はお勧めしません。いつアクセスがあるか分からないのに電力消費の激しい待ち受け状態を続けるのはよくありません。さらに1台なら良いですが、これが複数になった時には管理も煩雑になってしまいます。

ncmb-7.013

そこでお勧めしたいのがニフティクラウド mobile backendを用いた方法になります。

各IoTデバイスからは外部のサーバ(ニフティクラウド mobile backend)にデータを放り込みます。後はスマートフォンやデスクトップから、クラウド上にあるデータを解析をします。既にデータは蓄積されていますので、いつでも好きな時に解析できますし、データを放り込む頻度を高めれば、ほぼ現時点でのデータを解析できるようになるでしょう。

ncmb-7.015

ニフティクラウド mobile backendで提供しているデータ保存の仕組み(データストアと呼んでいます)はスキーマレスデータベースで、カラムの定義などは必要ありません。さらにファイルストアは写真やバイナリデータがアップロードができます。データは保存だけでなく、取得もできますのでIoTデバイス側でデータを取得するようにすれば、相互通信に用いることもできるでしょう。

プッシュ通知を使う
IoTデバイスのネットワークの使い方について、センサーが何らかの閾値を超えたタイミングで通知を出したいと思うかも知れません。メールを使う手もありますが、今はプッシュ通知がスマートです。そのプッシュ通知なのですが、スマートフォンごとに発行されるデバイストークンを保持したり、iOSであれば秘密鍵の管理も必要になるので非常に煩わしいかと思います。そこで使えるのがニフティクラウド mobile backendだと思うのですが、使わない構成の場合はこのようになります。

ncmb-7.017

使わない場合、IoTデバイスとAPNSとGCMに直接つなぐ形になります。この時、デバイストークンと秘密鍵を使ったり、ソケット通信だったりとiOSの場合は特に面倒になります。ニフティクラウド mobile backendを使った場合、IoTデバイスとニフティクラウド mobile backendの間はHTTPのPOSTメソッドだけになります。それだけで後のAPNSであったり、GCMとのやり取りからは解放されます。

ncmb-7.018

M2MからM2C2Mへ
では最後に3つ目の問題です。IoTと共に注目を集めているのがM2Mという言葉です。Machine to Machineの略語ですが、いわゆるIoTデバイス同士で対話させる仕組みになります。図で表すと次のようになります。

ncmb-7.027

問題点としては、このMとMは多くの場合、別な会社が作っていて、お互いに独自仕様を売り込みたいと考えているということです。すべて同じメーカーであれば問題にはなりませんが、ベンダーロックになったり、自由度が下がります。そこで、このMとMの間にクラウドを差し込んでみるのがお勧めです。

ncmb-7.028

このクラウドのCに当たる部分がニフティクラウド mobile backendになります。ニフティクラウド mobile backendはRESTful※なAPIを提供していますので、とりあえずデータの保存をしたり、受信をする際の緩衝材として使うことが出来ます。まず片方のIoTデバイスからスタートするという場合においても、データさえ保存しておけばもう片方のIoTデバイスにおけるテストデータに使うこともできるでしょう。※REST(Representational State Transfer)の原則に従って実装されるシステム

さらにクラウドにデータがあると言うことは、そのデータをデスクトップやスマートフォン、さらにRESTfulなAPIを使って別なシステムから見ることもできます。マシン同士のメッセージ送受信で終わらせない仕組みが作れるようになります。

このようにIoTとBaaSの相性はとても良いと感じています。特にハードウェアの世界では、ソフトウェアで開発している時以上に不条理なエラーに悩まされたりします。そのような中、サーバまで開発するというのはとても大変です。IoT周りのサービスは目の前のデバイスに対して触れている感があり、とても面白いです。それに対してサーバサイドの開発は特にユーザ向けに画面が必要な訳でもなく、管理画面さえあれば十分なことが殆どです。それではなかなか開発のモチベーションが上がらないでしょう。ぜひニフティクラウド mobile backendを使って楽しいIoTサービス開発を行っていただければと思います。

サーバー開発不要!アプリ開発をよりスマートに、スピーディに。 | ニフティクラウド mobile backend

PageTopへ