IoTの用語IoT中級

MQTTとは|仕組み・QoSとIoT中級で問われる点

MQTTとは何かを、ブローカーとトピックによるpublish/subscribeの流れ、QoS 0・1・2の違い、保持メッセージとWillの働きで整理。IoT中級で取り違えやすい点の表と、全選択肢を解説した独自の確認問題3問つきです。

最終更新
公開
読了目安
約10分
執筆
ICT模試 編集部

この記事の要点

  • MQTTは、サーバ(ブローカー)を介してメッセージを配る、軽量なpublish/subscribe型のプロトコル。送る側と受ける側が互いを知らなくてよい。
  • 最新の版はOASIS標準のMQTT 5.0(2019年3月7日)。前の版の3.1.1はISO/IEC 20922:2016にもなっている。
  • QoSは0(最大1回)・1(最低1回、重複ありうる)・2(ちょうど1回)の3段階。確実さが上がるほど、やり取りの回数が増える。
  • TCPなど順序どおり欠けずに届く通信の上で動く。IANA登録ポートは1883(TLSなし)と8883(TLS)。

MQTTとは?一言でいうと?

MQTTは、ブローカーと呼ばれるサーバを介して、センサなどからのメッセージを必要な相手に配る軽量なプロトコルです。OASISの仕様書は、MQTTを「クライアント・サーバ型のpublish/subscribeメッセージング転送プロトコル」で、軽量・オープン・簡単で実装しやすく、M2MやIoTのような制約のある環境に向くと説明しています(2026年9月27日確認)。

現在の版は、2019年3月7日にOASIS標準となったMQTT 5.0です。その前のMQTT 3.1.1は2014年10月29日にOASIS標準となり、ISO/IEC 20922:2016として国際標準にもなっています。

データを送る側(パブリッシャ)と受け取る側(サブスクライバ)が直接つながらず、ブローカーだけと接続するのが最大の特徴です。センサはブローカーの宛先さえ知っていればよく、受け手が何台いるか、今つながっているかを気にする必要がありません。

ブローカー・トピック・publish/subscribeはどう動く?

工場の温度センサの値を、監視画面と記録用サーバの2か所で受け取る例で、流れを順に追います。

  1. 購読(subscribe):監視画面と記録用サーバが、ブローカーに「factory/line1/temp というトピックを受け取りたい」と登録する
  2. 発行(publish):温度センサが、トピック factory/line1/temp を付けて測定値をブローカーへ送る
  3. 配信:ブローカーは、そのトピックを購読しているすべてのクライアント(監視画面と記録用サーバ)へ同じメッセージを届ける
  4. 追加・削除:受け手が増えても減っても、センサ側の設定は変わらない

トピックは / で区切った階層で表します。購読するときはワイルドカードが使えます。+ は1階層だけに一致し(factory/+/temp は factory/line1/temp に一致するが factory/line1/zone2/temp には一致しない)、# は下のすべての階層に一致します(factory/# は factory 以下すべて)。# は最後にしか置けず、発行するメッセージのトピック名にワイルドカードは使えません。

MQTTはTCP/IPのように順序どおりに欠けずに届く双方向の通信の上で動きます。仕様書は、TLSやWebSocketも使えるとし、TCPの1883番(TLSなし)と8883番(TLS)がIANAに登録されていると記しています。一方、UDPのように欠けたり順序が入れ替わったりする通信は、それだけでは適さないとしています。

QoS 0・1・2は何が違う?保持メッセージとWillの働きは?

QoS(Quality of Service)は、メッセージをどの程度確実に届けるかの段階です。仕様書が定める3段階を比べます。

MQTTのQoSの比較(OASIS MQTT 5.0 の定義をもとに整理)
QoS届き方の保証起こりうることやり取りするパケット向く用途の例
0最大1回(at most once)欠けることがあるPUBLISHのみ数秒ごとに上書きされる温度の値
1最低1回(at least once)重複して届くことがあるPUBLISH → PUBACK警報の通知(重複は受け手で除く)
2ちょうど1回(exactly once)欠けも重複もないPUBLISH → PUBREC → PUBREL → PUBCOMP課金や在庫など重複が困る記録

← 表は横にスクロールできます →

確実さが上がるほどやり取りの回数が増え、通信量と遅れが増えます。「QoS 2が常に最良」ではなく、データの性質に合わせて選ぶのが設計の考え方です。

保持メッセージ(retained message)は、RETAINフラグを1にして発行すると、ブローカーがそのトピックの最新の1通を保存し、後から購読したクライアントにもすぐ届ける仕組みです。空のメッセージを保持付きで送ると、保存が消えます。機器の現在の状態(電源のオン・オフなど)を、つないだ直後に知りたいときに使います。

Willメッセージ(遺言)は、クライアントが接続時にあらかじめ預けておき、正常な切断の手順を踏まずに接続が切れたときにブローカーが代わりに発行するメッセージです。電池切れや故障による突然の切断を、ほかの機器に知らせられます。

Keep Aliveは、クライアントが通信の間隔の上限を秒で宣言するものです。ブローカーはその1.5倍の時間に何も届かなければ、接続が切れたものとして扱います。

MQTT 5.0では、すべての応答に結果を示す理由コードが付き、セッションの有効期限、メッセージの有効期限、要求・応答のパターンなどが加わりました(仕様書の付録「MQTT v5.0の新機能」より)。

IoT中級ではどこで、どう問われる?

MQTTは、IoTシステム技術検定 中級の出題カテゴリ「センサ/アクチュエータ技術と通信方式(デバイス、ネットワーク、LPWA、プロトコル)」の「プロトコル」に当たります。公式ページの図では比率が25〜30%です(MCPC公式ページ、2026年9月27日確認)。公式テキスト『IoT技術テキスト 第4版』では第4章「IoT通信方式」に当たる範囲です(章とカテゴリの対応は当サイトの推定)。

MQTTの出題数は公表されていません。4択の問われ方としては、次のような観点が考えられます(当サイトの予想で、出題の再現ではありません)。

  • QoS 0・1・2と「最大1回・最低1回・ちょうど1回」の対応
  • ブローカー・パブリッシャ・サブスクライバの役割の組合せ
  • 保持メッセージとWillメッセージの説明の入れ替え
  • HTTPやCoAPと比べたときの通信モデル(publish/subscribeか、要求・応答か)と下位のプロトコル(TCPかUDPか)

HTTPとの使い分けは HTTPとMQTTの使い分け、UDPで動くCoAPとの違いは CoAPとは にまとめています。現場の機器とクラウドの間でブローカーへの中継を担う装置は IoTゲートウェイとは で扱います。

どこで取り違えやすい?つまずき別の見直し表

取り違え正しい整理見直す手がかり
QoS 1は重複しないと思うQoS 1は最低1回。重複して届くことがある重複なしはQoS 2だけ
パブリッシャとサブスクライバが直接つながると思うどちらもブローカーとだけ接続する中継役=ブローカー(サーバ)
MQTTはUDPで動くと思うTCP/IPなど順序どおりに欠けずに届く通信の上で動く。UDP単体は適さないUDPで動くのはCoAP
保持メッセージは全履歴を保存すると思う保存されるのはトピックごとの最新の1通後から来た購読者への「最新値」
Willは正常に切断したときに送られると思う正常な切断の手順を踏まずに切れたときにブローカーが発行する突然の切断を知らせる仕組み
ワイルドカードの+と#を逆に覚える+は1階層、#は下の全階層(最後にだけ置ける)#は「全部」

← 表は横にスクロールできます →

確認問題1:QoS 1の説明として正しいのは?

MQTTのQoS 1の説明として、最も適切なものはどれか。

  1. 最大1回の配信で、欠けることがあるが確認応答は送らない
  2. 最低1回の配信で、欠けはないが重複して届くことがある
  3. ちょうど1回の配信で、4回のやり取りで欠けと重複を防ぐ
  4. 配信の保証はなく、ブローカーが届け先を選んで間引く

正解:2。QoS 1は「最低1回(at least once)」で、PUBLISHに対してPUBACKで受領を確認します。確認が届かないと再送するため、受け手には同じメッセージが重複して届くことがあります。

1はQoS 0の説明です。3はQoS 2の説明で、PUBLISH・PUBREC・PUBREL・PUBCOMPの4つのパケットでやり取りします。4のような「ブローカーが間引く」段階はQoSに定義されていません。

確認問題2:あとから購読した画面に最新値を出すには?

照明のオン・オフの状態をトピックで発行している。あとから起動した操作画面が購読した直後に、現在の状態をすぐ表示できるようにしたい。最も適切な方法はどれか。

  1. 発行するときのQoSを0から2に引き上げる
  2. Willメッセージに現在の状態を書いておく
  3. Keep Aliveの間隔を短くして通信を増やす
  4. RETAINフラグを付けて状態を発行する

正解:4。RETAINフラグを付けて発行すると、ブローカーがトピックごとの最新の1通を保存し、あとから購読したクライアントにもすぐ届けます。

1のQoSは届け方の確実さを決めるもので、購読前に発行されたメッセージを後から届ける仕組みではありません。2のWillは、接続が異常に切れたときにブローカーが発行するメッセージで、状態の保存には使いません。3のKeep Aliveは接続が生きているかを確かめる間隔で、最新値の配信とは関係しません。

確認問題3:トピックフィルタが一致するのはどれ?

MQTTで、トピックフィルタ factory/+/temp を購読したとき、配信の対象になるトピック名はどれか。

  1. factory/temp
  2. factory/line1/zone2/temp
  3. factory/line1/temp
  4. office/line1/temp

正解:3。+ はちょうど1階層に一致するワイルドカードなので、factory と temp の間に1階層だけある factory/line1/temp が一致します。

1は間の階層がないため一致しません。2は間に2階層あるため、+ 1つでは一致しません(下の全階層に一致させるには # を使います)。4は先頭の階層が factory ではないため一致しません。

同じ形式の4択を、ほかの分野と混ぜて解いてみるなら IoT中級の無料お試し20問 へ。登録なしで全問の解説を読めます。

よくある質問

MQTTのブローカーには何を使えばいいですか?

オープンソースのブローカーソフトウェアや、クラウド事業者のIoTサービスに含まれるブローカーなど、選択肢は複数あります。検定の学習では製品名より、ブローカーが購読の管理と配信を担うという役割を押さえてください。

MQTT 3.1.1と5.0はどちらを覚えればいいですか?

publish/subscribe・トピック・QoS・保持メッセージ・Willといった基本の仕組みは両方に共通です。5.0で加わったのは、すべての応答に付く理由コードや、セッション・メッセージの有効期限などです。まず共通部分を確実にし、5.0の追加点は名前と目的を確認する程度で十分です。

MQTTの通信は暗号化されていますか?

MQTTの仕様書は、通信内容の秘匿や改ざん検知の手段としてTLSを挙げ、TLSを提供するサーバは8883番ポートを使うよう強く推奨しています。TLSを使わない1883番の通信では、ユーザー名・パスワードを含めて経路上で読まれるおそれがあります。

出典・参考

  1. [1]MCPC IoTシステム技術検定 中級(出題カテゴリと比率。2026年9月27日確認)
  2. [2]OASIS: MQTT Version 5.0(OASIS Standard, 2019年3月7日。2026年9月27日確認)
  3. [3]OASIS: MQTT Version 3.1.1(2026年9月27日確認)
  4. [4]ISO/IEC 20922:2016(MQTT v3.1.1。2026年9月27日確認)

本番と同じペースで腕試し

記事の次は、本番形式の問題で。

公式の出題カテゴリの比率どおりに組んだ無料お試しを、登録不要・カード不要で解けます。続きの模試と章別ドリルは買い切りで、月額はかかりません。

IoTシステム技術検定 中級

80問・90分の模試と章別ドリル・¥4,980(税込・買い切り)

IoT中級の無料お試し20問
料金と収録内容を見る →

当サイトは、モバイルコンピューティング推進コンソーシアム(MCPC)とは関係のない個人が運営する非公式の学習教材です。掲載している問題はすべて当サイトのオリジナルで、実際の試験問題・過去問題・再現問題ではありません。試験の日程・受検料・出題範囲は公式サイト(https://www.mcpc-jp.org/license/ )で必ず確認してください。合格を保証するものではありません。合格の目安は当サイトの推定です。技術・制度の記述は「最終確認日」時点のものです。

← 対策記事の一覧へ