Reading Note · CI / Agentic Coding · 2026-09

エージェンティックコーディングは CI を圧迫する
— Anthropic のテスト影響分析(TIA)スケーリング記事を読む

コードを書くのが速くなると、ボトルネックは「執筆 → レビュー → CI」の順に移る。Anthropic では CI ジョブが半年で 25 倍になり、テスト選択サービスに当てた 3 回の応急処置は 70 日・29 日・1 日未満しか持たなかった。手法そのものより、「応急処置の寿命は縮み、全面再設計のコストも縮んだ」という非対称性を読み取る記事です。

原典:Sachin Malhotra, “Agentic coding is straining CI. Here’s how we scaled test impact analysis at Anthropic”, Claude Blog, 2026-09-14(英語・約 5 分)
https://claude.com/blog/agentic-coding-is-straining-ci-heres-how-we-scaled-test-impact-analysis-at-anthropic
本ページは原典の要約と解説であり、引用は最小限にとどめています。数値はすべて原典の記載によります。
§0

数字で見る「何が起きたか」

エンジニア 1 人あたりの
四半期出荷コード量(2021–25 年比)
80%
そのコードのうち
Claude が執筆した割合
10×
コードベース全体の
テスト数の増加
25×
CI ジョブ数の増加
(6 ヶ月間)

エンジニア数はほぼ横ばいのまま、コードもテストも桁で増えた。記事の主張はシンプルで、コードを書くことはもう制約ではない。PR レビューも AI で加速すると、次に圧力がかかるのは CI である、という順番の話です。

背景として、AI がコードを書くと PR の「形」も変わります。Claude は小粒な PR を好むので PR 数が増える。エージェントは夜間・週末も push するので活動量の「床」が上がる。一方で人間が承認する分はバースト的なまま。CI にとっては総量が増え、かつ平準化されないという嫌な組み合わせです。

§1

テスト影響分析(Test Impact Analysis)とは何か

多くの組織では今も「全 PR で全テストを回す」運用です。これは規模が小さいうちは機能しますが、CI ゲートは長く・高く・信頼できなくなっていきます。TIA(テスト選択)は、変更ごとに「影響を受けそうなテストだけ」を選んで走らせる仕組みで、商用ベンダーも複数あるジャンルです。

記事で見落とせないのは、TIA を単なるコスト削減ではなくエージェントの生産性基盤として位置づけている点です。人間なら「この失敗は自分と無関係」と判断できますが、エージェントにはより多くの文脈と指示が要る。有効なテストの集合を明示的に渡してこそ、エージェントは自己検証と反復ができる——という論理です。

Anthropic の実装:2 つの決定論的な部品

部品役割
Listenerすべての CI 実行のテスト結果を記録する
Selectorテスト結果の履歴を読み、開かれた各 PR でどのテストを走らせるか決める(過去の成績とパッケージの関連性に基づく)

両者は「同期している」ことが前提です。ところが CI ジョブが毎秒複数走る規模になると、Listener が PR キューに遅れ始めます。記事の例では Listener の遅れ 20 分=数万件のテスト更新が Selector に未反映。すると——

v0 設計の急所:テストごとに履歴を持つには「単一の書き込み主体」が結果を順序どおり適用する必要がある、という理由で全体が 1 プロセスだった。これが水平分割を阻んだ。
§2

3 回の応急処置と、その「寿命」

2025 年 10 月、サービスは既に悲鳴を上げ、2 日連続でページが飛びました。ここから再設計に至るまでの道のりが記事の本体です。

#時期何をしたか持った期間
12025-10大きいマシン:コア数を倍増。効くのは一時的だと最初から分かっていた。所有権が曖昧で誰も新しいインフラを持ちたがらず、CI チームには他に優先事項があった。70 日
22026-02シャーディング:「単一の書き手」はコードベース全体ではなくパッケージ単位で足りると気づき、パッケージごとにシャード+ワーカーに分割。コードは Claude が生成。29 日
32026-03日次再起動:平日は午後にはメモリ上限に到達。バグは 4 件しか見つからず、アロケータ交換も効かず、負荷下の単一プロセスをプロファイルするのは危険。< 1 日
1. 大きいマシン
70 日
2. シャーディング
29 日
3. 日次再起動
<1 日

パッチ 3 では別の問題も見つかりました。再起動のたびに遅れが蓄積し、1 時間以上遅れた際には大量の結果が Listener に記録されなかった。著者は「未テストのコードが本番に出たわけではない」と明記したうえで、実害は Selector が古いデータで判断し、既に flaky/全面失敗中のテストを無駄に回していたことだと説明しています。

監視セッションを「数ヶ月持続」させた運用

パッチ 2 の頃、著者は社内版の Claude Tag(Slack 上の Claude)でこのサービス監視専用の長期セッションを立てました。Listener の遅れが 50,000 ジョブを超えるたびに Claude が著者に通知し、前回までの文脈を保ったまま「次の一手」の会話を再開する。これを数ヶ月続けたそうです。

記事の自虐的な一節:Claude は一貫して「全面再設計」を主張し、人間側は毎回「もう一回パッチで」と妥協した。この温度差は後述の教訓に直結します。

パッチの寿命はなぜ縮むのか(簡易計算機)

負荷が指数関数で増えるとき、「容量を k 倍にするパッチ」が持つ期間は ln(k) / ln(月あたりの成長率) ヶ月です。25 倍/6 ヶ月なら成長率は約 1.71 倍/月。コア倍増(k=2)がどれだけ持つか、動かして確かめてください。

25×
2.0×
このパッチが持つのは、およそ
月あたり成長率 。同じ倍率のパッチでも、成長率が上がるほど寿命は対数的にしか伸びず、指数的に縮む。記事の 70 → 29 日という短縮は、パッチの質が落ちたのではなく成長率が上がったと読むのが自然です(単純モデルであり、記事の実測値をそのまま再現するものではありません)。
§3

再設計:ステートをプロセスから追い出す

最終的に Claude の助言どおり、テスト選択サービスにインメモリのデータストアを与えました。それまで単一プロセスがメモリ内で担っていた処理の大部分を、外部ストアに逃がしたわけです。

Before — v0(単一プロセス)

CI 結果毎秒複数 単一プロセス Listener テスト履歴(メモリ) 単一の書き手が順序を保証 SelectorPR ごとに選択 遅れ・メモリ上限・水平分割不可

After — 再設計(ステートレス+ジャーナル)

CI 結果 Listener ① Listener ② Listener ③ 任意のワーカーが任意の結果を処理 ジャーナル追記のみ ロールアップ数秒ごと・小プロセス テスト履歴 Selector高速に参照 ステートレス=水平スケール可・プロファイルも容易

分散構成なので運用コストは上がりますが、不安定な単一プロセスよりスケールもメモリプロファイルも格段に楽になった。ジャーナルのサイズやワーカー数のチューニングは Claude がほぼ自律的に実施し、それまで週ごとに積み上がっていた未処理イベントのバックログはフラットになり、以降安定しているとのことです。

工数:エンジニア 1 人で 3 週間。1 年前なら四半期近くかかったはず、と著者は書いています。ここが記事の核です——応急処置の寿命が縮んだ分だけ、全面再設計の相対コストも下がっている。
§4

著者が「2025 年 10 月に戻れるなら」やること

1. AI の指数関数を織り込む

CI ジョブは「エンジニア 1 人あたりのエージェント数」と「PR 承認の自動化度」に応じて指数的に増える。build でも buy でも、2 四半期以内に 25 倍の負荷を前提にする。「過剰設計」という概念は薄れつつあり、少なくとも基準線は大きく上がった。予算が許すなら v0 で知覚スケールの 10〜20 倍を見込んでよい。

2. サービスを計装して、Claude の「目と耳」にする

計測があれば Claude は漸進的に問題を hill-climb でき、人手より速く確実に直せる。特に「入ってくる CI ジョブ数=出ていくジョブ数」を常に確認できるようにしておく。

3. 最初からステートをプロセスの外に置く

計測とカナリア変更ができないなら、重要サービスを単一インスタンスで動かさない。CI の進化が速すぎて、それ以外のやり方では追いつかない。

§5

読み方のポイント

手法は古典的、非対称性が新しい。大きいマシン・並列化・再起動・ジャーナル+ロールアップは、どれも教科書的な手法で、記事自身が「そこは学びではない」と断っています。核は「応急処置の寿命は 1 年前の何分の一かに縮み、逆に全面再設計のコストも何分の一かに縮んだ」という非対称性。つまり「とりあえずパッチで凌ぐ」ことの相対的な合理性が下がった、という主張です。

TIA は「エージェントの自己検証の入力」である。コスト削減として読むと平凡ですが、「エージェントには有効なテスト集合を明示的に渡さないと自己検証できない」と位置づけ直すと、CI の設計がエージェント運用の設計の一部になります。

監視セッションの持続、という運用の型。閾値を超えたら Claude が人を呼び、文脈を持ち越したまま会話を再開する。これは特定の製品に依らず、cron+メモリファイル+通知の組み合わせで自作できる型です。

正直な記述を評価したい。「Claude は再設計を勧め続けたが人間が妥協した」「所有権が曖昧だった」「バグは 4 件しか見つからなかった」。技術ブログにしては珍しく、組織側の要因まで書いています。

もくもく会で考えたい問い

  1. 自分の担当システムで「単一の書き手が必要」と信じている箇所は、本当に全体で一つ必要か。パッケージ単位・キー単位で足りないか(パッチ 2 の気づき)。
  2. いま抱えている応急処置は、負荷が半年で 25 倍になっても持つか。持たないなら、その「寿命」を上の計算機で見積もってみる。
  3. 自分のサービスで「入った数=出た数」を即答できる計測があるか。なければ、Claude に監視を任せるための最初のメトリクスは何か。
  4. エージェントに渡している「検証手段」は明示的か。「全部走らせて赤を読め」になっていないか。
出典:Sachin Malhotra, “Agentic coding is straining CI. Here’s how we scaled test impact analysis at Anthropic”, claude.com/blog, 2026-09-14。本ページは学習目的の要約・解説であり、原典の図表・会話ログは転載していません。数値・時系列は原典の記載に基づきます。
作成:2026-09-15(もくもく会 教材)