CopilotランタイムのRust移行、AIトークン12万ドル
GitHubは2026年9月にCopilotランタイムのRust移行を完了しました。14.5週間で、AIエージェントが80万行を超える本番用Rustの大半を書きました。The Registerによると、この移植にかかったのはAIトークン約12万ドルと開発者約3週間分の時間で、GitHubは測定した起動シナリオが5.25秒から292ミリ秒に短縮されたとしています。大規模な既存コードベースを持つ企業にとって、かつてはチーム全体が必要だった書き直しをエージェントが行った、測定された事例です。
GitHubがランタイムをTypeScriptから移す必要があった理由
Copilotエージェントのランタイムは、GitHub Copilot CLI、Copilotアプリ、Copilot SDK、Copilotクラウドエージェントの土台となるエンジンです。VS Code、Visual Studio、Excel、Outlook、PowerPoint、Wordも支えています。Node.jsとV8エンジン上のTypeScriptで書かれており、高速な起動や高密度なサーバーではなく、素早い開発のために作られたスタックでした。
ランタイムが広がるにつれ、この選択はコストがかかるようになりました。SDKを使うアプリケーションは、Node.jsとV8をホストする別のプロセスを起動する必要がありました。GitHubによると、これによりクライアントあたり約100MBのワーキングセットが増え、すべてのイベントとメッセージがプロセスの境界を越えることになり、Nodeでクラッシュが起きるとセッションごと失われました。
GitHubが代わりに作ったもの
GitHubはランタイムを、ホストアプリケーションがC ABIを通じて直接組み込めるネイティブのRustライブラリに置き換え、プロセス外モードも引き続き使えます。Copilot SDKは、TypeScript、Python、Go、.NET、Java、Rust向けの言語別インターフェースを維持しています。
「大規模なTypeScriptプログラムをすべてRustにすべきだと主張しているわけでは決してありません。」 — Stephen Toub、Microsoft Distinguished Engineer、この移植について
Toubは、チームの要件がC ABIを通じた組み込み、低い起動オーバーヘッドと定常時のオーバーヘッド、予測しやすいリソース使用だったと書いています。
エージェントが日々どう作業したか
移植は一度に切り替えるのではなく、段階的に進みました。TypeScriptの個々のコンポーネントをRustに置き換え、一時的な互換レイヤーでつないで、既存のエンドツーエンドテストが新しいコードを検証できるようにしました。このレイヤーは、取り除かれるまでに2,019の内部エクスポートと3,356のTypeScript呼び出し箇所に達しました。作業は128件のプルリクエストにまとめられ、GitHubは移行中に135件のリリース(安定版35件、プレリリース100件)を出しました。
CopilotがCopilotを書き直しました。作業の部分ごとに、GPT-5.6 SolやClaude Opus 4.8など複数のモデルを使いました。エージェントは、コードを書くよりも情報の収集に多くの時間を使いました。最も難しいファイルのsession.tsには、30,000行を超えるTypeScriptがありました。その移植セッションは25時間かかり、56分をドキュメントの読み込みに使い、122回のツール呼び出しを行い、互いに連携する15個の子セッションを起動しました。GitHubは4,478回の直接のコンパイル確認を記録し、87.1%が問題なく完了しました。
移行で測定されたこと
GitHubとThe Registerは、次の結果を報告しています。
- 規模: 8月21日までに、ランタイムは832,378行の本番用Rustと468,689行のRust単体テストになりました。エージェントは約430,000行のTypeScriptを変換し、2026年5月初めの見積もりは約130,000行でした。
- 起動: Rustランタイムをプロセス内に組み込むと、クライアントの起動、セッション作成、1ターンのシナリオが、5.25秒から292ミリ秒に短縮されました。
- スループット: 100の同時パイプラインでの1,000回の1ターンセッションのライフサイクルで、TypeScriptは毎秒7.55回、プロセス内のRustは毎秒120回を完了し、15.9倍の高速化でした。
- メモリ: 10クライアントのバッチで、TypeScriptでは1,383MB、Rustでは126MBを使いました。
- コスト: AIトークン約12万ドルと、開発者約3週間分の時間です。
エージェントがうまくいかなかった点
書き直しはきれいではありませんでした。The Registerは、数十件の回帰、つまりコンパイルは通るものの以前と同じように動かなくなったコードを報告しています。Toubはその原因を、曖昧な意味論、ブランチのずれ、移植されなかった機能、動作の違う置き換えコードに求めました。「コンパイルが通れば正しい」は冗談としてしか役に立たない、と書いています。
コンパイル、テスト、人間によるレビューが、途中でこれらの問題を捉えました。ランタイム自体の再構成は対象外とされ、次のステップです。
既存コードを抱える企業にとっての変化
ここでの事業上の課題は、誰も人員を割けない書き直しです。GitHubによると、このプロジェクトはエージェントがなければ開発者のチーム全体が1、2年かけたはずのもので、実際には、残りのチームが機能の追加を続ける間に、主に1人の開発者が数カ月で完了しました。
エージェントと同じくらい、方法が重要です。小さなプルリクエスト、新旧のコードの間の一時的な橋渡し、既存のテスト、そして各変更をレビューする人です。自社の移植を検討する企業は、この作業のトークン約12万ドルという公開された数字と、自社のコストを比べられます。
よくある質問
CopilotランタイムのRustへの移植にはどれくらいかかりましたか?
約14.5週間で、GitHubがランタイムのリリースを続ける中、128件のプルリクエストを通じて納入されました。
AI支援の書き直しにはいくらかかりましたか?
The Registerによると、AIトークンの使用が約12万ドルと、開発者約3週間分の時間です。
Rustのコンパイラはエージェントの間違いを捕まえましたか?
一部だけです。コンパイラが確認するのはコードが有効なRustであることで、古い動作を保っていることではないため、問題なくコンパイルされた回帰は、テストと人間によるレビューが見つけました。
MOZGIIの視点
私たちならこう作ります
この事例から引き出す教訓は、エージェントが安い部分だったということです。うまくいった要因は、すでにあったテストスイート、新旧のコードを並べて動かせる橋渡し、そして変更をレビューしたエンジニアでした。
エージェントで大きなコードベースを移植するなら、まず気にかける動作を、境界のテストに書き出します。入力、出力、エラーのケース、キャンセル、再試行です。一時的な橋渡しの裏で、モジュールを1つずつ移植し、各部分を通常のリリースで出し、古いモジュールはいつでも戻せる状態で残します。エージェントは読み、下書きし、確認を実行します。各マージは人が担います。
動作が書き留められていないところで壊れます。コンパイラが確認するのはコードが有効かどうかであり、古いコードと同じことをするかどうかではなく、この事例の回帰はまさにそうした隙間から出ました。記録した本番のリクエストを両方のバージョンに再生し、答えを比較します。
追跡する指標は1つ、移植したモジュールあたりのリリース後に見つかった回帰の数で、モジュールあたりのトークン支出と並べて見ます。次に、コード自体の再構成にも同じ方法を適用します。GitHubが後回しにした段階です。
出典
この記事の事実の出典です。
- 01Github Migrates Copilot Runtime to Rust with AI-Assisted Rewrite - InfoQinfoq.com
- 02Microsoft agentically ports Copilot runtime to Rust for $120Ktheregister.com
- 03Migrating the GitHub Copilot runtime to Rust, using Copilot - The GitHub BlogLinkedIn iconInstagram iconYouTube iconX iconTikTok iconTwitch iconGitHub icongithub.blog