/var/log/kazuki

GitHub PR上でのAIコードレビューを考える

2025年9月現在、AIによるコードレビューが各プロジェクトで導入されつつある。 特に、観測範囲内ではClaude Code Actionによるコードレビューの導入例が多く見られる。

業界全体としてAI導入が良いものとされている雰囲気があるため、各プロジェクトでの導入が進んでいるのだろう。 しかし、(マイノリティであることは理解しているが)GitHub PR上でのClaude Code Actionによるコードレビューに対して懐疑的である。

何故そう思うのか、どうするのが良さそうか良いのか自分の整理のために言語化する。

コードレビューの目的

コードレビューの主目的は品質向上だと認識している。 諸説あるが、知識共有と学習、チームワーク強化などもコードレビューの目的に含まれるだろう。

たしかに人間に与えられる情報が増えるため品質向上には一定寄与するだろう。一方、何のコストも払うことなく品質向上が実現できるわけではないと考えている。 後述するが、現状ではAIレビューを収束させるためのコストを払う程品質向上には寄与していないと感じている。

コードレビューにおける双方向のコミュニケーション

コードレビューにおいて、双方向のコミュニケーションは私にとって重要な体験である。 単なる一方向の指摘ではなく、双方向のコミュニケーションを通じて、コードの意図や背景を理解し、より良い解決策を見つけることができるためである。

一例として、双方向のコミュニケーションとは下記のリンク先のコメントを指す。 https://github.com/tokio-rs/tokio/pull/7567#discussion_r2322754312

何らかのコメントがされた場合、レビュイーは以下のような応答が必要と考えている。

  • コメントに対して修正したのであれば、ackとしてそのコミットハッシュ
  • 修正しないのであればその理由をコメント

何の返答も無しにPRをマージしたり、ConversationをResolveすることは適切ではないだろう。

AIコードレビューの応答ハードル

そして、AIのコメントに対してもレビュイーが応答することを私は期待しているが、現状のGitHub PR上でのClaude Code Actionによるコードレビューでは長文のコメントが1つ投稿されるという形式のため、応答のハードルが高いと考えている。

私の経験では、AIのコメントに対して応答しているケースは多くない。更にはAIの指摘に対して修正しないケースも見受けられる。その理由として、以下が考えられる:

  • AIのコメントに対して応答することが面倒
  • AIのコメントはあくまで参考意見であり、必ずしも従う必要は無いと考えている
    • 従わない場合でも、なぜ従わないのかを説明する必要は無いと考えている
  • 長文の詳細なコメントが投稿されるため、レビュイーが応答しにくい環境が生まれている

GitHub PR上でのレビューはチームメンバーに共有される場である。完了を明確にするため、AI・人間を問わず、コメントに対して応答することが望ましいと考えている。

AIコードレビューのコスト

以上を踏まえて、応答、つまり、AIが発散したコードレビューコメントを収束させるコストが高いと感じている。

AIにとっては情報が多ければ多いほど嬉しいかもしれないが、人間にとっては判断が必要となるため(少なくとも私は)負担に感じる。 微々たるコストかもしれないが、チリツモであるし、情報は取ろうと思えばいくらでも取れるため、有用でない情報やそれに伴う判断は意識的に取り除いていきたい。

AIコードレビュー全てを否定するわけではない

応答コストが問題と考えているため、ローカルでのAIコードレビューは有用と考えており、積極的に活用している。

また、GitHub PR上でのAIコードレビューは、GitHub Copilot code reviewが良い体験を提供していると感じている。特定の行に対して修正点を指摘するため、長文のコメントと比べて応答しやすく、人間のレビューに近い感覚を持っている。

大局的なレビューはローカルでClaudeの /reviewなどを使用し、PR上ではGitHub Copilot code reviewを使用する、が現時点で応答コストを抑えつつ、品質向上を実現できる方法だと考えている。個人的には暫くこの方法で運用していきたい。

なお、Claude Code Actionのプロンプトが悪いのでは?という意見もありそう。解決策待ってます。

(9/21追記)
https://docs.github.com/en/rest/pulls/reviews#create-a-review-for-a-pull-request を使えばインラインでの指摘ができるため、記載したコストの問題は解決できそうだった。