SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IoTをかじってみよう

IoTをかじってみよう(2)
~mbedから取得したセンサデータをWebアプリケーションで可視化する

JSON

 JSON(JavaScript Object Notation)は、HTMLやXMLと同じ、データ記述言語の一つです。JSONは、JavaScriptプログラミング言語(ECMA-262標準第3版 1999年12月)の一部として標準化されました(公式サイト json.org)。JSONはXMLよりも軽量で、作成やパース(構文解析)が行いやすいため、JavaScriptに限らず、あらゆるプログラミング言語で容易にJSONを扱うことができ、近年普及してきています。

 IoTサービスにおいても、データをJSONの記法で作成することにより、組み込み機器とサーバ側アプリケーションとのデータ連携が簡単になります。

 後述するIoTFでも、mbedから送信するデータの形式をJSONで作成することを推奨しています。

 以下に、メッセージ・ペイロード(ペイロードとは通信パケットのうちヘッダを除いたデータそのものを指します)の例を紹介します。記事上、読みやすくするためにインデントしていますが、実際には改行コードや余分な空白がない状態で送受信されます。

単純なデータ
{
  "d": {"msg": "Hello World"}
}

 "d"要素には、メッセージに入れて送信されるイベントまたはコマンドのすべてのデータを格納します。この要素はIoTFメッセージ仕様上、必須の要素です。特にデータを送信しない場合は次の「データなし」の例のように、空オブジェクトとして作成します。

データなし
{
  "d": {}
}
アプリケーションボードで拡張したmbedが送信するメッセージ・ペイロードの例

 以下の例から、アプリケーションボードに搭載されたセンサおよびジョイスティックの状態が"d"要素のデータとして格納されていることが分かります。このように、キーと値の組み合わせで表現します。

{
  "d": {
    "myName": "IoT mbed",
    "accelX": 0,
    "accelY": 0,
    "accelZ": 1.0314,
    "temp": 32.625,
    "joystick": "CENTRE",
    "potentiometer1": 0.883,
    "potentiometer2": 0.0156
  }
}

IoTF

 IoTFは、IBM社が提供するSaaS(Software as a Service)型のクラウドです。IoTFを利用することによって、IoTサービスを提供しようとするユーザは、手間をかけることなく迅速に、モノ(インターネットに接続する組み込み機器)からどんなサービスを提供できるかを試すことができます。

 当記事の後半は、無料で利用することが可能なIoTFのQuickstartというモードを用います。mbedおよびアプリケーションボードからQuickstartのMQTTブローカーにデータを送信し、送信されたデータを確認します。

 今回紹介するQuickstartは、認証不要な範囲で試すことができる、IoTFの限定的な機能を利用するのみですが、IoTFは、MQTTブローカー機能のほかにもIoT用途に最適化された機能や構成を提供しています。以下、参考までにIoTFの特徴を記載します。

MQTTサーバの構築作業が不要となる

 MQTTクライアントのデバイスIDを登録すれば、IoTFとMQTT通信ができるようになります。デバイスIDはMQTTの自分の組織内で固有の値である必要がありますが、MACアドレスを用いることで簡便に実現できます。

 通常MQTTアプリケーションを利用するには、MQTTサーバを用意して、ホスト名やポート番号、デバイスIDのフォーマット、トピックの構造、メッセージ・ペイロードの構造、認証の仕組みなどを検討して構成する必要があります。これらの検討・構成を行わなくても、すでに準備された環境を利用することで、アプリケーション開発に専念することができます。また前述したMQTTのサービス品質のQoS0~2のすべてを使用することができます。IoTFは迅速にMQTTアプリケーションを利用できる反面、MQTTの全機能を使えないなどの制約があります。

データの収集と蓄積ができる

 モノから送信されたデータを収集し、IoTF内部の時系列データベースに保管することができます。これにより、アプリケーションでデータの集計や分析を行い、データを視覚化することができます。

拡張性がある

 IBM Bluemix(IBM社が提供するPaaS(Platform as a Service)型クラウド。連載第3回以降で詳述します)と組み合わせて使用すると、より高度なIoTサービスを構築することもできます。

デバイスをIoTFから管理することができる

 IoTFに登録したモノを管理することができます。

 興味を持たれた方は、IoTFのドキュメントを参考にしてください。

次のページ
IoTF Quickstartを体験する

この記事は参考になりましたか?

IoTをかじってみよう連載記事一覧

もっと読む

この記事の著者

山崎 まゆみ(日本アイ・ビー・エム株式会社)(ヤマザキ マユミ)

人・技術・本が好きなITエンジニア。公共・金融機関のアプリケーション開発/インフラ構築経験を持つ。プロジェクト現場で日々奮闘中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9094 2015/12/07 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー