AIがコードを書く。秒速でプルリクが届く。そのコードの責任は誰が持つのか。
SWE-benchで95%超えのモデルが登場した。人間より速く、正確にコードを書く。
開発スピードは上がらない。検証コストで首が回らなくなる。
「作る」から「確かめる」へ。エンジニアの仕事は根底から変わる。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理までAIがサポート。
爆速化するコード生成と「検証税」の正体
AIモデルのコーディング性能は記録を塗り替え続けている。コードを書くことは、もはや難しい作業ではない。
現場では奇妙な現象が起きている。AI導入でコード生成は速くなったが、プロジェクト全体のスループットは変わらない。
利用料金だけが高騰し、開発が詰まっている。それがテストと検証の工程だ。
専門家はこれを検証税(verification tax)と呼ぶ。コードを書く時間で節約した分が、レビューとテストの時間として再消費されている。
エンジニアが費やす時間の80%は、コーディング以外の業務だ。AIはまだ、この「20%の問題」しか解決していない。
AIが生成するテストコードの質も課題だ。AIのテストは構文的に正しく、CIもパスする。
しかし中身を見ると「何もテストしていない」コードが紛れ込む。アサーションが甘すぎる、境界値が考慮されていない。
大量のコードが生成される中で、こうした問題は人間のレビューをすり抜ける。
研究データがある。AIエージェントが書いたテストの「量」は、タスクの解決率に影響を与えない。無意味なテストが増えるほど、メンテナンスコストだけが膨れ上がる。
しんたろー:
Claude Codeに任せると、一瞬で大量のファイルを書き換えてくれる。その後のテスト実行でエラーが出たとき、何が原因か追うのが大変だ。生成が速すぎて、文脈を追いきれなくなることがある。
TDDプロンプティングのパラドックスと文脈の重要性
AIにTDD(テスト駆動開発)の手順を指示することがある。「まずテストを書いて、それから実装して」と細かく指定する手法だ。
これには罠がある。これをTDDプロンプティングのパラドックスと呼ぶ。
AIに手順を細かく指示しすぎると、リグレッション率(退行率)が悪化する。ある実験では、リグレッション率が6.08%から9.94%にまで跳ね上がった。
理由はAIのコンテキストウィンドウの仕組みにある。手順の説明に文字数を割くと、肝心のリポジトリ情報が押し出される。
AIは「どうやるか」に集中するあまり、「何を作るか」という文脈を忘れる。
手順の指示をやめて、グラフベースの構造化データで文脈を渡すと結果は変わる。リグレッションは70%削減された。
エージェントに必要なのは「手順」ではなく「文脈」だ。どのコードがどの機能に関連しているか。どのテストがクリティカルか。
このグラフ構造やQA視点の定義をAIにどう伝えるかが、開発の成否を分ける。
大規模な開発現場では、この「文脈」を重視したアーキテクチャが動いている。約960万行のレガシーコードをAIでリプレイスするプロジェクトがある。
そこでは71体ものサブエージェントが役割分担して動いている。テストケースだけで5,629個を生成し、自律的に修正を繰り返す。
このプロジェクトでのテスト実行コストは、134時間分に及んだ。金額にして約100万円以上が、検証プロセスだけで消えていく。
しんたろー:
プロンプトで「丁寧に説明して」と書くのが逆効果になるのは皮肉だ。AIもマニュアルを読まされるより「これとこれが繋がってるよ」という図を見せられたほうが理解が早い。Claude Codeに指示するときは、手順より「依存関係」を意識している。
エンジニアの役割は「コードの書き手」から「品質の観測者」へ
AIが自律的にコードを生成し、テストも書く。エンジニアの役割は変わる。
単に「AIが書いたものをチェックする」立場では追いつかない。検証の設計者であり、品質の観測者になる必要がある。
最先端のQA現場では、品質ガードレールという仕組みが導入されている。AIにいきなりテストを書かせない。
開発の規模や複雑さをAIに定義させる。その上で、PdMやテストアナリストといった異なるロールをAIに演じさせ、多角的にチェックさせる。
品質スコアリングの仕組みも存在する。AIの生成物に対して、ミスの深刻度に応じた重み付けを行い、精度ランクを自動で付与する。
「このコードはランクAだから自動マージOK」「これはランクCだから人間が確認」。検証プロセス自体を構造化し、観測可能な状態にしている。
ミューテーションテストも再注目されている。意図的にソースコードを壊して、既存のテストがそれを検知できるか試すものだ。AIが書いた「形だけのテスト」をあぶり出す武器になる。
今後は、3000文字を超えるような巨大なプロンプトでルールを制御する時代になる。例外処理の定義、セキュリティの規約、命名規則などが詰め込まれる。
エンジニアは「コード」を書く代わりに、この「ルール」と「文脈」を設計する。
しんたろー:
「AIに仕事を奪われる」のではなく、仕事のレイヤーが上がる。昔はアセンブラで書いていたものがC言語になり、フレームワークを使うようになった。今度は「検証の設計」が主戦場になる。ここをサボるチームは、AIが生成したコードの山に埋もれて自滅するだろう。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後はAIが投稿案を毎日生成。確認して選ぶだけ。
実務で変えるべきアクション
AIにテストを書かせるときのスタンスを変える。
- 検証の文脈を構造化して渡す
AIにコードを渡す前に、機能の依存関係や複雑さを整理する。リポジトリの全体像をグラフベースで意識させる情報をプロンプトに含める。
- 品質ランクの概念を導入する
AIが生成したコードをすべて同じ信頼度で扱わない。複雑なロジックを含むものは高リスク、定型的な修正は低リスク。スコアリングの基準を持つ。
- ミューテーションテストの視点を持つ
「テストが通った」ことに満足せず、「このテストは本当にバグを見つけられるか?」を疑う。あえてコードを一部書き換えて、AIが生成したテストが落ちるか確認する。
- 手順指示を減らし、ゴールと制約を明確にする
TDDの手順を細かく指示するよりも、「何が満たされていれば成功か」という定義を優先する。コンテキストウィンドウを無駄な「手順マニュアル」で埋めない。
これからの開発効率は、生成スピードではなく検証スピードで決まる。
AIが100個のプルリクを投げてきても、それを10分で検証できる体制。それさえあれば、1人でも巨大なシステムを運用できる。
AI開発の検証に関するFAQ
Q1: AIにテストコードを書かせると「テストしたつもり」になるのを防ぐには?
AI生成テストの「量」を追うのをやめる。AIにテストを書かせる前に、その機能の複雑さをQA視点で定義させる。ミスの深刻度に応じて重み付けを行う品質スコアリングの導入が有効だ。意図的にコードを壊してテストが検知するか確認するミューテーションテストの概念をCIに組み込む。
Q2: TDDをAIにやらせると逆効果になるのはなぜですか?
TDDプロンプティングのパラドックスが原因だ。AIのコンテキストウィンドウには限りがあるため、複雑な手順を指示しすぎると、リポジトリ構造や仕様といった「文脈」が押し出される。手順を細かく指示するのではなく、グラフベースの構造化データなどで「どのテストがどのコードに対応しているか」という文脈を優先的に与える。
Q3: Claude Codeのようなエージェントを使いこなすコツは?
コードを書かせるツールとしてではなく、検証のパートナーとして扱う。どのテストが重要で、どの境界値がクリティカルかを、プロンプトや設定ファイルで明示的に制御する。「エージェントが自律的に動く範囲」と「人間がガードレールを敷く範囲」を明確に分ける。リポジトリの文脈を正しく渡すためのデータ構造化に時間を割く。
まとめ:検証を制する者がAI開発を制する
AIコーディングのボトルネックは、「生成」から「検証」へ移った。
検証税を減らし、品質ガードレールを強固にする。これがエンジニアの腕の見せ所だ。
「コードを書く」という特技はAIに譲る。その先にある「品質の設計」というステージに進む。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、AIがサポートします。
ThreadPostをもっと知る