RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのエンジニアブログ

IoT初心者向け!「MQTT」について簡単にまとめてみる

こんにちは。開発エンジニアのd_shr(id:d_shr)です。
これまではNode.jsやPostgreSQLについて書いていましたが
今回はIoTを支える通信プロトコルMQTTについてまとめます。

tech-blog.rakus.co.jp

tech-blog.rakus.co.jp

はじめに

MQTTは、Publish/Subscribe モデルのメッセージングにより、非同期に1対多の通信ができるプロトコルです。
シンプルかつ軽量に設計されているため、機械同士が通信を行いやり取りするM2M (Machine-to-Machine) や
家電や自動車など多種多様な「モノ」が通信を行いやり取りするIoT (Internet of Things) を実現するのに適した
プロトコルと言われています。

軽量で省電力

HTTPと比較すると、軽量で省電力なプロトコルです。
MQTTのヘッダサイズは2バイト〜とHTTPに比べるとかなり軽量になっており
その軽量さからバッテリーが限られているモバイル通信に適しています。

メッセージングとTopic

メッセージング

MQTTはPub/Subモデルでメッセージングを行います。
Pub/Subモデルではメッセージの送信者をPublisher、メッセージの受信者をSubscriber、メッセージの仲介をするのがBrokerです。
Publisher はメッセージをBrokerへ送るとき、送ったメッセージがどの Subscriber に届くのかなど気にする必要はありません。 Subscriberはメッセージがどの Publisher から送られて来たのか知ることなく欲しいメッセージをBrokerから受け取ります。

f:id:d_shr:20180911095141p:plain

Topic

MQTTでは、Topicと呼ばれるキーを用いてメッセージングを行います。
トピックは「/」で区切られた階層構造になっています。
例:japan/osaka
PublisherはTopicを指定してメッセージを送信し、Subscriberは受信したいトピックをfilterとして指定することで、欲しいメッセージだけを手に入れることができます。

f:id:d_shr:20180911095151p:plain

MQTTの機能

QoS

MQTTではメッセージごとに到達保証に関するQoS(サービスの品質)を指定します。

  • QoS0
    メッセージは最高 1 回 配信される
    メッセージが送信先に届くかは保証されない

  • QoS1
    メッセージは最低 1 回 配信される
    メッセージが送信先に届くことが保証されるが重複して届く可能性がある.

  • QoS2
    メッセージは正確に 1 回 配信される
    メッセージが過不足なく 1 回のみ到着することが保証される.

Retain

Topicごとに最後にPublishされたメッセージをMQTTサーバが保持しておく機能。
MQTTはPub/Subモデルなので、PublishしたときにSubscribeしていたクライアントにしかメッセージは送信されません。
具体的には、10分ごとに更新される情報を得るために新しくSubscribeしても,最長10分間はなにも情報が得られないことになります。
しかし、Retain機能を使うとその時点での最新の情報が得ることができます。

Will

Publisherが切断されてサーバとの通信ができなくなったときに
指定されたTopicとメッセージをSubscriberに送信する機能。
予期せぬ切断などが発生したときに、SubscriberはPublisherが切断されていることを判断できます。

まとめ

IoTを支えるプロトコルMQTTについて簡単にまとめてみました。
世の中にIoTが広がってきているので、それに関連した技術は追っていきたいと思います。

Copyright © RAKUS Co., Ltd. All rights reserved.