1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

先輩の代わりにChatGPTにコードレビューを頼んだら、50個の指摘を受けて絶望した。でも一番ヤバいバグには気づかなかった話

1
Posted at

「もう先輩を待たなくていいじゃん!」

私のチームのリーダーは超多忙です。PRを出してもレビューが返ってくるのは翌日。
待ち時間がもったいないと思った私は、ひらめきました。
「そうだ、全部AIにレビューさせれば一瞬で解決する!」
意気揚々と自分の書いたPRの差分(約300行)をChatGPT(GPT-4)に投げ込み、「シニアエンジニアとして厳しくコードレビューしてください」とプロンプトを打ちました。
数秒後、AIから50個の指摘リストが返ってきました。

1. `const data` は `const userData` の方が明確です。
2. この関数は長すぎるため、分割を検討してください。
3. エラーハンドリングのログ出力が不足しています。
...(中略)...
50. ここの空行は不要です。

「うわ…俺のコード、こんなにダメだったのか…」
私はAIに怯えながら、半日かけて50個の指摘を全て修正しました。完璧なコードになったはずです。
そして自信満々で先輩にレビューを依頼しました。
先輩のコメントは、たった1件でした。
「これ、トランザクションの範囲間違ってるから、途中でエラー起きたらデータ整合性壊れるよ」
AIは「変数名」や「関数の長さ」には気づきましたが、「システム全体が破綻する致命的な設計ミス」には全く気づかなかったのです。

AIは「虫眼鏡」、人間のシニアは「鳥の目」

AIにコードレビューをさせるのは、例えるなら「超高性能なAI顕微鏡で絵画をチェックする」ようなものです。
顕微鏡は「絵の具の塗りムラ」や「ホコリ」は完璧に見つけ出します。しかし、「絵の構図が根本的に狂っている」ことには気づけません。

🤖 AIが得意なレビュー(ミクロの視点)
- 変数名・関数名の改善提案
- 一般的なベストプラクティスからの逸脱
- 言語仕様の落とし穴(メモリリークの可能性など)
- シンタックスシュガーの提案
🧑‍💻 人間が得意なレビュー(マクロの視点)
- ドメインロジック(業務要件)を満たしているか
- システム全体のアーキテクチャと整合性が取れているか
- データベースのロックやトランザクションの範囲が適切か
- 「そもそもこの機能を実装すべきか」というメタな問い

正しいAIレビューの使い方:「セルフLint」として使う

AIレビューは無意味ではありません。「先輩に投げる前の、最強のセルフチェックツール」として使えば絶大な効果を発揮します。

  1. PR作成前、AIに差分を読ませて「可読性と一般的なバグの検知」をやらせる
  2. AIの指摘(変数名、関数の分割など)を事前に直しておく
  3. 綺麗になった状態のコードを、先輩にレビューしてもらう
    先輩の脳のメモリを「変数名のスペルミス」のような些末なことに使わせてはいけません。先輩には「トランザクション設計」や「業務要件とのズレ」など、人間にしか見抜けない本質的なレビューに100%集中してもらう。
    AIを「先輩の代わり」にするのではなく、「先輩にお出しするための下ごしらえロボット」として使う。これが、現時点でのAIコードレビューの最適解です。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?