
TypeScript 7.0 と Project Corsa - コンパイラを Go で書き直して10倍速にする話
TypeScript のコンパイラが、Go で書き直されます。長く TypeScript 自身(つまり JavaScript)で実装されてきた tsc を、ネイティブの Go 実装(tsgo)に移植する——これが「Project Corsa」、そして TypeScript 7.0 です。
謳い文句は10倍速。大規模プロジェクトで顕著に効く、型チェックとビルドの高速化です。この記事では、Microsoft 公式が示す実測値、なぜ Go なのか、そして TS6 と TS7 がどう併存するのかを整理します。
まず数字: 公式が示す10倍速
Microsoft の TypeScript チームが公開している、コマンドライン compile の実測値です。
| プロジェクト | 規模 | 現行(tsc) | ネイティブ(tsgo) | 高速化 |
|---|---|---|---|---|
| VS Code | 150万行 | 77.8秒 | 7.5秒 | 約10.4倍 |
| Playwright | 35.6万行 | 11.1秒 | 1.1秒 | 約10.1倍 |
| TypeORM | 27万行 | 17.5秒 | 1.3秒 | 約13.5倍 |
エディタ操作も速くなります。VS Code のコードベースで、プロジェクトのロード時間が 9.6秒 → 1.2秒(約8倍)に改善。さらにメモリ使用量も、現行実装のおおよそ半分になるとされています。
「型チェックが遅い」「エディタの補完がもたつく」というのは、大規模 TypeScript プロジェクトの宿痾でした。Corsa はそこを正面から潰しにいく取り組みです。
[!NOTE] 数値は Microsoft 公式(TypeScript Dev Blog)が示す実測です。第三者メディアでは「型チェック30倍」「メモリ2.9倍削減」といった数値も流れていますが、本記事は公式が明記している compile 約10倍・エディタ起動約8倍・メモリ約半分を採用しています。プロジェクトの構成により結果は変わります。
なぜ Go なのか
「TypeScript を TypeScript で書かないのか」「Rust ではないのか」という反応は当然出ました。Microsoft は言語選定の理由を大々的には説明していませんが、移植という性質から読み取れる点があります。
ポイントは、これがゼロからの再設計ではなく、既存コンパイラの「移植(port)」だということです。現行 tsc は内部で多くのグラフ構造・可変状態を扱い、関数指向のコードベースになっています。この構造を素直に移し替えるうえで、GC(ガベージコレクション)を持ち、構造体やポインタを直接扱え、並行処理が書きやすい Go は相性が良い、という判断です。所有権モデルの厳しい Rust への移植よりも、既存ロジックを忠実に持ち込みやすい、という現実解と見るのが妥当でしょう。
[!NOTE] 「Go を選んだ具体的な理由」を Microsoft が一次情報として詳細に述べているわけではありません。ここは公式が明言している「既存コードベースの移植である」という事実からの解釈です。断定ではなく背景理解として読んでください。
TS6(JS)と TS7(native)の併存
ここが移行を考えるうえで一番大事な点です。TypeScript 7.0(ネイティブ)が出ても、従来の JavaScript 実装が消えるわけではありません。
Microsoft は次の二本立てを明言しています。
- TypeScript 6.x(JS実装): 後方互換のために継続。ネイティブ版が十分に成熟・普及するまで維持される
- TypeScript 7.0(ネイティブ Go 実装):
tsgo。高速版。まだ開発中
つまり「7.0 が出た瞬間に全プロジェクトが移行を迫られる」のではなく、しばらくは両者が並走します。API の互換性や、現行 tsc に依存したツール群(一部のビルドツール・型生成系)との兼ね合いを見ながら、段階的に移る形になります。
[!WARNING] TypeScript 7.0 の正式リリース時期について、第三者記事には「2026年1月に安定版」といった記述が見られますが、Microsoft 公式は「まだ開発中(still in development)」としており、正式リリース時期を確定的には示していません。本記事では公式に沿って「開発中・段階的提供」と扱います。最新状況は公式リポジトリ・Dev Blog で確認してください。
開発の段取り(公式の示すマイルストーン)
公式が示してきた大まかな段取りです。
- 2025年半ば: コマンドライン型チェック向けのネイティブ
tscプレビュー - 2025年末: プロジェクトビルドと言語サービス(エディタ機能)を含む feature-complete な状態
- TypeScript 7.0: ネイティブ版の正式リリース(時期は開発状況次第)
ネイティブ実装は既存 TypeScript と同じライセンスで提供され、GitHub リポジトリで試せます。手元の大規模プロジェクトで tsgo を試し、自分のコードベースでどれくらい速くなるかを測ってみるのが、いちばん確実な評価方法です。
何が嬉しいのか(開発者視点)
- 大規模プロジェクトの型チェックが秒単位に: CI の型チェック時間が短縮され、フィードバックループが速くなる
- エディタが軽くなる: プロジェクトロードや補完のもたつきが軽減。巨大モノレポほど効く
- メモリが半分: CI ランナーや開発機のメモリ圧迫が和らぐ
- 配布が簡単: ネイティブバイナリなので、Node.js 非依存で動かせる場面が広がる
とくに Next.js のような大規模フロントエンド、あるいはモノレポ構成で「tsc --noEmit が遅い」と感じているチームには、効果が分かりやすいはずです。
なお、JS ツールチェーンをネイティブ言語で高速化する流れは Corsa だけではありません。リンタ/フォーマッタの Biome(Rust製)や、Anthropic に買収された Bun(Zig製)など、「遅い JS ツールをネイティブで作り直す」のは2026年の明確なトレンドです。
まとめ
- Project Corsa は TypeScript コンパイラの Go ネイティブ移植。
tsgo= TypeScript 7.0 - Microsoft 公式の実測で、compile が約10倍(VS Code 77.8秒→7.5秒)、エディタ起動が約8倍、メモリは約半分
- Go を選んだのは、既存コンパイラを「移植」する性質と相性が良いため(公式が理由を詳細に明言しているわけではない)
- TS6(JS) と TS7(native) はしばらく併存。7.0 はまだ開発中で、正式リリース時期は公式も確定的に示していない
- 「遅いJSツールをネイティブで作り直す」流れの一環。Biome や Bun と同じ大きな潮流
「TypeScript を Go で書き直す」という見出しは挑発的ですが、中身は「巨大プロジェクトの開発体験を地道に速くする」という、とても実利的な取り組みです。大規模 TS を扱うなら、tsgo を一度自分のリポジトリで試す価値があります。