1. はじめに
「IoT(モノのインターネット)」という言葉を聞いたことがありますか?
スマート家電やセンサーなど、いろいろな機械がインターネットを通してデータをやり取りする仕組みです。
でも機械同士がやり取りする時に、毎回「どの機械に送るの?」「どうやって繋ぐの?」と考えるのは大変です🤔
そんなときに役立つのが MQTT という通信のルール(プロトコル)です!
MQTTは「Message Queue Telemetry Transport」の略です。
2. MQTTの特徴🔦
MQTT公式サイトには以下のことが特徴として挙げられています。
- 軽量で効率的
- 双方向通信
- 数百万のモノへの拡張性
- 信頼性の高いメッセージ配信
- 信頼性の低いネットワークのサポート
- セキュリティ対応
ですが、難しい話は一旦置きましょう🍵
まずは「MQTTは、宅配便のようにデータを届ける仕組み」というイメージだけ覚えておけば十分です👍
3. MQTTを宅配便に例えてみる📦
MQTTでは、受取人があらかじめ欲しいものをTopicで登録するだけで欲しいものが宅配会社から届きます。
| MQTTでの役割 | 宅配に例えた時の登場人物 | 行うアクション |
|---|---|---|
| Subscriber(受信者) | 荷物を受け取る人 | 「この種類の荷物が欲しい!」とあらかじめ住所(Topic)を登録しておきます。 |
| Publisher(送信者) | 荷物を出す人 | 「この荷物を送りたい!」と送り状(Topic)付きの荷物を出します。 |
| Broker(仲介役) | 宅配会社の仕分けセンター | 宅配会社が送り状(Topic)を見て、必要な人にだけ届けてくれます。 |
4. IoTの世界では?📟
例えば「温度センサー」が部屋の温度を定期的に送るとしましょう。
- 温度センサーが「リビングの温度=25℃」というデータをPublisherとして送信
- Broker(クラウドサービス)がそのデータを受け取る
- 「リビングの温度に興味がある」と登録しているスマホアプリがSubscriberとして受信
センサーとスマホは直接やり取りしていないのに、Brokerが仲介してデータが届きます。
5. HTTPとMQTTの違い✅
同様にクラウドサービスとやり取りするのによく使われるプロトコルとしてHTTPがあります。HTTPとMQTTの違いを見てみましょう。
HTTP
- Webブラウザとサーバーのやり取りでよく使われる
- クライアントが「欲しいとき取りに行く」方式(リクエスト & レスポンス)
- 通信のたびに接続を開いて閉じる → データが少し重い😥
MQTT
- IoT機器のために作られた通信方式
- Publisher が送ったデータを Broker が管理し、必要な Subscriber に配信
- 一度接続したら維持できる → 通信が軽く、効率が良い😄
6. MQTTがIoTに向いている理由🔎
- 軽量:データが少ない(オーバーヘッドが小さい)
- 省電力:接続を維持するため、何度も繋ぎ直さなくてよい
- 疎結合:センサーとアプリはお互いを知らなくてもOK(Brokerが仲介)
- 多対多の配信が簡単:1つのセンサーの情報を複数のアプリに同時に届けられる
7. まとめ
- MQTTは「Topicでつながる配達の仕組み」📦
- PublisherとSubscriberはお互いを知らなくてもOK‼️
- 軽くてシンプルだから、IoTの世界で広く使われている👍
8. おまけ:MQTTのパケットを実感できるツール💻
実際にMQTTで送受信するアプリケーションを開発したり、MQTTのデータフォーマットを理解したいエンジニア向けとして、TCP/UDPを可視化・デバッグできるSocketDebuggerを紹介します。
MQTTはTCP上で動作するプロトコルであり、各MQTTパケットはTCPのペイロードとして送信されます。
そのため、このようなツールで、模擬したり、通常起こりえないエラーケースをテストすることができます🎉
今後、SocketDebuggerを使用してMQTTパケットを送信する記事も投稿してみたいと思います✨
MQTT公式仕様
MQTTについて、もっと深く知りたい方は公式の以下のサイトをご参照ください。
記事リンク
株式会社ユードム
株式会社ユードムはITと人間力で社会に貢献します。
SocketDebuggerのご購入はこちら(期間限定の試用版もあります)
https://www.udom.co.jp/sdg/index.html

