TypeScript Weekly #3: Bunが型チェッカーを内蔵、Rust移植版ts-rustがGoを凌駕、ttscが切り拓くコンパイル時Lint

TypeScript · Weekly #3

TypeScript Weekly #3: Bunが型チェッカーを内蔵、Rust移植版ts-rustがGoを凌駕、ttscが切り拓くコンパイル時Lint

typescriptTypeScript週刊ニュースコンパイラランタイム

データソース:GitHub Releases + 官方博客 + HN

📦 バージョン動向

公式安定版の進展とビルドパイプラインの更新

現在の公式最新安定バージョンは TypeScript 7.0.2(2026年8月20日リリース)です。直近7日間において、コアチームからの新たなパッチリリースはありませんでした。9月30日にリリースされたエディタ拡張 vscode-typescript/v1.0.1 には、この7.0.2コンパイラが完全にバンドルされています。過去のアーキテクチャ変更に関する詳細は、当サイトの TypeScript 7.0 新機能解説 をご参照ください。

現行の7.0シリーズにおいて、特に把握しておくべき主要なメカニズムの変更点とエンジニアリングへの影響は以下の通りです:

変更項目ルールの変化実務上の影響
Goアーキテクチャによる並行検査コンパイラがJSからGoへ移行し、ワーカー数を指定する --checkers オプション(デフォルト値: 4)を提供。マルチコア開発環境で全体ビルドが8〜12倍高速化。リソースが限られたCIコンテナではメモリ競合を防ぐため明示的な制限設定が推奨されます。
Programmatic APIの一時的な未提供7.0はネイティブCLIバイナリのみを配布しており、外部から呼び出し可能なNode.jsコンパイラAPIは未提供。内部ASTコンテキストに依存するツール(typescript-eslintなど)は直接連携できず、@typescript/typescript6 エイリアスを用いたデュアルビルド構成が必要です。
Strictモードのデフォルト標準化strict および rootDir: "./" がデフォルトで有効化。baseUrl と moduleResolution: node が廃止され、target: es5 のサポートが終了。既存プロジェクトの移行時には非推奨設定のクリーンアップが必要となり、パスエイリアスは nodenext または bundler 準拠の解決に完全移行する必要があります。

プラットフォーム対応として、TS 7.0バイナリパッケージはLinux、macOS、Windowsの主要アーキテクチャを網羅していますが、ネイティブC++バインディングが存在しないため、WebAssemblyコンテナ上での実行には新たな課題も生じています。

📝 注目のトピック

Bun PR #44361:ネイティブ型チェッカー bun check を内蔵

概要: Jarred Sumner氏がBunのPR #44361を提出し、typescript-go 7.0.2のコアを移植して約15万行のコードからなるネイティブ型チェッカーを追加しました。新コマンド bun check および連動フラグ --check が提供されます。Next.jsプロジェクト(ソースファイル2,881件)での検証では、全量チェックのCPU時間が tsc 7.0.2 の6.9秒から2.4秒へ短縮され、ピークメモリ使用量も1.78 GBから0.69 GBへと大幅に低減しました。

重要性: 従来の軽量ランタイムは型を削除(ストリップ)するだけで検査は行いませんでした。Bunは単一プロセス内で型検査を完結させ、Project Referencesの依存関係解析もインメモリで処理します。72の主要オープンソースプロジェクト(1,103通りの設定)および1.3万件の公式テストケースで検証され、99.99%の一致率を達成。マルチスレッド競合下で公式Go版に発生していたエラー行番号の偶発的なズレも解消されています。

影響を受ける対象: Bunを用いてマイクロサービス、フルスタックフレームワーク、ローカルテストを構築しているフロントエンドおよびインフラエンジニア。CIパイプラインから独立したNode.js型検査コンテナを排除可能になります。

リンク:Bun PR #44361: bun check builtin type checker

所感: 単一プロセス内での型検査の内蔵化は、モダンランタイムの必然的な進化と言えます。0.69 GBという低メモリフットプリントはCIコンテナのOOMリスクを解消します。ただし .d.ts 定義ファイルやSourceMapの生成は行わないため、パッケージ配布時のビルド工程には依然として公式ツールチェーンが必要です。

ts-rust (tsc-rs) 登場:LLMが2週間でTS 7をRustへ再構築、Go版比3倍の高速化

概要: Theo Browne氏がオープンソースプロジェクト pingdotgg/ts-rust(npm: tsc-rs)を公開しました。TS 7.1-devのコミット 673a5f17d713 に基づき、公式GoコンパイラをRustへ移植したものです。プロジェクト初期にはOpenAIモデルを用いて40万ドル相当のトークンを投じ130万行を生成したものの互換率が84%で頭打ちとなったため、Claude Opus 5.5を用いて2.4万ドル相当のトークン(約2週間)でゼロから再設計されました。T3 Codeベンチマークでは tsc-rs の所要時間が5.27秒を記録し、公式Go版 tsc 7(16.10秒)の3.05倍、旧来の tsc 6(62.63秒)の11.9倍の速度を達成しました。

重要性: 本プロジェクトは全181,711件の公式トランスパイル・診断テストをパスし、120の実世界OSSリポジトリで公式版と完全に一致する診断結果を出力します。Effect 4の診断ルール(コード領域 377xxx)をネイティブ内蔵しており、追加プラグインの設定が不要です。GCを排したRustアーキテクチャは、WebAssembly上でのオーバーヘッドゼロの型検査実現に道を開きます。マイクロソフトのTSリードであるDan Rosenwasser氏もHacker Newsに登場し、この進展に注目していることを明かしました。

影響を受ける対象: ブラウザ内WASM型解析を検討している開発者、RolldownやRspackなどのツールチェーン設計者、およびEffectエコシステムを活用するフロントエンドアーキテクト。

リンク:ts-rust: An experimental Rust port of TypeScript 7 compiler

所感: 大規模モデルによる機械的な構文木移植の威力は目を見張るものがあります。しかし、自動生成されたコードベースは人手による構造的階層設計を欠きがちです。今後マイクロソフト公式が型推論の境界仕様を変更した際、高額なトークンを再度消費してコードを再生成しなければならない保守リスクが懸念されます。

ttsc:typescript-go アーキテクチャを基盤とするコンパイラ内蔵プラグイン&Lintエンジン

概要: Typiaの作者であるSamchon氏がツールチェーン ttsc を発表し、事前検証ランタイム ttsx および @ttsc/lint を公開しました。マイクロソフトの typescript-go アーキテクチャ上に直接構築されており、TS 7.0で削ぎ落とされたAST変換プラグインの拡張性を復元。1回の型推論スキャン内でコード規約チェックを並行実行できるようにします。

重要性: TS 7でのNode.js API削除により、コンパイル時マクロや型メタデータ変換に依存していたライブラリ(TypiaやTS-Patchなど)がアップグレード不能に陥っていました。ttsc はコンパイラの検査フェーズに直接ミドルウェアを挿入し、型リフレクション機能を担保します。同梱される @ttsc/lint は720以上のルールを網羅し、VS Code規模のプロジェクトにおいて従来の独立型ESLintと比較して最大900倍のスループットを実現。さらに付属の @ttsc/graph は、AIエージェントによるコード解析時のトークン消費量を92%削減します。

影響を受ける対象: コンパイル時の厳格な型安全性を重視する高負荷バックエンド開発チーム、大規模モノレポ管理者、およびCIパイプラインでLintとTypecheckを一本化したいエンジニア。

リンク:samchon/ttsc: A typescript-go toolchain for compiler plugins

所感: 型検査フェーズにLintルールを統合することで、CIパイプラインの所要時間は劇的に短縮されます。ただし、フォーマットやコードスタイル検証をコンパイラ本体と強く密結合させるため、高度にカスタマイズされた外部ASTプラグインの一部を手放す必要があり、移行コストの慎重な見極めが求められます。

🔥 コミュニティの話題

LLMによるコンパイラ再構築が巻き起こしたRust対Goのベンチマーク大論争

10月8日、pingdotgg/ts-rust プロジェクトがHacker News上で白熱した技術的議論を呼び起こしました(117 Points、222 Comments)。

  • 極限性能・GCフリー支持派:Rustを支持する開発者は、TypeScriptの型チェックが深くネストしたUnion型や複雑なConditional型の展開を伴うため、一時的に生成される大量のASTノードがGoのガベージコレクタにスキャンスパイクを引き起こすと指摘。長時間稼働するLSPデーモンにおいて、Go版のメモリ使用量が4.9 GiBから7.4 GiBに膨張したのに対し、Rust版はアリーナアロケータと決定論的ライフサイクルにより2.9 GiBで安定推移した実績を挙げました。さらにRustの高効率なWASM出力はブラウザ内IDEの基盤として最適であると主張されています。
  • 保守性と仕様不在への懸念派:慎重姿勢をとるエンジニアは、TypeScriptには形式言語仕様が存在せず、事実上の標準はマイクロソフトの公式コンパイラ実装そのものであると強調。マイクロソフトがGoを選定したのは、平易な文法構造が従来のJS/TSコードベースとの論理的対応関係を維持しやすいからです。LLMが数万ドルをかけて生成した数十万行の人手未監査コードは、ドキュメント化されていないエッジケースに直面した際にブラックボックス化する危険があり、長期的な保守コストが機械翻訳で得た初期の工数削減効果を上回ると警鐘を鳴らしています。

リンク:HN: Port of the TypeScript compiler, checker and lsp to Rust, by LLM

チーム内の全PR 60件をAIが作成:「型肥大化」に直面する型システム

Redditのr/typescriptにおける投稿「Every PR on my team is written by AI now」(155 Points、118 Comments)にて、大規模モノレポを担当するエンジニアが、チームでマージされた直近60件のPRをすべてAIエージェントが作成した実践例を振り返り、開発パラダイムの変革を巡る議論が巻き起こりました。

  • 開発効率肯定派:明確なアーキテクチャ境界のもと、AIエージェントに厳格なLintとCodeRabbit自動レビューを組み合わせることで、初中級エンジニアの手書きコードを凌駕する静的型安全性が担保されると評価。エッジロジックに起因する実行時のnull安全性が向上し、開発者はビジネスドメインの設計に集中できると支持を集めました。
  • 全体整合性の破綻警告派:シニアアーキテクト陣は、AIエージェントがリポジトリ全体の広範な文脈を跨いで検索できない場合、局所的に重複したデータ構造を導出してしまう強い傾向があると指摘。同一コードベース内にわずかなフィールド差異を持つ冗長な型が複数生成され(単一のエンティティに対して3つの孤立した User 定義が作られるなど)、型システムがビジネスドメインを表現する思考モデルから局所的な辻褄合わせのバリデータへと劣化し、蓄積された「型の肥大化」がビルド時の型トポロジー解析を損なうと懸念を示しました。

リンク:Reddit: Every PR on my team is written by AI now

DenoチームがCloudflareへ合流、独立ランタイムの開発は1年後に終了へ

10月9日、Ryan Dahl氏がDenoチーム全員がCloudflareへ合流することを発表しました。Denoの独立ランタイムは1年間のメンテナンス期間を経て独立した開発を終了する方針が示され、r/typescriptコミュニティに大きな波紋を広げました(542 Points、96 Comments)。

  • 商業的現実の受け止め派:独立ランタイムが直面するビジネス化の壁に共感が集まりました。Denoはゼロ構成でのTypeScriptサポート、URLモジュールインポート、パーミッションサンドボックスなど数々の革新を先導したものの、npmエコシステムの慣性とクラウドインフラの莫大な資本要件の前に、巨大クラウドベンダーとの単独競争を維持するのは困難だったと分析されています。
  • 技術的遺産の評価派:Denoの歴史的使命は十分に達成されたとする見解も根強くあります。中核コンポーネントである rusty_v8 や標準Web APIラッパーはCloudflareのグローバルエッジ基盤 workerd に直接統合され、モダンなTypeScript標準の標準化を後押しした功績はすべての主要ランタイムへ深く根付いていると評価されています。

リンク:Reddit: Deno is dead、Deno Blog: Joining Cloudflare

🔭 来週の注目ポイント

  • TypeScript 7.1 Programmatic API RFC:公式GitHubリポジトリにおいて、Node.jsコンパイラAPIのシグネチャ再設計に関する議論を継続追跡。新APIがFFIなどのクロス言語中間層を要求するかどうかを確認します。
  • Bun check のカナリア検証:Bun PR #44361がmainブランチへマージされた後のリリースパッケージ動向を追跡。大規模モノレポの継続的インテグレーションにおける実メモリ安定性とエラー検出精度の検証に注目します。