はじめに
こんにちは。 SWET の川口です。本稿では、DeNA 全社を対象に AI を活用したコードレビュー支援ツール「PR-Agent」を導入し、実際に運用している事例をご紹介します。
社内での AI ツール導入を検討されている方々や、PR-Agent の運用に興味をお持ちの方々にとって、何らかの参考になることを願っています。
コードレビューの課題と AI による解決への期待
コードレビューは、ソフトウェアの品質向上、バグの早期発見、そして開発チーム内での知識共有を促進する上で不可欠なプロセスです。しかし、Claude Code や Cursor など、近年の AI コーディングツールの台頭により、生成されるコードの量が増加しています。それに伴って、レビュー作業の負荷も増大しています。結果として、レビューに要する時間が長期化し、開発プロセスのボトルネックとなるケースも少なくありません。
この課題に対し、AI の活用が有効な解決策になると考えました。とくに、コードの一次レビューを AI に自動化させることで、人間のレビュー担当者はより複雑なビジネスロジックやアーキテクチャ設計といった高付加価値なレビューに集中できます。これにより、全体の生産性向上に繋がると期待しました。
しかし、既存の多くの SaaS として提供される AI コードレビューツールは高コストであり、コスト効率の良いソリューションを見つけることが課題でした1。
PR-Agent (qodo-ai/pr-agent) について
これらの課題を解決するため、AI コードレビューツールの導入を検討しました。OSS では PR-Agent ( qodo-ai/pr-agent ) がデファクトスタンダードとなっており、セルフホスト可能、かつ GitHub App としてセットアップできることから、導入を決定しました。
なお、PR-Agent は GitHub Actions を使った実行( ドキュメント )も可能ですが、全社展開を考慮して GitHub App での運用を選択しました。 GitHub Actions の場合、各リポジトリに個別に Workflow ファイルを配置する必要があり、利用者にとって導入の手間となります。一方、GitHub App であれば organization に一度インストールするだけで、配下のリポジトリで即座に利用開始できるため、全社サービスとしての利便性が格段に向上します。また、GitHub App で統一的にサービス展開することで、LLM API key を一元管理することができるため、各事業部への API key の払い出しや管理コストを削減することができます。
PR-Agent の機能については以下の記事がとても参考になります。そのためこの記事では詳細については説明しません。
- PR-Agent という AI ツールを導入してみた
- PR-Agent を使って Pull Request を AI レビューしてみた (LayerX 社)
- AI によるコードレビュー “PR-Agent” を導入した効果と課題について(DMM 社)
PR-Agent を GitHub App としてセットアップした場合、以下のように動作します。PR に関するイベントを GitHub App に設定した webhook 経由で受け取り、LLM API を呼び出してレビュー結果を生成し、PR のコメント等の形式で投稿します。
PR-Agent の実行フロー(GitHub App の場合)
PR-Agent のシステム構成
次に、DeNA で運用している PR-Agent のシステム構成を紹介します。
PR-Agent のシステム構成は非常にシンプルで、GitHub App 経由で webhook を AWS Lambda の Function URL で受けて PR-Agent を実行するのみです2。LLM API は Azure OpenAI Service の gpt-4.1
を利用しています3。
また、DeNA では社内 VPC に構築された GitHub Enterprise Server を利用しています。そのため疎通のためには PR-Agent は VPC Lambda として実行する必要があり、Transit Gateway 経由で VPC 間接続を構成しています。
Azure OpenAI Service の API Key などの秘匿値は AWS Secrets Manager に保存し、Lambda 関数内から取得させています。当時の PR-Agent には Secret Manager のサポートがなかったため、機能追加の PR ( qodo-ai/pr-agent#1839 ) を送って対応してもらっています。
PR-Agentシステム構成図
PR-Agent の設定
PR-Agent の設定は、Lambda 関数に環境変数を設定することで行えます。
また、リポジトリ直下に .pr_agent.toml
を配置することで、環境変数による設定をリポジトリごとにオーバーライド可能です。そのため、基本的に Lambda 関数の設定は最小限に抑えて、必要なカスタマイズは利用者側で .pr_agent.toml
を配置してもらう方針としました。
ただし、いくつか汎用的に有効な設定については Lambda 関数の設定に含めています。次でその中のいくつかをご紹介します。
出力の日本語化
PR-Agent は英語でのレスポンスがデフォルトですが、日本語での出力を設定することで、日本語話者にとって理解しやすいレビューコメントを生成できます。
以下のような設定を含めることで、PR-Agent のレスポンスを日本語で出力できます。
[config]
response_language = "ja-JP"
[pr_description]
extra_instructions = "日本語で回答してください。"
[pr_reviewer]
extra_instructions = "日本語で回答してください。"
[pr_code_suggestions]
extra_instructions = "日本語で回答してください。"
PR branch への push 時の挙動
デフォルトでは PR branch への push 時には何のコマンドも実行されません。ただし description は常に最新の状態に保っておかなければ、人間が確認する時に混乱してしまう可能性があります。
そのため、以下のような設定を含めることで、PR branch への push 時にも /describe を実行し、description を最新の内容で更新するようにしています。
[github_app]
handle_push_trigger = "true"
push_commands = ["/describe"]
PR-Agent によって生成された description の投稿形式
PR-Agent が生成する description は、PR の本文を直接書き換えるのではなく、コメントとして投稿するように設定しています。これにより、人間が PR の本文を修正する際に PR-Agent の編集と衝突することなく、AI による分析結果を追加で確認できます。
[pr_description]
add_original_user_description = "false"
publish_description_as_comment = "true"
修正提案(/improve コマンド)の形式
PR-Agent には、PR の差分修正提案のコメントをつけてくれる /improve というコマンドがありますが、デフォルトだと以下のように複数の指摘が 1 つのコメントとして投稿されます。

ですが、以下の設定を追加することで、PR の特定の diff に対して commit 可能な形で修正提案をつけてくれるようになります。 必要な修正提案は GitHub の UI 上で commit できると便利であると考え、有効にしています。
[pr_code_suggestions]
commitable_code_suggestions = "true"

導入の結果
利用状況
PR-Agent を全社に導入して以来、その利用状況は急速に拡大しています。以下の図は、PR-Agent を利用した GitHub organization・repository のべ数、および PR-Agent の実行回数4です。



図からわかる通り、リリース直後から急速に利用者が増えています。直近でみると、おおよそ以下のような利用状況です。
- PR-Agent の実行回数: 1,000 ~ 1,500 回/日
- PR-Agent を利用した GitHub organization のべ数: 約 40 個
- PR-Agent を利用した GitHub repository のべ数: 約 200 個
これは当初の予想を上回るものであり、社内の AI 活用への高い関心を示しています。
運用コスト
また運用コストについても紹介します。運用にかかる費用はおおよそ以下の通りです。
サービス分類 | コスト | 備考 |
---|---|---|
AWS | 約$150/月 | 支配的なサービス: Transit Gateway、NAT Gateway、Lambda |
Azure OpenAI Service | 約$500/月 | モデルは gpt-4.1 を使用 |
利用状況と照らし合わせても、既存の商用サービスと比較1して低コストで一次レビューの効率化を実現できています5。
システム保守は安定しており、後述の NotebookLM による問い合わせ対応の効率化等により、限られたリソースで全社向けのサービスを提供できています。
PR-Agent の運用
運用面では、導入後の問い合わせ対応を効率化するため、 NotebookLM を活用しています。
NotebookLM には以下をデータソースとして投入しています。
- PR-Agent のソースコード(
qodo-ai/pr-agent
)
- リポジトリのソースコードを 1 つの XML や Markdown にバンドルできる yamadashy/repomix というツールを利用して投入
- 利用者向けに作成した社内ドキュメント
これにより、NotebookLM にて以下のような質問への対応が可能になりました。
- セットアップ方法やツール利用費用請求、ツールの利用可否判断など、DeNA 独自の運用に関する質問への回答
- ソースコードを踏まえた PR-Agent の設定に関する質問への回答
利用者には基本的に NotebookLM を利用してもらうことで、問い合わせコストの削減を図りました。
おわりに
本稿では、DeNA 全社における AI コードレビューツール PR-Agent の導入と運用についてご紹介しました。GitHub App を通じて簡単に利用できるようにしたことで、社内での PR-Agent の利用が一気に広がり、低コストで一次レビューの効率化を実現しました。さらに、全社展開することで設定のブラッシュアップや知見の共有が活発化し、AI を活用した開発文化の醸成に繋がっています。
今後の展望としては、AI によるレビューが実際にどれくらいの生産性向上に繋がっているのかをより定量的に計測していくことや、新たな AI ツールの検証や開発、導入を考えています。
DeNA はこれからも、最新の AI 技術を積極的に取り入れ、開発プロセスのさらなる効率化と品質向上に挑戦します。最後までお読みいただき、ありがとうございました。
脚注
-
既存の商用サービスとしては CodeRabbit や Qodo Merge などがありますが、両者とも 1 ユーザーあたり $30/月 程度と高コストです ↩︎ ↩︎
-
gpt-4.1 は GPT-4 シリーズの最新版で、コード理解・生成性能とコストのバランスを考慮して選定しました。コードレビューに必要な論理的な思考能力と日本語対応が優秀です ↩︎
-
PR-Agent は PR 作成時に複数の機能(/describe, /improve, /review)が同時に実行されるため、実行回数は実際の PR 数や push 数よりも多くなります。 ↩︎
-
月間約 650 ドルのコストで 1 日 1,000-1,500 回実行している計算になります。例えば商用 Saas($30/月/ユーザー)を 1,000 名のエンジニアが利用した場合は月額 30,000 ドルとなるため、かなりの低コストで運用できているということがわかります ↩︎
最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。