メインコンテンツへスキップ
見出し画像

MQTTで届いた温度は「今」の情報?Retainは履歴保存ではない|先生とケンタの5問

    温室の画面を開いた瞬間、温度が22℃と表示されました。ケンタは「もう最新データが来た!」。先生はメッセージの測定時刻を指さします。「届いたばかりと、測ったばかりは違うかもしれないね」。MQTTのRetainを、トピックやQoSの次に理解する記事です。全文無料で、独自5問と確認シートを使えます。

    例題・解説・記録シートを最後まで無料で読めます。

    1.Retainは、後から購読する人へ渡す情報

    ここではMQTT 3.1.1を前提にします。Retain付きで送られたメッセージは、ブローカーがトピックに対応する保持メッセージとして扱います。新しい購読が成立すると、該当する保持情報を受け取れるため、次の発行を待たずに状態の入口を表示できます。

    ただし、保持情報は発行者が最後に送った状態であって、『センサーが今この瞬間に測った値』ではありません。長く更新されなければ古いままです。温度だけでなく測定時刻などをアプリ側のデータに含め、鮮度を確認する必要があります。保持情報の扱いにはQoSなどの条件も関係します。

    ケンタは電源を切った温度計の表示を見ていました。画面へ届いた時刻が新しくても、測定時刻は昨日。Retainが悪いのではなく、画面が二つの時刻を分けていなかったのです。以下の例は理解用の架空の場面です。

    2.現在の状態と、過去の履歴を分ける

    同じトピックに保持する温度を22℃から24℃へ更新しても、そのことだけで22℃と24℃の時系列履歴ができるわけではありません。トピックごとの保持状態と、測定記録を蓄積する仕組みは役割が違います。履歴が必要なら別途保存する設計を考えます。

    また、Retainを付けずに新しいメッセージを発行した場合、以前の保持情報はそれだけでは置き換わりません。現在の購読者が見た24℃と、新しく購読した人が受け取る保持情報が違う場面を作れてしまいます。発行側のルールをそろえることが重要です。

    たとえとしては、掲示板の一枚の案内と、日付順に残した台帳です。ただしこれは役割の説明であり、MQTTの保存や配信条件をそのまま再現する仕組みではありません。

    3.独自5問:いつの値で、何が残るか

    問1:測定時刻が昨日の22℃を、今初めて購読して受け取りました。現在温度は22℃と断定できますか。→ できません。受信時刻ではなく測定時刻と更新状況を確認します。『受信した』という事実は、新しい測定の証明ではありません。

    問2:保持された値が22℃。同じトピックへ24℃をRetain付きで適切に更新しました。Retainだけで二つの値の履歴を一覧できますか。→ できません。最新の保持情報と、過去の蓄積を分けます。時系列を分析するなら保存先と記録ルールが必要です。

    問3:保持された22℃がある状態で、24℃をRetainなしで発行しました。以前の保持値も24℃になりますか。→ その発行だけでは置き換わりません。現在の購読者への配信と、後から購読する人へ渡す保持情報は別に考えます。

    問4:使わなくなったトピックの保持情報を消すとき、3.1.1で示される手段は。→ Retainフラグ付きのゼロバイトのペイロードによって、そのトピックの既存の保持メッセージを削除します。ここでは仕様の理解として扱い、他者の環境で勝手に実行しないでください。

    問5:温度だけが届きました。『古い値は表示しない』を確実に判断できる? → 必要な時刻情報や鮮度のルールがなければ判断できません。測定時刻、時計のずれ、許容する経過時間、更新停止時の表示を決めます。


    画像

    4.画面には、値だけでなく状態を出す

    先生は表示案を三つに分けました。①十分新しい値、②更新が止まっている値、③まだ値がない状態。古い温度を0℃へ置き換えると、実際に0℃を測った場合と区別できません。『不明』『更新待ち』など、データがないことを伝える表示を別に用意します。

    鮮度の許容時間は用途によります。室内の参考表示と、設備の異常判断へ同じ数字を流用しないでください。この記事は制御設備の安全設計を示すものではありません。版によって追加機能もあるので、利用するMQTTの版とブローカーの仕様を確認します。

    確認シート:MQTTの版__/トピック__/Retainを使う目的__/測定時刻__/受信時刻__/古い値の表示__/履歴の保存先__/更新が止まった時の扱い__。ケンタは『表示されたから動いている』ではなく、『何を受け取り、どこまで確かめたか』を説明できるようになりました。

    別の問題で、理解を確かめる

    この記事の根拠を自分の言葉で説明できたら、別の問題でも試してみてください。当アカウントが運営する非公式サービスICT模試のIoT基礎体験は、登録・カード不要の20問・20分。終了後にカテゴリ別の正答数と全問解説を確認できます。回答は保存されず、途中で閉じると消えます。

    画像

    ▶ 登録せずにIoT基礎の無料20問を解く(20分)

    購入は必須ではありません。追加演習を検討する方は、無料体験で問題・解説の相性を確かめてから、受ける検定と教材の収録内容を確認してください。記事とサービスの問題は独自演習で、実試験の問題・過去問・再現問題ではありません。結果は公式の合否を保証するものではありません。

    必要な方だけ:検定別の教材内容と最新料金を確認する

    どの検定を選ぶか迷ったら:目的から考える検定選び

    参考資料・確認日

    技術の定義またはサービス条件を次の一次資料で確認。物語・例題・学習計画は説明用の独自内容です。確認日:2026年10月10日。

    OASIS:MQTT 3.1.1 §3.3.1.3 Retain

    あなたへのおすすめ