トピックの基本形:ISA-95の資産階層をなぞる

UNSのトピック階層は、ISA-95の資産モデル(Enterprise/Site/Area/Line/Cell)をなぞるのが一般的です。MQTTのトピックは「/」区切りの文字列で、購読側はワイルドカード(「+」は1階層、「#」は以下すべて)で範囲を指定できます。階層をISA-95に揃えておくと、「この工場のこのラインのすべて」「全工場の成形エリアの稼働状態」といった単位で購読できます。

基本形の例は次のとおりです。

acme/funabashi/molding/line2/press05/process/barrel_temp_zone1
acme/funabashi/molding/line2/press05/state/run_status
acme/funabashi/molding/line2/press05/mes/current_lot
acme/funabashi/molding/line2/press05/ai/defect_prediction

左から、企業・拠点・エリア・ライン・セル(設備)・データ種別・項目です。最後の2階層の切り方は後で説明します。

企業、拠点、エリア、ライン、セル、データ種別、項目の7階層が左から右に並ぶトピック構造の図 Enterpriseacme Sitefunabashi Areamolding Lineline2 Cellpress05 種別process 項目barrel_temp_zone1 ISA-95の資産階層(全社で統一) データの種類と名前 購読の例 acme/funabashi/molding/+/+/state/run_status → 成形エリア全設備の稼働状態 acme/+/+/+/+/ai/# → 全拠点のAI推論結果
UNSのトピック階層の例。上位5階層はISA-95の資産階層、下位2階層はデータ種別と項目。

5つのルール

ルール1:資産階層はMESの設備マスタと一致させる

トピックのSite・Area・Line・Cellの名前は、MESの設備マスタと同じIDか、対応表で一意に変換できる名前にします。UNS独自の名前を付けると、MESのデータとAIの入力を紐付けるときに変換表が必要になり、ずれの原因になります。設備階層の統一はISA-95の4つの情報モデルでAI用データを設計するでも扱っています。

ルール2:データ種別の階層を設ける

セル(設備)の下に、データの種類を区別する階層を1つ設けます。例としては次のような分け方があります。

種別内容例主な発行元
processプロセス値(温度・圧力・速度)barrel_temp_zone1エッジ・PLC
state設備状態(稼働・停止・アラーム)run_status, alarm_activeエッジ・SCADA
mesMESの文脈(ロット・品番・作業指示)current_lot, current_partMES
quality検査結果・測定値inspection_result検査装置・MES
aiAIの推論結果defect_predictionAIアプリ

種別を分けておくと、「AIの結果だけ」「MESの文脈だけ」を購読でき、発行元と責任者も種別ごとに決められます。

ルール3:名前・単位・形式の規約を文書化する

トピック名の文字種(英小文字・数字・アンダースコア)、区切り、単位の表し方を決めて文書にします。単位はトピック名に含めるか、ペイロードの属性に含めるかを統一します。ペイロードはJSONで、値・単位・タイムスタンプ・品質フラグを持たせるのが一般的です。

{"value": 231.5, "unit": "degC", "ts": "2026-10-12T09:15:32.120+09:00", "quality": "good"}

タイムスタンプは発生時刻(設備側で取得した時刻)とし、タイムゾーンを含めます。時刻の扱いは工場データの時刻ずれ対策で扱います。

ルール4:トピックごとに所有者を決める

各トピック(少なくとも種別単位)に、発行するシステムと内容に責任を持つ部門を決めます。processやstateは生産技術・設備保全、mesは情報システム部門または製造部門、aiはAIの運用担当です。所有者がいないトピックは、値がおかしくなっても誰も直しません。

ルール5:命令と状態を分ける

設備やシステムへの指示(命令)と、状態の通知を同じトピックに混ぜないようにします。命令を流す場合は別の種別(例:cmd)を設け、書き込める発行元をアクセス制御で限定します。AIの推論結果は「状態の通知」として発行し、MESがそれを受けてホールドなどの処理をするかを判断する形にすると、責任の所在が明確になります。

よくある失敗例

Sparkplugを使う場合のトピック

MQTTのトピック設計を自由に決める代わりに、Sparkplug(ISO/IEC 20237)を使う方法もあります。Sparkplugのトピックは spBv1.0/group_id/message_type/edge_node_id/[device_id] の形で、NBIRTH(ノードの起動通知)、DDATA(デバイスデータ)、NCMD(ノードへの命令)などのメッセージ型が決まっています。セッション状態の管理やペイロードの形式まで定義されているため、SCADAとの連携では便利ですが、ISA-95の階層をトピックで直接表すにはgroup_idやedge_node_idの命名を工夫する必要があります。Sparkplugを採用するかの判断はMQTTとSparkplugの違いで扱います。

よくある質問

日本語のトピック名は使えますか?

MQTTのトピックはUTF-8なので技術的には使えますが、ツールやログでの扱いにくさ、表記揺れのリスクから、英小文字・数字・アンダースコアに限定するのが無難です。日本語名は対応表やデータカタログで管理してください。

複数工場で同じ命名規則にすべきですか?

AIを工場横断で展開する予定があるなら統一すべきです。企業とSiteの階層だけを変えれば同じ購読設定とAIの前処理を流用できます。工場ごとに規則が違うと、横展開のたびに変換が必要になります。

既存のタグが数万点あります。すべてUNSに載せるべきですか?

必要ありません。AIやダッシュボードで使うデータから順に、命名規則に沿って載せていきます。使っていないタグまで載せると、管理の負担が増えるだけです。

この記事に出てくる用語

用語集(日・英・中)をすべて見る

この特集について

AIは「データ基盤」で決まる

PoCは成功したのに本番で止まる。原因の多くはモデルではなく、MESと設備データの側にある 全130本

  1. MESとAIの関係:ロット・作業指示・品質判定がAIの精度を決める理由
  2. 製造業AIが本番で止まる7つの理由:PoCは成功したのにラインに載らない構造
  3. 製造業のAI-OCR:紙の検査記録・点検表・ミルシートをデータ化する手順
  4. データ基盤の段階的導入ロードマップ:ユースケースから逆算する8ステップ
特集の記事をすべて見る →

この記事を書いた人

株式会社サオス

株式会社サオス 製造DX部

DELMIA Apriso を中核とした MES / 製造DX の導入・運用・人材育成と、製造業向けAIの調査・開発・教育を手がけるITコンサルティング企業。ISO 9001:2015 / ISO 27001:2022 認証取得。 日本・中国・米国で製造業のMES・データ基盤・AI導入を手がけた実務者が、欧米・中国の一次情報にあたって書いています。