更新:

TypeScriptコンパイラーがGoに移植へ ビルドが10倍高速に

サムネイル

2025年3月12日、MicrosoftはTypeScriptをGo言語によるネイティブ実装に移植すると発表しました。TypeScriptはこれまでTypeScript自身で実装されてきましたが、速度やメモリー使用量の面で課題がありました。

TypeScriptをGo言語に移植することでビルドが10倍高速になり、メモリー使用量が大幅に削減される見込みです。Goベースの新しいTypeScriptは、2025年半ばまでに型チェックが可能になり、年末までにビルドや言語サービスなどの機能が利用できるようになる予定です。

TypeScriptがGoに移植へ

Play

2025年3月12日、MicrosoftはTypeScriptをGo言語によるネイティブ実装に移植すると発表しました。TypeScriptはJavaScriptに型関連の機能を追加したスーパーセットです。

TypeScriptはこれまでTypeScript自身で実装されてきましたが、速度やメモリー使用量の面で課題がありました。TypeScript(JavaScript)は、プログラミング言語の中では比較的高速ですが、ネイティブ実装と比べると遅く、とくに大規模なソフトウェアでは差が顕著になります。

TypeScriptをGo言語に移植することで、エディターの起動速度が大幅に改善され、ほとんどのビルド時間が10分の1になるとのことです。また、メモリー使用量も大幅に削減される見込みです。

Microsoftは、2025年半ばまでにコマンドラインで型チェック可能なtscコマンドのネイティブ実装をプレビュー公開し、年末までにはプロジェクトビルドと言語サービスを含む機能を公開する予定です。

TypeScriptを利用する既存のプロジェクトを破壊せず、また従来の実装と新しい実装の両方を維持しやすくするために、Goへの移行は「書き換え」ではなく「移植」として実施されます。Go言語は、型チェックアルゴリズムやグラフ処理、ASTの扱いなどにおいてTypeScriptと類似した設計パターンを持ち、効率的にメモリーを管理できるという理由で選択されたようです。

なお、新しいTypeScriptは現在のものと同じApache-2.0ライセンスで公開されています

プロジェクトのロードが10倍高速に

Go言語ベースのTypeScriptは、すでにTypeScriptコンパイラー自身を含む多くの一般的なTypeScriptプロジェクトを読み込めるとのことです。公式ブログによると、いくつかの一般的なプロジェクトでtscコマンドを実行した際の結果は、次のとおりです。

コードベースサイズ(LOC)現在ネイティブ速度改善
VS Code1,505,00077.8秒7.5秒10.4倍
Playwright356,00011.1秒1.1秒10.1倍
TypeORM270,00017.5秒1.3秒13.5倍
date-fns104,0006.5秒0.7秒9.5倍
tRPC (server + client)18,0005.5秒0.6秒9.1倍
rxjs (observable)2,1001.1秒0.1秒11.0倍

TypeScriptのネイティブ実装は、まだ完全に機能するわけではないものの、かなりの速度向上が見込まれます。これにより、従来の実装では困難だったプロジェクト全体にわたるエラーリストの瞬時の提供や、高度なリファクタリング機能、計算コストの高い深い洞察の提供が可能になるとしています。

高速なコンピューターでVisual Studio Codeのコードベースをエディターにロードするのにかかる時間は現在の約9.6秒から、8倍高速な約1.2秒に短縮されたとのことです。さらに、メモリー使用量はまだ積極的に最適化していないにもかかわらず、現在の実装の約半分に削減されているとのことです。

実行速度の向上とメモリー使用量の削減により、補完リストやクイックインフォメーション、定義への移動、すべての参照の検索などの言語サービス操作に対するエディターの応答性も大幅に向上する予定です。さらに、ほかの言語の実装に一致させるために言語サーバープロトコル(Language Server Protocol:LSP)に移行する予定です。

今後のリリース予定

TypeScriptの今後のリリース予定の画像
TypeScriptの今後のリリース予定

現在、TypeScriptの最新のバージョンはTypeScript 5.8で、TypeScript 5.9が間もなくリリースされる予定です。TypeScript 6.0では、現在のTypeScript(JavaScript)ベースの実装が継続されますが、今後のネイティブ実装に備えていくつかの機能を非推奨にし、破壊的な変更を導入する予定です。

ネイティブ実装が現在のTypeScriptと十分同等になり次第、TypeScript 7.0としてリリースされる予定です。ただし、TypeScript 7.0はまだ開発中のため、詳細は今後発表されます。

当面は、従来の実装をTypeScript 6(JS)、新しいGoベースの実装をTypeScript 7(native)と呼ぶとのことです。また、Microsoft社内やコードコメントでは、それぞれのコードネームのStradaとCorsaと呼ばれることもあるようです。

TypeScript 7以上が成熟するまでは、従来の実装によるTypeScript 6も継続してサポートされます。そのため、一部のプロジェクトはリリース時にTypeScript 7に移行できますが、TypeScript 6の機能に依存している場合、当面の間は利用を継続できます。

Microsoftの長期的な目標は、要件を満たしたらすぐにTypeScript 7に移行したり、必要に応じてTypeScript 6に戻したりできるようにすること、とのことです。

Microsoftは、今後数か月でパフォーマンス、新しいコンパイラーAPI、LSPなどの取り組みについて発表する予定としています。

参考リンク

#Go言語#JavaScript#Microsoft#TypeScript#Web開発#オープンソース#ニュース#プログラミング#解説
Xに共有する Blueskyに共有する Misskeyに共有する LINEに共有する Threadsに共有する

おすすめアイテム

※このリンクを経由して商品を購入すると、当サイトの運営者が報酬を得ることがあります。詳細はこちら

著者のアイコン画像

生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。

Webフロントエンドプログラマーで、テクノロジーに関する話題を追いかけています。動画編集やプログラミングが趣味で、たまにデザインなどもやっています。主にTypeScriptを使用したWebフロントエンド開発を専門とし、便利で実用的なブラウザー拡張機能を作成しています。また、個人ブログを通じて、IT関連のニュースやハウツー、技術的なプログラミング情報を発信しています。