コードレビューAIボットの自作:GitHub Actionsと連携させる方法
コードレビューは品質担保の要ですが、同時にボトルネックでもあります。スタイルの不統一や、初歩的なバグの指摘に時間を取られ、本質的な設計議論ができないことはありませんか?
市販のAIレビューツール(CodeRabbit等)も優秀ですが、コストやカスタマイズ性の面で、自作ボットにはまた違った魅力があります。今回は、PythonとGitHub Actionsを使って、自分だけの最強レビュアーを作る方法を紹介します。
仕組みの概要
- トリガー: Pull Request (PR) が作成・更新された時にGitHub Actionsが発火。
- 差分取得: GitHub APIを使って、変更されたファイルの差分(Diff)を取得。
- プロンプト作成: 差分をLLMに投げ、「熟練エンジニアとしてレビューして」と指示。
- コメント投稿: LLMからの指摘事項を、PR上の該当行にコメントとして投稿。
実装ステップ
1. OpenAI APIキーの取得とSecrets設定
GitHubリポジトリの Settings > Secrets and variables > Actions に OPENAI_API_KEY を登録します。また、PRにコメントするための GITHUB_TOKEN はデフォルトで利用可能です。
2. Pythonスクリプトの作成 (review.py)
import os
import requests
from github import Github
def analyze_diff(diff_text):
# ここでOpenAI APIを叩く
# プロンプト例: "以下のコード差分にバグやセキュリティリスクがあれば指摘してください..."
pass
def main():
g = Github(os.getenv("GITHUB_TOKEN"))
repo = g.get_repo(os.getenv("GITHUB_REPOSITORY"))
pr_number = int(os.getenv("PR_NUMBER"))
pr = repo.get_pull(pr_number)
# 変更ファイルの取得
for file in pr.get_files():
patch = file.patch
review_comment = analyze_diff(patch)
if review_comment:
pr.create_issue_comment(f"## AI Review for {file.filename}\n\n{review_comment}")
if __name__ == "__main__":
main()
3. Workflowファイルの作成 (.github/workflows/ai-review.yml)
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- run: pip install PyGithub openai
- name: Run Review Script
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: python review.py
AIレビュアーを育てるコツ
ただ「レビューして」と頼むだけでは、一般的なことしか言いません。「自社のコーディング規約」や「過去のバグ事例」をプロンプトのコンテキスト(System Prompt)に含めることで、自社専用のレビュアーへと進化します。
- 命名規則のチェック: camelCase / snake_case の指摘。
- セキュリティ基準: SQLインジェクションの可能性がある箇所の発見。
- パフォーマンス: N+1問題の可能性の指摘。
まとめ
自作ボットの最大のメリットは、「自分たちが重点的に見てほしいポイント」をAIに教え込める点です。最初は単純な指摘から始め、徐々にルールを追加していくことで、チームの技術的負債を返済する強力な資産となるでしょう。