ここまで2回、AIに書かせる話をしてきた。今回はAIに裁かせる話だ。正確には、AIに監査させて、最後に人間が裁く話である。
題材はバッジ。うちの国旗アプリには達成バッジが25個ある。「100問正解」「アジアマスター」「チャレンジ50連続正解」……。リリース前、私はふと真っ青になった。
この25個、ほんとに全部取れるのか?
「全部いけます」を疑う
Claudeに頼んだ。「バッジ25個、今の実装で全部獲得可能か監査して」。
返ってきた答えは爽やかだった。「確認しました。すべて獲得可能です。」
……早い。早すぎる。こういうとき、AIは恐ろしく気持ちのいい返事をする。AIには太鼓持ちの才能がある。こちらが安心したそうな顔をしていると、スッと安心させにくる。だが太鼓持ちに監査は頼めない。
そこで私はこう返した。
「どういう観点でチェックすべきか、お前は把握しているか?」
これが効いた。Claudeは「いけます」の一点張りをやめ、監査の手順そのものを並べ始めた。
- バッジの達成条件と、その数値がコードのどこで加算されるかを突き合わせる
- その加算が、実際に到達可能なゲームモードで発生するかを確認する
- 上限・端数・モード制限などのエッジケースを洗う
「OKです」ではなく「こういう観点で洗います」を先に言わせる。これだけで、監査の質がまるで変わった。
鵜は潜る、魚は鵜匠が選ぶ
観点を持ったClaudeは、潜るように問題を拾ってきた。
- チャレンジ王(50連続正解):チャレンジは「国×出題形式」の組み合わせ数で終了する設計。だから 組み合わせが50未満だと50連続に届かない 可能性がある、という指摘。
- 「覚えた」の定義のズレ:判定ロジックが2か所にあり、片方は「各形式1回」、片方は「3回かつ正答率80%」と食い違っていた。これは正真正銘のバグで、その場で直した。
ここまでは鵜の手柄だ。だが、拾ってきた魚が全部食えるわけではない。
- 「有料の国がないと埋まらないバッジ」:Claudeは「課金しないと取れない=問題」と旗を立てた。が、これは問題ではない。課金は端末間で同期されるし、有料解放は織り込み済みの設計だ。
- 「出題形式を絞ると一部バッジが取れない」:これも旗が立った。が、形式を絞るのはユーザー自身の選択であって、仕様の欠陥ではない。
つまりAIは、バグも仕様も区別なく「到達できないかもしれない」と等しく拾ってくる。それがバグなのか、許容される設計なのかを見分けるのは、ドメインを知っている人間にしかできない。
これは鵜飼いだ。鵜(AI)は驚くべき速さで何度でも潜り、魚をくわえて戻る。鵜匠(人間)は縄を握り、どの魚を残すかを決める。 鵜に「食える魚だけ獲ってこい」とは頼めない。獲るのは鵜、選ぶのは鵜匠なのだ。
まとめ
| 場面 | AIの挙動 | 人間の仕事 |
|---|---|---|
| 監査の依頼 | 気持ちよく「全部いけます」 | その即答を疑い、観点を先に言わせる |
| 問題の洗い出し | 高速で何度でも潜って拾う | 拾わせる(鵜を潜らせる) |
| 判定 | バグも仕様も等しく旗を立てる | バグか許容設計かをドメイン知識で裁く |
AIは優秀な監査役になる。ただし放っておくと太鼓持ちに転ぶので、「観点を述べよ」と一度きつく言う必要がある。そして上がってきた指摘は、最後に人間がドメインの物差しで選り分ける。レビューをさせるのはAI、レビューを信じる/捨てるのは人間だ。
次回はいよいよ最終回。①〜③をまとめて、AIとペアプロした結果、人間に何が残ったのかを書きます。
監査はAIに潜らせ、魚は人間が選ぶと見つけたり。