TypeScript 7.0 と Project Corsa - コンパイラを Go で書き直して10倍速にする話

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 Code150万行77.8秒7.5秒約10.4倍
Playwright35.6万行11.1秒1.1秒約10.1倍
TypeORM27万行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 を一度自分のリポジトリで試す価値があります。

参考リンク