In Silico

AI・信頼性・評価

AI出力の検証と、生成前の仕様設計

2026/7/16 (更新: 2026/7/16) シリーズ「AI協働への姿勢」 第3回 / 全9回

※ 概念図(フロー) ① 仕様を先に固める(生成の前) 実行可能な受け入れ基準で意図をあらかじめ固定 曖昧なままだとAIが「もっともらしく」埋め、静かにずれる ② AIが生成する 速く・大量に・整って返る(が、それ自体は保証ではない) ③ 検証してから渡す(生成の後) 機械ゲート・敵対的検証で判定できる性質を殺す 高リスクは精査、可逆で低リスクは抜き取り監査へ 要点:速く返るものを、そのまま渡さない 仕様(前)と検証(後)の二面の関所は、AI以前からの規律 言語化できない品質・正解のない評価は、なお人間の差し戻し
※ 概念図(フロー)・作図:AI。記事の要点を図式化したもので、測定データではない。

AIの書いたプルリクエストを前に、手が止まる。差分は三百行、型は通り、テストも緑。だが、これをどうレビューすればいいのか。中身を全部読む気力はない。かといって素通しは怖い。

逆の失敗もある。「いい感じにログ基盤を整えて」とだけ頼むと、AIは立派な構成を返してくる。よくできている。ただ、本当に欲しかった要件は一つも入っていない。指示が曖昧だったぶんを、AIが「それらしく」埋めるからだ。

この二つは別の失敗に見えて、根は同じだ。速く大量に返るからこそ、渡す前にやるべきことが露わになる。そしてそのやるべきことは、AI以前からずっとあった。

レビューの目的は、欠陥を全部捕まえることではない

まず、レビューは何のためにあるのか。ここを取り違えると、AIが来た瞬間に道具ごと壊れる。だから実行方法より先に、目的を据える。

Googleが自社のコードレビュー運用を調べた研究で、Sadowskiらはこう報告している。レビューの第一の動機はもはや欠陥発見ではなく、コードベースの長期的な健全性を保ち、知識と規範をチームへ移すことへ移った、と。しかもレビューは軽量で、変更は多くの場合小さい1。Googleが自社のエンジニアリング文化を明文化した書物でも、レビューはコードの完璧さではなく長期的な健全性のための仕組みだ、と繰り返し語られる2。つまり——レビューの第一の目的はコードベースの健全性を守り、知識と規範を移すことであって、欠陥発見はその副産物にすぎない

目的をこう据えると、実行方法はほぼ自動的に決まる。注意は有限だ。守るべきが健全性なら、レビューは網羅(量)ではなく、限りある注意を危険の濃いところへ配ることになる。不可逆な変更、影響範囲の広い変更、静かに失敗する変更には深く。可逆で低リスクな変更には浅く。均一な網羅は、むしろ注意の誤配分だ。決定的な差分に注ぐべき精査を、何も買わない差分で使い切ってしまう。

そしてこの目的は、AIが来ても変わらない。AIは人間がすでに走らせてきた流れに乗るだけで、その流れには昔から関所があった。コードレビュー、多層防御、trust but verify、変更管理のゲート、出典の吟味。全部AI以前の規律だ。だから「AIが作ったからゲートが効かない」という嘆きは、AIの問題ではない。ゲートの問題だ。AI出力を捕まえられないゲートは、最初から弱かった。速い生成が、その弱さを露わにしただけだ。

ただし、AI特有のほころびが一つある。レビューが知識と規範の移転なら、それは変更を書いた本人が変更の理屈を持ち、レビュアーの問いに答えられることを前提にしている。AI出力にはその著者がいない。だから関所は残る。抜けたのは、関所を通す側の理屈のほうだ。

危険の濃さで、精査の深さを変える

では、この目的からどう関所を張るか。配り方は、二つの問いだけで決まる。その性質は機械が判定できるか。外したとき、被害はどれだけ大きく、取り返せるか。 これで、どの差分をどの関所に流すかが決まる。

初期値はこうだが、深さは行数ではない。「三百行すべてに目を通した」は「精査した」ではない——存在を確かめただけで、正しさを問うたことにはならない。

だから、人間の手をどこへ残すかも同じ原則で決まる。機械がすでに保証できる場所は、機械に譲る。今後さらに自動化できるなら、なおのこと譲る。腕が鈍るのを恐れて、自動化できる仕事にわざわざ人が手を出すのは本末転倒だ。希少な人間の判断は、機械の保証がまだ届かない場所にこそ集める。

曖昧な指示では、欠けた仕様をAIが埋めてずれる

もう一つの錯覚に移る。「曖昧に頼んでも、AIが意図を汲む」というものだ。生成が安くなると、ボトルネックは仕様の質へ動く。仕様が欠けていると、AIはそこを「もっともらしく」埋める。埋めた内容が意図とずれても、AIは教えてくれない。静かにずれたまま、速く大量に返ってくる。

ここでも同じだ。判定できる意図を生成の前に固定し、AIの埋め合わせが静かにずれる余地を先に消す。

これは新しい問題ではない。要求工学、受け入れ基準、TDD。意図を固定する仕事は、AIよりずっと前からソフトウェア工学の中心にあった。実行可能な受け入れ基準を先に書くと、要求の曖昧さが実際に減ると、人間の被験者を対象にした実験で示されている5。一方でNaurは1985年に、プログラムを書くとは文書に書き尽くせない「理論」を頭の中に築くことだと論じた。自然言語の指示は完全な仕様になりえない6。この二つは矛盾しない。固定できる意図は固定で減らせるが、固定しきれない意図は必ず残る。

検証可能性と表現力は、引き換えになる

だから鍵は「どの形で固定するか」だ。ここに一つのトレードオフがある。仕様の形が機械で検証しやすくなるほど、掴める意図は「運用できるもの」に狭まる。逆に散文は何でも書けるが、機械では確かめられない。この引き換えが、形の選び方を決める。だから固定する形は、意図の性質で決まる。

つまり、曖昧さが高くつく場所を、その意図を掴める最も検証可能な形で固定する——それだけだ。狙うのは「言った通り」ではなく「意図した通り」。一発で通そうとせず、対話で寄せていく。

昔からの規律で足りる部分と、足りない部分

強い反論を先に置く。「昔の規律で足りるなら、なぜ皆これほど慌てるのか」。答えは残酷だ。おそらく、正当なレビューも意図の固定も、もともと十分には身についていなかった。速い生成が、その欠落を可視化しただけだ。

とはいえ、歴史が半分しか答えない部分もある。正解のない生成物を、参照なしで「良し悪し」まで評価すること。多層防御が前提にしてきた「懐疑的な人間の査読者」を、AIの流暢さが静かに侵食すること。人間は自動化の出力を過信し、監視を緩めやすい——自動化バイアスとして繰り返し観測されてきた癖だ7。そして、美的判断や暗黙知のように、完全には言語化しきれない意図。要求工学はここを掴みきれない。この残りは、いまも人間の差し戻しに頼っている。

出典

  1. [positive] C. Sadowski, E. Söderberg, L. Church, M. Sipko & A. Bacchelli, “Modern Code Review: A Case Study at Google,” ICSE-SEIP (2018). Googleではコードレビューの第一の動機が欠陥発見から、コードベースの健全性維持と知識・規範の共有へ移っている、と報告する。レビューは軽量で変更も小さいことを示す。 https://doi.org/10.1145/3183519.3183525

  2. [positive] T. Winters, T. Manshreck & H. Wright (eds.), “Software Engineering at Google,” O’Reilly (2020), Ch.9 “Code Review”. コードレビューはコードの完璧さではなく長期的な健全性を守るための仕組みだ、と自社の実践としてまとめている。 https://abseil.io/resources/swe-book

  3. B. Meyer, “Applying ‘Design by Contract’,” Computer (IEEE), vol. 25, no. 10 (1992). 事前条件・事後条件・不変条件をソフトウェアの正しさに関する機械可読な「契約」として書き、破れば機械的に検出できるようにする設計法。判定できる性質を機械のゲートに落とす根拠。 https://doi.org/10.1109/2.161279

  4. J. Bezos, “2015 Letter to Shareholders,” Amazon.com, Inc. (2016). 決定を「一方向の扉」(不可逆・ほぼ取り返せない=慎重に)と「双方向の扉」(可逆・戻せる=軽く速く)に分け、後者に重い手続きを課すのは誤配分だと説く。可逆な変更を抜き取りで通す根拠。 https://s2.q4cdn.com/299287126/files/doc_financials/annual/2015-Letter-to-Shareholders.PDF

  5. [positive] F. Ricca, M. Torchiano, M. Di Penta, M. Ceccato & P. Tonella, “Using acceptance tests as a support for clarifying requirements: A series of experiments,” Information and Software Technology, vol. 51, no. 2 (2009). 実行可能な受け入れ基準が要求の曖昧さを実際に減らすと実験で示し、「意図は伝わらない」に留保をかける。 https://doi.org/10.1016/j.infsof.2008.01.007

  6. [negative] P. Naur, “Programming as Theory Building,” Microprocessing and Microprogramming, vol. 15 (1985). 自然言語の指示は完全な仕様になりえない、というNaurの古い洞察。 https://doi.org/10.1016/0165-6074(85)90032-8

  7. [negative] R. Parasuraman & D. H. Manzey, “Complacency and Bias in Human Use of Automation: An Attentional Integration,” Human Factors, vol. 52, no. 3 (2010). 人間は自動化の出力を過信して監視を緩めやすい(自動化バイアス/コンプレイセンシー)と、多数の実証研究を統合して示す。人間の査読を最後の関所に据えるときの弱点を照らす。 https://doi.org/10.1177/0018720810376055

この記事はAIが下書きし、人間が編集・公開しています。