pr-agentを導入してみた話
こんにちは!
株式会社カンリーでSREをやっている井上です。
AI盛り上がってますね!カンリーでも様々な形でAIの利活用が進んでいます。
特にエンジニアだとCursor, Copilot, Devin, Clineなどのアップデート情報やナレッジを毎日聞くようになってきました。時代についていくのに必死です。
カンリーでのAI取り組みはhatamasaさんが記事を書いてくれていて面白いので、こちらもぜひ読んでみてください!
コードレビューもAIの時代
CursorやDevinはコード生成をしてくれたりアシストしてくれるAIですが、コードレビューもAIが実施してくれる時代です。
AIにレビューをお願いするメリットとしては以下があるかと思います。
- レビュー依頼時点で最小限の品質が担保された状態を作れる
- レビューに対するコミュニケーションコストを下げれる
また、カンリーではこれまでCodeRabbitを導入していましたが、以下理由により新たなツールを模索していました。
- CodeRabbitはユーザー単位の課金で開発者が増えれば増えるほどコストがかかる
- 可能な限り全ユーザーで利用できる状況を創出したい
- コストとの兼ね合いも考慮しself hostedで利用できるのが理想
- レビュー対象の主な開発言語はphp, Go, TypeScript, HCL
これらの要件を満たすため、pr-agentをPoC的に導入してみることにしました。
GitHub Copilot code review や Gemini Code Assist も利用可能になりましたが、対象の開発言語をサポートしていないなどの理由で見送りました。(2025年4月現在)
ただ、進化が早いので採用する未来はあるかもしれません。
pr-agentのインテグレーション
GitHubで利用する場合はGitHub ActionsかGitHub Appsを選択できます。
リポジトリが少ない場合は前者でもよいかと思いますが、1つずつワークフローを作っていくのは手間なのでGitHub Appsでの利用としました。構成は以下です。
こうすることでGitHub Apps側でリポジトリを許可するだけで利用できます。
Lambdaで動かす場合はECRにイメージをpushした後、デプロイする必要があります。
関数URLを発行すれば、API Gatewayなどを利用すること無くLambdaだけで完結できて便利です。
詳細は公式docsをご確認ください。
言語モデルはBedrockにてClaudeを利用しています。
LambdaのIAM Roleにbedrock:InvokeModel
とbedrock:InvokeModelWithResponseStream
が必要です。
肌感の精度
PR descriptionやレビュー内容を見てみると、割と的を得たことを言っている気がします。
"最小限の品質担保"という観点では、十分に担えるのではないかと思います。
特に私はTerraformを書くことが多いのですが、IAM Policyなどではセキュリティ観点でよく指摘されますw
VPC新規作成時のVPCエンドポイントで指摘された
Configを各リポジトリに配置して設定を上書きできる
Lambdaで動かす場合にはConfigもまとめてbuildすることで共通の設定となります。
ただリポジトリ毎に固有のルールやプロンプトにしたい場合はあるので、そういった際はリポジトリのルートにpr_agent.toml
を配置すれば固有の設定が可能です。
精度を高めていくためやリポジトリ固有のレビュー観点などあればここで補完できます。
リポジトリ個別設定の例
コストはどれくらいか
許可しているリポジトリ数が24のとき、直近30日間のコストは以下のようになっていました。
- 全体:$88.79
- Lambda:$0.55
- Bedrock:$88.24
ユーザー数課金と比較した場合にもコストメリットがかなりありそうです。
ただこちらは許可しているリポジトリ数やコードの変更量・PR数に依存するのであくまで参考程度にとどめていただければと思います。
余談:AIvsAIが繰り広げられた
Devinを利用した開発をしているとDevinがPR作る→pr-agentがレビューする→Devinがコメントに反応して修正する→pr-agentがレビューする、というAIvsAIが繰り広げられましたw
人間が追いつけない速さでレビューと修正が発生して傍観するしかできなかったですw
Datadogのモニターにて遅延評価を300sにしろとのこと、推奨値は900s
Validationを入れましょうとのこと
そしてDevinが両方修正した
おわりに
pr-agentを導入することでコストを下げつつ最低限の品質を担保しながらレビューできる仕組みができました。OSSだと利用できる機能に制限がありますが、そこを差し置いても十分に利用できるものだと思います。
ただ冒頭にも記載した通り、AI時代で流れが早いので今後新たなサービスが出た際は積極的に検証していきたいお気持ちです!

株式会社カンリーは「店舗経営を支える世界的なインフラを創る」をミッションに、店舗アカウントの一括管理・分析SaaS「カンリー店舗集客」の開発・提供、他複数のサービスを提供しております。 技術系以外のnoteはこちらから note.com/canly
Discussion