CodeZine(コードジン)

特集ページ一覧

データプラットフォーム「IRIS」からMQTTプロトコルを利用してみる

InterSystems IRISでシンプルに開発するIoTアプリケーション 第3回

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

 前回は「まずは動かしてみよう!」と題してInterSystems IRIS Data Platform(以下IRIS)を使ったIoTアプリケーションを紹介しました。まだ試していない方は、ぜひ前回の記事をご覧ください。以降の連載では、そのアプリケーションの開発手順を解説しながら、IRISのさまざまな機能を体験していただきたいと思います。今回は、IoTアプリケーションで使用されることの多いMQTTプロトコルを、IRISから利用する方法について解説します。

目次

MQTTプロトコル

 MQTTはMessage Queuing Telemetry Transportの略で、TCPベースのプロトコルです。IoTシステムで利用される理由としては、

  • 軽量であり、比較的小さいサイズのデータを高頻度で送受信するのに適している
  • 電力消費量に制約のあるデバイスでも動作できる
  • Pub/Sub型の通信により、必要なデバイスやアプリケーションが、必要なデータだけを送受信することができる

などが挙げられます。

 ここで、MQTTで規定されているPub/Sub型の通信について簡単に説明します。

 Pub/Sub型の通信では、次の3つの役割を持つコンポーネントがあります。

  • Publisher:データを送信(Publish)するコンポーネント。送信するデータには、Topic属性をつける。Topicの値は、Subscriberが受信するデータを選択(フィルター)するために使用される。
  • Subscriber:データを受信するコンポーネント。受信したいTopicをあらかじめBrokerに登録(Subscribe)しておく。
  • Broker:Publisherから送信されたデータを、そのデータについているTopicをSubscribeしているSubscriberに送る機能を持つ。

 以上の概要を次の図に示します。

Pub/Sub型通信
Pub/Sub型通信

 図の左側、PublisherはTopicとともにデータをBrokerに送信します。図の右側のSubscriberは、BrokerにTopicを登録しておき、実際にそのTopicに合致するデータがPublishされたら、Brokerからそのデータを受信します。

 図に示されている通り、Topicは「/」で区切られた階層構造を持っています。Publisherは、DevA/Tempのように送信するデータのTopicを指定してPublishします。Subscriberは、受信したいTopicをDevA/Tempのように指定してSubscribeすることもできますし、DevB/#のように、ワイルドカード(#)を使用して、DevB以下すべてのTopic(図の例では、DevB/Temp、DevB/Speed)のデータをSubscribeすることもできます。

 MQTT Brokerは、オープンソースでいくつかのソフトウェアが公開されています。今回の連載では、Eclipse Mosquittoを利用します。Eclipse Mosquittoはdockerイメージでも提供されているので、今回の構成ではeclipse-mosquittoというイメージをpullして使用するように定義しています。定義は、docker-compose.ymlのmqttbrokerセクションに記述しているので確認してみてください。


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

著者プロフィール

  • 堀田 稔(インターシステムズジャパン)(ホリタ ミノル)

    SEマネージャー。 1992年大阪大学基礎工学部情報工学科卒。同年日本ディジタルイクイップメント(株)入社。電気通信など様々な業界向けプロジェクトにシステムエンジニアとして携わる。1996年InterSystems Data Platform製品の日本語版開発プロジェクトに従事し、同製品の販売・サ...

バックナンバー

連載:InterSystems IRISでシンプルに開発するIoTアプリケーション
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5