2025年5月22日、TypeScript開発チームは待望の「TypeScript Native Previews」を正式に発表しました。

これは、長年JavaScriptおよびNode.js環境で動作してきたTypeScriptコンパイラとツールセットを、ネイティブコード(Go言語)へ移植するという野心的な試みの大きな節目となります。

2025年3月に初めてその構想が明かされて以来、コミュニティの注目を集めてきたこのプロジェクトは、既存のプロジェクトにおいて最大10倍もの劇的な高速化を実現する可能性を秘めています。

本記事では、この革新的なアップデートの詳細と、開発環境にもたらされる変化について詳しく解説します。

TypeScript Nativeの背景:Project CorsaとStrada

TypeScript開発チームは、今回公開されたネイティブ移植版を内部コードネームで「Project Corsa (コルサ)」と呼んでいます。

これに対し、従来のJavaScriptベースのコードベース(TypeScript 5.8など)は「Strada (ストラーダ)」と区別されています。

なぜ今、TypeScriptはネイティブコードへの移行を必要としているのでしょうか。

その最大の理由はパフォーマンスの限界突破にあります。

大規模なエンタープライズ向けのプロジェクトでは、型チェックやビルドに数分を要することも珍しくありません。

Go言語への移植によって、言語自体の実行速度が向上するだけでなく、共有メモリを活用した並列処理や並行処理を最大限に利用できるようになりました。

これが、単なるコンパイル速度の向上を超えた劇的なパフォーマンス向上をもたらしています。

圧倒的なパフォーマンス:10倍の高速化の実証

今回のプレビュー版公開にあたり、実際のプロジェクトを用いたベンチマーク結果が報告されています。

例として挙げられたのは、大規模なReactプロジェクトである「Sentry」のコードベースです。

従来のJavaScriptベースのコンパイラ(tsc)と、ネイティブ版の実行ファイル(tsgo)での比較結果は以下の通りです。

項目従来のtsc (Strada)ネイティブ版tsgo (Corsa)
ファイル数約9,300ファイル約9,300ファイル
チェック時間63.26秒5.88秒
総実行時間72.81秒6.76秒

この比較からわかるように、これまで1分以上かかっていた型チェックが、わずか7秒弱で完了しています。

開発者にとって、この「待ち時間」の短縮は生産性に直結する極めて重要な進化です。

プレビュー版の導入方法

現在、このネイティブコンパイラはnpmを通じてプレビュー版として提供されています。

既存のプロジェクトで試すには、以下の手順でインストールを行います。

コンパイラのインストール

プロジェクトのルートディレクトリで以下のコマンドを実行します。

Shell
# ネイティブプレビュー版のパッケージをインストール
npm install -D @typescript/native-preview

このパッケージをインストールすると、tsgo という新しい実行ファイルが利用可能になります。

これは将来的に tsc という名前に統合される予定ですが、現在はテストを容易にするために別名で提供されています。

コンパイラの実行

インストール後、以下のコマンドで型チェックを実行できます。

Shell
# プロジェクトのtsconfig.jsonを指定して実行
npx tsgo --project ./src/tsconfig.json

実行結果の出力例は以下のようになります。

text
Files:              9292
Lines:           1508361
Identifiers:     1954236
...
Check time:       5.882s
Total time:       6.761s

VS Codeでのエディタ体験の向上

コマンドラインツールだけでなく、Visual Studio Code (VS Code) での編集体験も提供が開始されました。

Marketplaceから「TypeScript (Native Preview)」拡張機能をインストールすることで、ネイティブコンパイラの恩恵をエディタ上で受けることができます。

拡張機能をインストールした後、VS Codeのコマンドパレット (Ctrl+Shift+P / Cmd+Shift+P) を開き、以下のコマンドを実行して有効化します。

TypeScript Native Preview: Enable (Experimental)

または、settings.json に以下の設定を直接記述することも可能です。

JSON
{
    "typescript.experimental.useTsgo": true
}

これにより、エディタ背後で動作する言語サービスがネイティブ版に切り替わり、より高速なエラー検知やホバー情報の表示が可能となります。

進化する機能:JSXとJavaScriptのサポート

今回のプレビュー版では、型チェッカーの大部分がすでに移植されています。

特筆すべきは、JSXの型チェックと、JSDocを用いたJavaScriptファイルのチェックが正式にサポートされた点です。

JSXチェックの精度向上

初期の発表では、CorsaはJSXを解析こそできるものの、型チェック自体はスキップされていました。

しかし、2025年5月のプレビュー版では完全な型チェックが可能となり、ReactなどのJSXを多用するプロジェクトでも実用的な速度検証が可能となっています。

JavaScriptサポートの再構築

興味深いことに、JavaScriptファイルのチェック機能については、単純な移植ではなく「書き直し」が行われました。

従来のStradaにおけるJavaScriptサポートは、長年の開発を経て非常に複雑なパターンを処理するように進化していましたが、Corsaではこれを整理し、より現代的でイディオマティック(言語に忠実)なJavaScriptスタイルに最適化されています。

APIの将来とRustの採用

TypeScript NativeはGo言語で記述されていますが、APIの統合レイヤーには別の技術も採用されています。

TypeScriptのAPIは同期的に動作することが求められるケースが多く、Node.jsから子プロセスと同期通信を行うために、Rustで開発されたlibsyncrpcというネイティブモジュールが導入されました。

これにより、既存のJavaScript/TypeScriptで書かれたツールチェーンから、ネイティブコンパイラに対して効率的にアクセスできる基盤が整いつつあります。

現時点での制限事項と注意点

非常に魅力的なTypeScript Nativeですが、2025年5月時点では「プレビュー版」であり、いくつかの重要な機能が未実装であることに注意が必要です。

  • ビルド・出力の制限--build モードや、宣言ファイル (.d.ts) の生成はまだサポートされていません。
  • ダウンレベルコンパイル:古いESバージョンへのターゲット出力には制限があります。
  • エディタ機能:自動インポート、参照の検索、リネーム機能などは現在実装が進められている段階です。
  • モジュール解像度:古い node10 設定などは非推奨となり、最新の bundlernodenext への移行が推奨されています。

まとめ

2025年5月に公開された「TypeScript Native Previews」は、TypeScriptの歴史における新たなチャプターの幕開けと言えるでしょう。

Go言語への移植による「10倍の高速化」は、開発サイクルを劇的に加速させ、より快適なプログラミング体験を約束するものです。

このネイティブプレビュー版は、最終的には「TypeScript 7」として結実する予定です。

現時点では不足している機能もありますが、Nightlyビルドを通じて日々進化を続けています。

大規模なプロジェクトに関わる開発者の皆様は、ぜひ一度この驚異的なスピードを体験し、TypeScriptの未来に触れてみてください。

今後のロードマップでは、2025年後半に向けてさらに完全なコンパイラ機能とエディタ支援の提供が予定されています。