AIが作ったプログラムにバグがあった話

AIが「本文は変更していない」と報告しながら実際には変更していたバグの体験から、バイブ・ブロギングにおける品質管理の重要性を考察します

@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の応答

エージェントはバグを認識し、以下のように修正しました。

  1. front matter 解析ロジックを修正(最初の --- の閉じタグのみを使用)
  2. 影響を受けた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に多くの作業を任せることができますが、品質の最終責任は人間にあります。

参考リンク


本記事はバイブ・ブロギングで作成しています。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。