株式会社ヘンリーでソフトウェアエンジニアをしているwarabiです。
ヘンリーでは今年の1月から、一部のPull RequestでAIがレビューをする際にApproveを出す権限も与えています。
今回はAIにApproveを出させるようにした経緯や、約半年間の運用をしてみてどのような効果があったかをまとめます。
AI活用による実装速度の向上
今年の1月頃から、ヘンリーではClaudeCodeをより効果的に活用して実装の全自動化に力を入れてきました。その成果の一部として、IssueのIDを渡すだけで設計、実装、PR作成までをClaudeCodeが自動で行ってくれるSkillの作成などが挙げられます。
Claude Codeで開発を全自動化する - Orchestrator型Skillの設計と実践 - 株式会社ヘンリー エンジニアブログ
このような成果から1月を転換点として実装の作業は早くなりましたが、その結果としてレビュー対象であるPull Requestの数も増え、レビューコストが高くなるという課題が早々に見えてきました。
レビューコストはAI活用が進むほどに大きな問題となることは目に見えて分かっていたため、早めに解決する必要があると考えました。
Approve自動化
レビューコスト増加の対策として、今回はAIがPull RequestをレビューしてApproveも出す環境を目指しました。
ヘンリーではSkill活用による実装の自動化以前から、CursorやClaudeCodeによるPull Requestレビュー自体は行っていました。ただしこれはレビューコメントを投稿するのみで、Pull Request自体にApproveまでは出さない状態です。コードの品質が高くてもコメントで「Approveです!」と投稿するまでの動きになります。
そこでこのAIレビューのワークフローを調整。Pull RequestにAutoApprovalというラベルを付けていた場合、AIのレビュー結果を元に追加でApproveを出すようにしました。


全てのPull RequestでApprove権限を与えるのではなくラベルを付ける運用にした理由は、人間によるレビューを必須にする余地を残すためです。
このAutoApprovalはバグ修正や簡単な機能追加など、実装難度が低いPull Requestで使う想定のものです。
テーブル定義更新のような破壊的変更を伴うPull Requestや、複雑な実装を伴うPull Requestはラベルを付けずに引き続き人間のレビューを必須とできるようにしています。
どのPull Requestにラベルを付けるかの判断は、Pull Requestの作者に委ねる方針にしています。
組織への展開と性善説運用
AIによるApproveの仕組み自体は整いましたが、これを組織全体にすぐ展開することは危険です。この仕組みを利用する人は、生成コードやレビューについてAIに責任は無くあくまで人間に責任があることを理解しなければなりません。
そこで組織にAutoApprovalを展開するにあたり、AIにApproveさせるとはどういうことかを合わせてNotionに整理して伝えることとしました。

ドキュメントでは以下の2点を理解してもらうことを特に重視しました。
- AIのレビューは完璧ではない
- AIに責任は無い。最終的なコードの責任が人間にあることは今までと変わらない
ドキュメントを見てもらうことで、マージするコードの責任をあくまで人間(個人やチーム)にあることは変わらないことを了承してもらい、それを利用するかはあくまで各自に任せる性善説運用。導入のハードル自体は上げずに安全に活用してもらうため、このような手順を踏むようにしました。
AutoApproval導入後の状況
AutoApprovalを展開し簡単なPRはAIによってレビューを済ませることで、レビューを遅らせることなく実装のスピードとの両立が行えるようになりました。
AI活用による影響を確認するため、ヘンリーの主要リポジトリについて約半年間のPull Requestのデータを抽出してみます。
全体のPull Request作成数としては、1月のターニングポイント以前と以降を比較すると約2倍の数値となっています。

またAutoApprovalラベル有りとラベル無しのPRの数も比較してみました。
AutoApprovalは導入後から広く活用されるようになりましたが、意外だったことはラベル無し( = 人間のレビューが必須)のPull Requestが約50%あり想像よりも多かった点です。

AutoApprovalの利用についてバックエンド・フロントエンドそれぞれの割合も見てみました。


フロントエンドでは約70%のPull RequestでAutoApprovalが、バックエンドでは約40%のPull RequestでAutoApprovalが使われている状況でした。 この差はバックエンドについてはテーブル定義などもあり、破壊的変更が起きやすいためより慎重なレビューが求められるためと考えられます。
これらの数値から、すべてのPull RequestでAutoApprovalが使われるような乱暴な利用状況にはなっていなく、人間が見るべきPull Requestは引き続き人間が見るよう線引きが行われていることが読み取れます。
ヒヤリハットと安全策
事前に予想できていたことではありますが、AutoApprovalによる影響は良い側面だけではありません。AutoApprovalを使った安易なマージを要因としたヒヤリハットは一定発生しうる問題でした。
このような問題は発覚後に都度対応を検討し、これまで以下のような改善を積み重ねてきました。
- mainなどリリースに影響するブランチへのPull RequestではAutoApprovalを使えなくする
- サイレントにPull Requestが作成・即マージされることがないよう、メンバーがPullRequestの存在には気付けるよう通知周りの整備をする。
- linter など 各種設定ファイルの見直し
AutoApprovalの展開後もブラッシュアップを続け、より使い勝手の良い安全な環境を目指そうと取り組んでいます。
AIレビューの品質について
またヒヤリハット以外にもレビュー品質についても課題が残っています。 AIによるレビューの品質は利用するAIモデルの性能やプロンプトに左右されやすく、現状だと複雑な指摘に関してはまだ人間によるレビューに軍配が上がる印象があります。
テストの不足や、潜在的な問題を含んでいるコードをAIが緩い判定でApproveする点は未だ解決しきれていない課題の1つです。
この課題に関してはレビュー用プロンプトやClaude.mdの整備などの改善も行っていますが、モデル選択による影響が大きいとも感じています。Pull Requestの規模や領域に応じてモデルを切り替えるような仕組みの検討も今後行いたいと考えています。
まとめ
今回はAI活用によるPull Request数増加にともなうレビューコスト増加の対策として、AIによる自動Approveの取り組みを行い、実装スピードとレビューコストの両立を目指しました。
ヒヤリハットやレビュー品質といった課題がいくつか残っていますが、AIにより働き方自体が大きく変わっていく流れに適応するべく今回の仕組みを導入することは必要な流れでした。
AI活用によって生じた新しい問題をさらにAIによって解決する。この繰り返しによって働き方を引き続きアップデートしていこうと思います。


























