💬

Claude Code ActionでGitHub Copilot風インラインレビューを実現する方法

に公開

はじめに

Claude Code Actionを使ったコードレビューは非常に優秀で、AIによる的確な指摘を受けられる素晴らしい機能です。しかし、デフォルト設定のままだと全てのレビュー内容が一つのコメントにまとめられるため、どの行に対する指摘なのかが分かりづらく、実用性に欠けるという課題があります。

公式のロードマップでは「Better code review behavior - Support inline comments on specific lines, provide higher quality reviews with more actionable feedback」という記載があるため、まだインラインコメントによるレビューには未対応なのかと勘違いしやすいですが、実際には設定を見直すことで現時点でも対応可能です。

本記事では、GitHub Copilotのコードレビューのようにインライン投稿でレビューコメントを受け取れるように設定する方法と、運用上の課題への対処法について詳しく解説します。

インライン投稿によるレビューコメントの例
インライン投稿によるレビューコメントの例

Claude Code Actionのデフォルト設定の課題

Claude Code Actionのサンプル設定をそのまま使用すると、以下のような課題があります。

  • 指摘箇所の特定が困難: 全てのレビュー内容が一つのコメントにまとめられるため、どのコードに対する指摘なのかがすぐに分からない
  • レビューの効率性が低い: 該当箇所を探すのに時間がかかり、レビューのフィードバックループが遅くなる
  • 視認性の悪さ: 長いレビューコメントでは重要な指摘が埋もれがち

一方、GitHub Copilotのコードレビューでは、指摘箇所に直接インラインコメントが投稿されるため、非常に見やすく実用的です。Claude Code Actionでも同様の体験を実現しましょう。

インライン投稿の設定方法

基本設定

Claude Code Actionでインライン投稿を有効にするには、GitHub Actionsのワークフローファイルで以下のように設定します。

# .github/workflows/claude-code-review.yml
name: Claude Auto Review

on:
  pull_request:
    types: [opened, synchronize]

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

      - name: Automatic PR Review
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          timeout_minutes: "60"
          direct_prompt: |
            このPRをレビューし、GitHubのレビューシステムを使用してインラインフィードバックを提供してください。以下の手順に従ってください:

            1. **レビューを開始**: `mcp__github__create_pending_pull_request_review` を使用してペンディングレビューを開始します
            2. **差分情報を取得**: `mcp__github__get_pull_request_diff` を使用してコードの変更内容と行番号を理解します
            3. **インラインコメントを追加**: `mcp__github__add_comment_to_pending_review` を使用して、特定の行に対する各フィードバックを追加します
            4. **レビューを送信**: `mcp__github__submit_pending_pull_request_review` を event type "COMMENT"("REQUEST_CHANGES" ではなく)で使用して、すべてのコメントを非ブロッキングレビューとして公開します

            レビューで注目すべき点:
            - コード品質とベストプラクティス
            - 潜在的なバグやセキュリティの問題
            - パフォーマンスに関する考慮事項
            - 保守性と可読性
            - アーキテクチャと設計の決定

            具体的で実行可能なフィードバックを提供してください。行固有の問題にはインラインコメントを使用し、レビューを送信する際には全体的な要約を含めてください。**重要**: PRをブロックしないように "COMMENT" タイプとして送信してください。
          allowed_tools: "mcp__github__create_pending_pull_request_review,mcp__github__add_comment_to_pending_review,mcp__github__submit_pending_pull_request_review,mcp__github__get_pull_request_diff"

インライン投稿の運用課題と解決策

課題:レビューコメントの蓄積

インライン投稿を有効にすると、PRが更新されるたびに新しいレビューコメントが追加されます。これにより以下の問題が発生します。

  • ノイズの増加: 古いレビューコメントが残り続ける
  • 混乱の原因: どのコメントが最新のコードに対するものかが分からない
  • 可読性の低下: 重要なコメントが埋もれる

解決策:PRコメント削除用GitHub Action

この問題を解決するため、aki77/delete-pr-comments-actionを使用して、過去のClaude Code Actionによるコメントを自動削除します。

      - uses: aki77/delete-pr-comments-action@v3
        with:
          token: ${{ github.token }}
          usernames: claude[bot]
          noReply: "true"
          includeOverallReviewComments: "true"

この設定により、新しいコミットがプッシュされるたびに、過去のClaude Code Actionのコメント(claude[bot]によるもの)が自動的に削除され、常に最新のレビューコメントのみが表示されます。

設定パラメータの説明

  • usernames: claude[bot]: Claude Code Actionが作成したコメントのみを削除対象とする
  • noReply: "true": 返信コメントのないコメントのみを削除対象に含める
  • includeOverallReviewComments: "true": 全体的なレビューコメントも削除対象に含める

レビューガイドラインの設定

より良いレビュー結果を得るために、適切なレビューガイドラインを専用のマークダウンファイルとして用意することをお勧めします。

direct_prompt: |
  @docs/agent/code-review.md のガイドラインに従ってPRレビューを実施してください。

  **重要: すべてのフィードバックとコメントは日本語で提供してください。**

  **レビュー手順:**
  1. `mcp__github__create_pending_pull_request_review`でレビュー開始
  2. `mcp__github__get_pull_request_diff`で変更内容と行番号を確認
  3. `mcp__github__add_comment_to_pending_review`で具体的なフィードバックをインライン追加
  4. `mcp__github__submit_pending_pull_request_review`でイベントタイプ"COMMENT"として送信

  建設的で具体的な改善提案を行い、行固有の問題にはインラインコメント、全体総括はレビュー送信時に含めてください。

運用時の注意点

GitHub Actionsの実行制御

Claude Code Actionは非常に便利な機能ですが、不適切な設定により必要以上に頻繁に実行されることがあります。
これはGitHub Actionsの利用制限やコストに影響するため、プロジェクトに合わせた適切な実行制御の設定を強く推奨します

基本的な実行制御

最も基本的な制御は、on条件で実行タイミングを限定することです。

on:
  pull_request:
    types: [opened, synchronize]  # PRの作成と更新のみ
    # types: [opened] # PRの作成時のみに限定することも可能

条件分岐による制御

ジョブレベルで条件を設定し、特定の条件下でのみ実行することも可能です。

jobs:
  auto-review:
    runs-on: ubuntu-latest
    # 以下の条件で実行を制御
    if: |
      github.event.pull_request.draft == false &&
      github.event.pull_request.user.login != 'dependabot[bot]' &&
      !contains(github.event.pull_request.title, '[skip review]')

最終的な設定例

これまでの内容を統合した、設定例を以下に示します。

name: Claude Auto Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  auto-review:
    runs-on: ubuntu-latest
    timeout_minutes: 30
    if: |
      github.event.pull_request.draft == false &&
      github.event.pull_request.user.login != 'dependabot[bot]' &&
      !contains(github.event.pull_request.title, '[skip review]')
    permissions:
      contents: read
      pull-requests: write
      issues: write
      id-token: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - uses: aki77/delete-pr-comments-action@v3
        with:
          token: ${{ github.token }}
          usernames: claude[bot]
          noReply: "true"
          includeOverallReviewComments: "true"

      - name: Automatic PR Review
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          direct_prompt: |
            @docs/agent/code-review.md のガイドラインに従ってPRレビューを実施してください。

            **重要: すべてのフィードバックとコメントは日本語で提供してください。**

            **レビュー手順:**
            1. `mcp__github__create_pending_pull_request_review`でレビュー開始
            2. `mcp__github__get_pull_request_diff`で変更内容と行番号を確認
            3. `mcp__github__add_comment_to_pending_review`で具体的なフィードバックをインライン追加
            4. `mcp__github__submit_pending_pull_request_review`でイベントタイプ"COMMENT"として送信

            建設的で具体的な改善提案を行い、行固有の問題にはインラインコメント、全体総括はレビュー送信時に含めてください。
          allowed_tools: "mcp__github__create_pending_pull_request_review,mcp__github__add_comment_to_pending_review,mcp__github__submit_pending_pull_request_review,mcp__github__get_pull_request_diff"

まとめ

Claude Code Actionによるコードレビューをインライン投稿対応させることで、GitHub Copilotのような使いやすいコードレビュー体験を実現できます。

✅ 本記事で紹介した設定により実現できること

  • 指摘箇所が一目で分かるインラインレビュー
  • 古いコメントの自動削除によるノイズ削減
  • カスタマイズされたレビューガイドラインによる高品質な指摘
  • 日本語での分かりやすいレビューコメント

Claude Code Actionの真価を引き出すために、ぜひこの設定を試してみてください。
AIによる高品質なコードレビューが、開発チームの生産性向上に大きく貢献することでしょう。


参考リンク

Discussion