概要

MicrosoftはTypeScript 7向けの新しいネイティブコンパイラ「tsgo」のプレビュー版(@typescript/native-preview)を公開した。従来のJavaScript製コンパイラtscをGoで書き直したもので、大規模なTypeScriptプロジェクトにおけるコンパイル・型チェックのパフォーマンスボトルネックを解消することを目的としている。単なる言語の移植にとどまらず、Goのネイティブコンパイルと並列処理能力を活かした「共有メモリ並行処理」を採用しており、大幅な速度向上を実現している。

パフォーマンス改善の実績

Microsoftが公開した公式ベンチマークでは、複数の実際のOSSコードベースで顕著な速度向上が確認されている。VS Code(約150万行)では10.4倍、Playwright(約35.6万行)では10.1倍、TypeORM(約27万行)では13.5倍の高速化を達成した。

コミュニティによる独自検証でも同様の効果が確認されている。約700行のECバックエンドコードを対象としたテストでは、コンパイル全体の所要時間がtscの0.28秒からtsgoの0.026秒へと約10.8倍短縮された。型チェックに限ると0.10秒から0.003秒へと約33.3倍の高速化が達成されている。さらにメモリ使用量についても、68,645KBから23,733KBへと約2.9倍の効率化が確認されており、速度だけでなくリソース消費の面でも大きなメリットがある。

インストールと利用方法

tsgoはnpm経由でインストールできる。

npm install -D @typescript/native-preview
npx tsgo -v

VS Codeでも利用可能であり、既存のTypeScriptプロジェクトへの組み込みが容易になっている。ただし、現時点ではプレビュー段階であり、--initなどのプロジェクト初期化機能は未実装のため、tsconfig.jsonの生成には従来のtscが引き続き必要となる。

現状と今後の展望

tsgoはTypeScript 7の正式リリースに向けたプレビューとして公開されており、まだ開発途上の段階にある。現時点では一部の機能に制限があるものの、実測ベンチマークによってMicrosoftが主張する10倍以上の速度向上は実際に達成されていることが確認されている。大規模なTypeScriptコードベースを抱える開発チームにとっては、CI/CDパイプラインの高速化や開発体験の大幅な向上が期待できる。TypeScript 7の正式リリース時にはtsgoが標準コンパイラとなる予定であり、エコシステム全体に影響を与える重要な変化となりそうだ。