ChatGPTでコードレビュー品質を上げる|自動検出できない「人間的なバグ」の見つけ方
こんにちは!
今日は「ChatGPTを使ったコードレビュー活用法」について解説します。
機械的なバグ検出だけでは足りない理由
僕も最初の頃は、ChatGPTを使ったコードレビューって「構文エラーとか変数名の間違いを見つけてくれるツール」くらいに思ってました。
でもね、現場でよく見るのは、そういう「機械的に検出できるバグ」じゃなくて、もっと微妙な問題なんです。
例えば、以前チームメンバーが書いたコードを見てたんですよ。
構文は完璧だし、ESLintも通ってる。
でもスマートフォンで特定の操作をしたときに、めっちゃ画面がカクつくんです。
原因は、setTimeoutのループ処理で不要なDOM更新が何度も走ってたんですよ。
自動的なバグ検出ツールには引っかからない、でも実装意図を理解してないと気づけない問題でした。
ここで重要なのは、ChatGPTは「実装の意図を聞き出すためのツール」として使えるってことなんです。
コードだけ渡すんじゃなくて、「このコードで何をしようとしてるのか」を一緒に考えさせることで、より深いレビューができます。
ChatGPTで「人間的なバグ」を引き出すプロンプトの工夫
具体的にどうやるかというと、単に「このコードをレビューしてください」じゃなくて、もっと詳しい情報を渡すんですよ。
僕がほんまによく使うのは、こういったプロンプトの構造です。
基本的なプロンプト構造:
- このコードの「実装背景」を説明する
- 「想定している使われ方」を具体的に示す
- 「気になってる部分」があれば先に伝える
- 「パフォーマンス面で懸念がないか見てほしい」など角度を指定する
例えば、こんな感じのプロンプトを送ります:
悪い例:
「このコードをレビューしてください」
良い例:
「このコードは商品一覧ページで、ユーザーがスクロールするたびに無限ロードで商品を追加するやつです。
現在、モバイルで100件以上スクロールするとちょっと重くなる傾向があります。
パフォーマンスの観点から改善できる部分を見てもらえますか?
特に、DOMの重さやメモリリーク、イベントリスナーの管理面で」
この違い、めっちゃ大きいんですよ。
背景情報があると、ChatGPTは「単なる構文チェック」じゃなくて、「このユースケースで発生しやすい問題」を思考して指摘してくれます。
さらに効果的な工夫:
- 「実装してから1週間経過してるので、改めて見直してほしい」など時間経過を伝える
- 「後輩が書いたコードで、僕が見逃してるかもしれない部分を指摘してほしい」と謙虚に頼む
- 「ブラウザ互換性で問題があるか」「アクセシビリティで問題があるか」など視点を複数提示する
- 「この機能は今後XXという要件で拡張する予定なので、それを見据えての設計ですか?」と将来性を聞く
僕の現場では、特に「将来の拡張を見据えた設計になってますか?」という質問をよくします。
すると ChatGPTは「この部分は後で変更しづらい設計になってますね」と指摘してくれることが多いんです。
実際の現場での活用例
最近あった実例で説明します。
後輩がReactのuseEffectでAPIデータを取得するコンポーネントを書きました。
単純に「レビューして」と言ったら、ChatGPTは「依存配列がない」という基本的な指摘だけでした。
でも僕が「このコンポーネントは一覧ページで複数インスタンス化されて、ユーザーがフィルター切り替えたときにAPIを再実行する仕様です。データキャッシングとかローディング状態の管理はどうですか?」と詳しく説明したら、一気に質の高い指摘が出てきたんです。
ChatGPTからの返答の例:
- 「同じデータを複数回取得する無駄が発生する可能性がある。キャッシュ層を考えたほうがいい」
- 「フィルター切り替えから結果表示までのローディング中、UIがバタつく可能性がある」
- 「複数インスタンス化されるなら、キャンセル処理がないとメモリリークのリスクがある」
これらって、ほんま「実装の背景を知ってる人間だからこそ気づける問題」なんですよ。
僕たちがChatGPTに対してその背景を説明することで、初めてそういった指摘が出てくるんです。
別の活用例として、「コード片だけじゃなく、スクリーンショットや動作の説明文も一緒に送る」ってやり方も使ってます。
「こういう見た目になるコンポーネントで、クリック時にこういった動作をします」と説明すると、UI/UX面でのバグ指摘も出やすくなります。
まとめ
ChatGPTを使ったコードレビューの本当の価値って、「自動検出できない、人間的なバグを見つける手助け」にあります。
そのためには、コードだけじゃなくて、実装の背景やユースケース、懸念事項を詳しく説明することが大事なんですよ。
僕が後輩に教えるときもこれを強調してます。
「ChatGPTはあくまで相談相手。背景情報が詳しいほど、より正確で深いアドバイスがもらえる」って。
最初はプロンプトを工夫するのが面倒に感じるかもしれません。
でも一度やってみると、「あ、こういう視点があったか」って発見がめっちゃ多くて、コードの質が一気に上がります。
ぜひ試してみてくださいね。
Web制作で困ったことがあったら、またこのブログを覗いてくださいね!
― クリオ