← FUNKY STADIUM ポータルへ戻る / Back to portal
フォールバックマニュアルTHE FALLBACK MANUAL — when the app breaks, the show goes on
アプリ(SHIROFES OS / Events OS)が使えなくなっても祭を止めないための紙運用マニュアル。印刷して受付テーブルと本部に常備してください。 Paper-first operations for when the app is unreachable. Print this and keep a copy at reception and HQ. (Pair: edit together with manuals/FALLBACK_MANUAL.md in the repo.)
鉄則Golden rules
- アプリで進行を止めない。ショーは必ず続行。記録はすべて後から直せる。Never block the show on the app. Every record can be fixed afterwards.
- staff.html が使えない時の現金は紙の台帳。「名前・金額・時刻」を必ず書く。復旧後に staff.html の支払いピルで1件ずつ照合。Cash when staff.html is unreachable goes on a paper ledger — name + amount + time. Reconcile after via the staff.html payment pills.
- 出場番号は後から付け直せる。番号が出ない・null でも紙のリストで進行してよい(バックフィル可)。Entry numbers can be backfilled — run from the paper list.
- スコアは後から入れられる。紙の採点用紙に記入し、judge.html 復旧後にジャッジが再入力(紙を見ながら)。予選は SD が stage.html の「予選通過者の入力」で通過者を直接入力可(スコア不要)。Scores can be entered later — judges re-enter from the paper sheets once judge.html recovers; for prelims the SD can enter qualifiers directly via stage.html (no scores needed).
前日チェックリスト — 印刷するものDay-before checklist — what to print
- 全データの XLSX アーカイブadmin → ダッシュボード → 「XLSX 保存 / Download XLSX」。受付リストの紙バックアップになる。 / Admin dashboard XLSX archive — your paper reception list.
- 参加者向けタイムテーブル(掲示用ポスター)prep → タイムライン → 印刷(timetable.html のポスター印刷が開く)。 / Participant timetable poster via prep Print.
- MC台本mc-script.html → 「PDF / 印刷」 → 印刷範囲を選ぶ(このステージ全体 / バトル1つ / 全バトル)ボタン。 / mc-script PDF / 印刷 button.
- 進行表グリッド(全ステージROS)timetable.html → 印刷。 / timetable.html grid print.
- ブラケットPNG(空テンプレート含む)export.html → 各バトルの空テンプレートを書き出して印刷。手書きブラケットの土台。 / Bracket PNGs via export.html — blank templates for hand-written brackets.
- 白紙の採点用紙(予選人数分+予備)judge.html が落ちた時用。 / Blank paper scoresheets.
- このマニュアル自体受付+本部に1部ずつ。 / This manual itself — one at reception, one at HQ.
前日(準備)Day before — preparation
| 壊れたら / If X breaks | やること / Do Y |
| 受付が開けない(定員カウンター未設定などの前提条件エラー)Open Registration blocked (counters missing) | admin → Settings → 「イベントセットアップ再実行」(ボタン: 再実行 / Reprovision)。直らなければ prep の Doors カードの不足項目を1つずつ潰す。「シートミラー未設定」は v136.616 で廃止済み — 出ても無視して構わない。Rerun event setup via the admin Settings card (再実行 / Reprovision button); then clear each missing precondition on the prep Doors card. The old sheet-mirror precondition was retired in v136.616 — ignore it if you still see it. |
| デバイスのGoogleサインインが切れているA cast/ops device lost its Google sign-in | 前日のうちに stage / staff / admin / prep / mc / mc-script など、スタッフの Google サインインが必要な全デバイスでサインインを済ませる(judge はサインイン不要 — 匿名のまま採点できる)。当日のサインイン中断が一番痛い。Pre-sign every device that needs a staff Google account — stage, staff, admin, prep, mc, mc-script (judge needs none; it scores anonymously). Day-of sign-in interrupts the show. |
| デバイス紛失・故障Device lost / broken | 予備iPadでサインインし直す。紛失端末がマジックリンク(admin_shift / reception_helper 等)で開かれていた場合は admin → Settings →「マジックリンク」カードで該当リンクを個別取消。複数台なら「マジックリンクを一括で無効化」カードの「一括取消」。QRシークレットのローテーションは端末紛失の対策ではない — 秘密鍵は端末ではなくサーバー(config/checkInSecret)にあり、回すと参加者のQR(ポータル・印刷カード)が無効になる。参加者のQRが漏れた時だけ使い、その場合も7日間は旧QRも有効(二重キー重複期間)なので、その間に印刷カードを再発行・差し替える。v136.992 以降、QRを読み取る端末はない。Re-sign a spare iPad. If the lost device was opened via a magic link (admin_shift / reception_helper), revoke it in admin Settings → the マジックリンク card (per-link), or use the マジックリンクを一括で無効化 card's 一括取消 for a whole fleet. QR-secret rotation is NOT a device-loss remedy — the secret lives server-side, not on any device, and rotating it invalidates participants' QRs (portal + printed). Use it only if participant QRs leak; old QRs stay valid 7 days, so re-print and swap during that window. Nothing has scanned QR since v136.992. |
| 印刷が間に合っていないPrinting not done | 上の前日チェックリストを順に。最低限:XLSXアーカイブ+採点用紙+このマニュアル。Run the checklist; minimum = XLSX archive + scoresheets + this manual. |
受付Reception
| 壊れたら / If X breaks | やること / Do Y |
| staff.html が開かない・検索できないstaff.html unreachable | 印刷済みXLSXの受付リストにチェックで受付続行。現金は紙台帳(名前・金額・時刻)。復旧後に staff.html で1件ずつチェックイン+支払いピルで照合。Check in on the printed list; cash on the paper ledger; reconcile after via staff.html. |
| カード決済(Stripe)エラーStripe card payments fail | 当日支払い(現金)に切り替えて受付。現金受領は staff.html の支払いピル、落ちていれば紙台帳。事後に admin の入金タブで照合。Switch to pay-at-door cash; reconcile in admin Payments after. |
| 確認メールが届いていない参加者Dancer's confirmation email missing | メールはチェックインに不要。participants に居れば普通にチェックイン。必要なら admin → 参加者 → 「リンク再発行 / Resend」。Email is not required for check-in; reissue the portal link via the admin リンク再発行 / Resend button if needed. |
| Wi-Fi が死んだ・激重Wi-Fi lost / degraded | 受付iPadをLTEテザリングへ。アプリ画面はキャッシュで動き続ける — 1操作ずつ「反映されたか」を確認しながら進める。受付タブは停電・回線断中に再読み込みしない(メモリキャッシュのみ — リロードで白画面。開いたままなら動き続ける)。番号の重複チェックは回線が切れても受付を止めません — ソロ・チームどちらの番号入力でも、サーバー照合は1.5秒で打ち切って通常どおり登録されます(照合が飛んだだけで、入力は失われません)。重複の可能性は後から admin で照合してください。LTE-tether the reception iPads; verify each action committed before the next. Never reload the reception tab mid-outage — the cache is memory-only, a reload gives a blank page; a tab left open keeps working. |
| Firebase 全面停止(全ページがオフライン表示)Full Firebase outage | 紙運用に全面切替:印刷リストにチェック+現金台帳。停止開始時刻と担当者を紙にメモ。復旧後の入力はすべて「停電バックフィル / outage-backfill」と注記。Go fully paper; note outage start time + operator; tag all backfilled entries. |
予選・ジャッジPrelims + judging
| 壊れたら / If X breaks | やること / Do Y |
| judge.html が動かないjudge.html down | 白紙の採点用紙に記入して予選続行。judge.html 復旧後にジャッジが再入力(紙を見ながら)。予選は SD が stage.html の「予選通過者の入力」で通過者を直接入力可(スコア不要)。Paper scoresheets; judges re-enter via judge.html after recovery; for prelims the SD can enter qualifiers directly on stage.html (no scores needed). |
| 出場番号が表示されない・nullEntry numbers null / missing | 止まらない。紙のリスト順で呼び出して進行。番号は後からバックフィルできる。Don't stop — call from the paper list; numbers backfill later. |
| 集計(Top N)が出ないScore tally won't compute | 紙の採点用紙を手集計し、SD が Top N を確定。ブラケットは手動シードへ(次の表)。Hand-tally; SD locks Top N; seed the bracket manually. |
トーナメント(ブラケット・SD)Bracket + stage director
| 壊れたら / If X breaks | やること / Do Y |
| ブラケット自動生成が失敗Bracket auto-build fails | 「ブラケット・シード配置の可視化 / Bracket Seeding Visualizer」で人数Nごとのシード配置を確認し、印刷済み空テンプレートに手書きで組む。余裕があれば admin → ブラケットタブ → 上書きモードで手動入力。Use the bracket-formations reference + a printed blank template; hand-seed; optionally mirror into admin override mode. |
| stage.html の勝者タップが反映されないSD winner-taps not committing | 紙ブラケットで進行を継続(勝者に丸)。復旧後に admin で結果を後追い入力。Run the paper bracket; backfill results in admin after. |
| export.html のPNGが書き出せないBracket PNG export fails | 印刷済み空テンプレートに手書き → スマホで撮影してSNS共有。Hand-write a printed template; photograph it for social. |
MC・進行MC + show flow
| 壊れたら / If X breaks | やること / Do Y |
| mc-script.html が落ちたTeleprompter down | 印刷済みMC台本に切替。進行順は印刷済み進行表グリッドで確認。Printed MC script + printed ROS grid. |
| ステージタイマーが動かないStage timer down | スマホのストップウォッチ+MCの口頭カウント。Phone stopwatch + MC verbal count. |
| ディレクター→MC連絡が届かないDirector→MC messages not arriving | ランナー(人力)か LINE/Slack に切替。手信号を事前に2つ決めておく(延長・巻き)。Runner or LINE/Slack; pre-agree two hand signals (stretch / hurry). |
| ステージ停電Stage power outage | MC が中断をアナウンス。中断したラウンドは最初からやり直し(スコア持ち越し禁止)。復旧後に SD がタイマーをリセット。MC announces the pause; interrupted rounds restart from scratch — never carry scores over. |
| 運営担当者が不在になったOperator unavailable mid-event | admin → Settings → シフト引き継ぎで次の担当へ8時間有効のリンクを発行(SHIROFES のみのカード)。このリンクは引き継ぎ記録+失効用で、アクセス権そのものは付与しない — 次の担当者は自分の Google アカウントでサインインする。未承認なら Settings →「管理者管理」で追加(FSC / CC を含む全ブランド共通)。admin に誰も入れない場合は紙台帳+受付シートで続行し、事後照合。Shift-handoff card (8-hour link) in admin Settings — SHIROFES only. The link is a handoff record + revocation anchor, not an access grant: the next operator signs in with their own Google account. Add them under Settings → Admin Access (all brands) if not yet allowlisted. If no admin reachable, run on paper + reconcile after. |
復旧(事後処理)Recovery — after the outage
| やること / Task | 方法 / How |
| 紙チェックインの反映Backfill paper check-ins | 登録済みの参加者は staff.html で1件ずつ「チェックイン」をタップ(紙のリスト順)。未登録の飛び入りだけ admin → 入金タブ → 「当日エントリー追加 / Admin walk-in」で追加(登録済みの人に使うと二重登録になる)。反映後、admin → 参加者 の行を開いて MEMO 欄に「停電バックフィル / outage-backfill」と注記(別操作)。Registered dancers: tap チェックイン per row on staff.html. Only unregistered walk-ins go through admin → 入金 → 「当日エントリー追加 / Admin walk-in」 (using it for a registered dancer creates a duplicate). Then add the outage-backfill note in the participant row's MEMO field (separate step). |
| 現金照合Cash reconciliation | 紙台帳(名前・金額・時刻)と staff.html の支払いピルを突き合わせ、未反映分をピルで確定。Match the paper ledger against the staff.html payment pills. |
| スコアの後追い入力Score backfill | judge.html 復旧後にジャッジが再入力(紙を見ながら)。予選は SD が stage.html の「予選通過者の入力」で通過者を直接入力可(スコア不要)。Judges re-enter from the paper sheets via judge.html; for prelims the SD can enter qualifiers directly on stage.html (no scores needed). |
| 出場番号のバックフィルEntry-number backfill | admin → 設定 → 「プラットフォームヘルス」の行「エントリー番号なし N件」→「番号を割り当て / Assign numbers」で再付番(チェックイン時刻順に連番)。番号なしが0件のときは行自体が出ない。?debug=1 は不要。Re-number from admin → Settings → Platform Health → the 「エントリー番号なし N件」 row → 「番号を割り当て / Assign numbers」 (check-in-time order). The row is hidden at zero; no ?debug=1 needed. |
| ポストモーテムPost-mortem | 48時間以内に記録(何が・いつ・どう運用したか)。テンプレートはリポジトリの archive/postmortems/_templates/ にある。Capture within 48 hours; templates live in the repo's postmortems archive (_templates/ subfolder). |
リハーサルの実施Running a rehearsal
リハーサルは本番イベントの安全なコピー上で動きます。開始すると受付・ステージ・ジャッジ・MC・DJ・VJ・ワークショップ受付・ショーケース受付など、すべてのオペレーター画面がコピーに切り替わり、本番データ・メール・シート・スタンプには一切触れません。終了でコピーを削除し本番に戻ります — 本番は一度も変更されないので「巻き戻し」は不要です。 A rehearsal runs on a SAFE COPY of the live event. Starting it switches every operator screen (reception / stage / judge / MC / DJ / VJ / workshop + showcase desks) to the copy; no real data / emails / sheet / stamps are touched. Ending it deletes the copy and returns to live — the real event was never changed, so there is nothing to rewind.
① SDによるステージ・ブリーフィング(stage.html)SD-led stage briefing — the「ブリーフィング / Stage briefing」card
| 手順 / Step | 内容 / What happens |
| 1. ステージ・日を選び、バトルを選ぶPick stage + day, then the battle | stage.html 上部の日チップでバトル一覧を絞り、ブリーフィング対象のバトルを選択。「ブリーフィング / Stage briefing」カードを開く。Day chips scope the battle picker; the stage comes from the picked battle. Open the Stage briefing card. |
| 2. 「リハーサル開始(安全なコピー)」Start rehearsal (safe copy) | イベント全体の安全なコピーを作成し、全オペレーター画面がコピーに切り替わる。本番データには一切触れない。Creates a safe copy of the WHOLE event; every operator screen switches to it. The real data is never touched. |
| 3. 「チェックイン投入」Simulate check-ins | コピー上の登録者に本番と同じ経路で模擬チェックインを書き込む(本番には影響しない)。Events-OS は連番つき。SHIROFES はバトル編集の「番号の渡し方 / Numbering mode」による — 「事前割当」+**確定済み**の抽選プラン(2026 では DEADLY DUO)は抽選のサークル+番号をそのまま適用、それ以外のチーム予選(2026 では ON THE BEAT / G-COAT。確定前の「事前割当」を含む)はサークルごとに 1 から採番、ソロ種目は番号なし。バトル名では切り替わらない。再実行しても、すでに番号を持つチームは付け直さない(v136.936〜938)。Writes simulated check-ins onto the COPY's registrants through the production paths (the real event is untouched) — Events-OS numbered; SHIROFES solo battles unnumbered; SHIROFES team prelims numbered per circle — the confirmed prep draw's circle + number when the battle is in preset numbering mode and its plan is confirmed, otherwise the next free number in the circle the team already drew. A unit with no circle stays unnumbered, and a team that already holds a number is never renumbered. |
| 4. 抽選・ブラケットは本番どおりRaffle + bracket as normal | スタート番号ルーレットの確認、ブラケット生成、勝者タップの自動進行 — 操作は本番と同一(すべてコピー上)。Start-number roulette confirm, bracket build, winner-tap auto-progression — same controls as the live show (all on the copy). |
| 5. 「リハーサル終了(コピー削除)」End rehearsal (delete copy) | 確認するとコピーが削除され、全画面が本番に戻る。本番は一度も変更されていないので、巻き戻す対象は何もない。Confirm deletes the copy and every screen returns to live. The real event was never changed, so there is nothing to undo. |
⚠ 本番開場の前に必ず「リハーサル終了(コピー削除)」を押すこと。押さないと本番がコピー上で進行します。 You MUST end the rehearsal (delete copy) before live doors — otherwise the live show keeps running on the copy.
② イベント全体リハーサル(admin → 設定 → リハーサルモード)Event-wide rehearsal — admin Settings, Rehearsal Mode card
| 操作 / Control | 内容 / What happens |
| ▶ リハーサル開始Start rehearsal | stage.html のブリーフィングと同じサンドボックス。イベント全体のコピーを作り、全オペレーター画面(VJ含む)をコピーに切り替える。本番データ・メール・スタンプには一切触れない。画面上部に青い帯「リハーサル中(安全なコピー)」が出る(本番当日、または開始から8時間以上で赤い警告帯)。VJ画面だけは共通の帯ではなく右上の小さなバッジで、赤い警告には変わらない。The same sandbox as the stage briefing. Clones the whole event and switches every operator screen (incl. VJ) to the copy; no real data / emails / sheet / stamps are touched. |
| ■ リハーサル終了(コピー削除)End rehearsal (delete copy) | コピーを削除し全画面が本番に戻る。本番は変更されていないので後片付け・巻き戻しは不要。Deletes the copy; every screen returns to live. The real event was never changed, so there is no cleanup or rewind. |
本当に危ないのは「終了し忘れ」です。 本番開場の前に必ず「■ リハーサル終了(コピー削除)」を押してください。押さないまま本番を始めると、受付もステージもコピーの上で進行し、終了した瞬間にその日の記録がまるごと消えます。開場前に、リハーサルの帯が出ていないことを全端末で目視確認してください(色は問いません — 通常は青い帯ですが、本番当日は最初から赤い警告帯「⚠ 本番当日です」になります)。帯は本番当日、または開始から8時間で赤い警報に変わり(「⚠ 本番当日です — リハーサル(コピー)が有効のままです。開場前に必ず「リハーサル終了」を押してください。」)、終了の手順(管理画面またはステージ画面の「リハーサル終了」)も帯の中に表示されます。判定は毎分+端末を手に取るたびにやり直されるので、開いたままのステージ画面も途中で赤に変わります。青でも赤でも、帯が出ている端末はコピーを見ています。なお シミュレーション時計(▶開始/速度1x〜30x/⏹終了)・「リハーサル巻き戻し」・「リハーサルデータ削除」・「完全リセット」はv136.610で廃止され、もうありません — リハーサルはコピーの上で動くので、巻き戻す操作自体が不要です。 Before live doors, visually confirm NO rehearsal strip is present on EVERY device — whatever its colour: blue normally, a red 「⚠ 本番当日です」 alarm on an event day.
③ リハーサル中のMC(mc-script.html)MC during rehearsal — the teleprompter
| 見えるもの / What the MC sees | 内容 / Notes |
| 青い「リハーサル中(安全なコピー)」帯Blue sandbox strip | 全オペレーター画面共通の帯がテレプロンプター最上部に出る(本番当日、または開始から8時間以上で赤い警告帯に変わる)。アンバーの「リハーサル中 / REHEARSAL」帯はサンドボックス方式では出ない。The shared sandbox strip at the top of the teleprompter (red on an event day, or after 8h). The amber per-stage strip never shows under the sandbox model. |
| 台本のタップ編集Tap-to-edit script | サンドボックス方式では動かない。タップすると「リハーサル中のみ編集できます — SDに開始を依頼してください」と出るが、これは廃止された旧方式(ステージ別フラグ)の案内で、SDがリハーサル中でも編集はできない。ただし本番確定ロック中のステージでは「本番確定でロック中 — 解除は進行表(rundown)の編集ヘッダーから」と出る — こちらは今も有効な案内。台本の修正は rundown.html で行う(リハーサル中はコピー側の編集になり、終了時にコピーごと消えるので、残したい修正はリハーサル終了後に)。Tap-to-edit is inert under the sandbox model: the tap points at the retired per-stage flag and never unlocks, even while the SD's rehearsal is running. On a 本番確定-locked stage the tap shows the rundown-unlock pointer instead — that one is still current. Fix scripts in rundown.html; during a drill those edits live on the copy and are deleted with it, so make keeper fixes after ending the rehearsal. |
④ リハーサルで確認することWhat rehearsal proves
- 本番と同じ書き込み経路で全画面が動く模擬データではなく、実際の登録者・本物の経路。チェックインで一覧が並び替わり、採点・ブラケットがそのまま流れる。 / Real registrants through the real production write paths — lists reorganize, scoring + bracket flow end-to-end.
- 機内モードのジャッジテストjudge.html をオフラインにして採点 → ヘッダーに「⚠ 未送信」チップ → 再接続 → 自動送信されチップが消える。 / Score offline → 未送信 chip appears → reconnect → auto-syncs and clears.
- SD→MC 連絡ループSD がメッセージ送信 → MC が「確認した / OK」をタップ → stage.html の送信履歴に ✓ 確認済+時刻。 / SD sends → MC taps 確認した → SD sees ✓ 確認済 + time in the sent list.
このページは静的(Firebase 不使用)。本番アプリが全滅していてもこのページと「ブラケット・シード配置の可視化」は home.funkystadium.app から開けます — それすら落ちた時のために印刷を。 This page is static (no Firebase) and stays up even when the runtime app is down — and you printed it anyway, right?