Goへのネイティブ移植で「桁違い」の高速化を実現

TypeScript 7は、これまでJavaScriptで実装されていたコンパイラをGo言語でネイティブに書き直した初の安定版リリースです。Microsoftのプリンシパルプロダクトマネージャーであるダニエル・ローゼンワッサー氏は、「TypeScript 7はネイティブコードの速度、共有メモリによるマルチスレッド処理、そしてフルビルドで8倍から12倍の高速化をもたらす複数の最適化を実現した」と説明しています(出典)。

実際に公開されたベンチマークでは、いくつかの大規模オープンソースプロジェクトで次のような結果が出ています。

プロジェクト TypeScript 6 TypeScript 7 高速化倍率
vscode 125.7秒 10.6秒 11.9倍
sentry 139.8秒 15.7秒 8.9倍
bluesky 24.3秒 2.8秒 8.7倍
playwright 12.8秒 1.47秒 8.7倍
tldraw 11.2秒 1.46秒 7.7倍

(出典)

vscodeのフルビルドは125.7秒から10.6秒へ、実に11.9倍高速化しました。

メモリ使用量も削減、エディタの体感速度が大きく向上

高速化はビルド時間だけにとどまりません。同じプロジェクトで比較すると、メモリ使用量も軒並み削減されています。

  • vscode:5.2GB → 4.2GB(-18%)
  • bluesky:1.8GB → 1.3GB(-26%)
  • tldraw:0.6GB → 0.5GB(-15%)

さらに印象的なのは、エディタでの体感速度です。VS Codeのコードベースでエラーを含むファイルを開いた際、エディタ起動から最初のエラー表示までの時間は従来約17.5秒かかっていたのに対し、TypeScript 7では1.3秒未満に短縮されたといいます。13倍以上の高速化という数字を見ると、日々のコーディング体験がかなり変わりそうだと感じます(出典)。

導入はnpm installだけ、エディタ連携もそのまま

TypeScript 7の導入方法はこれまでと変わりません。

npm install -D typescript

これだけで新しいtsc実行ファイルが使えるようになります。VS Code・Visual Studio・WebStormなど主要エディタは言語サーバープロトコル(LSP)経由で新しいTypeScript 7に対応しており、VS Code向けには専用拡張機能も用意されています(出典)。

記事執筆時点でGo言語自体も初の安定版がリリースされたタイミングと重なっており、TypeScriptとGoの両プロジェクトにとって節目のリリースになったといえそうです。普段Pythonと合わせてTypeScriptを触る身としては、find-all-referencesや自動補完の遅さにストレスを感じる場面が多かったので、この高速化はかなりありがたい変化です。

開発中にAIエージェントを使ってコードを生成・検証する機会が増えている今、tscの実行速度が上がることはAIとの反復作業のテンポにも直結します。開発フロー全体の効率化という観点でも注目したいアップデートです。