こつつみ

コツコツ積み上げる

AIの力で変わるコードレビュー:PR-Agentで開発効率アップ!

昨年からAIの進化が目覚ましく、私はChatGPTやGitHub Copilot、Grammarly など、多岐にわたるAIツールを活用しています。その中でも特に注目したいのが、プルリクエストのレビューを助けてくれる「PR-Agent」です。このツールはCodium AIによって開発されたオープンソースプロジェクトで、ChatGPTを核としています。

github.com

導入のきっかけ

私は現在ほとんど1人で開発をしているので、コードレビューは常に頭の痛い問題でした。そんなある日、LayerXが公開した記事を読み、その内容に「これが自分が求めていたものだ!」と思い、次の日に私は会社に導入を提案しました。

同様のサービスであるCodeRabbitも検討しましたが、GitHubスターの数でPR-Agentが上回っていたこと、さらにCodeRabbitがサブスクリプションモデルを採用していたため、将来的にコストが増加する可能性を避け、PR-Agentを選択しました。

主な機能

PR-Agentの最大の魅力は、OpenAIのAPIキーさえあれば、CI環境に簡単に統合できる点です。実際に私はGitHub Actionsを介して導入しました。

簡単な例として、OpenAIのモデルアップデートを利用してPRを作成し、PR-Agentがどのように機能するかを見てみましょう。

設定に応じて、自動的に説明を追加したり、レビューやタグ付けを行ってくれます。私の場合、会社の公用語が英語なので英語に設定していますが、日本語での使用も可能です(詳細は先に紹介したLayerXの記事に記載されています)。

まず、概要を書いてくれます。

その後、PRの分析。 ここでは、レビューにかかる見積もりコストを数値化してくれるので、レビュワーに対しても優しいですね。

そして、自動でレビューを行ってくれます。(自動でする設定をしています)

PR-Agentは、以下のようなコマンドをインラインでのレビューや質問にも対応しており、コードレビューのプロセスを大きく効率化してくれます。

参考までに、GitHub Actionsでやりたい場合、OPENAI_KEYGitHubのRepository secretsに設定し、以下を .github/workflows/pr-agent.yml に配置すれば、自分と同じ動きができるはずです。

OpenAIのモデルについては、 gpt-4-1106-preview を使っていますが、こちらから選ぶことができます。

name: PR-Agent

on:
  pull_request:
    types: [opened, reopened, synchronize]
  issue_comment:
    types: [created, edited]

jobs:
  pr_agent_job:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      issues: write
      contents: write
    name: Run pr agent on every pull request, respond to user comments
    steps:
      - name: PR Agent action step
        id: pragent
        uses: Codium-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          CONFIG.MODEL: "gpt-4-1106-preview"
          github_action_config.auto_describe: "true"
          github_action_config.auto_review: "true"
          github_action_config.auto_improve: "true"

総評とAIレビューのメリット

PR-Agentを使ってみて、悪い点を見つけるのは難しいです。唯一、Code Rabbitのようにレビューコメントに直接返信しても反応がない点が挙げられますが、それを差し引いても、このツールの提供する価値は計り知れないです。

AIレビューの大きなメリットは、自分では気付かなかった問題点や改善点に気付けることです。特にセキュリティに関しては、「security concerns」という項目が設けられており、これが非常に役立っています。コードの安全性を高めるための指摘や提案を受けることで、より堅牢なソフトウェア開発が可能になります。

プログラミングの世界でのAIの活用はまだ始まったばかりですが、PR-Agentのようなツールが開発の質と速度をどれほど向上させるか、これからの展開が非常に楽しみです。