Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Claude Code GitHub Actionsによる 自動レビューシステムの一元化と最適化

Avatar for 今津快斗 今津快斗
November 28, 2025
52

Claude Code GitHub Actionsによる 自動レビューシステムの一元化と最適化

2025/11/29 機械学習の社会実装勉強会第53回 今津快斗

Avatar for 今津快斗

今津快斗

November 28, 2025
Tweet

Transcript

  1. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 2
  2. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 3
  3. Claude Code GitHub Actionsとは Anthropic社が提供する公式のGitHub Actions統合 公式リポジトリ: anthropics/claude-code-action@v1 モデル一覧 •

    claude-haiku-4-5-20251001 ➢ 特徴: 最速のモデル • claude-sonnet-4-5-20250929 ➢ 特徴: 最も賢いモデルで複雑な エージェントとコーディングに対応 • claude-opus-4-1-20250805 ➢ 特徴: 専門的な推論タスクに対応 Sonnet 3.5モデルは 2025年10月28日に廃止 4
  4. Claude Code GitHub Actionsとは 流れイメージ PR作成 イベントを 検知 GitHub Actions実行

    Claude実行、 レスポンス • pull_request ➢ opened ➢ ready for review ➢ synchronize • issue_comment ➢ created etc. • Anthropic API Key • モデル指定 • プロンプト チェック CLAUDE.md 5
  5. 自動レビュー steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth:

    0 - name: Automatic PR Review uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.anthropic_api_key }} track_progress: true claude_args: | --model claude-sonnet-4-5-20250929 prompt: | REPO: ${{ github.repository }} PR NUMBER: ${{ github.event.pull_request.number }} 以下プロンプト PR内の差分をもとに、渡した プロンプトの内容でレビューを行 う トリガー条件例 v1で必須 6
  6. メンション呼び出し steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth:

    1 - name: Run Claude Code id: claude uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.anthropic_api_key }} track_progress: true claude_args: | --model claude-sonnet-4-5-20250929 prompt: | 以下プロンプト PRコメントで以下のように記述: @claude [メッセージ ] PRの変更内容を理解した上で回答 トリガー条件例 8
  7. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 10
  8. 背景と課題 背景 ➢ 社内のほとんどのリポジトリで導入 ➢ リポジトリごとに個別管理 課題 1. 管理コスト ➢

    ワークフロー更新が大変 ➢ 設定の不整合が発生 2. レビュー品質の不統一 ➢ 社内コーディング規則が反映されない ➢ リポジトリごとに異なる基準 3. レビューの非効率性 ➢ レビューコメントが長すぎる ➢ Draft中もコミットごとに通知 Claudeワークフローの導入と README.mdの更新に関するPRのレビュー 11
  9. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 12
  10. ワークフローを一元化 特有のプロンプト プロジェクト特有のプロンプト リポジトリに適したレビューポイントを指定したい! →変数として、Reusableワークフローに渡す 例:Terraformリポジトリ(一部抜粋) jobs: auto-review: uses: claude-review-reusable.ymlのパス@master

    secrets: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} with: project_specific_prompt: | -セキュリティへの影響 - HCL構文と構造の適切性 - terraform plan結果の妥当性 トリガーWF 再利用WF global-workflows terraform 14
  11. ワークフローを一元化 コード例 on: pull_request: types: [opened, synchronize, reopened, ready_for_review] jobs:

    auto-review: uses: claude-review-reusable.ymlのパス@master secrets: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} with: project_specific_prompt: | 以下プロジェクト特有のプロンプト on: workflow_call: inputs: project_specific_prompt: required: false type: string default: '' secrets: anthropic_api_key: required: true jobs: 以下job内容 Reusableワークフロー(global-workflows) トリガーワークフロー(各リポジトリ) 注意 secretsはトリガー用ワークフローから渡さないと行けない! 15
  12. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 17
  13. 社内コーディング規則の組み込み 案2 案2 global-workflowsリポジトリにmdファイルとして配置して、 GitHub Appを使って読み取る リポジトリ(トリガー) 各プロジェクト 2. PRレビュー依頼

    1. .mdに移行 5. レビュー結果を投稿 coding_rules.md global-workflows 3. GitHub App Token を生成 20 4. ファイル内容 を取得 GitHub AppのIDとSecrets
  14. 社内コーディング規則の組み込み 案2実装1 Q. なぜGitHub App Tokenの生成が必要なのか? A. 他のプライベートリポジトリの中身を読み取る必要があるから 21 トリガーリポジトリでReusableワークフローの機能を借りている状態なので、

    global-workflowsリポジトリにはアクセス出来ない リポジトリ(トリガー) 各プロジェクト GitHub App global-workflows 権限なし 1. Token生成 2. gh api 3. ファイル内容 4. ファイル内容 仲介役
  15. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 24
  16. レビューコメント最適化 課題2 2. レビューコメントが長すぎて、重要な指摘が埋もれやすい • CRITICAL/HIGHレベルの指摘はすべて記載 • MEDIUM/LOWレベルの指摘は合わせて最大3件に制限 • インラインコメント化

    ### インラインコメント(該当コード行に記載) ``` ### CRITICAL / HIGH / MEDIUM / LOW **問題点:** 具体的な説明(簡潔に) **推奨対応:** 修正方法(簡潔に) ``` 27
  17. レビューコメント最適化 課題3実装 新しいコミット追加時にGitHub GraphQL APIで前回のレビューコメントを 自動的に最小化し、最新のレビューのみを表示する const isClaude = review.body

    && review.body.includes('Claudeレビュー概要’); if (isClaude) { … 「Claudeレビュー概要」を含むレビューを最小化 const isClaudeComment = comment.body.startsWith('###') && (comment.body.includes('CRITICAL') || comment.body.includes('HIGH') || comment.body.includes('MEDIUM') || comment.body.includes('LOW')); if (isClaudeComment) { … 「###」で始まり、CRITICAL/HIGH/MEDIUM/LOWを含むコメント(Claudeのレビュー形式)を最小化 29
  18. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRのレビュー無効化 • まとめ 31
  19. BotによるPRの無効化 1. Claude Code GitHub Actions(anthropics/claude-code-action@v1)は、 デフォルトで人間のユーザーによる起動のみを許可 ➢ CIが落ちる 2.

    そもそもBotによるPRにがっつりレビューは必要ない Error: Workflow initiated by non-human actor: renovate (type: Bot). Add bot to allowed_bots list or use '*' to allow all bots. 32
  20. BotによるPRの無効化 実装 jobs: check-actor: runs-on: ubuntu-latest outputs: is_bot: ${{ steps.check.outputs.is_bot

    }} steps: - name: Check if actor is bot id: check run: | if [[ "${{ github.actor }}" == *"[bot]" ]]; then echo "is_bot=true" >> $GITHUB_OUTPUT else echo "is_bot=false" >> $GITHUB_OUTPUT fi review: needs: check-actor if: needs.check-actor.outputs.is_bot == 'false' reviewがほしい場合は、 @claude このPRをreviewして! が使える! 33
  21. 目次 • Claude Code GitHub Actionsとは • 自動レビュー • メンション呼び出し

    • 背景と課題 • ワークフローを一元化 • 社内コーディング規則の組み込み • レビューコメント最適化 • BotによるPRの無効化 • まとめ 34
  22. まとめ 成果 • ワークフロー設定を一元管理化し、メンテナンスにかかる工数を大幅に圧縮 • 社内独自のコーディング規約をシステムに統合し、全プロジェクトで均質なレビュー 基準の適用を実現 • コメントの最小化、Draft時、Botへの通知抑制により、開発者へのノイズを排除し、 重要な指摘に集中できる環境を提供

    今後は… • CIと連携した自律的な修正フローの構築 • パフォーマンスやコスト削減など、高度な視点を導入 • 開発者の声をプロンプトやルールに即座に反映させるツールの開発 • 最新技術のキャッチアップ 35