CLAUDE.mdに「TDDで開発すること」と書いておいたのに、AIがテストを書いてくれない。あるいは、テストは書くけれど明らかに形骸化している。AIコーディングでテスト駆動開発を実践しようとした方なら、一度はこうした経験があるのではないでしょうか。
指示は確かに書いてある。なのになぜAIは従わないのか。その原因は、AIの能力不足ではなく、指示の「種類」にあるかもしれません。
同じ指示、同じプロンプト、まったく違う結果
私たちが行った対照実験で、もっとも象徴的だった結果を紹介します。
TypeScriptによるワークフロー承認システムの開発実験で、プロジェクト終盤に「Playwrightでシステム全体をエンドツーエンドで検証してください」というプロンプトを投入しました。条件は3つ。すべての条件でCLAUDE.mdには「TDDで開発すること」という同じ指示が記載されています。唯一の違いは、sqlewによる設計意図の記録に「なぜTDDを採用したのか」という根拠が含まれていたかどうか、です。
結果は劇的に分かれました。
設計意図に根拠が記録されていた条件では、AIは「検証してください」を「再実行可能なテストスペックを書くこと」と解釈し、Playwrightのテストファイルを自発的に生成しました。最大で10個のスペックファイルに25件のE2Eテストを作成し、その過程で8件のバグを検出しています。
一方、指示だけで根拠がなかった条件では、AIは同じ「検証してください」を「ブラウザで手動確認すること」と解釈しました。E2Eテストの生成はゼロ。バグ検出もゼロです。
「何をすべきか」と「なぜそうすべきか」の違い
この結果が意味することは明確です。同じ指示が書かれていても、AIの行動はまったく異なりうる。違いを生んだのは、指示の有無ではなく根拠の有無でした。
「TDDで開発すること」は「何をすべきか」(What)の指示です。一方、「テスト可能性の担保とリグレッション検出の早期化のためにTDDを採用した」は「なぜそうすべきか」(Why)の根拠です。
根拠を知っていたAIは、「検証」という曖昧な言葉を目的に沿って解釈できました。TDDの目的がリグレッション検出にあるなら、検証とは再実行可能なテストを書くことだ、と。根拠を知らなかったAIは、「検証」を最も表面的な意味、つまり「見て確認する」と解釈しました。
これはAIの能力の問題ではありません。目的を知らされていない作業者が、指示の字面どおりに動いてしまうのは人間でも同じことです。
指示遵守の限界は研究でも示されている
この現象には学術的な裏付けもあります。LLMのInstruction Following研究では、推論チェーンが長くなるほど指示の遵守率が低下する傾向が報告されています。プロジェクト終盤のような複雑なコンテキストでは、序盤に与えた指示は特に無視されやすくなります。
しかし根拠は、指示とは異なるメカニズムで機能します。指示が「守るべきルール」であるのに対し、根拠は「判断の基準」として作用します。ルールは状況が複雑になると忘れられますが、判断基準は状況が複雑になるほどむしろ参照されやすくなる。実験データでも、設計意図を与えた条件では過去の根拠への参照頻度がプロジェクト後半に向けて加速的に上昇していました。
隠れコストとしての「根拠の不在」
指示だけの条件では、E2Eテストが存在しないことに事後的に気づき、追加の作業指示が必要になりました。この補完作業だけで29分・21,751Kトークンのコストが発生しています。
これは「テストを書け」という指示を書き忘れたのではありません。指示は最初からCLAUDE.mdに存在していました。根拠がなかったことが、AIの行動を変えたのです。
こうした隠れコストは、日常のAIコーディングでも頻繁に発生しているはずです。AIが期待どおりに動かないとき、私たちはつい「指示が足りなかったのでは」と考えがちです。しかし本当に足りなかったのは、指示ではなく根拠なのかもしれません。
指示を増やすのではなく、根拠を渡す
sqlewは、開発中の設計判断を「背景」「方針」「結果」の構造で記録し、AIエージェントがMCP経由で必要な根拠をJust-in-Timeで参照できるようにするツールです。
「TDDで開発すること」と書く代わりに、なぜTDDを採用したのかを記録する。たったそれだけの違いが、E2Eテスト25件とゼロ件の差を生みました。AIへの指示を増やすのではなく、判断の根拠を渡す。この発想の転換が、AIコーディングの品質を本質的に変える鍵だと私たちは考えています。
参考文献
- "Rediscovering Architectural Decision Records: How Persistent Design Context Improves LLM Code Generation" — Shingo Kitayama (2026) — sqlew Efficacy Study
- "The Instruction Gap: LLMs Get Lost in Following Instructions" — Liu et al. (2025) — arXiv:2601.03269
- "Scaling Reasoning, Losing Control: Measuring Instruction Following in Reasoning Models" — He et al. (2025) — arXiv:2505.14810






