
TypeScript 7.0のGoコンパイラへの移行、何が変わったのか
大規模プロジェクトにおいて、TypeScriptコンパイラ(tsc)を実行するたびに長引くビルド時間とメモリ消費量は、長年エンジニアを悩ませてきた慢性的な課題でした。コードベースが数万行を超えると、型チェックだけで数分を要することもありました。TypeScript 7.0は、このボトルネックを解消するためにコンパイラエンジンをGo言語で全面的に書き直しました。内部プロジェクト名「Corsa」として開発されてきた新しいコンパイラが正式リリースされたことで、ビルドエコシステムに大きな変化が訪れました。
JavaScriptエンジンから脱却したネイティブコンパイラ
従来のTypeScriptコンパイラはTypeScript自体で記述された後、JavaScriptにトランスパイルされ、Node.jsランタイム上でシングルスレッドで動作していました。V8エンジンのガベージコレクションによる負荷とシングルスレッドアーキテクチャは、プロジェクト規模が大きくなるにつれて明白な限界を露呈していました。
TypeScript 7.0では、コンパイラの主要ロジックのすべてをGo言語で書き直し、ネイティブバイナリとして配布します。ランタイムインタープリタを介さずOS上で直接実行されるため、プロセスの起動時間がほぼゼロになり、メモリ使用量も大幅に削減されました。公式発表によれば、前バージョンと比較して約8倍から10倍の型チェックおよびビルド速度の向上が実現しています。
マルチコア並列型チェックのサポート
エンジンの再構築によって得られた最も実質的かつ機能的な飛躍は、マルチコアによる並列処理です。これまでtscは、CPUのコア数がどれだけ多くても単一のコアしか活用できませんでした。TypeScript 7.0からは、特別なワーカープロセスを手動で構成しなくても、内蔵フラグを通じてマルチコアを活用できます。
このコマンドは4つの専用チェック用スレッドを並列に立ち上げ、プロジェクト内の全モジュールの型を同時に解析します。ローカル開発環境だけでなく、複数の仮想CPUが割り当てられる継続的インテグレーション(CI)パイプラインにおいても、ビルド待ち時間を劇的に短縮します。
導入前に確認すべきプロジェクト環境
コンパイラのベース言語は変わりましたが、TypeScriptの文法そのものが変わるわけではありません。既存のプロジェクトコードの大部分は修正なしでそのまま動作します。ただし、前の中継版であるTypeScript 6.0で予告されていた設定の整理作業が完了している必要があります。
レガシーなモジュールオプションや過去のバンドラー用設定は、7.0のコンパイラから完全に削除されました。tsconfig.jsonの設定が最新のモジュール標準に合わせてあれば、追加の設定変更なしでコンパイラのバージョンを上げるだけで速度向上を享受できます。
どのような開発者やチームに必要か
数百以上のコンポーネントとビジネスロジックが絡み合う巨大なモノレポを運用しているチームであれば、即時導入を検討する価値が十分にあります。特にCIパイプラインでPRごとに全体の型チェックを行うため、開発の流れが頻繁に中断されていたチームにとっては、最も即効性のある改善をもたらします。
数十ファイル未満で構成される小規模なトイプロジェクトや学習環境では、前バージョンでもコンパイルが一瞬で終わっていたため、体感できる差は小さいかもしれません。大規模なエンタープライズコードベースをメンテナンスしているなら、次のスプリントでテスト環境からtsc 7.0を適用してみることをおすすめします。
