aptpod Tech Blog

株式会社アプトポッドのテクノロジーブログです

【連載MQTT5解説: 第1回】MQTTの概要と背景

はじめに

アプトポッドVPoPの岩田です。

弊社アプトポッドでは、MQTTのようなIoTデータ通信向けの独自ミドルウェア「intdash」を開発・提供しています。

www.aptpod.co.jp

独自のミドルウェアを設計・開発する過程で、近年リリースされたMQTT5や、その前身であるMQTT 3.1.1についての仕様調査・研究を行ってきました。 この調査・研究の過程でMQTTに関する知見も蓄積してきましたので、一度情報を整理して、連載という形で公開することにしました。

本連載では、MQTT5リリースに伴って変更された仕様を中心に、MQTT3.1.1仕様も含めたMQTT全体について解説していきたいと思っています。 また、その過程でMQTTとintdsahの違いについても触れながら、当社の製品についても皆様に知っていただけるような構成を考えております。

連載初回となる本記事では、MQTT登場の背景やなぜ利用されているのか、といったMQTTの概要と、MQTT5のリリースに至る過程についてざっくりとまとめています。 今後も複数回にわたり、MQTT5に関する情報をお届けする予定ですので、次回以降にもご期待ください。

連載の次回以降の記事は、以下のリンクからご覧いただけます。

tech.aptpod.co.jp

それでは、本編に移ります。

MQTTとは

MQTT(Message Queuing Telemetry Transport)は、軽量なメッセージングプロトコルで、特にリソースが限られたデバイスやネットワーク環境での使用に適しています。1999年にIBMによって開発され、その後、オープンスタンダードとして広く採用されました。MQTTは、メッセージのサイズが小さく、ネットワーク帯域の使用を最小限に抑える設計が特徴です。これにより、スマートデバイス、センサー、モバイルデバイスなど、さまざまな環境で効率的に通信が行えます。

MQTTはOASISにより標準化されており、その仕様は MQTT Version 3.1.1 から確認することができます。

MQTTでは、パブリッシュ/サブスクライブ型のメッセージングモデルが採用されています。このモデルでは、メッセージの送信者(パブリッシャー)が特定のトピックにメッセージを公開(パブリッシュ)し、メッセージの受信者(サブスクライバー)がそのトピックを購読(サブスクライブ)します。メッセージは中央のサーバー(MQTTブローカー)を介してルーティングされ、ブローカーが適切なサブスクライバーにメッセージを配信します。この方式により、デバイス間の直接的な通信が不要となり、ネットワークの複雑さを大幅に削減できます。

MQTTのメッセージングモデル

MQTTを使用しない場合のメッセージング

MQTTがなぜ利用されるのか

MQTTの魅力は、その効率性とシンプルさにあります。メッセージのサイズを最小限に抑えることで、帯域幅が限られた環境でも高いパフォーマンスを発揮します。これは、リアルタイムデータ転送が求められるIoTアプリケーションにとって特に重要です。シンプルなプロトコル設計は、開発者が容易に組み込めることを意味し、多様なデバイスやアプリケーションでの採用を加速しています。

MQTT Version 3.1.1の課題とMQTT 5.0への進化

MQTT 3.1.1は、そのシンプルさと効率性で多くのプロジェクトに採用されましたが、採用が進むにつれて大規模なシステムや多様なデバイスを扱う際のスケーラビリティの問題が明らかになりました。メッセージングのルーティングオプションが限られており、大量のデバイスや高頻度のメッセージ交換が必要なシナリオでは、ブローカーの負荷が過大になることがありました。トピックフィルタリングのオプションが限定的で、特定のメッセージを特定のクライアントに効率的に配信することが難しく、大規模なIoTデプロイメントの効率性と柔軟性を制限していました。

これらの課題に対応するため、MQTTはVersion 5.0へと進化しました。MQTT 5.0では、メッセージングプロセスをより細かく制御できる拡張されたプロパティセット、詳細なエラーコードによる改善されたエラーレポーティング、トピックエイリアスによる通信効率の向上、リクエスト/レスポンス型の通信を容易にする応答トピックと相関データ、そしてサブスクリプション識別子によるメッセージの管理と処理の効率化など、新しい機能が追加されました。これらの改善により、MQTT 5.0は特に大規模なシステムや複雑なアプリケーションでの使用に適したプロトコルとなっています。

当社ミドルウェア「intdash」のご紹介

MQTT 3.1.1が抱える課題は、特に大規模で大量のデータを扱うIoTシステムや、複雑なルーティングが必要なシステムにおいて顕著です。当社は、MQTTブローカーのようなIoTデータの伝送・管理向け メッセージングミドルウェア「intdash」の開発と、これを用いたシステム開発サービスを提供しています。「intdash」は、自動車メーカーのR&D向けに開発された背景を持ち、大量のシーケンシャルメッセージの伝送に対応する高いパフォーマンスを誇ります。

www.aptpod.co.jp

また、よくあるパブリッシュ/サブスクライブ型のメッセージルーティングとは若干異なり特定のデバイスのデータのみを効率的にフィルタリングして受信したり、ネットワーク接続の切断等でリアルタイムに送信しきれなかったデータを検知して後回収する機能を備えており、ネットワークが不安定な環境でもデータを取りこぼすことなく伝送できます。

当社のIoTミドルウェア「intdash」の全体像

MQTTもVersion 5.0にアップデートされることで、MQTT 3.1.1が抱える課題はある程度解決されていますが、同一プロトコルの拡張という進化の過程の都合上ドラスティックな仕様変更は難しく、まだまだ秒間数百〜数千メッセージといった大量のシーケンシャルメッセージではパフォーマンス課題に直面するケースがあります。一方で「intdash」は、これらの課題の解決に特化してはじめから設計されており、特に大規模・大量のデータ伝送や複雑なルーティングが求められるシナリオにおいて、MQTTに代わる有力な選択肢となります。

まとめ

この記事では、MQTTプロトコルの概要とその進化、および当社のミドルウェア 「intdash」 の特徴について説明しました。MQTTは、その軽量性と効率性により、IoTアプリケーションに広く採用されています。Version 5.0へのアップデートにより、大規模なシステムや複雑なアプリケーションでの使用に適したプロトコルとなりました。一方で、 「intdash」 は、MQTTが抱える課題を解決し、特に大規模なデータ伝送や複雑なルーティングが求められるシナリオにおいて、MQTTに代わる有力な選択肢として提供されています。

さらなる情報が必要な場合は、 当社のウェブサイト をご覧いただくか、直接お問い合わせください。また、MQTTや「intdash」に関する詳細な技術情報やユースケースについては、当社のテックブログや技術資料を参照してください。

当社へのお問い合わせはこちらからお願いいたします。 www.aptpod.co.jp