Microsoftは、TypeScriptコンパイラと言語サービスをGo言語に移植した「TypeScript 7.0」を提供開始した。高速化やメモリ使用量の削減を実現している。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2026年7月8日(米国時間)、「TypeScript 7.0」の提供開始を発表した。これまでJavaScriptで実装していたTypeScriptコンパイラと言語サービスをGo言語で書き直したネイティブ移植版だ。フルビルドで通常、従来版と比べて8〜12倍高速化している。
MicrosoftはTypeScriptのGo言語への移植を2025年3月に発表した。移植は可能な限り忠実に行われ、JavaScriptベースとGoベースの2つのコンパイラが一貫した互換性のある出力を生成するように、元のコードベースの構造とロジックを維持しているという。TypeScript 7.0では新しいコードベースにより、ネイティブコード並みの速度を実現している他、共有メモリによるマルチスレッド処理と新たな最適化機能も導入されている。
TypeScript 7.0は従来と同様にnpmで配布されており、以下のコマンドでインストールできる。
npm install -D typescript
TypeScript 7.0は、LSP(Language Server Protocol)ベースの新しい言語サーバにより、幅広いエディタで利用でき、「Visual Studio Code」(VS Code)向けの専用拡張機能も用意されており、最新の「Visual Studio」では自動的に有効になる。
Microsoftは、TypeScript 7.0の高速化は、日々の開発作業の効率化に役立つとしている。エディタでのプロジェクト読み込み、全ての参照の検索、自動補完、リアルタイムの診断、コマンドラインでの「tsc」(コンパイルコマンド)実行など、いずれも高速化の恩恵を受ける。
大規模なオープンソースのコードベースでの比較では、TypeScript 7.0は6.0に対して7.7〜11.9倍の高速化を示した。
| コードベース | TypeScript 6 | TypeScript 7 | 高速化率 |
|---|---|---|---|
| vscode | 125.7秒 | 10.6秒 | 11.9倍 |
| sentry | 139.8秒 | 15.7秒 | 8.9倍 |
| bluesky | 24.3秒 | 2.8秒 | 8.7倍 |
| playwright | 12.8秒 | 1.47秒 | 8.7倍 |
| tldraw | 11.2秒 | 1.46秒 | 7.7倍 |
TypeScript 7は、ビルド全体を通じたメモリ使用量も少ない傾向にあり、同じコードベースで6〜26%の削減を示した。
| コードベース | TypeScript 6 | TypeScript 7 | メモリ使用量の削減率 |
|---|---|---|---|
| vscode | 5.2GB | 4.2GB | -18% |
| sentry | 4.9GB | 4.6GB | -6% |
| bluesky | 1.8GB | 1.3GB | -26% |
| playwright | 1.0GB | 0.9GB | -11% |
| tldraw | 0.6GB | 0.5GB | -15% |
エディタの応答も改善しており、VS Codeでエラーを含むファイルを開いた場合、以前はエディタの起動から最初のエラーが表示されるまでに約17.5秒かかっていたが、TypeScript 7では1.3秒未満となり、13倍以上高速になったという。
Microsoftは、ネイティブ移植によって大幅にアップデートしたTypeScript 7が、本番利用可能な品質を備えることを確認するために、過去1年にわたって「Loop」「Office」「PowerBI」「Teams」「Xbox」といった社内チームに加え、Bloomberg、Canva、Figma、Google、Notion、Sentry、Slack、Vanta、Vercelなどの外部企業とテストを重ねてきた。
TypeScript 7がこれらのチームや企業の大規模なコードベースに対応できることが実証されており、マージやビルドなどの待ち時間短縮や、スケーラビリティ向上といった導入効果が報告されている。
Microsoftはテストインフラも再構築し、GitHub上のTypeScriptおよびJavaScriptプロジェクトを対象とした自動テストとオンデマンドテストにより、コードベースに影響するTypeScript 7の問題を発見し、コアテストスイートの不備を特定している。
明確なフィードバック、自動クラッシュレポート、徹底的なテストの組み合わせが功を奏し、TypeScript 7の新しい言語サーバにより、TypeScript 6と比べて言語サーバコマンドの失敗が80%以上、サーバのクラッシュが60%以上減少したという。
TypeScript 7.0では、構文解析や型チェック、コード出力など、多くの処理が並列化できるようになった。この挙動を調整するため、実験的なフラグが導入されている。
「--checkers」をデフォルト(既定)の4から8に増やしたところ、vscodeの高速化率は、11.9倍(上の表「TypeScript 6と7でのプロジェクトのコンパイル時間」)から16.7倍に向上した。ただし、メモリ使用量は増加し、結果はプロジェクトやハードウェアによって異なると、Microsoftは指摘する。
| コードベース | TypeScript 6 | TypeScript 7(--checkers 8指定時) | 高速化率 |
|---|---|---|---|
| vscode | 125.7秒 | 7.51秒 | 16.7倍 |
| sentry | 139.8秒 | 12.08秒 | 11.6倍 |
| bluesky | 24.3秒 | 2.01秒 | 12.1倍 |
| playwright | 12.8秒 | 1.16秒 | 11倍 |
| tldraw | 11.2秒 | 1.06秒 | 10.6倍 |
「--watch」モードは、VS Codeが長年利用してきたParcelバンドラのファイルウォッチャーをGoに移植した基盤の上に、一から再構築された。移植版のウォッチャーは、効率的で安定したクロスプラットフォームのファイル監視を実現し、リソース使用量を大幅に削減している。
TypeScript 7.0には、プログラムから利用できるAPIは含まれていない。新しいAPIはTypeScript 7.1から提供される予定だ。それまでの間、「typescript-eslint」のようにコンパイラへのプログラムアクセスを必要とするツールは、引き続きTypeScript 6.0に依存することになる。
そこでMicrosoftは、互換パッケージ「@typescript/typescript6」を公開した。実行ファイル名は「tsc6」であり、独自のtscバイナリを持つTypeScript 7.0と名前の衝突なしに併用できる他、TypeScript 6.0のAPIも再エクスポートする。TypeScript 7.0でtscを使用しつつ、他のツールではTypeScript 6.0を使用し続けることが可能だ。
ナイトリービルドの配布方法も変わる。TypeScript 7.0の開発段階では、「@typescript/native-preview」パッケージで提供してきたが、今後は以前のように、標準の「typescript」パッケージの「next」タグでの提供を再開する。
TypeScript 7.0は、TypeScript 6.0の型チェックおよびコマンドラインの挙動と互換性を持つように設計されている。Microsoftによると、6.0で正常にコンパイルされるコード(「stableTypeOrdering」フラグがオンで、「ignoreDeprecations」フラグが設定されていない)は実質的に全て、7.0でも同様にコンパイルされるはずだ。
ただし、7.0は、6.0の新しいデフォルト設定(「strict」がデフォルトで有効、「module」のデフォルトが「esnext」など)を踏襲する。さらに、6.0で非推奨となった設定(「target: es5」や「moduleResolution: node」など)はハードエラーとして扱う。
そのため、Microsoftは開発者に、円滑に移行できるように、まずTypeScript 6.0を導入することを推奨している。
TypeScript 7は安定したプログラム用APIをまだ公開していないので、「Vue」「MDX」「Astro」「Svelte」を使うワークフローや、「Angular」のようなテンプレート内での特注な型チェックでは、当面TypeScript 6.0を使い続ける必要がある。
ネイティブ移植版である7.0を公開したことで、Microsoftは今後のTypeScriptのアップデートでは、新機能の追加、使い勝手の改善、さらなる性能向上、エコシステム向けの新APIの実装に注力するとしている。TypeScript 7.1を皮切りに、新機能を盛り込んだバージョンを3〜4カ月ごとに公開する計画だ。
Copyright © ITmedia, Inc. All Rights Reserved.
編集部からのお知らせ