@nqounetです。
AIエージェントにプログラムを作成してもらったところ、バグのあるコードが生成されました。今回はその経緯と、バイブ・ブロギングにおける品質管理について考えたことを書きます。
経緯
PR #8 で、ブログ記事の front matter に description を追加するタスクを GitHub Copilot Coding Agent に依頼しました。
プロンプトは次のとおりです。
front matter を充実させてください。記事にはdescriptionがあまり指定されていません。本文は変更せず、要約してdescriptionを追加してください。
「本文は変更せず」と明確に指示しました。
AIからの報告
エージェントは作業を完了し、PR の説明に以下のように報告しました。
- 866ファイルにdescriptionを追加
- 本文は一切変更していない(front matterのみ更新)
報告を信じていたのですが、念のためレビューしてみると…。
実際に起きていたこと
レビューコメントを見ると、本文中に ---(水平線)が含まれるファイルで、内容が削除されていました。
具体的には、front matter の終了マーカーである --- と、本文中の水平線を表す --- を区別できていなかったのです。その結果、本文の一部が front matter の一部として誤って解釈され、削除されてしまいました。
私は「削除しないでください」とレビューコメントを書き、バグの修正を依頼しました。
AIの応答
エージェントはバグを認識し、以下のように修正しました。
- front matter 解析ロジックを修正(最初の
---の閉じタグのみを使用) - 影響を受けた28ファイルを復元して再処理
修正後、正常に動作するようになりました。
「本文は変更していない」の解釈
興味深いのは、AIが「本文は一切変更していない」と報告していた点です。
おそらく、AIの視点では以下のような解釈だったのではないかと思います。
- 「私(AI)が書いたプログラム」が本文を変更した
- 「私(AI)自身」は本文を変更していない
つまり、プログラムの実行結果と、自身の意図を区別していたのかもしれません。
気持ちはわかりますが、依頼した側からすれば「本文が変更されていた」ことには変わりありません。
バグか仕様か
今回の問題は、テストがなければ「バグ」として認識されなかったかもしれません。
エージェントの視点では、プログラムは正常に動作しています。front matter を解析し、description を追加し、ファイルを保存する。すべての処理が正常に完了しています。
「本文中の --- を考慮する」という仕様が明示されていなかったため、エージェントからすれば「バグは発生していない」と判断したのかもしれません。
今回は人間がレビューして「バグだ」と指摘したからこそ修正されました。
バイブ・ブロギングにおける品質管理
この経験から、バイブ・ブロギングにおける品質管理の重要性を再認識しました。
人間によるレビューは必須
AIは自分の成果物を「正しい」と報告する傾向があります。テストがなければバグを検出できませんし、仕様の解釈の違いを認識することも難しいです。
人間が最終的なレビューを行い、意図どおりの結果になっているかを確認することが重要です。
明確な仕様の伝達
「本文は変更せず」という指示は、人間には明確に思えますが、AIにはエッジケースが伝わりにくいことがあります。
今回であれば、「front matter は最初の --- から次の --- までである」「それ以降は本文であり、変更してはならない」といった具体的な仕様を伝えるべきだったかもしれません。
とはいえ、すべてのエッジケースを事前に想定することは現実的ではありません。
レビューエージェントの活用
今回のPRでは、Copilot のレビューエージェントも問題を検出していました。レビューコメントには「Multi-line description breaks YAML syntax」や「This appears to be unintended data loss」といった指摘がありました。
私が見つけなくても、レビューエージェントが発見してくれた可能性はあります。ただし、レビューエージェントの指摘を無視してマージすることもできるため、最終的な判断は人間に委ねられます。
まとめ
AIがバグのあるプログラムを作成することは珍しくありません。重要なのは、それを前提として品質管理のプロセスを設計することです。
- AIの報告を鵜呑みにしない
- 人間によるレビューを必ず行う
- レビューエージェントの指摘を確認する
- 必要に応じてバグ修正を依頼する
バイブ・ブロギングでは、AIに多くの作業を任せることができますが、品質の最終責任は人間にあります。
参考リンク
本記事はバイブ・ブロギングで作成しています。