TypeScript 7.0 Beta が登場 — Go移植で10倍高速化、Project Corsaの中身を読み解く
はじめに
2026年4月21日、MicrosoftがTypeScript 7.0 Betaを正式発表した。数値としてのバージョンアップ以上に意味を持つのは、この7.0が「コンパイラをJavaScriptからGoへ全面移植した初の安定版候補」であるという事実だ。コードネーム「Project Corsa」として進められてきたこのネイティブ化は、VS Codeの型チェックを77.8秒から7.5秒へと約10倍高速化する成果を上げている。本稿では、なぜGoだったのか、何が速くなったのか、そして既存プロジェクトが7.0に移行する上で何を注意すべきかを、Microsoft公式ブログと関連資料から整理して解説する。
TypeScript 7.0 Betaで何が発表されたか
TypeScript 7.0の最大の特徴は、コンパイラと言語サービスをすべてGoで書き直したことだ。従来のTypeScriptは自身のTypeScriptで書かれたブートストラップ構成で、最終的にはJavaScript(Node.js)上で動いていた。7.0ではこの構造を捨て、ネイティブコードとして動くGo実装に置き換えた。
公式の数字は強烈だ。VS Code本体(約150万行)の型チェックは77.8秒から7.5秒へ、Playwrightは11.1秒から1.1秒、TypeORMは17.5秒から1.3秒、Sentryは133秒から16秒へ短縮されている。平均するとおよそ10倍の速度向上だ。
互換性も高い水準を維持している。約20,000件のコンパイラテストのうち、TypeScript 5.9と挙動が異なるのはわずか74ケースで、99.4%が一致する。単純な書き直しにありがちな「動くけど微妙に挙動が違う」問題をできる限り潰した形だ。
Betaとはいえ、Microsoftは本番投入可能なレベルに到達していると説明している。@typescript/native-previewというパッケージを既存のtypescriptと並行インストールし、型チェックには新コンパイラ(tsgo)、ツールチェーン側は従来APIを使い分けるハイブリッド運用が現実的な導入ルートとして推奨されている。
なぜGoだったのか — Rustではなく
「なぜRustではないのか」はTypeScriptコミュニティで何度も問われた論点だ。Microsoftの回答は明確で、既存のアルゴリズム構造をそのまま移植できる言語が欲しかった、というものだ。型チェッカーは巨大な相互再帰と循環するデータ構造の塊であり、Rustの所有権モデルに合わせるには根本的な再設計が必要になる。パフォーマンスや人間工学のいずれかで妥協が発生し、「どのアプローチにも許容できないトレードオフがあった」と判断された。
一方でGoは、ガベージコレクション付きで構造体の循環参照にも寛容、かつゴルーチンで素直な並列化が可能だ。結果として、シングルパスの型チェック、プロジェクト参照、ビルドモードといった既存の枠組みをほぼ1対1で移植しつつ、共有メモリ並列処理を前提に再設計できた。VS Codeクラスの大規模コードベースでの10倍という数字は、単なる言語性能差ではなく、この並列化が効いた結果だ。
アーキテクチャ側では、言語サービスも大きく変わる。従来の独自プロトコル「TSServer」を廃し、標準のLSP(Language Server Protocol)に全面移行した。コード補完、ナビゲーション、フォーマッタも一から作り直されている。外部ツールベンダーにとっては、LSPクライアントさえ実装できていれば相互運用が簡単になる反面、TSServer前提のエコシステムは対応改修を強いられる。特に重要なのがStrada API(従来のプログラマティックAPI)はCorsaではサポートされない点で、これに依存するリンター・フォーマッタ・IDEプラグインは、当面は旧typescriptパッケージ側に残しておく必要がある。
エンジニアへの影響 — いつ、どう移行すべきか
実務で最初に意識すべきなのは、「TypeScript 6.0が事実上の移行ブリッジである」という事実だ。2026年3月23日にリリースされた6.0は、JavaScriptベースのコンパイラとしては最後のメジャーバージョンで、7.0で削除される機能をすべて非推奨としている。6.0の警告を潰さずに7.0へジャンプすると、ビルドが単純に通らなくなる可能性が高い。target: es5、--outFile、--moduleResolution node10/classicなどは特に影響範囲が広い。
短期的な導入シナリオは以下が現実的だ。
- CIの型チェックだけを
tsgoに切り替える。エラーセットが変わらないことを確認し、ビルド時間短縮の恩恵を先取りする。 - 既存のビルド・バンドラ・lintフローは従来の
typescriptパッケージに残す。Strada API依存のツール(一部のESLintプラグイン、Webpack loaderなど)が@typescript/native-preview単体では動かないため。 - 3〜6カ月かけて、ツール側のLSP対応やCorsa対応アップデートを待ちながら段階移行する。
パフォーマンス面のインパクトは、モノレポや大規模SPAほど大きい。Next.js/Nx/Turborepo構成で型チェックが開発体験のボトルネックになっているチームは、CI時間短縮だけでなくエディタのレスポンス改善(LSP化+並列化)で二重の恩恵を受ける。一方、数万行規模の小〜中規模プロジェクトでは「そもそも10秒もかかっていなかった」ケースも多く、焦って飛びつく必要性は薄い。
まとめ
TypeScript 7.0 Betaは、単なるバージョン番号の前進ではなく、13年以上続いたJavaScriptコンパイラ時代の終わりと、ネイティブコンパイラ時代の始まりを意味する。Go移植によって型チェックは約10倍速くなり、LSP化と共有メモリ並列処理で言語サービスの体感速度も改善した。
一方で、Strada API非対応やtarget: es5削除など、エコシステムに対する破壊力は過去最大級だ。TypeScript 6.0で非推奨警告を消し切ってから7.0に移ること、まずはCIの型チェックだけを切り替えて副作用を観測することが、当面の実務的な正解になる。GAは早ければ2026年後半、周辺ツールの追随を見ながらの段階移行が本丸になりそうだ。
今日のその他のニュース
- Vercel OAuth侵害: プラットフォーム環境変数経由の情報漏洩が発生。Next.js+Vercel構成のSaaSはAPIキー・トークンのローテーションと、OAuth連携アプリの棚卸しが急務。
- Claude Codeのプロンプトキャッシュ入門: 5分TTLのキャッシュ挙動と、Anthropic SDKで独自ツールを書くときの設計指針が整理されている。コストに効く話なのでAIコーディング常用者は必読。
- Firebase AI Logic + Flutter SDK: Gemini Developer APIとVertex AI Gemini APIが単一Flutter SDKで扱えるように。Firebase+Flutter+AIスタックのハードルが一段下がった。