サンプルアプリケーションの概要
今回、サンプルとして作成するアプリケーションは「IoTデバイスのデータを受信してデータベースに保存し、保存したデータをもとに気温、湿度の平均値と不快指数を計算して定期的にTwitterへツイートする」というものです。 次の2つのアプリケーションで構成されます。
- 「IoTデバイスのデータを受信してデータベースに保存する」アプリケーション
- 「蓄積されたデータをもとに気温や湿度の平均値、不快指数を計算して定期的にTwitterへツイートする」アプリケーション
なお、ツイートするコメントには気温や湿度の平均値、不快指数のほか、それが「何年何月のどこ(日本国内のある地点)と同じくらい」かも、体感温度として加えることにしました。これは、気象庁が公開している過去の気象データと比較して割り出します。
Cloudantの概要
IoTでは多数のデバイスからシンプルだが大量のデータが送られてくることが想定されます。 しかもデータ構造は、ビジネス要件やデバイスの変化で日々変わる可能性があります。 これらの非構造化・ビックデータを蓄積・利用するには、それらに適したデータベースの選定が必要です。
こうした要件には、JSONデータを格納できるドキュメント型NoSQLデータベースが便利です。 今回、IoTデバイスから送信されてくるデータの格納先として、そうしたデータベースの1つである「IBM Cloudant」を利用することにします。 CloudantはDBaaS(Database as a Service)として提供されており、セットアップなどは不要で、すぐに使い始めることができます。 また、スケーラビリティが高く、利用者は運用管理や保守から解放されます。
なお、CloudantについてはCodeZineの過去記事「エンタープライズ分野で使えるNoSQLのDatabase as a Service『IBM Cloudant』」が参考になります。
Node-REDの概要
「Node-RED」は、Node.js上で動作するオープンソースのソフトウェアです。 機能をカプセル化したノードと呼ばれるモジュールが用意されており、ブラウザベースのUIからノード同士を繋げて処理の流れを作成していきます。
直感的に操作できるので、複数のサービスを繋げるアプリケーションのプロトタイプ作成には最適です。 筆者は、タブレットから操作ができる点も気に入っています。
昨年、日本でもNode-REDユーザーグループが発足し、利用促進や情報交換が行われるようになりました。 また、IoTデバイスとして利用可能なRaspberry PiのOSである「Raspbian」にプリンストールされたりと今後の展開が期待されます。
Bluemixではボイラーテンプレート「Node-RED Starter」が用意されているので、すぐに使い始めることができます。 Bluemixのサービスと連携するためのノードも標準でいくつか提供されています。 このNode-RED Starterも利用してサンプルアプリケーションを作成します。
IoTセンサーシミュレーターの準備
IoTデータを活用したアプリケーションを作成をするためには、まずデータを計測・発信するデバイスを準備しないといけません。 身近なものとしては、スマートフォン[1]やArduinoやRaspberry Piの機器を利用する方法があります。
注
[1]: スマートフォンは位置情報、ジャイロセンサー、加速度計、コンパスなど、センサーの塊です。
ちなみに、昨年開催されたイベントで、筆者は仲間と協力して、Bluemixのサービス(IBM Watson IoT Platform + Node-RED + IBM XPages)を組み合せてドローンを操作・モニタリングするデモを行いました。 ドローンをブラウザベースのコントローラーで操作し、後ろのスクリーンではドローンからのジャイロセンサーのデータを受信して、ドローンの姿勢を3Dモデルでリアルタイムに表示しています。 データの送受信にはIBM Watson IoT Platform(以下、Watson IoT Platform)を利用しました。
ただし、今回はIoTを利用したアプリケーションの作成をすぐ体験できるように「IoTセンサーシミュレーター」を利用します。 IoTセンサーシミュレーターは、Watson IoT Platformの「Quickstart」で用意されているアプリケーションで、ブラウザから操作可能になっています。
試しに、ブラウザでIoTセンサーシミュレーターを開いてください。
画面右上の12桁の文字列が「デバイスID」です。アクセスするたび、異なる文字列が表示されます。このデバイスIDを使ってデータを取得します。 画面両端の[<]ボタンや[>]ボタンををクリックすると、画面がTemperature(気温)、Humidity(湿度)、Object Temperature(物体温度)に変わります。 画面下部の[↑]ボタンや[↓]ボタンをクリックすると、それぞれの数値を変更できます。
また、デバイスIDをクリックすると、IoTセンサーシミュレーターが送信しているデータがグラフで表示されます。 数値を変更してグラフが変化することを確認してみましょう。 IoTセンサーシミュレーターをスマートフォンやタブレットから操作し、PCでグラフを確認してみると[2]、雰囲気がより伝わるかと思います。
これで、Watson IoT Platformへのデータ送信側の準備ができました。
なお、今回はシミュレーターを利用しましたが、ご興味のある方はIoTデバイス側のアプリケーションの作成にも挑戦してみてください。 Watson IoT Platform導入記事を解説している本連載の第1回が参考になります。 また、IBM Internet of Things Foundation Quickstartの「物理デバイスをお持ちの場合」にも参考になる情報があります。
注
[2]: PCでグラフを見る場合には、デバイスIDは手入力してください。
IoTを始めたい方も・本格導入を検討中の方も:おすすめソリューションのご紹介
ビジネスのパフォーマンスを高めようとさまざまな業種・企業で、IoT活用を前提とするプロジェクトが動き始めています。ただし、検討を始めて最初に出てくるのは、こんな要望ではないでしょうか。
「最初は実験的にスタートしたいから、小さく簡単に素早く始めたい」
「実運用に移ったときには10万・100万単位のセンサ/デバイスに対応できるスケーラビリティも確保したい」
これにお応えできるサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)