In Silico

AIエージェント

AI生成PRのレビュー負担にどう対処するか:分割・受付停止・量の削減

2026/9/8 (更新: 2026/10/23)

  • AI生成PR
  • AIエージェント
  • コードレビュー
  • GitHub
  • gh-stack
  • git-spice
  • tldraw
  • Flue
  • Astro
  • AI SDK
  • Vercel
  • スタック
  • プルリクエスト
  • issue
  • discussion
  • 依存関係
  • レビュアー
  • メンテナー
  • 滞留
  • ボトルネック
  • CONTRIBUTING.md
  • ペアプログラミング
  • 静的解析
  • 自動テスト
  • リベース
  • Thoughtworks
目次
背景・問い・要点
背景

多くのリポジトリでは、コードの変更はプルリクエスト(PR、変更をレビューのために提案する仕組み)として届く。PRがコードベースに入るのは、受け取る側のメンテナーが差分を読み、その内容に責任を持つと決めて承認したときである。書いた人がどれほど自信を持っていても、メンテナーが読んで納得しないかぎり、変更は入らない。

PRを書く作業は近年ずっと速くなってきた。いまはAIエージェントにPRを書かせることもできる。差分を読んで判断する作業は、人が一行ずつ目を通す以上、同じようには速くならない。書く側の生産量が増えても、読む側の処理能力は変わらない。

届いた差分が、メンテナーが一度に読んで判断できる大きさを超えると、メンテナーはそのPRを承認も却下もせず、そのまま待たせる。

問い

AI生成PRのレビュー負担に、受け取る側はどう対処しているのか。

要点

挙がっている手は、PRを依存の層ごとに分ける、受付を狭めてissueを入り口にする、人のレビューを高リスクの変更に絞る、の三つである。運用を変えたと報じられたのは、受付を狭める側である1。

tldrawはPRを無効にしてissue(課題や提案を書き込む場)を入り口にし2、Flueは外部PRを自動で閉じてissueかdiscussionへ変える1。層で分ける手順はツールの提示1件、レビューを絞る案は主張1本にとどまる34。

受付を狭める代償は、外部PRのレビューが次のメンテナーを見つける経路だったことで、issueがその代わりになるかはまだ観測されていない1。

モデル・例示

1,200行の差分を、行数で割るか層で割るか

※ この節の例は、説明のために作った架空のものです。

1,200行の差分が届いたとする。中身は四つの層で、データの定義200行、それを使うAPI400行、APIを呼ぶ接続150行、画面450行である。後の層は前の層に依存する。

行数で300行ずつ四つに割ると、1つ目はデータの定義の全部とAPIの先頭100行、2つ目はAPIの残り300行、3つ目は接続の全部と画面の先頭150行、4つ目は画面の残り300行になる。2つ目を読む人は、APIの先頭100行を別の塊で読まされる。3つ目は、性質の違う二つの層を一度に判断させる。どの塊も300行に収まっているのに、塊一つでは承認も差し戻しも決めにくい。

層で割ると、塊は200行・400行・150行・450行と大きさが揃わない。それでも、どの塊も一つの層だけを含み、次の塊は前の塊で確かめたことの上に立つ。データの塊はデータに詳しい人に、画面の塊は画面に詳しい人に渡せる。

どちらの割り方でも、読む総量は1,200行のままである。割り方が変えるのは塊一つで判断できるかどうかであって、読む量ではない。読む量を減らすには、書式や、テストで決定的に検査できる部分を機械に回し、人の読む対象から外す別の手が要る。

入り口をissueへ移すと、この1,200行は差分としては届かない。届くのは、何を変えたいかを書いたissueである。受け取る側はコードを読む前に、その変更を入れるかどうかを議論で決め、入れると決めたらコードは自前のエージェントに書かせる。

受け取り側に負荷が移った

コードを書く工程が速くなったとき、遅れて負荷を受けたのは受け取る側だった。誰かが変更を書き上げても、それが共有のコードベースに入るまでの間には、必ず人が読んで判断する工程が挟まる。書く工程が速くなった分だけ、この工程に届く量は増える。

読む工程の能力が変わらないまま入力だけが増えると、待ち行列が伸びる。VercelのAI SDKは、週2,000万回を超えるnpmダウンロードを持つプロジェクトで、6月末の時点で「1,000件を超えるopen issueと、800件近いプルリクエスト」を抱えていた。エージェントによる仕組みを入れて4週間後、Vercelはその仕組みが「マージするPRの25〜35%を書き、issueの70〜80%を閉じている」としている1。

ただし、滞留のすべてがAIに由来するわけではない。Astroの創業者Fred Schottは、issueが処理能力より速く届く状態が5年続いたと述べており、Schottが挙げた滞留はPRではなくissueのものである1。

この負荷に対して取られた手は、切れ目を置く人と場所が異なる。ある手は書く側が作業を先に層へ分けて送り、別の手は受け取る側がコードの前に切れ目を置き、また別の立場はレビューの量そのものを問い直した。

受け付けたまま割るツールを、GitHubが出した

GitHub Engineeringのブログで、Julia Muiruriは2026年8月4日、1本の大きなAI生成PRになりがちな作業を、レビューできる単位のスタック(積み重ね、互いに依存し合う複数のブランチを順に連ねたもの)へ分ける手順を公開した3。Muiruriは手順を示す前に、この仕組みを「これは、あなたとあなたのエージェントに、そうしなければ1本の巨大なPRに収まってしまう作業を、小さく焦点の定まった、独立にレビューできる層の連なりへ分解する、GitHubに組み込みの方法を与える」と説明している。

Muiruriによれば、層に分けずにエージェントへ書かせると、作業は1本のPRに収まりがちになる。その差分は1,000行を超え、機能一つのすべての層、シードデータを含むデータモデル、検証つきのAPIルート、クライアントのUIを一つに含む。記事中では、レビュアーがそれを「1,721行の変更」と受け取る場面も置かれている。Muiruriはこの状態を「レビューが難しくなり、そのまま……放置される」と書いている。

層に分けると、4本のブランチ(4層)からなる1つのスタックになる。L1がデータカタログの基盤、L2が商品検索API、L3がチャットからAPIへの接続、L4がUIと引用表示である。それぞれのPRは「レビュアーの頭の中に収まるだけの大きさ」だとされている。

切る基準は行数ではなく、層の依存関係である。データ、API、接続、UXという層があり、後の層は前の層に依存する。この依存の順にPRを並べることが、分ける基準そのものになっている。層が分かれると、層ごとに別のレビュアーへ配れる。データはデータの担当者が、UXはUIの担当者が見る3。受け取る側の読み方も示されている。上の層から読んで最終的な目的を先につかみ、下の層からレビューする。各層の実装は、その前の層を理解して初めて意味をなすからだ3。

手順も具体的に示されている。gh extension install github/gh-stackとgh skill install github/gh-stackでツールを入れ、スタックの土台となるブランチ(通常はmain)を決め、基盤となる層を最も下に置いて依存の順に層を並べる。コードを書くのはその後で、層ごとに担当のエージェントを呼び、gh init stackやgh stack addでその層のブランチを作って書かせ、検証が通れば層をコミットする。4つの層が揃ってから、gh stack pushとgh stack submitでPRにする。下の層に修正が入ったときは、gh stack syncが取得、上位ブランチの連鎖リベース、押し出し、PR状態の同期をまとめて行う。

なお、こうしたスタックの運用は専用のツールを前提にしている。GitHubではPRの画面から始められる組み込みの機能で、ターミナルではCLI拡張のgh stackへつながるとされているが、GitHub以外のホスティングで同じことをするなら別のツールが要る。git-spiceのドキュメントは、スタックしたGitブランチを管理し、トランクブランチとの同期、依存するブランチの再スタック、変更がマージされた際のブランチの付け替えを自動化すると述べている。対応先はGitHubのほか、Bitbucket、Gitea、Forgejo、Azure DevOps、GitLabにも及ぶとしている5。

運用を変えたプロジェクトは、コードの前で切った

tldrawは、tldraw/tldrawリポジトリのCONTRIBUTING.mdで、次のように書いている。「私たちは現時点でtldrawへの貢献を受け付けていません。このリポジトリではプルリクエストは無効になっています」2。

その代わりに求めているのは、「issueを作成すること」である。CONTRIBUTING.mdは理由をこう説明する。「issueはチームと提案された変更について議論する最善の場所であり、私たちはそのすべてに目を通しています」。コード例が議論の助けになる場合には、「リポジトリをフォークし、issueの中で自分のブランチにリンクすること」を求めている。詳しい経緯についてはissue #7695を参照するよう案内している。2026年1月15日のそのissueで、創業者のSteve Ruizは、AIツールだけで生成された貢献が大きく増え、その多くはコンテキストが不完全か誤解を招くもので、作者の追跡もほとんど無いと書いている2。開いたPRは、注意深くレビューして取り込みを真剣に検討するというメンテナーの約束を意味するので、その約束を保つにはより選別する必要がある、とも説明している2。

この切り方は、GitHubの手順とは切る人が異なる。GitHubの手順では、書く側が作業を先に層へ分け、層ごとにエージェントが書く。tldrawの停止では、受け取る側が入り口に切れ目を置く。受け取るのは意図と議論であって、仕上がった差分ではない。

Richard MacManusは、2026年9月1日に公開したlatent.spaceの記事で、この動きを他のプロジェクトと並べて報告している1。Astroの自動トリアージ(届いたものを自動で仕分けること)の仕組みから、Schottはそのまま新しいエージェントフレームワークFlueを作るに至った。Flueは外部からのプルリクエストをすべて自動でクローズし、issueまたはdiscussionへ変換しており、Flueの貢献者ガイドは「通りすがりのAIスロップPR」を防ぐことを目的として挙げているという1。

tldrawについては、MacManusはRuizの発言を引いている。Ruizはこの変更を「私たちのコーディングの仕方の変化(より多くの議論、より多くのエージェント)、公開の場での貢献をめぐる社会的慣行、そしてコードセキュリティを取り巻く状況の変化に応じて下した、意図を持った判断」と呼んでいる。Ruizは別の発言で、issueが十分に書かれていてエージェントがコードを書けるなら、人にコードを寄せてもらう意味は薄れると述べ、貢献は報告・議論・視点・気遣いという、まだ意味のある場所に絞るほうがよいとも言っている。MacManusもtldrawの節に「エージェントがコードを書くなら、外部PRは価値を失う」という見出しを付けている1。tldrawについて挙がる理由は、届くPRの量と、外部から届くコードの価値の両方にまたがる。

MacManusは同じ記事で、Vercelの AI SDKとAstroは正式にプルリクエストを閉じてはいないものの、コミュニティからの貢献を減らす方向のエージェント駆動の仕組みを導入したとも報じている。この並びをMacManusは、外部からの差分を受け取る代わりにメンテナー自身のエージェントにPRを作らせて管理させる選択として描いている1。

閉じた経路の代わりが効くかは、まだ分からない

受け付ける入り口を閉じたとき、そこを通っていたものはどこへ行くのか。latent.spaceの記事は、後継者の問題を挙げている。挙げているのは、Flueで入り口を最も徹底して閉じた本人であるSchottである。Schottは「プロジェクトを絞り込み続けたとして、ある時点であなたと私が休暇に出たら、何が起きるのか」と問い、これですべての問題が解けるわけではないと述べている1。

MacManusは、外部からのプルリクエストをレビューする工程が、貢献者を育て、次のメンテナーを見つける経路になっていたと指摘している。ただし同じ記事は、この懸念に解がありうるとも書いている。FlueもtldrawもPRは受け付けないが、issueとdiscussionは受け付けている。互いに話す量が増えれば、コミュニティの側は互いを知り、信頼するようになる。それは仲間から学ぶ道であり、メンテナーにふさわしいと自ら示す道にもなりうる、とMacManusは書く1。tldrawは1月の告知で、この停止を、GitHubがよりよい管理のツールを出すまでの一時的な方針と書いていた2。latent.spaceの記事は、Ruizが5か月後に同じ方針を改めて示したと伝えている1。閉じた経路の代わりが機能するかどうかは、まだ観測されていない。

量を減らす案は、まだ主張にとどまる

分割も、受付停止も、届く単位の切り方を変える手だった。Thoughtworks CTOのRachel Laycockは、2026年9月2日にmartinfowler.comで公開した記事で、切る場所ではなく、人間が検査する対象の量そのものを問うている4。

Laycockはこう書く。「エージェントが10倍のコードを生み出せたとしても、そのすべての行が結局はシニアエンジニアの検査を待つ列に並ぶのなら、私たちは10倍のエンジニアリング組織を作ったのではなく、大きな滞留と新しいボトルネックを作ったのだ」。全数を人間の検査に通す運用が残るかぎり、滞留は解消されないという指摘である。Laycockは分割や積み重ねには触れていない。彼女が答えではないと名指しするのは、人間のレビュアーのふりをするAIエージェントを置いて同じ工程を高速に回すことであり、それは儀式が存在する理由を問わずに儀式を自動化することだ、と書いている4。

Laycockが提案するのは「例外によるレビュー」である。人間によるレビューを残すのは、アーキテクチャの変更、セキュリティの境界、不確実性のある領域といった、リスクの高い変更に限る。それ以外については、こう書く。「フォーマットやリンティング、既知のセキュリティ上の問題、あるいは決定的にテストできる事柄についてコードをレビューしているのなら、それらは自動化すべきだ」。

Laycockが求めているのは、人間の判断をコードが出来上がった後の検査ではなく、もっと早い工程、ペアプログラミング、設計の議論、自動テスト、静的解析へ移すことである。

Laycockは他所の数値も挙げているが、それは彼女自身の測定ではなく、Code Remixのパネル討論で意見が分かれた相手、DXのBrian Houckが示した数字である。Metaでは「人間が着地させた1差分あたりの実質的なコード行数が、1年で106%増加したと報告されている」とされ、この「報告されている」という語はLaycockのものである。DX自身のデータとして「プルリクエストの中央値のサイズが64%増加している」とも紹介している。Laycockはこれらの数値を、AIが人の読める量を超えてコードを書くという、二人に共通する前提として置いている。レビューを減らすという彼女自身の提案の裏付けとして置いているのではない。

martinfowler.comの記事が応答している相手は、Houckが書いた「コードレビューはそもそも何のためにあるのか」という一文である。Houckの懸念は、レビューを自動化で外すと、知識の共有や若手の育成、共同所有、アーキテクチャ理解の伝播といった他の役割まで失われることにある。Laycockはその懸念を共有すると書いたうえで、なぜそれらをコードレビューまで待って行うのかと問い返す。Houckが挙げる「認知と意図の負債」は実在する問題だと認めつつ、必須のプルリクエストはその防御として強くないと答えている4。

分割、受付停止、例外によるレビューは、切れ目を置く位置こそ異なるが、どれも行数ではなく、その領域で判断の単位になる境界で切っている。GitHubの手順は層の依存で、tldrawの停止は意図とコードの間で、Laycockの案はリスクの高低で切る。そのうえで、運用を変えたと報じられた側は、仕上がった差分を受け取る入り口を狭めるか閉じている21。


出典5件
  1. Richard MacManus「PRs NOT Welcome: How Top AI Open Source Projects Are Managing Thousands of Contributors」latent.space, 2026. https://www.latent.space/p/pr-not-welcome — 4つのOSSの外部PRの扱いを報告。AI SDKの数はVercelの主張。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13

  2. tldraw「CONTRIBUTING.md」GitHub(日付の記載なし). https://github.com/tldraw/tldraw/blob/main/CONTRIBUTING.md — PRを無効にし、issueを入り口にする。案内先のissue #7695(Steve Ruiz、2026年1月15日)はAIだけで生成された貢献の急増を理由に挙げ、GitHubがよりよい管理のツールを出すまでの一時的な方針とする。 https://github.com/tldraw/tldraw/issues/7695 ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  3. Julia Muiruri「Turn one giant AI-generated pull request to a reviewable stack」GitHub Blog, 2026. https://github.blog/engineering/turn-one-giant-ai-generated-pull-request-to-a-reviewable-stack/ — 大きなAI生成PRになりがちな作業を、データ・API・接続・UIの依存順の4層スタックへ分ける手順。 ↩ ↩2 ↩3 ↩4

  4. Rachel Laycock「Maybe We Shouldn’t Be Reviewing All This Code」martinfowler.com, 2026. https://martinfowler.com/rachels-ramblings/code-review.html — 全数の人間レビューは滞留を生むとし、リスクの高い変更だけを人が見る「例外によるレビュー」を提案する。106%・64%はHouckの数値。 ↩ ↩2 ↩3 ↩4

  5. git-spice ドキュメント(継続更新・2026年9月8日参照). https://abhinav.github.io/git-spice/ — スタックしたブランチの同期・再スタック・マージ後の付け替えを自動化し、GitHubのほかBitbucket・Gitea・Forgejo・Azure DevOps・GitLabに対応するとする。 ↩

この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。