Skip to content

コードレビューするとき、AIで生成したコードかどうかを分かるようにしたい

したいが、手間のかからない良い方法は思いつかない。

どうして事前に知っておきたいのか

Section titled “どうして事前に知っておきたいのか”

コードレビューで他人の書いたコードを読むとき、明らかに正解のあるコードなら「close(2) でエラーハンドリングするより fsync(2) する方が安全」のようにそのまま書くのだけど、主観や好みの部分が影響する場合はなるべく意図を読み取ろうと時間を使うし、比較的丁寧なコメントをするように気をつけている。例えば以下のコードを例とすると、

type Request struct {
StartTime string `json:"startTime"`
EndTime string `json:"endTime"`
}

このとき、時刻なので time.Time として扱うほうが使う側は嬉しいだろう(主観)とは思うが、わざわざ文字列にしているということは何か意図があるのだろうなと思って、周囲も含めてコードを読む。レビューコメントではコードを読んで理解した意図の確認と、必要なら time.Time が良いと思った理由をコメントとして丁寧に書く。

なんだけど、とくに「どうしてこの実装にしたのか」の意図を読み取ろうとするところは結構時間を使うので、AIで生成したコードの場合はレビューのために労力を割きたくないという感情が自分の中にある。この感情はたぶん、人間が書いたコードの場合は「この人はそういう傾向、癖がある」という相手への理解に繋がっているので納得しているのだが、AIで生成したコードの場合は経験や感情の蓄積ができないので、虚無を感じているのだろうとは思う。これは人間と生成AIを同一視すべきではないも近い。

なので事前に意図があってそうしているのか否かを知っておきたい(意図がないなら手を抜きたい)のだけど、全部の行にAI生成マーカーを付ける訳にもいかないし、良い方法が思いつかないという話。