CI/CDにClaude Codeを導入:コードレビューとテスト自動生成を「手放し」で実現

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

クイックスタート:5分でセットアップ完了

同僚がプルリクエスト(PR)にコメントをくれるのを待つ代わりに、コードをプッシュした瞬間にClaude Codeにエラーを「チェック」させることができます。このAIエージェントをGitHub Actionsに導入することで、フィードバックループを大幅に短縮し、開発者がすぐにバグを修正できるようになります。

ステップ 1:APIキーの準備
AnthropicのAPIキー(速度とコストのバランスが良いClaude 3.5 Sonnetを推奨)が必要です。このキーをリポジトリの Settings > Secrets and variables > ActionsANTHROPIC_API_KEY という名前で保存してください。

ステップ 2:ワークフローの設定
.github/workflows/claude-review.yml ファイルを作成します。これはClaudeを自動実行するための基本設定です:

name: Claude Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: Run Claude Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          # 変更されたコードファイルのみを取得し、ロックファイルは除外する
          FILES=$(git diff --name-only origin/main...HEAD | grep -E '\.(js|ts|py|go)$' || true)
          if [ -z "$FILES" ]; then exit 0; fi
          
          claude "以下のファイルのセキュリティとロジックをレビューしてください: $FILES" --yes

注意:--yes フラグは必須です。これがないと、Claudeがターミナルでの確認を待機してしまい、スクリプトが停止してしまいます。

Claude Codeは従来のLinterツールと何が違うのか?

SonarQubeやESLintは、構文エラーや命名規則の違反を見つけるのは得意です。しかし、複雑なビジネスロジックのエラーには手が出せないことがよくあります。私がClaude Codeを試してみたところ、状況は一変しました。

Claudeの強みはコンテキスト(文脈)の理解力にあります。例えば、電子マネーの残高減算ロジックを修正する場合、データベーストランザクションで関数をラップし忘れていると、Claudeが警告を発してくれます。こうしたミスはLinterでは決して見つけられません。実際、Claudeは隣でペアプログラミングをしてくれる「デキる」シニアエンジニアのような存在で、見落としがちなエッジケース(edge cases)を常に指摘してくれます。

ユニットテストの自動化:カバレッジ不足の悩みから解放される

テストコードの作成は、プロジェクトの中で最も気が進まない作業の一つです。私はテストケースの自動生成ステップをCIに統合した結果、新機能の開発において1日あたり約2時間のコード作成時間を節約できました。

以下のスクリプトをワークフローに追加できます:

- name: Generate Tests
  run: |
    claude "src/services/ 内の新しいサービスに対して Jest でユニットテストを書いてください" --yes
    git config --global user.name 'Claude Bot'
    git add .
    git commit -m "chore: auto-generated tests by Claude AI"
    git push

小さなコツ:ClaudeにはServices層やUtils層のテストだけを依頼するのが得策です。UIのテストは、AIがCSSセレクターの処理で「幻覚(ハルシネーション)」を起こしやすいため、避けたほうが無難です。

パイプラインのアップグレード:セキュリティ監査とパフォーマンス

単なるフォーマットのレビューに留めておくのはもったいないです。私はシステムを保護するために、さらに2つの「関門」を設けています:

1. セキュリティ監査(Security Audit)

ClaudeはSQLインジェクションやハードコードされたシークレット(秘密情報)の検出に非常に優れています。CIでの単純なコマンド一つで、本番環境へのAPIキー流出リスクを防ぐことができます。

2. パフォーマンスチェック

私はよくClaudeに O(n^2) のループや、ネストされたN+1クエリを探してもらいます。最近のプロジェクトでは、巨大な配列の処理によってサーバーが遅延するコードを、デプロイ前にClaudeが見つけてくれました。

コスト最適化の秘訣:財布を火の車にしないために

AIは便利ですが、使いすぎると月末の請求額に驚くことになります。私が実践している最適化方法は以下の通りです:

  • 選択的なトリガー: PRに ai-review ラベルが付いている場合のみレビューを実行します。これにより、些細なコミットに対する無駄なコストを最大80%削減できます。
  • コンテキストの絞り込み: Claudeには変更箇所(git diff)のみを送信します。不要な場合はプロジェクトのソースコード全体を送らないようにしましょう。
  • ルールの設定(System Prompt): チームのコードスタイルを定義するために .claudeconfig ファイルを作成します。例:「常にES6を使用する」「不要なコメントは書かない」など。
  • 最終判断は人間が:** AIも間違えることがあります。シニアエンジニアによる手動レビューなしで、Claudeが自動的に main ブランチにマージするように設定するのは絶対に避けましょう。

DevOpsへのAI統合は、もはや選択肢ではなく競争優位性です。皆さんもぜひ個人プロジェクトから取り入れて、生産性が劇的に変わるのを実感してみてください!

Share: