---
title: TypeScriptコンパイラーがGoに移植へ　ビルドが10倍高速に
url: https://roboin.io/article/2025/03/12/typescript-migration-to-go-boosting-speed-by-10x/
description: MicrosoftはTypeScriptをGo言語によるネイティブ実装で作り直すと発表しました。ビルドが10倍高速になり、メモリー使用量が大幅に削減される見込みです。
publishedDate: 2025-03-11T17:23:34.000Z
modifiedDate: 2025-03-11T17:45:20.000Z
thumbnail: https://roboin.io/api/media/file/thumbnail-79.png
thumbnailAlt: サムネイル
thumbnailCaption: N/A
---

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

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

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

## TypeScriptがGoに移植へ

<iframe src="https://www.youtube-nocookie.com/embed/pNlq-EVld70" title="A 10x faster TypeScript" style="border: 0;" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

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

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

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

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

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

なお、新しいTypeScriptは現在のものと同じApache-2.0ライセンスで[公開されています](https://github.com/microsoft/typescript-go)。

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

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

| コードベース | サイズ（LOC） | 現在 | ネイティブ | 速度改善 |
| --- | --- | --- | --- | --- |
| [VS Code](https://github.com/microsoft/vscode) | 1,505,000 | 77.8秒 | 7.5秒 | 10.4倍 |
| [Playwright](https://github.com/microsoft/playwright) | 356,000 | 11.1秒 | 1.1秒 | 10.1倍 |
| [TypeORM](https://github.com/typeorm/typeorm) | 270,000 | 17.5秒 | 1.3秒 | 13.5倍 |
| [date-fns](https://github.com/date-fns/date-fns) | 104,000 | 6.5秒 | 0.7秒 | 9.5倍 |
| [tRPC (server + client)](https://github.com/trpc/trpc) | 18,000 | 5.5秒 | 0.6秒 | 9.1倍 |
| [rxjs (observable)](https://github.com/ReactiveX/rxjs) | 2,100 | 1.1秒 | 0.1秒 | 11.0倍 |

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

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

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

## 今後のリリース予定

![TypeScriptの今後のリリース予定の画像](https://roboin.io/api/media/file/release-schedule-1.png)
*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などの取り組みについて発表する予定としています。

## 参考リンク

- [A 10x Faster TypeScript - TypeScript](https://devblogs.microsoft.com/typescript/typescript-native-port/)
- [microsoft/TypeScript: TypeScript is a superset of JavaScript that compiles to clean JavaScript output.](https://github.com/microsoft/TypeScript/)
- [microsoft/typescript-go: Staging repo for development of native port of TypeScript](https://github.com/microsoft/typescript-go)