eMoBi向け 実装ガイド(ポート共有MQTT)

eMoBi開発チームが最初に読むドキュメントです。詳細仕様に入る前に、何を・どの順で作ればよいかをまとめています。仕様の正は接続仕様書。

🤖 AIで実装する場合: AIコーディングアシスタント(Claude / Copilot等)には llms.md(自己完結の実装指示書)と event.schema.json(ペイロードのJSON Schema)のURLをそのまま渡してください。 外部参照なしで実装・テスト生成に必要な情報がすべて入っています。

作るものは1つだけ

自社ポートの在庫(貸出可能台数・返却可能ドック数)が変わったら、JSONを1件MQTTでpublishする。

事前に受け取るもの

STG接続情報ホスト gogo-cycle-mqtt-stg.fly.dev / ポート 8883(mqtts)— 仕様書§1
資格情報ユーザー名/パスワードは別経路で共有(本サイトには記載しない)
partner_idemobi(仕様書§2)

Step 1.接続確認(30分)

mosquitto_sub -h gogo-cycle-mqtt-stg.fly.dev -p 8883 \
  --capath /etc/ssl/certs -u emobi -P <password> \
  -i emobi-stg-test -t 'jp/events/#' -v

Step 2.テストpublish(30分)

mosquitto_pub -h gogo-cycle-mqtt-stg.fly.dev -p 8883 \
  --capath /etc/ssl/certs -u emobi -P <password> \
  -i emobi-stg-pub -q 1 -r \
  -t 'jp/events/emobi/stations/test-001/status' \
  -m '{"event_id":"emobi-017f22e2-79b0-8cc3-98c4-dc0c0c073001","event_type":"station.status_updated","source_partner_id":"emobi","timestamp":"2026-08-18T10:30:00Z","payload":{"station_id":"test-001","num_vehicles_available":5,"num_docks_available":10,"reason_code":"VEHICLE_RETURNED"}}'

Step 3.ダッシュボードで目視確認(5分)

ダッシュボードに同じ資格情報でログインすると、Step 2で送ったポートが表に出ます。以後の開発中の動作確認にも使えます。

Step 4.本実装

自社システムの在庫変動イベントに、publishを組み込みます。

発火タイミング(仕様書§3・§4.2)

自社システムのできごとreason_code
ユーザーが車両を返却したVEHICLE_RETURNED
再配置で車両を置いたREBALANCE_DROP_OFF
再配置で車両を回収したREBALANCE_PICK_UP
故障対応等で回収したMAINTENANCE_OUT
ユーザーが車両を借りた(貸出)VEHICLE_RENTED(本事業の拡張値・仕様書 v1.5。省略も可)

実装チェックリスト

参考実装: リポジトリの mqtt/examples/node-publisher/(publish.js=単発送信 / simulate.js=連続送信の例)

Step 5.結合確認 → 本番へ

  1. 実ポートの一部でSTGにpublishし、gogoshare側で受信確認(ダッシュボード+在庫保持サーバー)
  2. 問題なければ本番の資格情報を発行(接続先を gogo-cycle-mqtt.fly.dev に変えるだけ。実装変更は不要)

よくある質問

QA
1台毎の状態(車両ID・バッテリー)は送る?送らない。本IFはポート単位の集計のみ(仕様書§0.1)。車両の特定・予約・解錠はREST標準API側で別途
受信(subscribe)は実装必要?任意。他社在庫を自社サービスで使う場合のみ(その際は仕様書§5に従う)
全ポートの初期値はどう送る?接続後に全ポート分を1回publishすればよい(retainされ、以後は変化分のみ)
テストで送ったデータを消したい同じトピックに空ペイロードをretainでpublishすると消える
ブローカーが落ちていたら?クライアントの自動再接続で復旧。retainにより受信側の状態も自動回復(仕様書§5.5)
順番が前後したら?受信側が timestamp で新旧判定する規約(仕様書§5.3)。送信側は正しいUTC時刻を入れることだけ守る

スケジュール(2026-08-04打合せ合意)

8月後半eMoBi: 在庫publish実装(このガイドの範囲)・STG結合
9月前半eMoBi: 施錠・解錠API(非公開API)の開発・仕様書アウトプット ※本ガイド範囲外
9月後半〜gogoshare: アプリ組み込み。11月: 結合テスト・実証