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