🧠

エンジニアのための実践AI活用!Claude Code ActionとGit Submoduleで始めるスマートなコードレビュー

に公開

はじめに

「今日もコードレビュー待ちで開発が止まってる...」「レビュアーによって指摘内容がバラバラで困る...」

こんな経験、ありませんか?特にTerraformのようなインフラコードは、ちょっとしたミスが本番環境に大きな影響を与える可能性があるため、レビューは慎重になりがちです。
でも、だからといって開発速度を犠牲にするのはもったいないですよね。

そこで今回は、Claude Code ActionとGit Submoduleを組み合わせて、AIによる自動コードレビューシステムを構築する方法をご紹介します。
これを導入すれば、一貫性のある高品質なレビューを自動化でき、エンジニアの負担の軽減が大きく期待できます。

AI活用に興味があるすべてのエンジニアの皆さんに、実践的なノウハウをお届けします!

なぜ今、自動コードレビューなのか?

従来のコードレビューが抱える課題

コードレビューは品質向上に欠かせない工程ですが、いくつかの課題があります

  • 時間とコストの問題:レビュアーの稼働時間を大きく占有し、開発サイクルのボトルネックになりがち
  • 属人性の問題:レビュアーのスキルや経験によって指摘内容が変わり、一貫性に欠ける
  • 見落としのリスク:人間である以上、疲労や集中力の低下によってミスを見逃す可能性がある

Terraformコード特有の難しさ

特にTerraformコードのレビューでは、以下のような特有の課題もあります。

  • インフラ構成の複雑さ:クラウドリソース間の依存関係や設定の妥当性を判断するのが難しい
  • セキュリティリスクの潜在性:不適切な設定が重大なセキュリティリスクを生む可能性
  • 変更影響の大きさ:一つの変更が複数のリソースに影響を与える可能性

これらの課題を解決するために、AIを活用した自動レビューシステムに注目しました。

Claude Code Actionによるスマートレビュー

Claude Code Actionとは?

Claude Code Actionは、AnthropicのClaude AIを活用してGitHub Actions上で動作する自動コードレビューツールです。

Pull Requestに対して自動的にコメントを生成し、コードの品質向上やセキュリティリスクの低減に貢献してくれます。
https://github.com/marketplace/actions/claude-code-action-official

Git Submoduleで実現するルール共有

今回の仕組みの肝となったのが、Git Submoduleを活用することです。
エディタで利用するコーディング規約等のルールを一元的にまとめたリポジトリが存在していました。
これは、各リポジトリでルールを個別に定義するのではなく、Git Submoduleとして、各リポジトリに追加し、RooCodeで言えば.roomodeファイル等でルールを参照して活用しています。
Claude Code ActionsでもこのSubmoduleを使い、自動レビューするように実装しました。

ワークフローの簡易サンプルは以下になります。

name: Claude Code (Automatic Review)

on:
  pull_request:
    types: [opened, synchronize, edited, ready_for_review]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  claude-automatic-review:
    if: ${{ !contains(github.actor, '[bot]') }} # renovateなど[bot]を含む場合は除外する
    runs-on: ubuntu-latest
    permissions:
      issues: read
      id-token: write
      contents: read
      pull-requests: write
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.SRE_BOT_APP_ID }}
          private-key: ${{ secrets.SRE_BOT_APP_PRIVATE_KEY }}
          owner: organization
          repositories: terraform-repo, rules-repo

      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          token: ${{ steps.generate-token.outputs.token }}
          fetch-depth: 1
          submodules: recursive

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          direct_prompt: |
            このPull Requestに含まれるTerraformコードについて確認してください:
              1. PRのタイトル・説明・コミットメッセージから変更の意図を理解する
              2. `${{ github.workspace }}/rules/coding-style/terraform/general.md` のルールに準拠しているか確認
              3. ルール例外が適用される正当な理由があるかを判断
              4. 技術的制約や依存関係の問題がある場合は例外として考慮
            問題点があれば具体的に指摘し、修正案を提示してください。
            必ず変更の背景・意図を考慮してレビューしてください。
            必ず日本語で応答してください。

また、参照させているルールの一部は以下のようなものになります。

* **コメント**:
    * 複雑なロジックや、自明でない設定、意図的な設定 (例: セキュリティ警告の抑制) にはコメントを記述します。
    * コメントは行数に関わらず `#` を用います。 `//` や `/* */` は用いません。
    * リソース定義のグルーピングやファイルの冒頭など、大きなブロックの区切りにコメント (`# -------- Section Name --------` や `#################### Section Name ####################` など) を記述して可読性を高めます。
* **ハードコーディングの禁止**: 
    * 機密情報 (パスワード、アクセスキー、APIトークンなど) をTerraformコード内に直接記述しません。代わりにSOPS ([terraform-provider-sops](https://github.com/carlpett/terraform-provider-sops)) などを活用します。

運用してみた結果

実際にPull Requestのレビューをしてもらった結果です。
しっかりと我々が定義したルールをもとにレビューをしてくれています。
実行完了までは少し時間がかかりますが、この速度で網羅的にチェックしてくれるのは非常に体験が良いです。

今後の展望と応用アイデア

この仕組みは、Terraform以外にも応用可能です。
Kubernetes Manifest や Helm Chart に関してのルールも定めながらClaude Code Actionでのレビューを検討しています。
また、ルールの内容も継続的に改善していくことで、レビュー精度をさらに向上させることを見据えています。

AIは強力なツールですが、意図を汲み間違える可能性がある等、最終判断は人間が行うべきことだと考えていて、現段階では開発者のApproveは必須としています。
一方で、定型的な作業(例:環境変数の追加等)については、AIの自動レビューが通ればマージ可能とするような未来は描いています。

まとめ

Claude Code ActionとGit Submoduleを組み合わせることで、効率的で一貫性のある自動コードレビューシステムを構築できました。

この仕組みの素晴らしいところは

  • 導入の手軽さ:既存のGitHub Actionsの仕組みを活用
  • 拡張性:ルールの追加・修正が容易
  • チーム適用:複数プロジェクトでの共有が可能

こうした実践的なアプローチから始めることで、開発チームの生産性を大きく向上させることができます。
ぜひ皆さんのプロジェクトでも試してみて、AI時代の開発スタイルを体験してみてください!

GLOBIS Tech

Discussion