MQTTバージョン5の概要 第1回 標準化の狙い

<font color="Red">2017/3/18 連載終了！</font>

最近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からどのように変更されたかを、見てみましょう。