「もう先輩を待たなくていいじゃん!」
私のチームのリーダーは超多忙です。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レビューは無意味ではありません。「先輩に投げる前の、最強のセルフチェックツール」として使えば絶大な効果を発揮します。
- PR作成前、AIに差分を読ませて「可読性と一般的なバグの検知」をやらせる
- AIの指摘(変数名、関数の分割など)を事前に直しておく
-
綺麗になった状態のコードを、先輩にレビューしてもらう
先輩の脳のメモリを「変数名のスペルミス」のような些末なことに使わせてはいけません。先輩には「トランザクション設計」や「業務要件とのズレ」など、人間にしか見抜けない本質的なレビューに100%集中してもらう。
AIを「先輩の代わり」にするのではなく、「先輩にお出しするための下ごしらえロボット」として使う。これが、現時点でのAIコードレビューの最適解です。