0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

人間レビューはもういらない?AIコードレビューを導入してみた結果

Last updated at Posted at 2025-09-16

「コードレビュー、AIに任せられるんじゃない?」
そんな疑問を持って、実際にPull RequestのレビューをAIにやらせてみました。

結論から言うと、人間レビューが完全に不要になるわけではないけれど、一次チェックとしてはかなり優秀で、レビュー待ちを減らす効果がありました。

背景

私のチームでは、レビュー待ちが開発のボトルネックになっていました。
Pull Request(PR)が溜まるとレビュー担当が追いつかず、結果的にデプロイが遅れる…というよくある問題です。

「AIに一次レビューを任せれば、人間は設計や仕様の確認に集中できるのでは?」と考え、試験的に導入してみました。

導入した仕組み

使ったのは GitHub Actions + OpenAI API(LLM)
PRが作成されると、自動で以下の流れが走ります:

  1. PRの差分コードを抽出
  2. 差分をLLMに投げる
  3. レビューコメントを生成
  4. 結果をPRにコメント投稿
    image.png

実際のイメージはこんな感じです👇

name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run AI Review
        run: |
          DIFF=$(git diff origin/main...HEAD)
          RESPONSE=$(echo "$DIFF" | \
            curl -s https://api.openai.com/v1/chat/completions \
              -H "Authorization: Bearer $OPENAI_API_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                "model": "gpt-4o-mini",
                "messages": [
                  {"role": "system", "content": "あなたは熟練エンジニアです"},
                  {"role": "user", "content": "以下のコード変更をレビューしてください。\n'"$DIFF"'"}
                ]
              }' | jq -r '.choices[0].message.content')
          echo "$RESPONSE"

実際にやってみた結果

例1: 未定義変数を指摘

あるPRではこんな差分がありました。

- const total = calculate(items);
+ const total = calculate(itemList);
+ console.log(result);

AIのコメント:

result という変数が未定義のまま使用されています。console.log(result) はエラーになります。total を出力するつもりではありませんか?

人間でも気づくはずですが、レビューが立て込んでいると見逃しがち。AIが一次チェックしてくれると安心感がありました。

例2: 可読性に関する提案

別のPRではif文が深すぎたのですが、AIはこうコメントしてきました。

ネストが深くなっています。条件を関数に切り出すか、早期returnを使うことで読みやすくできます。

静的解析ツールでは拾いにくい「リファクタリングの提案」まで出てきたのは新鮮でした。

良かった点

AIレビューの一番の強みは、ちょっとしたケアレスミスをしっかり拾ってくれるところです。例えば「未定義変数を使っていた」とか「nullチェックを忘れていた」といった、つい見落としがちなバグを高い精度で検出してくれます。さらに、ネストが深すぎるコードや、抽象的すぎる関数名など、人間だと「あとで直そう」と放置しがちな部分についても改善提案を出してくれるので助かります。こうした機械的なチェックをAIに任せられるおかげで、人間は設計や仕様の検討といった本質的な部分に集中でき、結果的にレビュー全体の工数をぐっと減らせました。

微妙だった点

もちろん完璧ではありません。仕様を理解できないため、すでに考慮済みの処理なのに「危険だ」と誤って指摘されることもあります。例えば「例外処理をあえて無視している」ケースでも「エラー処理が抜けている」と警告される、といった具合です。また、200行を超える大規模なPRになるとコメントが表面的になり、実用度は下がる印象でした。加えて「UX的に正しいかどうか」や「チームの方針に沿っているか」といった設計判断はAIにはできないので、そこは人間の判断が欠かせません。

人間レビューは不要になったのか?

結論から言えば「人間レビューはなくせない」です。ただし役割分担をすることで非常に効果的になります。AIは機械的なエラーチェックや可読性改善の提案を担当し、人間は設計判断やチームルールの遵守、プロダクト全体の方向性を見据えたレビューを行う、といった形です。言い換えるならAIは「静的解析ツール以上、人間未満」の存在であり、サポート役としてはかなり頼れる存在です。

どのようなユーザーにおすすめしたいか?

AIコードレビューを導入して感じたのは、レビュー待ちが溜まりやすく、経験の浅いメンバーが多いチームで特にその威力を発揮する、ということです。例えば、未定義変数や null チェック漏れなど “うっかりミス” を人間が見逃しがちなプロジェクトでは、AIの一次チェックが事故を未然に防いでくれます。また、コードのネストが深すぎる・関数名が抽象的すぎるといった可読性の低い設計を改善する提案が AI から出てくることで、保守性や理解のしやすさがぐっと上がりました。一方で、差分が非常に大きい PR やUX・デザイン判断など“文脈依存・哲学的”なレビューには AI の限界があり、そこは人間が担うべき領域です。総じて言えば、「静的解析ツール以上、人間未満」という立ち位置で、小〜中規模の PR を頻繁に行い、レビューワークフローの滞りを改善したいチームには、AIレビューは非常に有効な選択肢だと言えます。

まとめ

「人間レビューはもういらない?」という問いに対する答えは「No。ただしAIを補助に使えば効果は絶大」です。特にレビュー待ちが溜まりやすいチームや、初学者が多いプロジェクトでは導入効果を強く実感できました。今後は「プロジェクト独自のルールをAIに覚えさせる」「PRテンプレートと組み合わせて観点を整理する」といった工夫を加えることで、さらに精度や実用度が上がるはずです。まだ発展途上ではありますが、一次チェック担当としてAIレビューは十分に戦力になると感じました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?