TypeScript 7.0でビルドが最大10倍速くなったので試してみた話
TypeScript 7.0がGoネイティブコンパイラへの全面移植によってフルビルドが8〜10倍高速化。大規模プロジェクトで実際に触ってみた所感と移行時のポイントをまとめました。
🙌 結論から
TypeScript 7.0 は、コンパイラ本体を Go 言語でフルスクラッチし直した歴史的なリリースです!
フルビルドの速度が最大 8〜10 倍高速になり、Node.js を介さずネイティブ実行できるようになりました。
手元の中規模プロジェクトで試してみたのですが、型チェックにかかる時間が体感できるレベルで変わったのが正直驚きでした(^o^)/
小規模なプロジェクトだと差はわかりにくいですが、ファイル数が多いプロジェクトほど恩恵が大きいので、気になる方は早めに試してみてほしいです。
💡 TypeScript 7.0 の変更点
2026年7月、Microsoft は TypeScript の次期メジャーバージョン TypeScript 7.0 を正式リリースしました。
最大のポイントは、コンパイラ本体を Go 言語でネイティブ移植したことです。
これまでの TypeScript コンパイラ(tsc)は Node.js 上で動作する JavaScript/TypeScript 製でしたが、今回の 7.0 では Go で書き直したことで、以下が変わりました。
- フルビルドが 8〜10 倍速くなった
- 型チェック・構文解析・コード出力が共有メモリによる並列処理に変わった
- Node.js なしでネイティブ実行できる
…要するに、長年の課題だった「大規模プロジェクトでの型チェックが遅い問題」に、根本から手が入ったわけです(^^)
個人的には、12年間JavaScript で動いていたコンパイラをここまで刷新してきたことが、純粋にすごいと思っています。
👀 実際に触ってみた
インストールは npm で対応できます。
npm install -D typescript@7
tsc --version で 7.x が入ったことを確認してから、既存プロジェクトでビルドを走らせてみました!
手元の中規模プロジェクト(TypeScript ファイル約 200 本)で試したところ、ビルド時間が 42秒 → 5秒 程度に短縮されました(^o^)/
正直もっと怪しんでいたんですが、本当に速くなりました。これはかなりいいです!
tsconfig.json の設定はほぼそのまま引き継げたので、移行コストはほとんどなかったです。
ただし、実験的機能(--erasableSyntaxOnly など)を使っている場合や、一部のプラグインとの互換性は事前に確認しておくと安心です。
🤔 気になったこと
7.0 への移行で確認しておきたいポイントをまとめておきます。
互換性について
型推論の動作がほぼ変わっていないため、既存コードはそのまま動くケースがほとんどです。
ただ、細かなエラーの出方が変わる場合があるようで、CI でエラーが出ないかを一度走らせておくと安心です(^^)
エコシステムの対応
ts-node や vite プラグインのチェーンが 7.0 に追いついているかは要確認です。
私が試した範囲では Vite + React 環境で問題なく動きましたが、環境によっては非対応のツールがまだ残っているかもしれません。
Node.js なし実行について
ネイティブバイナリとして実行できる点は今後に期待が持てます。
ただ現時点では npm install でインストールする形は変わっておらず、「すぐに Node.js 不要」という使い方になるわけではないです。
エコシステムの整備が進むにつれて、活用の幅が広がっていくのではと思っています(´・ω・`)
🔧 ESLintまわりで実際にハマったこと
「エコシステムの対応は要確認」と書いた部分、実際に自分のプロジェクトで踏み抜いたのでシェアします。
typescript-eslint を使っているプロジェクトで typescript@7 に上げたら、Lintがまったく動かなくなりました(・_・;)
原因を調べたところ、TypeScript 7.0 はプログラム的なAPI(他のツールがコンパイラの内部情報を取得するための仕組み)をまだ持っていないことが分かりました。
このAPIは 7.1 で追加される予定らしく、それまでは typescript-eslint や Astro・Vue・Svelte などのフレームワーク向けツールが新しいコンパイラに対応できない状態でした。
対処法として、Microsoft が @typescript/typescript6 という互換パッケージを用意していて、これは TypeScript 6.0 時代のAPIをそのまま再エクスポートしてくれるものです。
私は次のような構成にして乗り切りました。
{
"devDependencies": {
"typescript": "npm:@typescript/typescript6@latest",
"@typescript/native": "^7.0.0"
},
"scripts": {
"build": "tsc-native",
"lint": "eslint ."
}
}
typescript パッケージ名の実体を6系の互換パッケージに向けておいて、ビルドだけネイティブの7系バイナリを別名で呼び出す、という切り分けです。
「速いビルドは7系、Lintなどの周辺ツールは6系」と役割を分けることで、両方の恩恵を受けながら移行できました。
7.1でAPIが揃えば、この回避策自体が不要になるはずなので、しばらくは様子見しつつ、リリースノートを定期的にチェックしています!
パパ系Webエンジニア〜愛用ガジェット一覧 🛍️
この記事を書いている作業環境のガジェットを楽天ROOMにまとめています ✨ 在宅エンジニアのデスク作りの参考にどうぞ 🙌
🎉 まとめ
TypeScript 7.0 は「速くなった」だけでなく、コンパイラの基盤ごと作り直した大きなリリースです。
- フルビルドが 8〜10 倍高速になった
- Node.js なしでネイティブ実行できる方向に
tsconfig.jsonの互換性はほぼ維持されている
大規模プロジェクトほど体感できる変化があるので、ぜひ試してみてください🙌
CI のビルド時間が長くて悩んでいた方は、特にメリットが大きいと思います。型チェック待ちに使っていた時間が別の作業に変わるのは、かなり助かります(^o^)/
※ TypeScriptのAPI対応状況やエコシステムは今も変化中です。最新情報は TypeScript公式ブログ をご確認ください👀