メインコンテンツへスキップ
三田工場 技術サイト
MQTTとは?IoT時代の「伝言板」を初心者向けに解説

MQTTとは?IoT時代の「伝言板」を初心者向けに解説

HowTo8分で読めます

このシリーズ: 全5回

  1. 第1回: MQTTとは?IoT時代の「伝言板」を初心者向けに解説 ← 今ここ
  2. 第2回: Pub/Subモデルとトピックの仕組み
  3. 第3回: 実践:Raspberry Piで設備監視システムを作る
  4. 第4回: 複数のRaspberry Piを中継機で束ねてOracle DBにデータを送る
  5. 第5回: MQTTで双方向通信!Oracleのデータを子機に配信する

はじめに

「MQTT」という言葉を聞いたことはありますか?

IoT(モノのインターネット)やスマートホームの世界では欠かせない技術ですが、 初めて聞く方には「なんだか難しそう...」と感じるかもしれません。

この記事では、MQTTを**「伝言板」**に例えて、誰でもわかるように解説します。


MQTTを一言で説明すると?

MQTT = 機械同士がメッセージをやり取りするための「共通言語」

人間がLINEやメールでメッセージを送り合うように、 機械(センサーやカメラ、スマート家電など)もメッセージを送り合う必要があります。

その時に使う「共通のルール」がMQTTです。


なぜMQTTが生まれたの?

昔の方法:直接つなぐ(1対1通信)

text
┌─────────┐          ┌─────────┐
│センサーA │ ───────→ │ サーバー │
└─────────┘          └─────────┘

┌─────────┐          ┌─────────┐
│センサーB │ ───────→ │ サーバー │
└─────────┘          └─────────┘

┌─────────┐          ┌─────────┐
│センサーC │ ───────→ │ サーバー │
└─────────┘          └─────────┘

問題点:

  • センサーが100個あったら、100本の接続が必要
  • サーバーがダウンしたら、全部止まる
  • センサー同士で情報を共有するのが大変

MQTTの方法:伝言板を使う

text
┌─────────┐
│センサーA │ ─┐
└─────────┘   │
              │      ┌──────────────┐      ┌─────────┐
┌─────────┐   │      │              │      │         │
│センサーB │ ──┼────→│   伝言板     │←─────│ サーバー │
└─────────┘   │      │  (ブローカー) │      │         │
              │      └──────────────┘      └─────────┘
┌─────────┐   │
│センサーC │ ─┘
└─────────┘

メリット:

  • 全員が1つの伝言板を見るだけでOK
  • 誰かがいなくても、伝言板にメッセージが残る
  • 新しい機械を追加するのが簡単

身近な例で理解しよう

例1: オフィスの伝言板

text
┌────────────────────────────────────────────────────────┐
│                    オフィスの伝言板                      │
├────────────────────────────────────────────────────────┤
│                                                        │
│  📌 【会議室】本日15時から使用中 (田中)                  │
│                                                        │
│  📌 【コーヒー】豆が切れました (佐藤)                    │
│                                                        │
│  📌 【エアコン】温度を25度に設定しました (鈴木)          │
│                                                        │
└────────────────────────────────────────────────────────┘

        ↑書く人              ↓読む人
    (Publisher)          (Subscriber)
  • 書く人(Publisher): 伝言を書き込む
  • 読む人(Subscriber): 興味のある伝言を読む
  • 伝言板(Broker): メッセージを保管・配信

例2: YouTubeのチャンネル登録

text
┌──────────────┐
│ YouTuber A   │ ─── 動画投稿 ──→ ┌─────────────┐
└──────────────┘                  │             │
                                  │  YouTube    │ ──→ 登録者に通知
┌──────────────┐                  │  (ブローカー)│
│ YouTuber B   │ ─── 動画投稿 ──→ │             │
└──────────────┘                  └─────────────┘
  • YouTuber = Publisher(発信者)
  • YouTube = Broker(仲介者)
  • チャンネル登録者 = Subscriber(購読者)

登録者は、興味のあるチャンネルだけを「購読」して、 新しい動画があれば通知を受け取ります。

MQTTも全く同じ仕組みです!


MQTTの3つの登場人物

text
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│   ┌──────────┐        ┌──────────┐        ┌──────────┐     │
│   │          │        │          │        │          │     │
│   │Publisher │ ─────→ │ Broker   │ ─────→ │Subscriber│     │
│   │ (発信者)  │        │ (仲介者)  │        │ (購読者)  │     │
│   │          │        │          │        │          │     │
│   └──────────┘        └──────────┘        └──────────┘     │
│                                                             │
│   温度センサー          Mosquitto          スマホアプリ      │
│   カメラ               AWS IoT            データベース       │
│   ボタン               HiveMQ             警報システム       │
│                                                             │
└─────────────────────────────────────────────────────────────┘
役割 説明
Publisher(発信者) メッセージを送る側 センサー、カメラ
Broker(仲介者) メッセージを受け取り、配る Mosquitto
Subscriber(購読者) メッセージを受け取る側 アプリ、DB

なぜMQTTが選ばれるの?

1. 軽い(省電力)

text
HTTP通信:
┌────────────────────────────────────────┐
│ GET /api/temperature HTTP/1.1          │
│ Host: example.com                      │
│ Content-Type: application/json         │
│ Authorization: Bearer xxxxx            │
│ ...(大量のヘッダー)                    │
└────────────────────────────────────────┘
→ 数百バイト〜数キロバイト

MQTT通信:
┌────────────────────────────────────────┐
│ Topic: sensor/temp                     │
│ Data: 25.5                             │
└────────────────────────────────────────┘
→ 数十バイト

電池で動くセンサーに最適!

2. リアルタイム

text
HTTP(従来):
センサー → サーバー「温度は?」→ 返答 → また聞く...
         (毎回質問が必要)

MQTT:
センサー → 変化があったら自動で通知 → 購読者に即座に届く
         (待ってるだけでOK)

3. 信頼性

text
┌─────────────────────────────────────────────────────┐
│              QoS(サービス品質)レベル                │
├─────────────────────────────────────────────────────┤
│                                                     │
│  QoS 0: 送りっぱなし(届かなくてもOK)               │
│         → 温度データなど、多少欠けても問題ない       │
│                                                     │
│  QoS 1: 最低1回届く(重複の可能性あり)              │
│         → 通常のセンサーデータ                      │
│                                                     │
│  QoS 2: 確実に1回届く(重複なし)                   │
│         → 課金データなど、絶対に失敗できない        │
│                                                     │
└─────────────────────────────────────────────────────┘

Mosquittoとは?

Mosquitto(モスキート) は、最も人気のあるMQTTブローカーです。

text
┌─────────────────────────────────────────────────────┐
│                                                     │
│   🦟 Mosquitto = 無料のMQTTブローカーソフトウェア    │
│                                                     │
│   ・オープンソース(無料)                           │
│   ・軽量(Raspberry Piでも動く)                    │
│   ・信頼性が高い                                    │
│   ・世界中で使われている                            │
│                                                     │
└─────────────────────────────────────────────────────┘

名前の由来は「蚊」(Mosquito)。 小さくて軽いけど、しっかり仕事をする、という意味が込められています。


まとめ

用語 意味 身近な例
MQTT 機械同士の通信ルール LINEのプロトコル
Broker メッセージを仲介する LINEのサーバー
Publisher メッセージを送る LINEで送信する人
Subscriber メッセージを受け取る LINEで受信する人
Topic メッセージの分類 LINEのグループ
Mosquitto 無料のブローカー 自分で建てるLINEサーバー

次の記事

👉 Pub/Subモデルとトピックの仕組み

MQTTの心臓部である「Publish/Subscribe」パターンと、 メッセージを分類する「トピック」について詳しく解説します。

関連記事