レジデント準備完了 静的コンパニオン
kari_mikumao 研究室

Systems

Mirai Guideの内側:オフラインファーストのイベントコンパニオン

ログイン不要のPWA、2つのWorker、そして厳格なバインディングデータ規則が、ファン運営のイベントガイドの信頼性を支える仕組み。

  • mirai-guide
  • アーキテクチャ
  • cloudflare
  • pwa

Mirai Guideは、ボカロ系イベントのための三言語・オフラインファーストのコンパニオンです。会場グッズ、来場者による在庫・行列の報告、永続するローカルカート、マップ、ルート計画に焦点を当てています。このノートは、一人で運営するファンプロジェクトをイベント規模で信頼できるものに保つためのアーキテクチャ上の決定を記録します。

2つのWorker、1つの境界

  • 来場者向けPWA、管理UI、HTTP APIは、Cloudflare Workers上のSvelteKitとTypeScriptのアプリケーションです。
  • Cloudflare Workflows上に構築された独立したパイプラインWorkerが、外部に触れるすべて――承認済みソースの丁寧な取得、抽出、翻訳、メディアのキャッシュ、提案のステージング――を担います。
  • D1にはレビュー済みの構造、カタログ、ライブ状態、パスキー認証情報、来歴、競合、追記専用の監査履歴を保存します。プライベートR2バケットには、不変の公開バンドルと、承認済みソース由来のレビュー済み・コンテンツハッシュ付き商品画像を保存します。

来場者はログインしません。アプリはPWAとしてインストールされ、公開バンドルから会場内でもオフラインで動き続けます。認証があるのはオーナー・管理画面だけで、それもパスキーです。

バインディングデータ規則

リポジトリ、マイグレーション、アプリケーションコード、テスト、ドキュメントには、イベントの事実――開催回の名前、会場、日程、ベンダー、ブース、グッズ、ソースURL――が一切含まれません。D1は空の状態から始まります。管理者が公開の発見用URLを設定し、抽出システムが証拠と確信度つきで構造を提案し、人間がレビューして初めて行が作られます。

この帰結は意図的なものです。

  • 名前も都市も会場レイアウトもブース番号体系も未知の将来のイベントを、同じシステムがそのまま支えられます。何もハードコードされていないからです。
  • IDは不透明で、分類キーは安全な表示フォールバックを持つ自由文字列です。コードがベンダー名を特別扱いすることはありません。
  • モデルの出力がそのまま公開されることはありません。すべての提案は人間の拒否権を通ります。

なぜこの形か

イベントコンパニオンが信頼を得る機会は一度きりです。データ面をレビュー済み構造、不変の公開バンドル、明示された来場者報告に分けることで、電波の届かない場所に立つ来場者にも動くマップとカタログが残り、目にするものの中にクローラーや言語モデルが直接書いたものは存在しません。