Amplitude、Cursorで本番投入コード量が3倍に
AmplitudeはCursorを使い、アイデアから本番環境への投入までを最小限の開発者介入で進める自律型開発パイプラインを構築しています。
Amplitudeのエンジニアリングチームは、アイデアから本番環境への投入までを最小限の開発者介入で進められる、完全自律型の開発パイプラインを構築したいと考えていました。Cursorによって、Amplitudeは今、顧客フィードバックから可観測性ツール、コードレビューに至るまで、ソフトウェアライフサイクル全体のコンテキストを取り込み、それをエージェントに渡して実行させる仕組みを整えています。
現在では、お客様がSlackでバグや機能リクエストを報告すると、クラウドエージェントが自動的に起動して調査し、チケットを起票し、修正まで行います。Cursor Automationsはバックグラウンドで継続的に実行され、レガシーコードのマイグレーションや、新規または更新されたすべてのPRのリスクレベル分類を行います。Bugbotはレビューの第一関門として機能し、低リスクの変更は自動的にマージしつつ、高リスクのPRは適切なレビュアーに振り分けます。
多くのAIコーディングツールは、コードの量を増やしてくれます。ですが、Cursorが増やすのは、実際に役立つ本番ソフトウェアです。作業を効果的に並列化し、変更を自らテストし、機能をアイデアから本番環境まで進められるエージェントを実行する力こそが、その違いです。
ローカル専用のエージェントは並列化と自律性を制限する
Amplitude はコーディングエージェントの導入初期に、スタッフソフトウェアエンジニアの Adam Lohner がエンジニアリング生産性における「見せかけの頭打ち」と表現する状況に直面しました。
開発速度を本当に加速させるのは、エージェントが大量のコードを生み出すことではなく、実際に役に立つ本番ソフトウェアを生み出すことです。そのためには、はるかに高いエージェントの並列性と自律性が必要でしたが、ローカルの開発者ワークステーションに閉じたエージェントではそれを実現できません。
ローカルのエージェントは、限られた同じリソースを取り合うため、すぐに競合が発生します。エージェントを2〜3個同時に実行するだけでも、パフォーマンスが低下することがあります。Amplitude のコードベースは非常に大規模で、RAM を大量に搭載した高性能なハードウェアでも、ローカルの開発者マシンではメモリの限界に達していました。
また、ローカルのエージェントは、エンジニアのように完全な開発環境へアクセスできません。そのため、エージェントは自分の作業をテストしたり検証したりできません。何かをリリースする前に、開発者は依然として環境を設定し、エンドツーエンドテストを実行し、変更を手動で検証する必要があります。
クラウドでエージェントをローカル環境の限界から解放
並列性と自律性をさらに高めるため、Amplitude は Cursor のクラウドエージェントを活用しました。特に際立っていたのは、次の機能です。
- 大規模な並列実行: クラウドエージェントは分離されたスケーラブルな VM 上で動作するため、ローカルでの並列実行を頭打ちにするリソース制約がなくなります。
- フル機能の開発環境: クラウドエージェントは完全な開発環境にアクセスできるため、エンジニアと同じように作業内容をテストし、検証し、改善を重ねられます。
- 長時間の実行: Amplitude は、短時間で同期的に進める作業ではなく、より深く意欲的なタスクをクラウドエージェントにエンドツーエンドで任せるようになっています。
- 常時稼働のエージェント: Cursor Automations を使えば、Amplitude は手動でプロンプトを与える代わりに、トリガーや定期スケジュールに応じて動作するクラウドエージェントを設定できます。
Cursor では、多数のクラウドエージェントを同時に動かしており、それぞれが当社のツールスタックにフルアクセスできます。ローカルのリソース制約に縛られず、常に細かく管理し続ける必要もないエージェントを立ち上げられるようになったことは、まさに段違いの変化でした。
Amplitude のエンジニアは今では、作業の種類に応じてクラウドエージェントとローカルエージェントを使い分けています。新しいアイデアはまずクラウドで始まることが多く、そこでは Cursor の基盤によって、エージェントが長時間にわたって自律的に作業できます。多くのエンジニアは、機能のアイデアが議論されている Slack スレッドから Cursor を直接起動しています。
そして、より細かく制御しながら反復したいときや、詳細を詰める段階になると、開発者はエージェントをローカルに移します。Cursor は、クラウドとローカルの両方をまたぐ統合ワークスペースとして機能しています。
Cursor は、さまざまな並列エージェントをまとめてオーケストレーションするのに最適なインターフェースです。必要に応じて高いレベルで全体を見続けることも、diff やファイルのような詳細に入り込むこともできます。
クラウドエージェントの導入以降、Amplitude では週あたりの本番向けコミット数が 3 倍に増加しました。Cursor はコミット数ベースで Amplitude のコードベースにおける上位 3 位以内の Contributor となっており、毎週 1,000 回を超えるエージェント実行が、プロンプト入力や開発者の介入なしに開始されています。
ソフトウェアを作るのはクラウド、テストと反復を行うのはローカルです。この 2 つの間をシームレスに引き継げるようにする Cursor のサポートが、Amplitude のプロダクト開発速度を大きく引き上げる決め手になりました。
Slackからチケット、そしてPRへ
Amplitudeには、フィールドチームが顧客からのバグ報告や機能リクエストを共有するための専用Slackチャネルがあります。Cursor導入前は、専任のチームメンバーがこれらのチャネルを監視し、Issueをトリアージし、チケット対応を追い、バックログから作業を割り当てていました。
そこでPaulyは、この一連のワークフロー全体をエージェントに任せるため、Cursor Automationを構築しました。Slackに新しいメッセージが届くと、クラウドエージェントがLinearを確認し、そのIssueのチケットがすでに存在するかを調べます。存在する場合、エージェントは新たな顧客コンテキストを追加します。存在しない場合は、エージェントがコードベースを調べ、新しいチケットを作成し、解決策を実装したPRを作成します。
Cursor Automationsは、顧客と私たちのエンジニアの間にあるギャップを埋めるのに役立っています。私たちは、より迅速に、より優れた解決策で顧客のニーズに応えられるようになりました。
このテンプレートを使えば、Slackの報告をPRにつなげるAutomationの構築を始められます。
レガシーコードの自動リファクタリング
Amplitudeのフロントエンドのコードベースには、レガシーなCSSコンポーネント、古くなったReactレイアウト、統一されていないスタイル規約など、相反するパターンが長年にわたって蓄積していました。
レガシーなパターンが乱立していて、エージェントはどの方向に進むのが正しいのか判断しづらくなっています。まさに garbage in, garbage out の問題です。
これに対処するため、Lohnerは1時間ごとに実行され、レガシーなマイグレーションを少しずつ進める cron ベースの Cursor Automations を一式作成しました。1つ目の Automation は、Tailwindクラスで直接置き換えられるスタイルをCSSファイルからスキャンし、置き換えを実行して古いファイルを削除し、PRを作成したうえでSlack通知を投稿します。もう1つは、Amplitudeに20,000件以上あるレガシーなReactレイアウトコンポーネントを順次、ネイティブのTailwind相当へ置き換えていきます。
これらのマイグレーションをクラウド上の Automation として実行することで、ほかの作業を中断させたり開発者の時間を使ったりすることなく、バックグラウンドで継続的に進められます。
エージェント主導のコードレビュー
Amplitudeのエンジニアリング速度を鈍らせていたもう1つのボトルネックは、手作業によるコードレビューでした。Amplitudeは、プロダクトの信頼性を高め、開発者の作業中断を減らせる、エージェントファーストのレビュー体制を求めていました。
Amplitudeは、専用のエージェント型レビューレイヤーとしてBugbotを導入しました。Amplitudeのコードベースは大規模で複雑なため、人間のレビュアーが見逃していたIssueをBugbotが見つける場面を開発者たちが目の当たりにし、導入は自然に広がっていきました。
Bugbotは、見つけるのが非常に難しいバグを定期的に検出し、Issueに対して的確な修正案を提示してくれます。
Lohnerはさらに、すべてのPRのリスク影響レベルをジャッジするCursor Automationも構築しました。低リスクの変更はそのままマージに進められ、Bugbotが開発者の介入なしにIssueをレビューして自動修正します。より複雑なロジック変更を含む高リスクのPRは、適切なエンジニアに自動で振り分けられます。低リスクのPRの約60〜70%は、開発者による追加作業なしでマージされています。このテンプレートを使えば、SlackのレポートをPRに変換するAutomationの構築を始められます。
実際に本番環境に深刻な影響を及ぼすバグを繰り返し見つけてきたBugbotの実績により、Bugbotは私たちのコードレビュー工程に欠かせない存在になっています。
次にAmplitudeが注力しているのは、Automationを開発ライフサイクルの後半、つまりCI/CDパイプライン、ビルド検証、デプロイへと広げていくことです。目標は、レビュー済みのPRから本番環境へのリリースまでを、開発者の介入なしにエージェントが担えるようにすることです。
Cursorで自律型の開発パイプラインの構築にご興味があれば、Cursorトライアルを始めるために、ぜひ私たちのチームにお問い合わせください。