少なくともC++に関しては、テストの生成や補助スクリプトを書くためにコパイロットを使うようにしてる。正直なところ、苦労して得た教訓や大失敗を通じて、何をしようとしているのかをチェックして確認するためのメンタルモデルを築いた感じだ。確かに、いくつかの「JSONの処理」みたいな、protobufにフィールドを追加したりデータをシャッフルしたりする作業では、かなり生産的になれるけど、それでも微妙なミスをしないとは信じきれないし、現在のコードベースと同じスタイルのコードを生成することもある(システムプロンプトでそう伝えても)。明らかに間違ったことをして、それを強弁したり、最初から気づかなかったりすることがあって、チャットで「もうやめて!」って叫ぶと「おっと、私のミスだ」とか言ってくることもある。例えば、こんなコードね。
class Foo {
int x_{};
public:
bool operator==(Foo const& other) const noexcept {
return x_ == x_; // <- other.x_はどうするの?
}
};
今のところ、GeminiやClaude、どのGPTでも、書くコードの中で見逃しやすい微妙なミスを本当に避ける方法がわからない。とはいえ、「この新機能を包括的なテストスイートでカバーして」って言うだけで、冗長なgtestのセットアップをしなくて済むから、本当に感謝してる。