AI生成コードと人間保守の境界線
一度AIに生成させたコードを人間が手で直すと、次に同じ生成コマンドを実行した時に手直し分が消えてしまうことがあります。私たちが実際に使っている「差分ゼロを機械で確認する」という対処法を書きます。
一度AIに自動生成させたコードを人間が手直しすると、次に同じ生成コマンドを実行した時に手直し分が静かに消える、という事故が起きうると気づいてから、生成物と手直しの境界を機械で確認する運用にしています。
私たちは、AIエージェントに実装を任せる開発ループを日常的に回しています。この記事は、その中で実際に使っている、生成コードのドリフト(想定外の乖離)を防ぐ工夫の記録です。
⚠️「生成し直したら消えていた」という事故の構造
自動生成の仕組みと手直しが同じファイルを共有していると、後から実行した生成が手直し分を上書きします。
設定ファイルや型定義など、コマンド一つで自動生成できる種類のコードでは、生成後に人間が手直しを加えることがあります。ところが、後になって同じ生成コマンドをもう一度実行すると、手直しした部分が生成物によって上書きされ、消えてしまうことがあります。生成する仕組みと、人間が保守する部分が同じ場所に同居していると、この種の事故が起きやすいと感じています。
🔍生成物と実体の差分をゼロで確認する
「生成し直しても差分が出ない」ことを、目視ではなく機械的に確認する運用にしています。
私たちが実際にやっているのは、生成コマンドをもう一度実行してみて、リポジトリに保存されている実体(コミット済みのファイル)と比較し、差分がゼロであることを確認するという方法です。差分が出た場合は、生成の仕組み側に問題があるか、手直しした内容が生成ロジックに反映されていないかのどちらかであり、放置せず原因を確認するようにしています。目視での確認は見落としが起きやすいため、機械的な差分確認に置き換えています。
🔀手直しを重ねるなら、生成元に反映する
同じ手直しを何度も繰り返すようなら、生成の仕組み自体を直すサインだと捉えています。
生成されたコードに毎回同じような手直しを加えているなら、それは生成の仕組み(テンプレートやルール)自体を直すべきサインだと考えています。生成物への場当たり的な手直しを積み重ねるより、生成元を直して次回から手直し不要にするほうが、長期的には保守の手間を減らせると感じています。
🧭まとめ: 差分ゼロを機械で確認する
整理します。①生成と手直しが同じ場所に同居すると再生成時に手直しが消える事故が起きる②生成し直して差分がゼロであることを機械的に確認する③同じ手直しを繰り返すなら生成元を直すサインと捉える。
AIに生成を任せる範囲が広がるほど、生成物と人間の手直しの境界を目視でなく機械で確認する仕組みが要ると考えています。
📚参考・出典
- Google Cloud: Accelerate State of DevOps Report 2024(DORA)(AIの導入は個人の生産性・フロー・仕事の満足度を大きく高める一方で、ソフトウェアデリバリの安定性とスループットには負の影響を与える、と報告されている)
- Peng, Kalliamvakou, Cihon, Demirer: The Impact of AI on Developer Productivity — Evidence from GitHub Copilot(arXiv, 2023)(対照実験で、AIペアプログラマを使えたグループは対照群よりタスクを55.8%速く完了したと報告されている)
開発パートナーを探していますか?
AIでプロダクトを最速で形にしませんか?
最短1週間でMVPを開発。アイデアの検証から本番リリースまで、i-Willinkがフルサポートします。まずはお気軽にご相談ください。
無料で相談する