対象試験と出題頻度

MQTT(Message Queuing Telemetry Transport)は、応用情報技術者で出題されるテーマです。

IoTシステムのネットワーク構成を題材にした午後問題の中で登場しており、「HTTPとの違い」「軽量プロトコルである理由」を正確に理解しているかが問われます。

詳細をクリックして確認
対象試験:
応用情報技術者
出題頻度:
★★☆☆☆
ランクC(応用)余裕があれば覚える

用語の定義

情報処理試験を勉強していると、「MQTTって何?HTTPと何が違うの?」と疑問に思う場面があります。

MQTT(Message Queuing Telemetry Transport)とは、一言で言うと

 「IoT機器のように処理能力や通信帯域が限られた環境でも効率よくデータをやり取りできる、軽量なメッセージングプロトコル」

のことです。

 

イメージとしては、「掲示板に貼り紙をして、必要な人だけが見に来る連絡方式」です。

 

HTTPが「電話で1対1のやり取り」だとすれば、MQTTは「掲示板(ブローカー)に情報を貼り出し、その掲示板を見たい人が自由に情報を取りに行く」仕組みです。

電話と違って回線を長時間占有しないため、何千台ものセンサーが同時に情報を送っても通信がパンクしにくくなります。

📊 MQTTの基本情報

項目 内容
正式名称 Message Queuing Telemetry Transport
通信モデル パブリッシュ/サブスクライブ型(Pub/Sub)
動作層 TCP/IP上のアプリケーション層プロトコル
最大の特徴 ヘッダサイズが最小2バイトと極めて軽量
標準化 OASIS標準 / ISO/IEC 20922:2016(v3.1.1)

解説

1990年代後半、IBMのエンジニアが衛星回線経由で石油パイプラインのセンサーデータを収集するために開発したのがMQTTの原型です。

衛星回線は帯域が狭く遅延も大きいため、HTTPのように毎回リクエストとレスポンスを往復させる方式では通信効率が悪すぎました。

 

この課題を解決するために採用されたのが「パブリッシュ/サブスクライブ(Pub/Sub)」と呼ばれる通信モデルです。

▶ Pub/Subモデルの仕組み(クリックで展開)

MQTTの通信には「パブリッシャー(送信者)」「サブスクライバー(受信者)」「ブローカー(仲介サーバー)」の3者が登場します。

 

パブリッシャーは「トピック」と呼ばれる宛名付きでメッセージをブローカーに送ります。ブローカーはそのトピックを購読(サブスクライブ)しているクライアントにだけメッセージを配信します。

 

送信側と受信側が互いの存在を知らなくても通信が成立する点がHTTPのリクエスト/レスポンス型との決定的な違いです。

結果として、数千〜数万台のデバイスからの同時送信にも対応でき、デバイスの追加や削除もブローカー側の設定変更だけで完結します。

QoS(Quality of Service)レベル(クリックで展開)

MQTTはメッセージの到達保証を3段階で制御できます。

QoS 0(最大1回配信):送りっぱなしで到達確認をしない。通信量は最小だが、メッセージが届かない場合がある。温度センサーのように頻繁に送信するデータ向き。

 

QoS 1(少なくとも1回配信):ブローカーからACK(受信確認)が返るまで再送する。重複配信の可能性はあるが、メッセージの紛失は防げる。

 

QoS 2(正確に1回配信):4段階のハンドシェイクで重複も紛失も防ぐ。通信量は最大になるため、課金データなど厳密さが求められる場面で使用する。

▶ HTTPとの比較(クリックで展開)
比較項目 MQTT HTTP
通信モデル Pub/Sub(多対多) リクエスト/レスポンス(1対1)
ヘッダサイズ 最小2バイト 数百バイト
通信方向 双方向 クライアント→サーバーが基本
再送機能 QoS 1/2で対応 プロトコル自体にはなし
主な用途 IoTセンサー、M2M通信 Webブラウジング、API連携

ここだけは確実に押さえてください。

MQTTは「ヘッダが極めて小さい」「Pub/Sub型で多対多の通信ができる」「TCPベースなので再送が可能」という3点でHTTPと区別されます。

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 MQTTの核心を3行で

・IoT機器向けに設計された軽量メッセージングプロトコルで、ヘッダは最小2バイト
・ブローカーを仲介役とするPub/Sub型通信で、送信側と受信側が直接接続しない
・TCPベースで動作し、QoSレベルによりメッセージの到達保証を3段階で制御できる


試験ではこう出る!

MQTTは、応用情報技術者の午後試験(ネットワーク分野)でIoTシステムの設計問題の中に登場しています。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
AP R6春
午後 問5
設問1(2)
「TCP上でHTTPよりプロトコルヘッダサイズが小さく、多対1通信に対応するプロトコル」の名称を4文字で答える問題。 ・ヘッダサイズの小ささ=MQTTと特定できるか
・TCP上で動作する点の理解

📝 IPA試験での出題パターン

パターン1:「プロトコル名を答えさせる記述問題」
R6春のように、MQTTの特徴(軽量・TCPベース・多対多通信)を説明する文章を示し、プロトコル名を記述させる形式。午後問題のネットワーク分野で出題される。「MQTT」の4文字を正確に書ければ得点できる。

 

パターン2:「IoTシステム構成の中でプロトコルの役割を問う」
IoT機器→クラウドサーバー間の通信設計を題材に、どのプロトコルが適切かを問う形式。HTTPやCoAPとの選択肢の中から、帯域の制約やデバイス数の条件に合うものを選ぶ。

 

試験ではここまででOKです。Pub/Subモデルの詳細な処理フローやQoSレベルの4段階ハンドシェイクまで問われることはないので、深追いは不要です。「HTTPより軽量」「TCPベース」「多対多通信」の3点を押さえれば十分得点できます。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. IoT機器のデータ送受信で利用されるプロトコル「MQTT」の説明として、最も適切なものはどれでしょうか?

  • A. クライアントがサーバーにリクエストを送り、サーバーがレスポンスを返す1対1の同期型通信プロトコルであり、Webブラウジングに広く利用されている。
  • B. ブローカーを仲介役としたパブリッシュ/サブスクライブ型の通信モデルを採用し、ヘッダサイズが極めて小さいTCPベースの軽量プロトコルである。
  • C. UDPベースで動作するRESTful型の通信プロトコルであり、制約のあるデバイス向けにHTTPのメソッド(GET/PUT/POST/DELETE)を簡略化したものである。

正解と解説を見る

正解:B

解説:
MQTTは、ブローカーを介したPub/Sub型の通信モデルを採用し、最小2バイトのヘッダでTCP上で動作する軽量プロトコルです。IoT機器のように帯域やリソースが限られた環境での多対多通信に適しています。

選択肢AはHTTPの説明です。リクエスト/レスポンス型の1対1通信であり、ヘッダサイズが大きいためIoT機器の大量通信には向きません。選択肢CはCoAP(Constrained Application Protocol)の説明です。CoAPはUDPベースで動作し、HTTPのメソッドを簡略化した設計ですが、Pub/Sub型ではありません。


よくある質問(FAQ)

Q. MQTTの「ブローカー」とは具体的に何ですか?

ブローカーは、パブリッシャーから受け取ったメッセージを適切なサブスクライバーに配信する仲介サーバーです。代表的なオープンソース実装にEclipse Mosquittoがあり、クラウドサービスではAWS IoT CoreやAzure IoT Hubが内部でMQTTブローカー機能を提供しています。試験ではブローカーの実装名まで問われることはないので、「メッセージを仲介するサーバー」と覚えておけば十分です。

Q. MQTTとCoAPはどう使い分けますか?

CoAP(Constrained Application Protocol)はUDPベースで動作し、HTTPのGET/PUT/POST/DELETEに相当するメソッドを持つREST型のプロトコルです。1回きりのリクエスト/レスポンスで完結する通信に向いています。一方、MQTTはTCPベースのPub/Sub型であり、継続的にデータを送受信するセンサーモニタリングや遠隔制御に適しています。「継続的な多対多通信ならMQTT」「単発のリソース取得ならCoAP」と整理できます。

Q. MQTTの「トピック」とは何ですか?

トピックは、メッセージの分類に使うラベル(文字列)です。ファイルシステムのディレクトリのように「/」で階層化でき、例えば「building/floor3/temperature」のように指定します。サブスクライバーは自分が必要なトピックだけを購読することで、不要なメッセージを受信せずに済みます。ワイルドカード(「+」で1階層、「#」で配下全体を指定)も利用可能です。

Q. MQTTのポート番号は何番ですか?

標準のMQTT通信はTCPポート1883番を使用します。TLS/SSLで暗号化する場合はポート8883番です。応用情報技術者のネットワーク問題ではポート番号の知識が問われることがあるため、HTTP(80)やHTTPS(443)と合わせて覚えておくと役立ちます。