第20章 ローカル→本番へ昇華:移行手順書を完成させる🧾🏁
この章でできるようになること🎯
- 検証用(staging)→本番(prod) の順に、安全に出せる🚦
- “ローカルでだけOKなコード/設定”を見つけて、本番で事故らない形に直す🛡️
- デプロイ前後にやることを チェックリスト化して、未来の自分を救う🦸♂️✨
- AI(Gemini / Agent Skills / MCP)に「確認役」をやらせて、見落としを減らす🤖🔍 (Firebase)
1) まず“昇華で差が出る場所”を押さえる🧠⚠️
ローカル→本番で、ズレが出やすいのはだいたいここ👇
A. 接続先の切り替えミス🔀😱
connectAuthEmulator/ Firestore Emulator 接続などが 本番でも生きてると即アウト💥- “開発だけON”の安全スイッチが必要(第4章で作ったやつを最終点検)✅
B. 環境変数・Secrets(いちばん事故る)🔐💣
- ローカルは
.env.localで上書きできるけど、本番は デプロイで載る値が正義👑 - Secrets は Secret Manager 連携が王道(値をコードやGitに置かない)🧊
.secret.localでローカルだけ別値にできるのも強い💪 (Firebase)
C. ルール(Rules)とロールバック🛡️↩️
- Hosting はロールバックできるけど、Rules はロールバック不可(だから慎重に!)😇 (Firebase)
D. 課金・権限・ビルドまわり💳🏗️
- Cloud Run functions 系は ビルド処理が課金対象になりうるので、Cloud Billing が必要になります💳 (Google Cloud Documentation)
- App Hosting 系も Billing が必要で、リンクするとプランが上がる動きが明記されています📌 (Firebase)
2) “検証→本番”の2段階を作る🚦🚦

Step 2-1. プロジェクトを2つ用意する🧪➡️🔥
staging(検証)…まずここで動かして壊す🥊prod(本番)…OKが出たものだけ入れる🏆
Step 2-2. 環境変数のファイルを分ける📁✨

Functions の環境設定は、プロジェクト(またはalias)別に .env を分けられます。
例:.env.dev / .env.prod、ローカル上書きは .env.local ✅ (Firebase)
(イメージ)
functions/.env(共通)functions/.env.staging(検証専用)functions/.env.prod(本番専用)functions/.env.local(エミュ専用:最強の上書き🦾)
さらに Secrets が必要なら、.secret.local でローカルだけ別値にできるのも超便利です🔐✨ (Firebase)
3) “functions.config”を使ってたら今すぐ卒業🎓🚪

昔の functions.config() は、非推奨→将来的にデプロイ失敗の流れが明記されています⚠️
(新規デプロイが失敗する期限も書かれてるので、教材でもここは強めに扱うのが安全です)(Firebase)
代わりにおすすめは👇
- パラメータ化(Parameterized configuration):型が付きやすく、デプロイ時チェックが効く✅ (Firebase)
- dotenv(.env):シンプルに環境変数で渡す✅ (Firebase)
- Secret Manager:本気の秘密はここ🔐 (Firebase)
4) デプロイを“分割”して安全に進める🧯🪜

いきなり全部デプロイしない! Firebase CLI は 対象を絞ってデプロイできます👍 (Firebase)
例(必要なものだけ)👇
## Functions だけ
firebase deploy --only functions
## Hosting だけ
firebase deploy --only hosting
## Firestore のルール/インデックスだけ
firebase deploy --only firestore
「まず staging に Rules → Functions → Hosting」の順で出して、動いたら prod に同じ順で出す…みたいに、壊れた時に戻りやすい順番にすると安心です🧠✨
⚠️ 重要:Hosting はロールバックできるけど、Rules はロールバックできません。だから staging で Rules を徹底的に揉むのが大事です🙏 (Firebase)
5) App Check の“本番スイッチ”を忘れない🧿🔒

ローカルや開発中は debug provider / debug token を使えるけど、 本番では「ちゃんと守る」モードに上げる必要があります🛡️
- Web の App Check には デバッグ用の仕組みが用意されています(開発向け)🧪 (ISSUE)
- “開発の便利”を本番に持ち込まないチェックが必要です(Runbook に必ず入れる)✅
6) AIを“移行の安全係”として使う🤖🦺

ここが2026っぽい強み💪✨ AIにデプロイ前レビューをやらせると、見落としが減ります。
Step 6-1. Agent Skills + MCP で「手順書の叩き台」を作らせる🧩
Firebase の Agent Skills は「Firebase作業に強い知識モジュール」だよ、って公式が説明してます📚 (Firebase) MCP server は「AIツールが Firebase プロジェクト操作を手伝えるようにする仕組み」です🔧 (Firebase)
ブログでは Skills と MCP を一緒に使うのがおすすめって書き方になってるので、教材でもこのペアで紹介すると自然です👍 (The Firebase Blog)
叩き台プロンプト例(そのまま投げてOK)👇
あなたは移行手順書のレビュワーです。
次を満たす「staging→prod移行Runbook」をチェックリスト形式で作って:
- connectAuthEmulator / Firestore Emulator 接続が本番で無効になっているか
- .env / .env.<alias> / .env.local / .secret.local の使い分け
- Secret Manager の利用(秘密をGitに置かない)
- firebase deploy を --only で段階デプロイする流れ
- Rules はロールバック不可なので staging で検証を厚く
- App Check の debug provider を本番で無効化
- デプロイ後のスモークテスト項目(ログイン、CRUD、AI整形ボタン)
Step 6-2. “AI整形ボタン”の本番モード確認🧩🤖
第19章で作った「ダミー応答↔実AI呼び出し」の2モード設計は、そのまま移行の要になります。 本番でモデルや設定が変わっても耐えるように、環境変数/パラメータで切替にしておくのが安心です🔁✨ (Firebase)
7) 仕上げ:移行手順書(Runbook)テンプレ🧾✅

最後に、これをコピペして自分用に育てて完成🎉 (チェックが増えるほど、未来が楽になります😄)
## ローカル→本番 移行Runbook(staging→prod)
## 0. 前提確認
- [ ] Emulator接続コードが “開発時だけ” 有効になっている(本番では無効)
- [ ] functions.config() を使っていない(使っていたら移行済み)
- [ ] Secrets は Secret Manager / .secret.local で扱えている
## 1. staging デプロイ(段階)
- [ ] Firestore Rules/Indexes を staging に deploy
- [ ] Functions を staging に deploy(.env.staging がロードされる)
- [ ] Hosting を staging に deploy
## 2. staging スモークテスト(最低限)
- [ ] ログインできる
- [ ] メモ CRUD(作成/一覧/更新/削除)が動く
- [ ] 自動整形ボタンが動く(AI: ダミーor実AIのどちらか想定通り)
- [ ] ルール違反が弾かれる(他人のメモが読めない等)
- [ ] App Check が staging で想定通り(debug利用の範囲が適切)
## 3. prod デプロイ(stagingと同じ順)
- [ ] Firestore を prod に deploy
- [ ] Functions を prod に deploy(.env.prod がロードされる)
- [ ] Hosting を prod に deploy
## 4. prod スモークテスト
- [ ] staging と同じ項目を確認
- [ ] App Check の debug provider / debug token が本番で無効になっている
- [ ] ログ(Functions/Hosting)にエラーが出ていない
## 5. もし壊れたら(復旧)
- [ ] Hosting は rollback できる(手順を書く)
- [ ] Rules は rollback できないので staging での検証を強化する
- [ ] どの deploy で壊れたかを記録して次回改善
※ 「Hosting はロールバック可能」「Rules はロールバック不可」「--only で段階デプロイできる」は、公式CLIドキュメントに沿った注意点として入れておくと超強いです🧯✨ (Firebase)
※ .env.<alias> / .env.local / .secret.local の運用は、環境設定の公式ガイドに沿ってるので安心です🔐📌 (Firebase)
ミニ課題🎯(10〜20分)
- 上の Runbook を自分のプロジェクト用に編集して、「staging→prod」手順を1ページで説明できるようにする📝✨
- AI(Gemini)に Runbook をレビューさせて、抜けを3つ見つけて追加する🤖➕✅ (Firebase)
チェック✅
- 「本番で差が出るポイント(接続・Secrets・Rules・App Check・課金)」を、1分で説明できる⏱️🙂
- デプロイを **分割(--only)**して安全に進める理由が言える🧯 (Firebase)
functions.config()を卒業して、将来のデプロイ失敗を回避できている🎓✨ (Firebase)
必要なら、この第20章の Runbook を「あなたのミニ題材アプリ仕様(メモ項目やAI整形の戻りJSONなど)」に合わせて、**完全カスタム版(そのまま教材に貼れる形)**に整形して出しますよ🛠️📚✨