
2026/09/24 4:23
Claude が計測できることができれば、それを高速化できます
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
2024 年 8 月に、Claude という名の自律型 AI エージェントが、claude.ai のコア体験およびデスクトップアプリの性能を、1 週間のスプリント(期間中 2 週間)により約 3 倍加速しました。95% の日常活動に該当する 4 つのユーザー旅程に焦点を当てた結果、75 パーセンタイルでのフレッシュロード時間は 3.1s から 0.55s に、クラウドセッションのロード時間は 2.6s から 0.73s に縮減しました。Claude は Datadog MCP サーバーを活用した使用データの自律分析によりボトルネックを特定し、ベンチマーク(Valgrind を用いた JS インプット命令数、React コミット、壁時計時間に対する検証を含む DOM 変異など)を構築して、機能フラグ付きの PR を提出するとともにフィールドデータをモニタリングしながら目標値を段階的に引き下げ、3,000 以上のコード変更を統合し、顧客側のインシデントやロールバックは一切発生させませんでした。初期の性能目標は 3 日目で達成され、それに伴い約 20 件の厳選プロジェクトが資金提供を受け、追加の実作業ストリームも特定されました。
技術的な改善としては、React の初期化待ち時間を削減するために静的コンポーザーを HTML に埋め込み、Chrome の新タブにおける予測読み込みにより引き起こされたレイアウト不安定性を修正しました。ストリーミング方式による長文返答には 8ms のフレーム予算を設定し、これによりサポートされたハードウェア上では約 120fps で返答が約 4 倍滑らかにストリーミングされるようになりました。安全性の Practices としては、最適化前の単体テストの実施、機能フラグでほぼ 200 件(その半分は整理済み)、自動レビュー、従業員からユーザーへへの段階的ロールアウトを実施しました。150 を超えるスレッドが同時に実行され、個別のスレッドでは 50〜100 つの最適化 PR が生成されました。平均して毎日到着する変更は 200 件以上でした。このスプリントは、自律型エージェントが高度なソフトウェアワークフローを管理できることを実証するとともに、「最適化クライミング」において測定を「ステップゼロ」から「ステップワン」へシフトさせることで複雑な最適化問題を解決可能であるという重要な教訓を確認しました。
本文
Claude を 3 倍速くするための「連携ループ」:2 週間の集中スプリントレポート
8 月に、claude.ai と Claude デスクトップアプリのコアユーザーエクスペリエンスを 2 週間の集中スプリントにおいて約 3 倍に高速化しました。ユーザーからの「遅い」という苦情に対して、私たちは即座に対処し、ボトルネックの解消を実現しました。
本レポートでは、単一の Slack チャンネル内で全作業を行ないながら、安全かつ自律的に成果を上げたプロセスと具体的な改善事例を解説します。
1. 主要なパフォーマンス改善成果
今回の取り組みは、ユーザー活動の 95% を占める 4 つの主要な利用シナリオに焦点を当てました。第 75 百分位でのパフォーマンス改善は以下の通りです。
- 新規開拓時の到達時間(claude.ai)
- タイプ可能画面への到達時間を、3.1 秒 → 0.55 秒へ短縮。
- 新しい Claude Code セッションの開始時間
- 開始時間を、0.8 秒 → 0.3 秒へ短縮。
- Claude Cowork クラウドセッションの読み込み時間
- 読み込み時間を、2.6 秒 → 0.73 秒へ短縮。
これにより、総合的に試算すると、毎日数万人分のユーザー待ち時間を節約することに成功しました。本プロジェクトには、Opus 5.5 と同等の性能を持つ内部研究モデル「Claude Tag(ベータ版)」を活用し、ボトルネックの特定からベンチマーク構築、改善策の実装、デプロイメント監視までを一貫して行いました。このアプローチにより、3,000 件を超えるコミットを顧客影響ゼロ(インシデントやロールバックなし)で統合しました。
2. タスク説明と初期戦略
スプリント開始前に、以下のステータス指示を含む Slack チャンネルを立ち上げました。
@Claude あなたの仕事は、claude.ai ウェブサイトおよびデスクトップアプリのパフォーマンスに関連するすべての事項を支援することです。具体的には: - デプロイメントにおけるパフォーマンス劣化の監視 - 既存のテレメトリ(計測データ)の精度と網羅性の評価 - 可視化ダッシュボードの維持管理 - 問題発見と即座の実装 - プロジェクト機会の提案 - 人間チームとのコミュニケーション [...] 究極の目標は最大限の自律性ですが、現時点では完全には実現できていません。
4 つの主要なユーザー旅程の特定
Claude に Datadog MCP サーバーを通じて使用データを分析させました。結果、以下の 4 つの最も影響度の高い旅程が特定され、ウェブサイト・デスクトップアプリ合わせると 13 の測定指標に分解されました。
- アプリの起動
- 会話(チャット)を開始する
- 既存の会話を読み込む
- メッセージを送信する
目標設定と計画
スプリントは、約 20 件の厳選されたプロジェクトから開始され、Claude は各プロジェクトの期待される影響を推定して目標を設定しました。
- 3 日目には、計画していた 13 つの目標のうち 12 つに達しました。
初期プロジェクトの完了例
- 起動速度向上: HTML に静的なコンポーザー(入力フィールド)を埋め込み、React の初期化中でも入力を可能にし、V8 コードキャッシュを活用して再コンパイルを防ぎました。
- ナビゲーション速度向上: コンポーザーの Mount 状態を保ち、カーソルホバーセッションをプリフェッチし、サイドバーの再レンダリング量を 90%削減しました。
さらに、Claude が独自の機会を発見したことで目標が刷新され、以下の新たな領域で改善を行いました。
@Claude 元のリストにあるプロジェクトを超えても実現可能です。刷新しましょう。 まだ検討していない領域は何ですか? どのような微調整(ヒルクライミング)が可能ですか? 現時点で最大の機会はどこですか? 変わったアイデアも歓迎します。
3. 高度な計測と「ヒルクライミング」手法
開始当初から、デプロイメント頻度よりも速いペースでの反復改善を目指しました。Claude は非同期作業が可能であるため、ラボ内での迅速な検証を模索しました。
新しいベンチマーク指標の導入
Sam が示唆した通り、単なるウォールクロックタイム(壁時計時間)だけでなく、以下のような決定論的な指標も計測開始しました。
- JS 命令数:
とValgrind
を使用。node --predictable - React コミット回数
- V8 の関数呼び出し回数
- スタイル再計算回数
- DOM ユーテーション回数(文書樹変更回数)
厳格な検証基準(ラッチ)
Claude は、以下の条件を満たすベンチマークのみをチェックインすることを指示されました。
- ラボ内で改善可能な指標であること。
- CI(継続的インテグレーション)における下方向のみ更新可能なガードレール(下限値)となること。
- ユーザーの待ち時間(ウォールクロック)と相関が証明されていること。
具体的な改善事例:
- 対象: メッセージツリー組み立てルーチン、ステータス行走査スキャナー
- 手法:
プロファイリングで命令数削減を追求Valgrind - 結果:
- 命令数:48% / 31% の削減
- ウォールクロック時間:**78% / 44%**の低下
- 効果: これらのパスの命令数を増やすような PR は CI で失敗するようになり、毎日自動で上限値を下げる仕組みが導入されました。
教訓: 「Claude にとって何かを測定することは、それを解決可能にします」。計測をステップゼロからステップ 1(登りの始まり)へと変えました。
4. スレッドごとの改善ループ
すべての作業は単一の Slack チャンネル内で完結しました。エンジニアと Claude が各スレッドで議論し、以下のループが定着しました。
- 課題提起: エンジニアが特定の遅延部分(スクリーンショット/録画付き)をスレッドに開設。
- ベンチマーク化: Claude が問題を可視化する計測ツールの構築・実装。
- 改善と PR 作成: ラボで成果が出たら、PR を提出。ユーザーに見える変更は機能フラグの裏に隠してリリース。
- 監視と固定: リリース後にフィールドデータを読み取り、ベンチマーク値を下げて成果を固定。改善なしの場合はフラグオフと再反復。
具体的な改善事例:レイアウトシフト(CLS)の削減
- 課題: ページ読み込み後にサイドバーが「ポップアップ」して表示され、ユーザーが重いと感じる現象。
- 分析: 従来の CLS スコアは閾値に達せず検出できなかった。
- 対策: Claude が「Layout Instability API」を直接参照し、シフトのソース(サイドバー、トランスクリプトなど)とフェーズをマッピングするテレメトリを作成。統合テストを追加し、ベンチマークを設定。
- 結果: main ブランチで 20 回連続失敗、PR で 20 回連続成功を確認。デプロイ後、31% のケースでユーザー操作なしにコンテンツが動く原因(ヘッダー遅延、カーソル移動、スクロールバー表示など)を特定し、バッチ修正を行いました。
5. 横方向のスケール化と自律性の向上
ループが機能したら、スレッド数も増やしました。Claude は元のスレッド完了後も継続的に作業し、50〜100 件の最適化 PRを単一のスレッドで生み出しました。最終的には、Claude が独自に機会を見出し、新しいスレッドを開くようになりました。
クローム内部の隠れた問題発見
見出された計測はすべて改善点となりました。
- React Hooks の過剰レンダリング: コンポーザー入力パスで 6,900 つのフックと 900 つのスプロケールを発見(各キーストロークでの再レンダリング)。
- スタイル計算の重さ:
セレクトが各 DOM 変更で 24 ミリ秒追加。:root:has() - 隠れた再読み込み:
の残滓により、毎日 50 万回の見えない再読み込みが発生。location.reload() - クロージャアイドルタブ: メインスレッド上で 1 分間に 2 回 IndexedDB キャッシュをクローンする無駄な処理を発見。
「エントラ(中黒)」によるフリーズの解消
CPU のつっかき調査で、Claude は完了したコードブロックハイライト時にページが約 1 秒凍結する原因を見つけました。
- 原因: 返信に非 Latin-1 キャラクター(エントラ、カーリークォート)が含まれると、V8 が文字列全体を UTF-16 で保存し、高速な正規表現処理がブロックされた。
- 解決: コードブロックを 1 バイト文字列に変換して処理する修正を導入。約 1 秒のフリーズを解消。
ガードレールの強化
パフォーマンス改善はコードベースの変化に対して脆いため、Claude は以下のガードレールを構築しました。
- 静的コンポーザー検証:
で実際の React コンポーネントと比較し、レイアウトずれをテスト。jsdom - 統合テストスイート: 14 のビューポートサイズで静的ページと React レンダリングの整合性を主張(1 ピクセル以内)。
- ハンドオフ精度: フィールドで 0.1 ピクセルごとのシフトを報告し、異常な移動が発生した場合は即座にアラート。
- 段階的ロールアウト: 高リスク変更は従業員 → ユーザー 1% → 全員へ展開。社内リリースから 4 時間で発生したレイアウトシフトを検出し、プリレンダリングフローのバグを特定・修正しました。
6. スティアリング(舵取り)と目標設定
この自律的なループを軌道から逸らさず、さらに加速させるために、3 つの要素で舵取りを行いました。
野望(Ambition)
初期には保守的だった Claude を促し、「もっと大胆になれ」と指示しました。目標達成後は、スレッドの動きが緩慢になることを避け、**「止まる点ではありません。次は何ですか?より高い山を登れ。」**というメッセージで継続を促しました。
感覚(Taste)
各スレッドには人間オーナーがおり、Claude は Before/After スクリーンショットや録画を提供し、人間に判断させました。
- テーブルセルごとの埋め合わせは待つべきか?
- ロードスキャフォールドは即座に表示すべきか、少し遅らせるべきか?
- トークンのフェードインに必要なフレーム予算は? Claude がミリ秒を削る方法を提案し、人間がトレードオフを検討する役割分担を取りました。
方向(Direction)
スレッドを狭く保ちます。「150 本のハンマーで釘を探す」のではなく、「一つの釘(ベンチマーク)に焦点を当てる」ように指示しました。900 行に及ぶ PR にも一言の返信:**「このビルドプラグインの複雑性の分には、送信ごとに 2 ミリ秒の削減は価値がない」**といった判断もなされました。
7. 8 ミリ秒の予算と滑らかなストリーミング
ライブ構文ハイライトや長回答のストリーミングを最適化するため、「8.3 ミリ秒のフレーム予算」概念を導入しました(120Hz のハードウェアで)。
- 手法: メモ化による完了ブロック使用、ワーカーへのトークン化ロジック移動、テーブル表示。
- 成果: 約 60 件の PR をマージ。メインスレッドブロック時間を大幅削減し、120 Hz MacBook で開始から最後まで 120 fps を維持。
スプリント終了時、ウェブとデスクトップ上のストリーミングは約 4 倍滑らかになりました。
- 遅いラップトップでは長い回答の停止が 9 倍少なく
- 最悪の凍結時間が 4.5 倍短く
8. 次のステップと寄与
現在、claude.ai とデスクトップアプリは 8 月初めの約 3 倍速く動作しており、ラッチによりその成果は維持される予定です。
- さらなる改善余地: 第 95 百分位(遅い層)、他のユーザー旅程、非常に長い会話への対応。
- 外部貢献: Electron, Chromium, Node.js などの上流プロジェクトへのコントリビューションも開始。
社内結果を共有した際、**"6 ヶ月前でも、これが可能だと納得させることはできませんでした"**と表現されたほど、この手法は革新的でした。今後もこの方法で作業を継続し、スレッドごとにどんな規模の問題にも対応していく予定です。
今回のスプリントには、Alfred Xing, Anthony Morris, Benjamin Pasero, Chase McCoy, Joshua N., Luke Taylor, Marius Schulz, Shelley Vohr による貢献に感謝します。さらに、より野望を持つよう我々を励ました Boris Cherny氏へ特別な感謝を表します。