この記事をtweetする このエントリーをはてなブックマークに追加

IT現場の道先案内人 Key Conductors

MQTTの基本を知ってIoTで遊ぼう!

開発 2015/10/21

まず、IoTのメッセージ送受信の仕組みを知る

 超小型カメラ内蔵のカプセル型内視鏡からスマートフォン、監視カメラ、人工衛星や系外惑星探査機まで、私たちの周りは多種多様なIoTデバイスで溢れている。
 機械同士が通信するM2Mとは異なり、IoTは人間も脈拍や血圧、位置情報など様々なデータを収集されるセンサーの1つになるのが面白いところだ。インターネットを介して収集されるこれらデータのセキュリティリスクについても議論は徐々に始まっており、利便性と安全の両立が叶う時も近いと期待したい。
 今回は、10月7日に開催されたマジックソフトウェア・ジャパンのイベント「Magic World 2015」で講演された内容をご紹介しよう。

インターネットを介してつながるIoT

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

インターネットを介してつながるIoT

 実は……と言うほどでもないが、IoTデバイスは簡単に自作できる。スマートフォンであればJavaやObjective-C、ArduinoやRaspberry PiなどのボードコンピュータであればC/C++やPythonなど、馴染みのあるプログラミング言語が使える。
 
 IoTの大まかな流れは、下記の写真のとおりだ。複数のセンサーがゲートウェイを介して、M2MやIoTに適したシンプルで軽量なプロトコル「MQTT」(MQ Telemetry Transport)のサーバ/ルータに送信メッセージが集約される。あとはMQTTサーバから直接メッセージを抽出したり、ストレージに転送して分析/解析にかけたりする。

IoTのデータの流れ

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

IoTのデータの流れ

 センサーとゲートウェイの接続方法は、有線、Wi-Fi、Bluetooth/BLE、ZigBeeなどが挙げられる。「一般的には、Wi-FiとBluetoothが多い」と述べるマジックソフトウェア・ジャパンのエヴァンジェリスト、山下和彦氏は、特にBluetoothはバージョン4.0になってから消費電力が改善されたと評価。ただし接続可能なセンサー(Bluetoothではスレイブ)は7つまでと制限があるのが難点だ。

 一方、その点を解消するのが、ZigBeeだ。低速だが消費電力はBlutoothよりも少なく、最大65,536個の端末が接続できるZigBeeは、大量生産される組み込み機器などに向いている。

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

マジックソフトウェア・ジャパン エヴァンジェリスト 山下和彦氏


 「しかも、ZigBeeネットワークでは端末の通信を中継するルーターで障害が発生しても、近くのルーターへ迂回するルート情報を流す。崖崩れで中継器が損傷しても、接続ルートがすぐに確保されてライフラインを維持でき、防災対策などで利用するなどの実用性が高い」。

MQTTの仕組みや機能を学ぼう

 IoTからのメッセージが集約されるMQTTサーバ/ルーターは簡単に立ち上げられると山下氏は言う。基本的には、メッセージを送信する「パブリッシャ」と受信する「サブスクライバ」で構成される。やり取りされるメッセージは、「HTTPプロトコルで同じ処理をした場合のメッセージと比べて、10分の1から100分の1程度」と非常に軽い。

 メッセージは、Topic Filterを使って受信側でフィルタリングできる。記述も簡単で、例えば「/datacenter/abc/tokyo/floor/01/temperature」といったように、スラッシュで切って表現するだけだ。完全一致でフィルタする場合はフィルタリングしたい情報をすべて記載し、共通項のあとにシャープ(#)を記載すれば前方一致に、共通項の間をプラス(+)でつなげば部分一致となる。

Topic Filterの記述例

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

Topic Filterの記述例

 このほか、送受信のQoSレベルも指定できる。例えば、メッセージを最高1回は送信するが、サブスクライバ側が受信したかどうかは考慮しないのであれば「PUBLISH [QoS=0]」、メッセージは最低1回配信されるが、受信状況で2回配信されることもあるという状態で問題なければ「PUBLISH [QoS=1]」、1回だけ正確に配信したい場合は「PUBLISH [QoS=2]」となる。

メッセージは最低1回配信する場合の記載例とフロー

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

メッセージは最低1回配信する場合の記載例とフロー

 最も配信が確実かつ正確に行われるのは、最後の3つ目になる。しかし、それだけやり取りは増えて通信が重くなる。「例えば毎朝1回、確実に電源をオンにする制御目的であれば、QoS=2が適切だ。それ以外は、1分に10回メッセージを送信するような仕様にすれば、QoS=1で不達の回があってもいいという設計で問題ない」。

 このほか、パブリッシャ側で障害が発生したとき、指定メッセージを配信してサブスクライバに状況を通知する「Will」(遺言)、LDAPやOAuth、ユーザー/パスワードによる認証などもある。

IoTを自作しよう

 ざっくりIoTの仕組みを紹介してきたが、自作のハードルが低いと感じた人も多いだろう。工作好きを自負する山下氏は、実際に手を動かしてIoTで遊んでみることを勧める。

 例えば同氏は、IBMのPaaS「IBM Bluemix」の「Bluemix IoTサービス」でデバイス4台を登録、同時監視するシステムを作った。「Bluemixは1か月の無料版があるので、IoTの実験に最適だ」。

Bluemix IoTサービスを利用したデバイス監視のデモ

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

Bluemix IoTサービスを利用したデバイス監視のデモ
写真では微妙だが…動画では操作に従ってロボが滑らかにターンを繰り返していた

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

写真では微妙だが…動画では操作に従ってロボが滑らかにターンを繰り返していた

 更に、当日実機を持参していたLego Mindstormsは、Raspberry Pi 2(Raspbian)で制御。搭載カメラはBrickPiに接続され、Raspberry Piから送信されてくるメッセージに応じて方向を変える。

剥き出しのフラットケーブルが色っぽいRaspberry Pi制御の自作ロボ

※会員登録いただくと図をご覧いただけます。
会員登録はこちら(無料)

剥き出しのフラットケーブルが色っぽいRaspberry Pi制御の自作ロボ

 IoTを単なるバズワードで済ませるのは勿体ない。手を動かしながら、IoTの魅力や課題を肌で感じてみるのはいかがだろうか。

会員限定で「読者からのコメント」が読み書きできます! 「読者からのコメント」は会員限定の機能。会員登録を行い、ログインすると読者からのコメントが読み書きできるようになります。

会員登録(無料)・ログイン

Myリストへ 印刷用ページへ

この記事をtweetする このエントリーをはてなブックマークに追加


この寄稿記事に掲載している情報は、掲載日時点での情報となります。内容は変更となる場合がございますのでご了承下さい。また、「Key Conductors」の寄稿記事及び当該記事に寄せられたコメントについては、執筆者及びコメント投稿者の責任のもと掲載されているものであり、当社が、内容の最新性、真実性、合法性、安全性、適切性、有用性等を保証するものではありません。


30008258


IT・IT製品TOP > Key Conductors > キーマンズネット 編集部(アイティメディア株式会社) > MQTTの基本を知ってIoTで遊ぼう!

このページの先頭へ

キーマンズネットとは
キーマンズネット編集部スタッフです。よろしくお願いいたします。キーマンズネットは企業・法人のIT選定・導入をサポートする総合情報サイトです。IT初心者から上級者まで、みなさまのさまざまなニーズにお応えします。

ページトップへ