原典: How we made claude.ai faster
一行要約
claude.ai と Desktop アプリの主要な操作を2週間で約3倍速くし、3,000超の変更を顧客向けの事故もロールバックも無くマージした事例。教訓は「Claude にとっては、測ることがそのまま取り組めることになる」 —— だから最も効くのは測るものを増やすことで、勝ちは下がる一方の CI のラチェットで守り、人は野心・好み・方向を舵取りした。
要点
何をしたか
- 1つの Slack チャンネルで、Claude Tag(beta)に社内の研究モデル(Opus 5.5 とおおむね同等)を走らせ、すべてのスレッドに Claude を置いた。Claude がボトルネックを見つけ、ベンチマークを作り、改善を出し、すべてのデプロイを見張った。人は目標を置き、トレードオフを決め、すべての変更を承認した
- 利用の95%を占める4つの操作(起動、会話の開始、既存の会話の読み込み、送信)を Datadog の MCP サーバ経由の分析で選んだ。p75 で、claude.ai の新規読み込みから打てるまで 3.1秒 → 0.55秒、Claude Code の新しいセッション 0.8秒 → 0.3秒、Cowork のクラウドセッション 2.6秒 → 0.73秒
測ることが、そのまま取り組めることになる
That led us to the central lesson of the sprint. With Claude, measuring something makes it tractable. Measurement used to be step zero: you’d add a metric, wait for data to roll in, and only then start to understand the problem. With Claude, it’s step one of the climb. As soon as Claude had a number to beat, it could start optimizing. This meant the highest-leverage thing we could do was find more things to measure.
そこから、このスプリントの中心の教訓に至った。Claude といると、何かを測ることがそれを取り組めるものにする。 以前、測定はステップ0だった —— 指標を足し、データが集まるのを待ち、それから問題を理解し始める。Claude といると、それは登りの第1歩になる。Claude は超える数字を手にした瞬間に最適化を始められた。だから最も効くことは、測るものを増やすことだった。
- ベンチマークは2つの役を持つ —— Claude がラボで動かせる指標と、CI で下がる一方の数字を持つガードレール。ぶれるもの、ユーザーの体感遅延と相関しないものは捨てた(Claude に間違った丘を登らせないため)
- 壁時計の時間は体感そのものだがノイズが大きく、CI の門には不安定すぎる。決定的な命令数(Valgrind と
node --predictable)が壁時計と相関することを Claude に証明させた(2つの経路で命令数 48% / 31% 減、壁時計 78% / 44% 減)。以後、その経路の命令数を上げる PR は CI で落ち、毎日のジョブが下がった分だけ上限を下げる - 既存の監視で拾えない問題には、新しい計測を作ってから直した(Layout Instability API を領域と段階に対応づけたテレメトリ、main では20回中20回赤・PR では20回中20回緑になる統合テスト)
スレッドごとのループ
誰かが遅い区間をスレッドで出す → Claude が流れを追い、問題を示すベンチマークを見つけるか作る → ラボで有望なら PR(リスクとレビューに合わせて分け、目に見えるものはフラグの裏に)→ 出たらデプロイを見張りフィールドのデータを読む → 改善していればベンチマークをラチェットで締め、していなければフラグを切って繰り返す → 同じ操作の次の遅い所へ。同時に150を超えるスレッドを走らせた。 終わっても閉じずに続け、Claude が自分で新しいスレッドを開いて機会を追うことが増えた。
ガードレール
速度に先立って安全の仕組みを置いた —— すべての PR に自動レビューと少なくとも1人の人の承認、最適化の前に必ず単体テスト、目に見える問題を起こしうるものは短命のフィーチャーフラグの裏に(約200のフラグの半分超を期間中に片付けた)、危険の高い変更は社員 → 1% → 全員の段階的な展開。
舵取り(ループは自律ではなかった)
The loop was productive, but it wasn’t autonomous. Keeping it fast, safe, and on track was our job, and it had three parts.
ループは生産的だったが、自律ではなかった。速く、安全に、軌道に乗せておくのは私たちの仕事で、それには3つの部分があった。
- 野心 —— 既定の Claude は範囲に慎重で、見つけたものをチケットにし、実現性をぼかし、見積もりを水増しする。ガードレールに自信があったので、もっと大胆になるよう促した。目標に届くとスレッドが緩むので「目標は止まる所ではない」と言って回った
- 好み —— 各スレッドに名前のある人の持ち主を置き、Claude はユーザーに見える変更をすべて前後のスクリーンショットか録画で示し、人が判断した
- 方向 —— 各スレッドを1つのベンチマークか操作に意図的に狭く保ち、その範囲の中だけで改善を探させた。人の判断の多くは順序とユーザーへの影響(どこを優先するか、ぶつかるスレッドをまとめる、収穫逓減のスレッドを閉じる)。900行の PR に「送信あたり2ms はこのビルドプラグインを保守する複雑さに見合わない」と1行で返した
そのまま使える具体例
Slack チャンネルに置いた常設の指示(抜粋、原典そのまま):
@Claude Your job is to facilitate all things related to the performance of the claude.ai website and desktop app. Your responsibilities include monitoring deploys for performance regressions, assessing the accuracy and comprehensiveness of existing telemetry, maintaining well-curated observability dashboards, proactively implementing solutions for observed issues and low-hanging fruit, proposing performance project opportunities, and communicating with your human teammates. […] The ultimate goal for this channel is for you to become as autonomous as possible, but today we know that isn't yet possible.ベンチマークを捨てる基準を Claude に示した一文:
@Claude please prove that hill climbing against each of these can result in measurable wall clock perf wins. we'll unship the benches for any candidates that cannot prove that原典で言及されている関連文書
(原典は他の sources へのリンクを本文に持たない)