
VS Code、TypeScript 7移行で型チェック7倍高速化 段階的アプローチの全貌
VS Codeチームは2026年2月、TypeScript 7をデフォルトの型チェッカーおよび言語サービスとして採用した。この移行により、VS Code本体の型チェック時間は36秒から5秒へと7倍以上高速化した。全ファイルのビルド時間も80秒から20秒に短縮され、開発者1人あたりの待ち時間が1日に数分単位で削減された。
この劇的な改善は、約6ヶ月にわたる段階的な導入プロセスによって実現した。一気に切り替えるのではなく、低リスクな領域から少しずつTypeScript 7の利用範囲を広げていくことで、バグの早期発見とTypeScriptチームへの継続的なフィードバックが可能になった。以下では、その具体的な戦略と得られた数値、TypeScriptチームとの協業の詳細を解説する。
段階的移行の全体像とメリット

リスクを最小化しながら早期フィードバックを得る
VS Codeチームは大規模な変更を行う際、常にインクリメンタル(段階的)なアプローチを選ぶ。その理由は主に2つある。1つはリスクの低減だ。各ステップが小さいため、何か問題が起きても原因の特定と差し戻しが非常に容易になる。2つ目は早期のフィードバックである。TypeScript 7がまだ開発中の段階から、実際の大規模コードベースでテストを始めることで、見過ごされがちなバグや改善点をTypeScriptチームに直接届けられた。
小さな改善を積み重ねるエンジニアリング文化
VS Codeチームは以前にも、コードベース全体にわたるstrict nullチェックの有効化や、リモート開発サポートの追加といった大規模な取り組みを、同じ段階的手法で成功させてきた。今回のTypeScript 7移行もその延長線上にある。一度に大きな変更を加えず、小さな改善をメインブランチに繰り返しマージしていくことで、気づけば一見不可能に思えた課題を克服している。この文化が、Goで書き直された高速なTypeScript 7の恩恵を早期に引き出す原動力となった。
6段階の移行フェーズ詳細

上図は約6ヶ月にわたる移行の大まかな流れだ。各ステップが小さく、問題が起きてもすぐに原因を特定できる設計だった。
探索フェーズ(2025年夏〜秋)
TypeScript 7は2025年3月に公開され、夏頃には初期テストが可能な状態にあった。この時点では型チェック機能の方がJavaScript生成(emit)よりも進んでいたため、VS Codeチームはまず --noEmit オプションを使って小規模な拡張機能の型チェックを手動でテストした。問題が見つかり次第、日次で更新されるプレビューパッケージを使って素早く修正を確認するというサイクルが回り始めた。
TypeScript 6による架け橋(2025年秋)
TypeScriptチームは、ユーザーが一足飛びにTS 7へ移行する負荷を軽減するため、TypeScript 6を「橋渡しバージョン」としてリリースした。TS 6では、それまでデフォルトでなかったstrict nullチェックの有効化や、ターゲットのESバージョン引き上げなど、TS 7への適合を容易にする変更が行われた。VS Codeにとっては、完全に書き直されたTS 7への移行に比べるとはるかに小さな一歩であり、わずかなコード修正で対応できた。このステップが、コードベースの健全性を高め、TS 7本番導入への自信を深める役割を果たした。
TS 6と7の並行稼働(2025年秋)
次の段階では、最もリスクの低い領域である「組み込み拡張機能の型チェック」にTypeScript 7の利用を開始した。同時に、CI(継続的インテグレーション)の設定を変更し、TS 6とTS 7の両方でビルドが成功することを必須化した。この並行稼働によって、両バージョンの型チェック結果の微妙な差異を検出し、TypeScriptチームへ報告することができた。
拡張機能の段階的切り替え(2026年1〜2月)
2026年初頭には、TypeScript 7の型チェックの信頼性が十分に高まり、emit機能も完成した。VS Codeチームは内蔵の拡張機能を1つずつTS 7へ移行し始めた。同時に、バンドルツールをwebpackからesbuildに切り替え、ビルド構成を簡素化した。この変更により、バンドル生成の時間も大幅に短縮された。移行は単純な拡張機能から始め、徐々に複雑なものへと広げていった。すでにTS 7でのテスト実績が豊富だったため、問題はほとんど起きなかった。
TS 7のデフォルト化(2026年2月)
最終段階として、通常の開発タスクで実行するウォッチャーやエディタ内で使用する言語サービスをTypeScript 7に切り替えた。コード変更自体は非常に軽微だった。VS Codeリポジトリでは今も旧バージョンへの切り戻しオプションが残されているが、実際に使われることは稀だ。ほとんどの開発者は、TS 7の圧倒的なパフォーマンスの前に戻る理由がない。
数値で見る劇的なパフォーマンス向上

tsc --noEmit)tsgo --noEmit)上記の比較は、同一のファイル群に対して同じ厳密さで型チェックを実行した結果だ。Goによるネイティブ再実装がこれほど大きな差を生み出した。
型チェック速度の比較
VS Codeのメインコードベースにおける型チェック時間は、TS 6では約36秒だった。TS 7に切り替えることで、同じ処理が5秒で完了する。実に7倍以上の高速化だ。この処理は開発中に何度も実行されるため、待ち時間の累積短縮効果は非常に大きい。
ビルド時間全体の短縮
npm run watch コマンドによるフルビルドと型チェックでは、TS 6利用時に約80秒かかっていた。TS 7移行後は約20秒にまで短縮され、約4分の1の時間で完了する。1回の再起動ごとに約1分が節約され、エージェント支援開発のイテレーション速度も大幅に向上した。
エディタ内言語サポートの起動時間
エディタでTypeScriptの補完やエラー表示を行うには、背後でプロジェクト全体の読み込みが必要になる。VS Codeのメインプロジェクトでは、TS 6時代に約1分を要していたこの処理が、TS 7では10秒ほどで完了する。開発者はエディタの再読み込みを1日に何度も行うため、この50秒の短縮が日々の生産性に直結する。
TypeScriptチームとの協業がもたらした相乗効果

大規模コードベースが生きたテスト環境に
VS Codeの巨大で複雑なコードベースは、TypeScript 7の実地テスト環境として非常に優秀だった。新バージョンの開発中から実際の利用に近い形でテストを行い、バグを発見し、エディタツールの完成度を高めることに貢献した。VS Codeチームの開発者たちは、少しでも動作に違和感があれば旧バージョンに切り替え、その都度TypeScriptチームが修正の優先度を判断した。
フォーマット不一致が早期修正を促進
開発者が旧バージョンに戻る最も意外な理由は「コードフォーマットの不一致」だった。補完提案や定義ジャンプの不整合はある程度許容できても、フォーマットの差はPRのコミット前チェックやCIの検証を失敗させる。そのため、わずかな空白の違いまでもが高い優先度で修正された。このフィードバックループが、結果としてTS 7の言事語サポート全体の品質を引き上げた。
フィードバックループの構築
VS CodeチームはTypeScript 7のプレビュー版を試しやすい環境を整え、問題があればエディタから直接報告できる仕組みを作った。報告のハードルを下げることで、小さな違和感も即座にフィードバックとして蓄積された。こうした緊密な連携が、本番運用に耐えうる安定版の早期完成を支えた。
大規模移行プロジェクトから得られた教訓

TypeScript 7への移行は、VS Codeチームにとって単なるツールのバージョンアップ以上の意味を持つ。段階的に取り組む文化、早期から本番に近い環境でテストする姿勢、そしてツール開発チームとの緊密なコラボレーションが、巨大なコードベースを迅速かつ安全にモダナイズする鍵だった。
VS Codeチームは、この経験が他のプロジェクトにおける大規模なエンジニアリング課題への取り組み方にも応用できると期待している。小さな一歩を積み重ね、フィードバックループを短く保ち、協業を恐れないこと。これらの価値観が、最終的にはより良いプロダクトをより早く届ける力になる。
この記事のポイント
- VS Codeは約6ヶ月の段階的移行でTypeScript 7を導入。リスクを抑えつつ早期フィードバックを得られた
- メインコードベースの型チェックが36秒→5秒に高速化。ビルド全体も80秒→20秒に短縮
- エディタの言語サポート起動が約1分→10秒に短縮され、日々の開発効率が大幅に向上
- 大規模コードベースがTypeScript 7の実地テスト環境として機能し、協業が相乗効果を生んだ
- 段階的アプローチと密なフィードバックループが、大規模移行をスムーズに進める鍵となる

・ 複数業界における17年間のデジタルビジネス開発経験
・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識
・ 15ヶ国語対応の多言語SaaSの開発経験
・ 17年間にも及ぶ、Eコマース長期運営経験
・ 幅広い業界でのSEO最適化の豊富な経験
