Microsoftは、JavaScriptに型付けを追加した言語であるTypeScriptのコンパイラとツールをGo言語でネイティブ実装に移植する取り組みを発表した。この新実装により、処理速度が約10倍向上し、メモリ使用量が半減する見込みである。大規模プロジェクトでのビルド時間を数分から数十秒に短縮し、開発者の生産性を大幅に向上させることが期待されている。
最大13.5倍の処理速度向上を実現
Microsoftが発表したTypeScriptのネイティブ実装は、すでに多くの人気プロジェクトで驚異的なパフォーマンス向上を示している。VS Code、Playwright、TypeORMなど様々なサイズのコードベースでのテスト結果によると、処理速度が9.1倍から13.5倍に向上していることが確認されている。
コードベース | サイズ (行数) | 現在の処理時間 | ネイティブ実装の処理時間 | 高速化倍率 |
---|---|---|---|---|
VS Code | 1,505,000 | 77.8秒 | 7.5秒 | 10.4倍 |
Playwright | 356,000 | 11.1秒 | 1.1秒 | 10.1倍 |
TypeORM | 270,000 | 17.5秒 | 1.3秒 | 13.5倍 |
date-fns | 104,000 | 6.5秒 | 0.7秒 | 9.5倍 |
tRPC | 18,000 | 5.5秒 | 0.6秒 | 9.1倍 |
rxjs | 2,100 | 1.1秒 | 0.1秒 | 11.0倍 |
特に注目すべきは、約150万行のコードを持つVS Codeのコードベースでの結果だ。現在の実装では77.8秒かかる処理が、新しいネイティブ実装では7.5秒に短縮された。また、エディタでのプロジェクトロード時間も、9.6秒から1.2秒へと約8倍の高速化が実現している。
これに加えて、メモリ使用量も現在の実装と比較して約半分に削減される見込みで、より効率的なリソース利用が可能になる。Microsoftはまだメモリ使用量の最適化を積極的に調査していないため、今後さらなる改善が期待できるとしている。
大規模開発での課題と開発者体験の向上
TypeScriptの最大の価値は優れた開発者体験にあるが、コードベースが大規模になるほど、現在の実装ではスケーリングの問題が顕著になっていた。大規模プロジェクトの開発者は、次のような課題に直面していた:
- エディタの起動時間が長く、作業の開始が遅れる
- コード変更後の型チェック時間が長く、フィードバックサイクルが遅い
- エディタの応答性が低下し、コード補完や定義へのジャンプなどの機能が遅延する
- 合理的なエディタ起動時間を得るか、ソースコードの完全なビューを得るかの選択を迫られる
Microsoft TypeScriptチームのリードアーキテクトであるAnders Hejlsberg氏によると、この新しいネイティブ実装により、変数の安全なリネーム、特定の関数へのすべての参照の検索、コードベース内の容易なナビゲーションなど、開発者が日常的に行う作業がほぼ遅延なく行えるようになる。
また、AIによる新しい開発体験は、より大きなセマンティック情報の窓と厳しい待機時間制約を必要としており、この高速化はそうした要件にも対応する。コマンドラインでのビルドも大幅に高速化され、コードベース全体の状態を迅速に検証できるようになる。
最新のTIOBE Indexによると、TypeScriptは現在世界で37番目に人気のあるプログラミング言語であり、今回の移植先となるGo言語は7番目にランクされている。TypeScriptは大規模なアプリケーションを開発しJavaScriptにトランスパイル(変換コンパイル)するように設計されているが、巨大なコードベースでは処理速度が課題となっていた。
実装計画と今後のロードマップ
Microsoftは、この「Corsa」というコードネームのプロジェクトについて、次のようなタイムラインを示している:
- 2025年半ば:コマンドラインでの型チェックが可能なtscのネイティブ実装のプレビューを提供
- 2025年末:プロジェクトビルドと言語サービスの完全な機能を備えたソリューションをリリース
現在のTypeScriptは5.8がリリースされており、5.9が近日中に公開される予定だ。JavaScript版のコードベースは6.xシリーズまで開発が継続され、TypeScript 6.0では今後のネイティブコードベースに合わせていくつかの非推奨化や破壊的変更が導入される予定である。
新しいネイティブコードベースは、十分なパリティに達した時点でTypeScript 7.0としてリリースされる。明確にするため、MicrosoftはこれらをTypeScript 6(JS)とTypeScript 7(ネイティブ)と呼んでいる。また、内部的にはオリジナルのTypeScriptを「Strada」、この新しい取り組みを「Corsa」というコードネームで呼んでいる。
一部のプロジェクトはリリース時にTypeScript 7に切り替えることができるかもしれないが、他のプロジェクトは特定のAPI機能、レガシー設定、またはその他の制約に依存しているため、TypeScript 6を使用する必要がある場合もある。MicrosoftはJavaScript開発エコシステムにおけるTypeScriptの重要な役割を認識し、TypeScript 7+が十分な成熟度と採用に達するまで、6.xラインのJSコードベースを維持する予定だ。
すでに新しい実装のコードはGitHubの新しいリポジトリで公開されており、開発者は自らビルドして試すことができる。Microsoftは、今後数ヶ月でパフォーマンス、新しいコンパイラAPI、LSP(Language Server Protocol)などについての詳細な情報を共有する予定だ。
Source
- Microsoft: A 10x Faster TypeScript