MQTTとMessagePub+ :MQTTを用いたIoTサービスにおけるトピック設計
IoTサービスの構成要素
MQTTを用いたIoTシステムは、一般に、以下のように構成されます。
![6657_12.png](/column/images/6657_12.png)
センサー、アクチュエータなどのデバイスはMQTTクライアントです。同様に、データ収集、制御サーバーもMQTTクライアントでです。
MQTTには、クライアント同士が直接メッセージをやり取りしない(できない)という特徴があります。メッセージのやり取りは、必ずMQTTブローカを介して行います。
トピックとは
トピックとはMQTTクライアントがブローカを介してメッセージをやり取りする際に、宛先のような役割を果たします。
![6657_2.png](/column/images/6657_2.png)
MQTT通信でメッセージをやり取りするために、クライアントは、パブリッシュとサブスクライブ(購読)を行います。パブリッシュ、サブスクライブを行う際にはトピックを指定します。
メッセージを受信したいクライアントは、そのメッセージがパブリッシュされるトピックを、事前にサブスクライブしておきます。その後、メッセージを送信したいクライアントが、トピックを指定してメッセージをパブリッシュすることで、そのトピックをサブスクライブしている全てのクライアントにメッセージが配信されます。これがMQTTのメッセージ送受信の基本的な仕組みです。
ここで注意したいのは、メッセージを送信したクライアントと、メッセージを受信したクライアントは、互いの存在を知らない(意識しない)ということです。意識するのはトピックだけです。
![6657_3.png](/column/images/6657_3.png)
トピックを意識するとは具体的にはどういうでしょうか?それは、トピックの名前や階層はどうなっているのか、トピックはどんな単位で分割されていて、メッセージの内容にはどんな情報が含まれるのか、などを意識するということです。
![6657_4.png](/column/images/6657_4.png)
これらトピックの内容は、センサーやアクチュエータのソフトウェア設計を行う時も、データ収集、制御サーバーのソフトウェア設計を行う時も、必要になる情報です。よって、これらソフトウェア設計に先立ち、トピックの設計を行っておくことが望ましいといえます。しかし、トピックにパブリッシュするクライアントやサブスクライブするクライアントは複数種類存在することが想定されます。ですから、ひとつのクライアントの都合だけ考えて設計するわけにはいきません。
本記事では、システム横断的にトピックを設計する場合のノウハウや注意点を、MQTT v5.0のどの機能がどう役立つのかを交えつつ紹介します。
MQTTとMessagePub+
※この記事に掲載されている内容、および製品仕様、所属情報(会社名・部署名)は公開当時のものです。予告なく変更される場合がありますので、あらかじめご了承ください。
関連サービス
-
IoTメッセージングプラットフォーム「MessagePub+」
MessagePub+ はオージス総研が開発したつなげることに特化した"IoTメッセージングプラットフォーム"です