2017/3/18 連載終了!
最近IoTへの応用で注目されている通信プロトコルであるMQTTですが、最新バージョン3.1.1の次のバージョンとして、バージョン5の標準化が進んでおり、2017年末には標準化完了する見込みです。
バージョン番号がかなり上がることにふさわしい、大きな変更になっているようです。しかし、これに関して日本語のドキュメントが皆無に等しい状況です。よって、拙いですが、情報発信してみます。
なお、筆者は、標準化には素人なので、間違いがありましたら、ご容赦とともに、あたたかいご指摘をお願いします。
連載目次
[第1回 標準化の狙い] (http://qiita.com/items/bd21ce2995f313521c56) (2017/2/25)
[第2回 旧バージョンからの主な変更点 1〜3.2] (http://qiita.com/items/71f1e4f4e40d0033822d) (2017/3/9)
[第3回 旧バージョンからの主な変更点 3.3〜3.15]
(http://qiita.com/items/563f2c67639318c5c3d6) (2017/3/12)
[第4回 旧バージョンからの主な変更点 4〜] (http://qiita.com/items/8cf99f01a4dc1530a137) (2017/3/18)
[第5回 考察 MQTTはIoTにおいてHTTP/RESTを完全に駆逐する] (http://qiita.com/items/00cb2050ae68b45bb931) (2017/3/18)
参考文献
[OASIS MQTT TC] (https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt) - 本記事はこちらの各種ドキュメントをもとに記載しました。
[Mosquitto MQTT v5 draft features] (https://mosquitto.org/2016/08/mqtt-v5-draft-features/) - 概要がまとまっていますが執筆時点が古く、重要な新機能が漏れています。
#1. 標準化完了は2017年末の見込み
#1.1. 標準化スケジュールと進捗
[MQTT_v5_TC_Timeline_30062016 2016/6/30] (https://www.oasis-open.org/committees/download.php/58438/MQTT_v5_TC_Timeline_30062016.pdf) にスケジュールが記載されています。
タスク | 期限 |
---|---|
WD(final) = CSD1 | 2016/9/8 |
CSD2 | 2016/12/1 |
CS | 2017/1/8 |
COS | 2017/1/15 |
OS | 2017/4/17 |
WD: Working Draft (TC内の標準化作業メンバー間の合意形成)
CSD: Committee Specification Draft
CS: Committee Specification (OASIS MQTT TCでの投票による最終合意)
COS: Candidate OASIS Standard
OS: OASIS Standard (パブリックレビューを経たOASIS標準)
これによると、2017年4月には、バージョン5の標準化が完了する予定になっています。しかし、現時点でWD11(2017/2/23)まで議論が進んでいますが、いまだにWD(final)には至っていません。
#1.2. 標準化完了時期の予測
本稿では、大胆に、MQTTバージョン5標準化の時期を予測します。
まず、2/9の議事録を参照すると、WD12がCSDとなる期待があるようです。WDのリリース間隔から想定すると4月にはWD12=WDfinal=CSDが出てくると思われます。以降のスケジュールは投票期間等であるため、計画時と相対期間は変わらないと仮定すると、+7か月あまり、すなわち2017年11月〜12月に標準化完了すると思われます。
なお、OASIS標準は、いわゆる「コミュニティー標準」であり、国際標準ではありません。前の版のMQTT3.1.1は、OASIS標準化から約1年半経過して、国際標準であるISO/IEC標準になりました。
CSDが出てくると、オープンソースの対応も進み、夏〜秋には一部のオープンソースの先行評価版において、MQTTバージョン5ドラフト対応のものが出てくると予想します。そのあたりになると、日本語の解説も揃ってくることでしょう。
#2. 標準化の狙い
[MQTT Recharter.docx #6 2016/4/12] (https://www.oasis-open.org/committees/download.php/57921/MQTT%20Recharter.docx) に標準化開始時の目的が記載されています。
Charterとは、OASIS標準化におけるプロジェクト計画書のことを示します。後続バージョンのプロジェクト計画書は、Recharterと呼びます。
これによると、MQTTバージョン5は、MQTTバージョン3.1.1をベースに以下の拡張を行うとあります。
- 拡張性強化と大規模システムへの対応
- 通信機能、オプション機能、リソース使用量制御など
- エラーレポートの改善
- MQTTクライアントとサーバの双方に対する拡張リターンコードの定義
- Observedパターンへの対応
- 検索、要求応答、関連付けなど
- 拡張機構
- パケットにアプリで活用可能なデータ領域の追加を可能に
- 性能改善とリソース制限が厳しい端末への対応強化
なお、この文章の中には、同じOASISで標準化をしているAMQPとの位置付けについて、次のような記載があります。OASISの公式見解として、興味深いです。
- AMQPは、企業ミドルウェア・アプリケーション同士の相互接続向け
- MQTTは、センサー、制御システム、組み込みシステム、モバイルデバイス向け
- 双方をブリッジすることで、テレメトリーを企業アプリと接続することができる
#3. 標準化イシューリスト
[JiraListInputForAprilFaceToFace.odt #4 2016/4/13] (https://www.oasis-open.org/committees/download.php/57952/JiraListInputForAprilFaceToFace.odt) にイシューリストが記載されています。
JIRAとは、OASIS標準化におけるイシューリストのことを示します。
標準化プロジェクト開始当初、以下の20個(項13は欠番)のJIRAがリストアップされています。それぞれの詳細内容や検討進捗状況は、https://issues.oasis-open.org/browse/(JIRA番号)
という形のURLに記載されています。本稿執筆時点(2017/2/25)における進捗状況を確認し、ステータスおよび結果の欄に記載しました。
項 | JIRA番号 | 表題 | ステータス | 結果 |
---|---|---|---|---|
1 | MQTT-276 | 大規模システム向け拡張 | open | unresolved |
2 | MQTT-236 | ACK結合、否定応答 | closed | fixed |
3 | MQTT-256 | 一般的なメッセージフォーマット表示、メッセージメタデータ | applied | fixed |
3続き | MQTT-282 | 既存のパケット領域をメタデータ向けに再構成 | closed | unresolved |
4 | MQTT-270 | MQTT-SN向けサーバー契機の切断 | applied | fixed |
5 | MQTT-197 | 要求応答(Observedパターン) | applied | fixed |
6 | MQTT-235 | 非局所的サブスクリプション | applied | fixed |
7 | MQTT-249 | 有効期限機能の追加 | applied | fixed |
8 | MQTT-203 | MQTT URIスキーマ | open | unresolved |
9 | MQTT-234 | 共有サブスクリプション | applied | fixed |
10 | MQTT-257 | フロー制御 | applied | fixed |
11 | MQTT-255 | 新たな認証機構 | applied | fixed |
12 | MQTT-278 | MQTT-SN向けサーバー契機のping | applied | fixed |
14 | MQTT-269 | MQTT-SN向けトピック登録 | applied | fixed |
15 | MQTT-217 | サブスクリプションの重複に関する実装ガイドライン | applied | fixed |
16 | MQTT-251 | サーバーにて付与したクライアントIDをクライアントに返信 | applied | fixed |
17 | MQTT-260 | CONNACKにリダイレクトを追加 | applied | fixed |
18 | MQTT-263 | ステート管理の簡略化 | closed | fixed |
19 | MQTT-259 | MQTTの拡張性のためのDNS SRVレコードの利用 | new | unresolved |
20 | MQTT-271 | 低性能デバイスの制限「Arduino問題」 | closed | unresolved |
21 | MQTT-252 | 大きなサイズのメッセージの転送 | closed | unresolved |
進捗状況を見ると、初期のJIRAのうち、openもしくはnew/unresolvedは、残り3つになっており、WD完成が近づいていることがわかります。
これらを踏まえつつ、次回は、最新のMQTTバージョン5 WD11が、バージョン3.1.1からどのように変更されたかを、見てみましょう。