Claude Codeでのコードレビュー・リファクタリング活用法

Claude Codeはターミナル上で動作するAIコーディングツールで、コードベース全体を理解した上でのコードレビューやリファクタリング支援が可能。ここではCLI・GitHub Actions双方での活用パターンをまとめる。

コードレビューの基本

差分レビュー

ステージ済みの変更や直近のコミットをレビューさせる基本パターン。

# ステージ済みの差分をレビュー
claude "git diffのステージ済み変更をレビューして"

# 直近のコミットをレビュー
claude "直近のコミットの変更内容をレビューして"

# 特定のコミット範囲をレビュー
claude "main..HEAD の差分をレビューして"

対話モードでは git diff の出力をClaude Codeに直接読ませることもできる。

# 対話モード内で
git diff --staged を確認して、問題点があれば指摘して

特定ファイルのレビュー

# 単一ファイル
claude "src/auth/login.ts をレビューして"

# 複数ファイル
claude "src/api/ ディレクトリのファイルをレビューして"

# 特定ファイルの差分のみ
claude "git diff main -- src/components/Header.tsx をレビューして"

PR全体のレビュー

gh CLIと組み合わせてPR全体をレビューする。

# PR番号を指定してレビュー
claude "gh pr view 42 と gh pr diff 42 を確認して、PRをレビューして"

# PR一覧から選んでレビュー
claude "gh pr list でオープンなPRを確認して、最新のPRをレビューして"

レビュー観点の指定

レビュー観点を明示することで、精度の高いフィードバックが得られる。

観点ごとのプロンプト例

観点プロンプト例
セキュリティセキュリティの観点でレビューして。SQLインジェクション、XSS、認証・認可の漏れを重点的に
パフォーマンスパフォーマンスの観点でレビューして。N+1クエリ、不要な再レンダリング、メモリリークに注意して
可読性可読性の観点でレビューして。命名、関数の長さ、ネストの深さを確認して
テスト網羅性テストの網羅性を確認して。境界値、エラーケース、異常系のテストが不足していないか
型安全性TypeScriptの型安全性を確認して。any型の使用、型アサーション、型ガードの不足がないか
エラーハンドリングエラーハンドリングを確認して。未捕捉の例外、不適切なエラー握りつぶしがないか

複合的なレビュー指示

claude "以下の観点でこのPRをレビューして:
1. セキュリティ(入力バリデーション、認証)
2. パフォーマンス(不要な処理、キャッシュ活用)
3. コーディング規約(ESLint準拠、命名規則)
4. テスト(カバレッジ、エッジケース)
各観点ごとに問題点と改善提案を出して"

CLAUDE.md / REVIEW.md によるレビュー基準の定義

プロジェクトルートに設定ファイルを配置することで、レビュー基準を永続化できる。

ファイル用途適用範囲
CLAUDE.mdプロジェクト全体の共通ルールレビュー含む全タスク
REVIEW.mdレビュー専用ルールコードレビュー時のみ
<!-- REVIEW.md の例 -->
## レビュー基準

### 必須チェック項目
- [ ] 新規APIエンドポイントに認証ミドルウェアが適用されている
- [ ] DBスキーマ変更にマイグレーションファイルが含まれている
- [ ] 公開APIの変更にOpenAPI定義の更新が含まれている
- [ ] エラーレスポンスが統一フォーマットに準拠している

### コーディング規約
- 関数は50行以内に収める
- ネストは3階層まで
- マジックナンバーは定数化する
- any型の使用は禁止(やむを得ない場合はコメントで理由を記載)

CLAUDE.mdREVIEW.md は加算的に適用される。共通ルールは CLAUDE.md に、レビュー固有のルールは REVIEW.md に書くのが推奨構成。

カスタムスラッシュコマンドによるレビューワークフロー

.claude/commands/ にMarkdownファイルを配置すると、チーム共有のレビューコマンドを定義できる。

<!-- .claude/commands/review-pr.md -->
---
description: PR全体をレビュー
argument-hint: [PR番号]
allowed-tools: Bash(gh:*), Read, Grep
---

# PR #$1 レビュー

## 1. PR情報の取得
!`gh pr view $1 --json title,body,author,files`

## 2. 変更ファイルの確認
!`gh pr diff $1 --name-only`

各ファイルについて以下を確認:
- コード品質・スタイル
- テストの有無
- ドキュメントの更新

## 3. CIステータス確認
!`gh pr checks $1`

## 4. レビュー結果
以下を出力:
- クリティカルな問題
- 軽微な指摘
- 改善提案
- 承認可否の推奨

使用方法:

# 対話モードで実行
/review-pr 42

リファクタリングの指示パターン

関数分割

claude "src/utils/dataProcessor.ts の processData 関数が200行を超えている。
以下の方針で分割して:
- バリデーション部分を validateInput() に
- 変換処理を transformData() に
- 出力整形を formatOutput() に
- 元の関数はこれらを呼び出すオーケストレーターにする"

命名改善

claude "src/services/ 配下のファイルで、以下の命名規則に沿っていない
変数名・関数名を修正して:
- boolean変数は is/has/can/should プレフィックス
- イベントハンドラは handle プレフィックス
- 配列は複数形
- 略語は避ける(btn→button, msg→message)"

重複排除

claude "src/components/ 配下で重複しているロジックを見つけて、
共通ユーティリティまたはカスタムフックに抽出して"

型安全性の向上

claude "src/api/ 配下で any 型が使われている箇所を洗い出し、
適切な型定義に置き換えて。必要なら型定義ファイルを新規作成して"

デザインパターンの適用

claude "src/services/notification.ts の通知処理が if-else の連鎖になっている。
Strategy パターンを適用して拡張しやすい構造にリファクタリングして"

パフォーマンス改善

claude "このReactコンポーネントの不要な再レンダリングを削減して。
useMemo, useCallback, React.memo の適用箇所を特定して修正して"

GitHub Actions による自動レビュー

claude-code-action を使った自動PRレビュー

anthropics/claude-code-action を使うことで、PR作成時に自動でClaude Codeによるレビューが実行される。

# .github/workflows/claude-review.yml
name: Claude Auto Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      id-token: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1

      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            REPO: ${{ github.repository }}
            PR NUMBER: ${{ github.event.pull_request.number }}

            以下の観点でこのPRをレビューしてください:
            - コード品質・ベストプラクティス
            - 潜在的なバグ
            - セキュリティ上の問題
            - パフォーマンスへの影響

            トップレベルのフィードバックには gh pr comment を使用。
            コード上の具体的な指摘にはインラインコメントを使用。

          claude_args: |
            --allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*)"

進捗トラッキング付きレビュー

track_progress: true を指定すると、レビュー進行中にステータスコメントが表示される。

      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          track_progress: true  # レビュー進捗をコメントで表示
          prompt: |
            # ...(プロンプトは上記と同様)

カスタムチェックリストによるレビュー

チーム固有のレビュー基準をワークフロー内で定義する。

          prompt: |
            REPO: ${{ github.repository }}
            PR NUMBER: ${{ github.event.pull_request.number }}

            以下のチェックリストに沿ってレビューしてください:

            ## コード品質
            - [ ] コーディング規約に準拠している
            - [ ] コメントアウトされたコードがない
            - [ ] DRY原則が守られている

            ## テスト
            - [ ] 新規関数にユニットテストがある
            - [ ] エッジケースがカバーされている
            - [ ] テストカバレッジ80%以上

            ## セキュリティ
            - [ ] ハードコードされた認証情報がない
            - [ ] 入力バリデーションが実装されている
            - [ ] エラーハンドリングが適切

            各項目の充足状況をチェックリスト形式でサマリコメントに投稿してください。

セキュリティ特化レビュー

anthropics/claude-code-security-review アクションを使うと、セキュリティに特化したレビューが実行される。

name: Security Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  security-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      id-token: write
    steps:
      - uses: actions/checkout@v6

      - uses: anthropics/claude-code-security-review@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Hooks によるレビュー自動化

Claude Codeのフック機能を使って、コミット前やファイル編集後に自動チェックを実行できる。

// .claude/settings.json
{
  "hooks": {
    "PreCommit": [
      {
        "command": "npm run lint && npm run typecheck",
        "description": "コミット前にlintと型チェックを実行"
      }
    ],
    "PostEditFile": [
      {
        "command": "npx prettier --write $CLAUDE_FILE_PATH",
        "description": "ファイル編集後に自動フォーマット"
      }
    ]
  }
}

実践的なプロンプト集

バグ調査と修正提案

claude "ユーザーから「ログイン後にセッションが切れる」という報告がある。
src/auth/ 周辺のコードを調査して、原因の候補を挙げて修正案を提示して"

依存関係の整理

claude "package.json の dependencies を確認して:
1. 使われていない依存パッケージ
2. devDependencies に移すべきパッケージ
3. メジャーバージョンが古いパッケージ
をリストアップして"

テストコードのレビューと改善

claude "src/__tests__/ のテストコードをレビューして:
- モックの使い方が適切か
- テストケースの粒度は十分か
- テスト名が仕様を表しているか
- 脆いテスト(実装依存のテスト)がないか"

マイグレーション支援

claude "このプロジェクトをReact Router v5からv7に移行したい。
現在のルーティング定義を分析して、移行計画と変更箇所のリストを作成して"

AIレビューの限界と使い分け

AIレビューが得意な領域

領域説明
構文・スタイルチェックコーディング規約違反の検出
一般的なバグパターンnull参照、境界値、off-by-one等
セキュリティの基本チェックハードコード認証情報、SQLインジェクション
ドキュメント不足の指摘コメントやJSDocの欠如
リファクタリング提案重複排除、関数分割、命名改善
依存関係の問題未使用パッケージ、バージョン不整合

AIレビューが苦手な領域

領域説明
ビジネスロジックの正当性仕様通りかどうかの判断
アーキテクチャの妥当性システム全体の設計判断
ドメイン知識に依存する判断業界固有のルールや慣習
チーム文化・合意事項暗黙の了解やチーム固有の方針
UX/UIの評価ユーザー体験の良し悪し
パフォーマンスの実測ベンチマーク結果に基づく判断

推奨ワークフロー

PR作成

AIレビュー(自動 / GitHub Actions)
  ├── 構文・スタイル・基本的なバグの検出
  ├── セキュリティチェック
  └── リファクタリング提案

人間レビュー
  ├── ビジネスロジックの正当性
  ├── アーキテクチャの妥当性
  ├── AIの指摘内容のトリアージ(誤検知の除外)
  └── 最終承認

マージ

AIレビューは人間レビューの前処理として使う。定型的なチェックをAIに任せることで、人間は本質的な設計・仕様の議論に集中できる。

参考リンク