✔️

AIと一緒に原因を特定する 4つのテストを1日で通した手法

に公開

結論──AIを「コード生成」ではなく「失敗の構造化」に使うと、問題解決速度が劇的に上がる

今日の作業で直面した問題はこうでした。

契約テストが4件すべて失敗しているのに、エラーメッセージから原因が掴めない。

単純に「コードを直す」ではなく、
AIを使って「どこで、なぜ、構造的に失敗しているのか」を掘り下げ、
根本原因を特定して、テストを4/4 PASSにしたのが今日の成果です。

問題──テストがすべて落ちたのに、何も見えない

対象は Next.js + Supabase 構成の Admin Settings API。
テストでは「管理者だけが設定を更新できること」を確認していました。

ところが実行すると:

FAIL tests/contracts/admin.settings.stage3.contract.test.ts
admin.settings.stage3
× GET: forbidden for non-admin
× GET: returns normalized booleans
× POST: rejects non-admin
× POST: validates booleans

──詳細ログが一切出ない。
さらに console もモックされていて、
「どこで落ちているのか」も見えない状態。
ここから構造的な原因の洗い出しが始まりました。

アプローチ──失敗を3層に分けて読む

最初にAI(ChatGPT)にこう伝えました。

このテストは4つとも落ちているが、根本原因を3層で仮説化して。

AIが提示した構造は次の3層でした。

モジュール解決層:jest.doMock() の alias が解決できていない

モック依存層:auth.getUser() と supabase.from() の順序競合

レスポンス層:NextResponse のスタブが headers.set を持たない

これで「何を調べるべきか」が一気に明確になりました。
AIが「エラーの意味」ではなく「構造の歪み」を示してくれたのが大きかったです。

手順──AIに“再現チェックプロンプト”を生成させる

次にAIへこう指示しました。

今の状況を静的解析して、修正ではなく“再現チェック用プロンプト”を生成して。

AIが出力したのは、依存関係を網羅的に検証するリストでした。
これが事実上、**「テスト構造の地図」**になりました。

結果として見つかったのは次の3点。

src/lib/auth/isAdmin → ファイルが存在せずモック解決失敗

src/lib/supabase/server → 相対パス誤り

getAppSettingBoolean → alias モック抜け

全FAILの共通点は、import解決の不整合でした。

修正──AIに“最小修正プロンプト”を作らせる

ここでもコードはAIに書かせず、
「どの行をどう直せば最小変更で通るか」という方針だけ生成させました。

AIが提案した修正(抜粋):

jest.doMock('@/lib/supabase/server', impl)
jest.doMock('../../src/lib/supabase/server', impl)
// jest.doMock('src/lib/supabase/server', impl) は削除

この後、getAppSettingBoolean の alias も統一し、テストを再実行。

結果──構造の一貫性をAIに守らせる

修正後の結果は次の通り。

PASS: tests/contracts/admin.settings.stage3.contract.test.ts
Tests: 4 passed, 0 failed

原因は「単なる import ミス」でしたが、
問題はその特定までの思考コストにありました。

AIを“生成ツール”ではなく整合性を監査する相棒として使ったことで、
同じ問題を再発しない「構造の理解」が手に入りました。

学び──AIは「デバッグ補助」ではなく「整合性エンジン」

AIにコードを書かせるのではなく、
構造を読み解かせる。
それが今回最も効率的だったアプローチです。

人間:意図と優先順位を決める

AI:構造と依存の整合を守る

この役割分担を意識すると、AIは単なる補助ではなく、
プロジェクト全体の一貫性を維持する役割を果たすようになります。

まとめ──AIで“失敗を読む”という技術

エラーが起きた時に「コードを修正する」だけでは不十分です。
大切なのは「どんな構造で破綻しているのか」を理解すること。

AIを構造解析の相棒として使えば、
“失敗を読む力”がシステム全体の安定性を高める。

今日の成果は「4件のテストを通したこと」ではなく、
AIを使って失敗の構造を再現・理解できるようになったことでした。

Discussion