第10章:失敗しても焦らない(ログの見方&典型エラー)🧯
この章は「CI/CDがコケた😇→でも最短で復旧できる💪」を身につける回です! コツは “どこで失敗したか” を切り分けて、当たりをつけて直す だけ🕵️♀️✨ (公式の GitHub 連携ドキュメントは 2026-02-05 更新で内容が新しめです📚)(Firebase)
この章のゴール🏁✨
- GitHub Actions の どのステップが赤いか を見て、原因を3分で特定する⏱️🔍
- よくある失敗(Secrets/権限/プロジェクト指定/プレビュー期限など)を “辞書” で潰せる📕🧯
- わざと壊して→直して→復旧までを体験して、心が折れなくなる🧠💪
- AI(Gemini / Antigravity / Gemini CLI / MCP)で ログ読解を爆速 にする🤖⚡ (Firebase)
読む📚:トラブル対応は「3段ロケット」で勝てる🚀🚀🚀
CI/CDの失敗は、だいたいこの3つのどれかです👇

- ビルドで失敗(依存関係/TypeScript/テスト/Nodeの差)🏗️💥
- デプロイで失敗(Firebase認証/Secrets/プロジェクト指定/権限)🚢💥
- デプロイ成功なのに挙動が変(publicフォルダ違い/キャッシュ/設定ミス)😵💫
なので、見る順番は固定でOK👇✨
① Actionsの「赤い行」を1個だけ探す🔴👀

- リポジトリの Actions タブ → 失敗した Run を開く
- 左側の Job で赤い❌をクリック
- ログの中で 一番最初に出たエラー行 を探す(下に行くほど二次被害ログなので注意)🧠
② “ビルド” か “デプロイ” かを決める⚖️

npm ci/npm install/npm run buildが落ちてる → ビルド系firebase deploy/action-hosting-deployが落ちてる → デプロイ系
③ 同じ失敗を「ローカルで再現」できると勝ち確🎯
CIのログだけだとツラいので、ローカル(Windows)で👇を試すと一気にラクになります。
npm ci
npm run build
ここで再現したら、もうほぼ勝ちです😎✨
手を動かす🛠️:ログの「見る場所マップ」を体に入れる🧭
1) “デプロイ先” の情報を押さえる(どこへ出してる?)🗺️

GitHub連携は、CLIがいろいろ自動で作ってくれます👇(Firebase)
- Hosting にデプロイできる サービスアカウント を作る
- その鍵(JSON)を GitHub Secrets に入れる
.github/workflows/*.ymlを生成する
つまり、困ったら見る場所はこの3つ👇
.github/workflows/(Actionsの手順書📄)- GitHub Secrets(鍵🔐)
.firebaserc(どのFirebaseプロジェクトか🎯)
2) “プロジェクト指定ミス” を最速で見抜く🎯🧠

デプロイActionには projectId があって、未指定なら .firebaserc が必要です。(GitHub)
なので、典型パターンはこのどちらか👇
- A:workflow に
projectId:を書く - B:
.firebasercをコミットしておく(CIが参照できるようにする)
「.firebaserc が無いのに projectId も無い」だと、CIが迷子になって落ちやすいです😵💫
3) Preview の期限が短すぎ問題(7日デフォ)⏳🧨

プレビューURLが突然消えるの、地味にビビります😂 でもデフォは 7日、そして延長方法がちゃんとあります。(Firebase)
典型エラー辞典📕🧯(よく出る順)
ここからは “見たらこれ” のやつだけ集めます💡 ※ログの全文をAIに貼る時は Secretsは絶対に消してからね!🔐🧼(後でAI活用でやります)
エラー1:Secrets が見つからない/空っぽ🔐❌

症状
FIREBASE_SERVICE_ACCOUNT_...が無いError: Failed to authenticate系
原因あるある
- Secrets名を変えちゃった
- workflowが Secrets を参照してない
- PRが fork から来てる(重要!)
対処
-
GitHubの「Settings → Secrets」を確認
-
fork PR の場合:fork由来の
pull_requestでは Secrets が渡らないのが仕様です。(GitHub Docs)- 学習では「同一リポジトリ内ブランチでPR」を基本にすると安全&簡単👍
エラー2:Resource not accessible by integration(PRコメントできない等)🧷❌

症状
- 途中まで動くのに、PRへのコメントや更新で落ちる
原因あるある
- GitHub Actionsの権限が “読み取りだけ” になってる
対処(定番)
- リポジトリ設定で Actions の Workflow permissions を Read and write にする(画面から)(Stack Overflow)
- workflow 側にも
permissions:を書く(例:PRにコメントするならpull-requests: write)✍️
エラー3:プレビューが増えすぎて quota reached / 429 💣
症状
channel quota reached429系でプレビュー作れない
原因あるある
- PRが大量(Dependabot祭り🎉)でプレビューチャンネルが溜まる
対処
-
古いプレビューを消す(CLIでもコンソールでもOK)🧹
- チャンネル削除コマンドは公式にあります。(Firebase)
-
期限を短くする / 必要なPRだけプレビューにする(運用でコントロール)🧠
(「だいたい50くらいで当たる」系の話もありますが、まずは “不要チャンネル削除” が正攻法です🧹)(Stack Overflow)
エラー4:プレビュー期限が切れてURLが死んだ😇⏳
症状
- 昨日まで見れてたプレビューURLが 404
原因あるある
- 7日で自動失効(デフォ)(Firebase)
対処
expiresを延長(ただし最大30日)(Firebase)- そもそも「レビュー終わったPRは閉じたらプレビュー消す」運用にするとスッキリ✨
エラー5:Node/依存関係が合わずビルドが死ぬ🏗️💥

症状
npm ciが失敗(lockfile不一致など)npm run buildが失敗(TypeScriptエラーなど)
対処の型
-
CIとローカルで Node のバージョンを揃える(LTS推し)🟩
- 2026-02時点だと Node は v24 が Active LTS、v25 が Current です。(nodejs.org)
-
TypeScriptは安定版(5.9系)を使うのが無難、6.0 betaも出てるので遊ぶなら分離が安全🎮 (Microsoft for Developers)
ミニ課題📝:わざと壊して、ログから復旧せよ🧨➡️🧯
目的は「失敗しても大丈夫」を体に入れること💪✨
お題:TypeScriptエラーを1個入れて、CIを落として、直して復旧する😈

- 新しいブランチ作る🌿
- Reactのどこかで、わざと型エラーを作る(例:numberに文字列)
- PR作る → Actionsが落ちるのを確認🔴
- Actionsログで「どのステップが赤いか」を特定🔍
- エラーを直してpush → PRが復旧🟢
型エラー例(イメージ)👇
const x: number = "nope"; // わざと
チェック✅:この章を終えたら言えること🎤✨
- 「CIが落ちたら、まず 赤いステップ を見る」って言える👀
- 「ビルド落ち / デプロイ落ち / 成功したのに挙動変」へ仕分けできる🧠
.firebasercとprojectIdの関係を説明できる🎯(GitHub)- プレビューは7日で消える&伸ばせる(最大30日)って言える⏳(Firebase)
- fork PR では Secrets が渡らない仕様を知ってる🔐(GitHub Docs)
AI活用🤖⚡:ログ読解を “1分” にするコツ
1) Firebaseコンソールの Gemini を「相談役」にする🧯💬
コンソール右上の ✦Gemini からチャットできます。(Firebase) おすすめの聞き方👇
- 「この Actions ログのエラー行(※Secrets消した)から、原因候補を3つに絞って。優先順位も。」
- 「
.firebasercがない時にprojectIdをどう指定するのが安全?」(GitHub)
2) Antigravity × Firebase MCP で “調査→操作” をまとめる🧩🤝
Firebase MCP は Antigravity や Gemini CLI から使えます。(Firebase) Antigravity 側は MCP Store から入れられる流れが紹介されています。(The Firebase Blog)
たとえば Antigravity のエージェントにこう言う感じ👇
- 「Hosting のプレビューチャンネル一覧を見て、古いのを消して。quota 対策も提案して」🧹
(※実体は
firebase hosting:channel:*を叩く流れになりやすいです。削除コマンド自体は公式にあります。)(Firebase)
3) Gemini CLI も “Firebase拡張” で寄り道が減る🧠🧰
Firebase MCP のページでは、Gemini CLI には Firebase拡張を入れるのが推奨されています。(Firebase)
⚠️ 超大事:AIに貼っていい情報/ダメな情報🔐🧼
- ✅貼ってOK:エラー行、スタックトレース、workflowの一部(Secrets参照部分は伏せる)
- ❌貼っちゃダメ:秘密鍵、サービスアカウントJSON、APIキーそのまま、トークン類
Firebase AI Logic を使うなら、APIキーの制限など “本番チェックリスト” も目を通すと安全度が上がります🛡️(Firebase) (AI系はモデルの入れ替わりもあるので、固定してると将来ハマることがあるよ〜!)(Firebase)
次の章(第11章)は HTTPS+カスタムドメインで“ちゃんとしたサイト感” を出す回ですね🔒🌐 第10章の内容をベースに、次は「DNSで詰まってもログとAIで解く」って流れに繋げられます😆🚀