なぜ昨日まで正常だったサイトが今日突然クラッシュしたのか?
Vercelにプロジェクトをデプロイし、かっこいい独自ドメインを設定した後、あなたは自分が無敵になったと錯覚するかもしれません。
翌日、ウェブページの誤字を見つけ、ローカルで修正して嬉々としてターミナルに打ち込みます:
git commit -m "誤字修正"
git push
5分後、クライアントから怒りの電話:「サイトが真っ白な画面になった!なぜだ!」 慌ててVercelのダッシュボードを確認すると、最新のデプロイ履歴に大きな「赤ランプ(Build Failed)」が点灯しています。
これが現代のDevOps(開発と運用の一体化)で最も遭遇する悪夢です。 第2章で学んだ魔法:CI/CD(継続的インテグレーション/継続的デリバリー)。PushするとVercelが自動的にデプロイしてくれます。 しかしこの両刃の剣の欠点は:**「問題のあるコードをPushすると、サイトがクラウド上で公開自殺する」**ことです。
この状況でどうすればいいのでしょうか?
救済テクニックその1:Vercelの「タイムマシン(Rollback)」
オンライン事故発生時の鉄則:「まずは現状復旧させてから、ゆっくりバグを探せ!」 壊れた本番環境でコードをいじるのは時間の無駄です。1秒ごとに損害が膨らみます。
Vercelには伝統的なエンジニアが羨む機能があります:1秒ロールバック(Instant Rollback)。
- Vercelダッシュボードにログインし、プロジェクトを選択
- 上部の**Deployments(デプロイ履歴)**タブに移動
- 過去のPush履歴が表示されます。最上部の赤ランプが今回の失敗デプロイ
- 下にスクロールし、最後の**「緑のチェックマーク(成功)」**履歴を探す
- 該当履歴の右端にある三点リーダー
...をクリック - **「Assign Custom Domain(カスタムドメイン割り当て)」または「Promote to Production(本番環境昇格)」**を選択(Vercelのバージョンにより表現が異なる場合あり)
- 1秒もかからず、サイトは誤字こそあれ正常動作する昨日の状態に戻ります!
クライアントは満足し、上司は怒りを収めます。これで安心してデバッグに取り組めます。
なぜ失敗した?VercelのBuild Logsの読み方
ローカル環境(localhost)では動いたのに、Vercelで爆発する理由は?
主に2つの原因が考えられます:
- 環境変数の設定忘れ:ローカルの
.envに新しいDBパスワードを追加したが、Vercelの設定画面で更新し忘れた - TypeScript/ESLintチェック失敗:Vercelのチェックは非常に厳格です。未使用変数や型エラーがあると、ローカルでは見逃されてもVercelのボットは即座にリジェクトします!
AIデバッグ法:赤文字をAIに解析させる
推測で動かないでください!失敗したデプロイのBuild Logsを開き、黒地に白(と赤)文字の大量のログをコピーし、CursorのAIに貼り付けます:
【Vercelデプロイ失敗デバッグPrompt】 VercelへのPushでBuild Failedが発生しました。 完全なBuild Logsはこちら:
[先程コピーしたログを貼り付け]失敗の具体的な原因は?環境変数設定漏れ?それとも構文エラー? Vercelのコンパイルを通���ための修正方法を教えてください。
AIは即座に犯人を特定します:「app/page.tsxの45行目、user_idに型定義がなくTypeScriptエラーが発生しています」
AIの指示通り修正し、再度Pushすれば緑ランプが点灯します!
最終ボス:Gitコンフリクト(Merge Conflict)
共同作業(または別PCでの作業)を始めると、Git世界最恐のモンスターに遭遇します:コンフリクト(Conflict)。
典型的なシナリオ:
昨日会社のPCでホームページのボタンを「赤」に変更し、GitHubにPushしました。
今日自宅のノートPCで、git pullせずに最新コードを取得しないまま、同じボタンを「青」に変更しました。
git pushを実行した瞬間...バン!
ターミナルに赤文字:Merge conflict in src/app/page.tsx
GitHubは混乱しています。ボタンを昨日の「赤」にするか、今日の「青」にするか判断できません。そのためPushを拒否し、あなた自身に決定を委ねます。
コンフリクト解決法:Cursorの神サポート
コンフリクトが発生したpage.tsxを開くと、恐ろしい記号が現れます:
<<<<<<< HEAD
<button class="bg-blue-500">青ボタン(自宅変更)</button>
=======
<button class="bg-red-500">赤ボタン(会社変更)</button>
>>>>>>> origin/main
以前はエンジニアが手動で<<<<や====を削除する必要があり、コードを破壊しやすかったです。
しかしCursor IDEでは、ファイルを開くと親切な「ボタン選択」が表示されます:
- Accept Current Change(現在の青ボタンを保持)
- Accept Incoming Change(会社の赤ボタンを採用)
- Accept Both Changes(両方のボタンを保持)
希望のボタンをクリックするだけで、Cursorが自動的に記号を削除し、完璧なコードにマージしてくれます!
その後は:
git add .
git commit -m "コンフリクト解決"
git push
コンフリクト解消!危機脱出!
結論:DevOpsマスターへの道
この5章を乗り越えたあなたは、単なる「コーダー」ではありません。 現代ソフトウェア開発の標準装備を習得しました:Gitバージョン管理、GitHubクラウドバックアップ、Vercel自動デプロイ、カスタムドメイン設定、そしてオンライン災害復旧システム。
これらの武器を手に、あなたはもはやローカル環境でしか動かないおもちゃではなく、商業レベルの本格製品を開発できるようになりました。 デプロイコースの完走おめでとうございます!あなたのサイトを世界に発表する準備はできていますか?