AIコーディングとエージェント

【Vibe Coder #6】昨日は動いたのに今日は動かない。コードを触っていないのになぜ?

「コードを1行も触っていないのに、昨日まで正常だったアプリが今日は動きません。」バイブコーディングのコミュニティで最もよく見かける嘆きであり、最もミステリアスに感じる状況です。幽霊の仕業のようですが、実際の容疑者は数人に絞れます。順番に調べれば、ほとんどは午前中に解決できます…

読了 5 分
【Vibe Coder #6】昨日は動いたのに今日は動かない。コードを触っていないのになぜ?のカバー画像

「コードを1行も触っていないのに、昨日まで正常だったアプリが今日は動きません。」バイブコーディングのコミュニティで最もよく見かける嘆きであり、最もミステリアスに感じる状況です。幽霊の仕業のようですが、実際の容疑者は数人に絞れます。順番に調べれば、ほとんどは午前中に解決できます。

まず、1つ前提を正しましょう。「何も変えていない」とは「自分のコードを変えていない」という意味にすぎません。アプリは真空中で動いているわけではありません。ブラウザ、数百の外部ライブラリ、他社のサーバー(OpenAIやSupabaseなど)、料金プランの上で動いています。**自分が何もしなくても、世界は変わります。**今回は、変化するものの一覧です。

容疑者1:ブラウザキャッシュ — 古いコピーを見ている

ブラウザは速度向上のため、一度取得したファイルを保存して再利用します。この保存データがキャッシュです。アプリが新バージョンになったのに、ブラウザが古い保存データを使い続けると問題が起きます。新旧のコードが混ざり、奇妙な動作になるのです。

確認方法は簡単です。**シークレットウインドウ(プライベートブラウズ)で開きます。**シークレットウインドウはキャッシュを使わないため、そこで正常なら犯人はキャッシュです。強制再読み込み(MacはCmd+Shift+R、WindowsはCtrl+Shift+R)でキャッシュを無視して再取得すれば解決します。この30秒テストを最初に行うのは、意外にもここで解決するケースが多いからです。

容疑者2:依存関係 — 他人のコードが変わった

アプリのコードの大半は、実は自分のものではありません。ログイン、画面描画、日付計算などの共通機能には、世界中の開発者が作って公開したライブラリを利用します。通常は数百個が絡み合っており、これらを依存関係と呼びます。プロジェクトフォルダにある巨大なnode_modulesフォルダが、その倉庫です。

問題は、これらのライブラリがそれぞれ更新されることです。昨日から今日の間に別のコンピューターへプロジェクトを移した、何かを再インストールした、AIが新しいライブラリを追加して既存のものまで更新された——そんな場合、コードが同じでも足元の地面が変わっています。症状はたいてい、突然現れる見慣れないビルドエラーです。そのときはエラー全文と一緒に「昨日以降、依存関係が変わった可能性があります。確認してください」とAIに伝えます。第5回で学んだ伝え方と同じです。

容疑者3:外部サービス — 他人のサーバーが不調

アプリが依存する外部サービスは、他社のサーバー上で動いています。他社のサーバーは故障し、メンテナンスを行い、ポリシーも変わります。

  • 障害:OpenAI、Supabase、Vercelなどのサービスは、すべてステータスページ(status page)を運営しています。「OpenAI status」のように検索すれば、現在障害が起きているかすぐ確認できます。障害なら、自分にできることはありません。待てばよいのです。
  • 上限と期限切れ:より静かな容疑者はこちらです。無料クレジットの消費、無料プランの月間使用量超過、登録カードの期限切れ。サービスは昨日までの好意を、今日ひっそり取り下げます。各サービスのダッシュボードでUsage・Billingメニューを開けば、すぐに確認できます。

容疑者4:実は昨日の自分 — 何かを変えた

最後の容疑者は、認めたくないあの人です。寝る前に「小さなことを1つだけ」直した、あるいはAIに頼んだ修正で思った以上のファイルが変更されたのかもしれません。幸い、第3回で学んだGitがアリバイ台帳を持っています。AIに「昨日以降のコミット履歴と変更ファイルを見せて」と頼めば終わりです。記録は記憶より正直です。

昨日は動いたのに今日は動かないときの確認フロー:シークレットウインドウテスト、Git履歴の確認、外部サービスの状態確認、エラー収集の順に進める
捜査は安いものから。30秒のシークレットウインドウテストが必ず1番です

調査の順番:安いものから

重要なのは順番です。安くて速い確認から、費用も時間もかかる確認へ進みます。

  1. シークレットウインドウテスト(30秒):動けばキャッシュです。強制再読み込みで解決します。
  2. Git履歴の確認(1分):「昨日以降、何が変わった?」変更があれば、それが有力な容疑者です。
  3. 外部サービスの状態・使用量(3分):ステータスページとダッシュボードのUsage・Billingを確認します。
  4. エラー収集後にAIで調査(その後):3つとも問題なければ、第5回の手順どおりブラウザコンソールとサーバーログを集め、AIに調査させます。

この順番を飛ばして4番から始めると、AIが正常なコードを「修理」し、本当の問題を作ってしまいがちです。コードを直すのは、いつでも最後の手段です。

「NOTHING CHANGED THE WORLD DID」という文言とともに、変わらないコードの島を囲むBROWSER CACHE、LIBRARIES、EXTERNAL SERVICES、BILLING PLANの地殻プレートが動くイラスト
自分のコードが止まっていても、足元のプレートは動き続けています

まとめ

  • 「何も変えていない」とは「自分のコードを変えていない」というだけです。ブラウザキャッシュ、ライブラリ、外部サービス、プランは変わり続けます。
  • シークレットウインドウで動くならキャッシュです。強制再読み込みで解決します。
  • 見慣れないビルドエラーが突然出たら、依存関係の変更を疑います。
  • 外部サービスのステータスページとUsage・Billingメニューは、ブックマークしておく価値があります。
  • 捜査は安いものから:シークレットウインドウ → Git履歴 → 外部サービスの状態 → ログ収集後にAIで調査。コード修正は最後です。

次回は、誰もが恐れるテーマ、料金爆弾です。AI API・DB・ホスティング料金がそれぞれどのような構造で請求されるのか、そして爆弾を未然に防ぐ安全装置の設定方法を扱います。

あわせて読みたい