ガイド

MQTT プロトコルバージョン解説

MQTT 3.1、MQTT 3.1.1、MQTT 5.0、MQTT-SN、互換性、機能、移行戦略を詳しく解説します。

プロトコルバージョン

MQTT プロトコルバージョン解説

MQTT のバージョンは単なる履歴ラベルではありません。CONNECT packet、Broker 互換性、エラー診断、session lifetime、message metadata、運用可観測性を決めます。実務では MQTT 3.1、MQTT 3.1.1、MQTT 5.0、関連プロトコル MQTT-SN として整理します。2026 年 5 月時点で OASIS の主線仕様は MQTT 3.1.1 と MQTT 5.0 で、MQTT 5.1 は掲載されていません。

要点

  • reason codes、properties、message expiry、request-response、flow control、診断性が必要な新規システムは MQTT 5.0 を選びます。
  • 古いデバイス、低価格モジュール、既存 SDK、産業用途では MQTT 3.1.1 が互換性の基準です。
  • MQTT 3.1 は新規実装の対象ではなく、legacy 互換のために扱います。
  • MQTT-SN は通常の TCP/TLS や WebSocket ではなく、センサーネットワーク向けに評価します。
バージョン状態レベル適した用途新規プロジェクト
MQTT 3.1履歴版3legacy device、古い broker、初期 IBM 互換必要な場合のみ
MQTT 3.1.1OASIS / ISO4広い IoT 互換、gateway、軽量 telemetry互換性基準として有効
MQTT 5.0OASIS5modern broker、cloud、multi-tenant、診断性新規では優先
MQTT-SN 1.2関連仕様独立センサーネットワーク、非 TCP/IP、制約デバイスネットワークが必要とする場合のみ

MQTT 3.1: legacy 互換のための履歴バージョン

MQTT 3.1 は OASIS 標準化前の重要な基盤で、client、broker、CONNECT、PUBLISH、SUBSCRIBE、QoS、retain、will、keep alive、topic filter をすでに備えていました。

現在の価値は古い protocol name、CONNECT packet、Broker の互換モードを理解することです。

新規プロダクトでは選ばず、firmware や現場 gateway が更新できない場合だけ互換経路を残します。

確認ポイント

  • Broker の MQTT 3.1 互換が有効か確認する。
  • CONNECT の protocol name と protocol level を見る。
  • 接続失敗を単純なネットワーク障害と決めつけない。

MQTT 3.1.1: 実務上の互換性ベースライン

MQTT 3.1.1 は広く標準化され、IoT device、gateway、OSS broker、cloud service、WebSocket client の共通語になっています。

publish、subscribe、QoS、retain、last will が中心なら今でも十分です。

一方で error reporting、標準 properties、session expiry、message expiry、flow control、disconnect diagnostics は MQTT 5.0 より弱いです。

3.1.1 が適する場合

  • SDK や module が MQTT 5.0 非対応。
  • message model が単純。
  • 最大互換性が最重要。
  • 現場更新コストが高い。

MQTT 5.0: modern MQTT の第一候補

MQTT 5.0 は publish/subscribe を保ちつつ、properties と reason codes で接続、publish、subscribe、ack、disconnect を拡張します。

properties は session expiry、message expiry、packet size、receive maximum、topic alias、response topic、correlation data、user properties、content type などを表現します。

reason codes により認証失敗、権限拒否、packet size 超過、server migration、管理 disconnect などを運用で判別できます。

主な機能

  • 詳細な reason codes。
  • 標準化された message / session metadata。
  • Message Expiry で古い command を防止。
  • Receive Maximum と Maximum Packet Size で保護。
  • Response Topic と Correlation Data で request-response。

MQTT-SN: センサーネットワーク向け関連プロトコル

MQTT-SN は TCP 上の MQTT の代替ではなく、非 TCP/IP や極端に制約された sensor network に publish/subscribe を持ち込みます。

多くの場合、short address や Topic ID を通常の MQTT Broker に変換する gateway を使います。

TCP/TLS や WebSocket が安定して使えるなら MQTT-SN は通常不要です。

選び方

  • Cloud IoT と WebSocket は MQTT 3.1.1 または 5.0。
  • 非 TCP/IP や sleep-heavy device は MQTT-SN。
  • 既存 Broker 接続では gateway 設計が重要。

MQTT 3.1.1 から MQTT 5.0 への移行

  1. Broker、SDK、gateway、cloud、test tool の対応を確認する。
  2. reason codes、DISCONNECT reason、message expiry、session expiry から始める。
  3. 3.1.1 互換の意味を保ち、User Properties や Topic Alias は段階的に使う。
  4. 混在 fleet では tenant、製品、firmware 単位で移行する。

FAQ

MQTT 5.0 は MQTT 3.1.1 と互換ですか?

publish/subscribe モデルは共有しますが CONNECT の protocol level が違います。Broker は両方を受けられても、1 セッションは 1 バージョンです。

MQTT 5.1 はありますか?

2026 年 5 月時点で OASIS の主線 MQTT 仕様に MQTT 5.1 はありません。

新規プロジェクトは必ず MQTT 5.0 ですか?

必須ではありません。対応していれば 5.0 がよい既定値ですが、現場デバイスが 3.1.1 だけなら 3.1.1 が現実的です。

公式参考