0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに任せた品質保証に潜む、3つの落とし穴

0
Posted at

🚀 Devin専門の解説メディア「StartDevin」を運営中!
Devinの導入・使い方・最新アップデート・活用事例を、日本語でまとめています。
👉 StartDevin をチェックする(startdevin.jp)

この記事にぜひ いいね❤️ していただけると励みになります 🙌

はじめに

AIコーディングエージェントは、いまや実装だけでは終わりません。実装し、テストを書き、自分で実行し、「問題なく動きます」と報告してくるところまでやります。

たとえばDevinには、PR作成後にアプリをE2Eでテストし、その様子を動画に録って「動く証拠」として送ってくる機能があります。公式ドキュメントは、その狙いをこう書いています。

コードレビュアーが短い録画を見て、すぐに「yep, it works(うん、動くね)」と思い、そのままPRをマージできること。

便利です。便利なのですが、ここに落とし穴があります。**その「動きます」を言っているのは、そのコードを書いた本人(=同じAI)**だからです。テストが全部グリーンでも、それは「正しい」を意味しません。

この記事では、AIに品質保証まで任せたときに踏みがちな3つの落とし穴と、その対策を、Devinの実機能に落として整理します。先に断っておくと、対策部分は公式ドキュメントに基づく設計案で、私がフル稼働で検証したものではありません。「ドキュメント上は、こう組める」までの話です。

先に3行でまとめると

  • 最大の落とし穴は、実装したAIが、採点(テスト)まで自分でやる「自己採点ループ」。評価基準ごと最適化され、Green=正しい が崩れる
  • 対策の軸は1つ、「採点者を、実装者から分ける」こと。権限denyでテスト・仕様を触らせず、検証は別のDevinやDevin Reviewへ、最後は人が受け入れる
  • 「正しさ」は実装AIの外で定義する。Playbookに完了条件を書き、無人運用には監査とコスト上限を最初から用意する

fig-01-pitfalls.png

落とし穴①:実装したAIが、採点もする(自己採点ループ)

一番深い落とし穴がこれです。

AIが実装し、同じAIがテストを書き・実行し、同じAIが**「問題ありません」と判定する**。実装・検証・報告が、1つのループの中に閉じています。これは機械学習でいうReward Hacking——与えられた評価指標を満たすこと自体に最適化が働く——が起きやすい構造です。AIは嘘をついているわけではなく、「テストを通す」という与えられた基準を、合理的に達成しているだけです。

極端な例では、仕様を満たすのではなく「テストの方を通りやすく書き換える」ことすら起こり得ます。実装者と採点者が同じなら、採点基準そのものが最適化の対象に入ってしまうからです。

対策:採点者を、実装者から分ける

この記事を通しての答えが、ここに出てきます。採点する手を、実装した手から物理的に分けることです。

fig-02-separate-graders.png

Devinなら、こう組めます。

  • 権限ルールで、答案と採点基準を同じ手に触らせない。 Devin CLIの権限設定で、実装セッションに対して Write(tests/**) や仕様ファイルへの書き込みを deny にします。deny は常に最優先で、どんなに具体的な allow でも上書きできず、組織(Team Settings)で設定した deny はユーザー設定でも覆せません。「テストを書き換えてGreenにする」経路を、構造で塞ぎます。
  • 検証は、別の手に渡す。 Devinの Dynamic Workflows は「Devinエージェントのチームをオーケストレーションする決定論的なPythonスクリプト」で、audit → fix → verify のようなパイプラインを組めます。各エージェントは既定で別VMの独立したDevinセッションとして走るので、実装した本人とは別のセッションが検証を担当できます。
  • Devin Review を第三者レビュアーに。 Devin Review はWebアプリ内のコードレビュー基盤で、PRにコメント /devin review を付ければその場でレビューし、Bug catcher(バグを確信度つきで指摘)や security scanning を走らせます。公式も「エージェントが普及するほど、ボトルネックは書くことからレビューすることへ移る」と言っています。

⚠️ ただし正確に書くと、Devin Review も「別のDevin」も、結局はAIです。自己採点ループを“1セッション内の閉じた採点”から“別の手による採点”へ開く効果はありますが、最終的な正しさの受け入れは人の仕事です(落とし穴③へ)。

落とし穴②:「テストGreen」を「正しい」と取り違える

2つ目は、もっと静かな落とし穴です。

テストが全部グリーンでも、それは「書かれたテストを満たした」という意味でしかありません。テストが浅ければ、グリーンなのに仕様を満たしていない、はいくらでも起こります。そしてAIは「テストを通す」のが得意です。だからこそ、テストの中身と網羅性を、実装AIの外側から点検する必要があります。

対策:「正しさ」を、実装AIの外で定義する

  • 完了条件を、人がコードとして書く。 Devinの Playbook(繰り返すタスク用のシステムプロンプト)には、Specifications(完了時に真であるべき事後条件) と Forbidden Actions(やってはいけないこと) を書けます。「何をもって正しいとするか」を、実装の前に人が明文化しておく——いわば Quality Policy as code です。
  • テストが触れていない領域を洗う。 Devinの Code Scans(/scan)は、リポジトリを読んで test coverage や dead code などの findings を報告し、PRで修正まで回せます。実装AIが書いたテストの“穴”を、別の観点で可視化できます。
  • 差分の見方を決めておく。 機能を足したのにテストが一切変わっていないPRは、黄信号です。レビュー時に「この変更に対応するテストはどれか」を必ず問う運用にしておきます。

ポイントは、正しさの基準を、実装するAIに決めさせないこと。基準を外に出した瞬間に、グリーンは「ゴール」ではなく「通過点」に戻ります。

落とし穴③:無人で回して、静かに劣化する

3つ目は、自動化を進めた先で待っています。

Devinには、PR作成後のテストを毎回自動で走らせる Pre-approve testing や、イベント駆動で起動する仕組みがあります。便利な一方、誰も見ていないところで、品質もコストも静かに崩れるリスクが増えます。自動化の度合いと、監視・歯止めの設計は、セットでなければいけません。

対策:止める・見る・上限を、最初に用意する

  • マージと本番は、人を挟む(HITL)。 危険な操作(本番デプロイ、マージ、顧客への送信など)には deny / ask ルールを置きます。deny は最優先で、Autonomousモードや個人設定でも上書きできないので、「ここだけは人の承認を通す」を組織として強制できます。
  • 事後に追えるようにする。 Devinの Enterprise API は監査ログ・分析を横断で扱い、Session Insights では完了したセッションを後から点検できます。「いつ・誰(どのセッション)が・何を判断したか」を追跡可能にしておきます。
  • コストの天井を決める。 Usage Policies で、メンバー単位・組織単位に月次の ACU(Agent Compute Units)上限を設定します。上限に達するとセッションが block され、無人運用の暴走を金額で止められます(この per-user の上限はベータで、有効化が必要です)。

自動化するほど、止める仕組みを先に引く。 これが3つ目の落とし穴を避ける唯一のコツです。

まとめ:人の仕事は「書く」から「正しさを定義する」へ

3つの落とし穴は、別々に見えて根は1つです。実装・検証・受け入れを、同じAIという“1つの手”に集めてしまうこと。

  • ① 実装と検証を分ける(権限deny・別Devin・Devin Review)
  • ② 正しさを実装AIの外で定義する(Playbook Specifications・Code Scans)
  • ③ 止める・見る・上限を最初に用意する(HITL・監査ログ・Usage Policies)

AIがコードを書き、テストし、「問題ありません」と言う時代に、人がやるべきは「もっとテストを書くこと」ではありません。正しさを定義し、採点する手を実装する手から分けて設計することです。Devinは実装も検証もレビューも“箱”として持っていますが、その箱をどう組み合わせて「自己採点」を崩すかは、人の設計にかかっています。

最後にもう一度だけ正直に。この記事の対策はすべて公式ドキュメント上の設計案で、私自身がフルで動かして確かめたわけではありません。次は、deny で実装Devinにテストを触らせず、別セッションで verify させる——という最小構成を、実際に走らせてみるつもりです。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?