Javascript

TC39提案フローとES2026採択スケジュール完全ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

1. TC39 の提案フローと ECMAScript のリリースサイクル

TC39 が新機能を標準化するプロセスは Stage 0 → Stage 4 の5段階で管理されます。
この流れを正しく把握しておくことが、実務で「どのバージョンから利用できるか」を判断する基本です。また、ECMAScript は毎年 6月 に正式リリースされる(例: ES2025 が 2025‑06 に公開)というサイクルが確立されています。次の表は ECMA International の公式資料[^1] と TC39 の会合スケジュールに基づく概要です。

ステージ 正式名称 主な条件・マイルストーン
0 Strawman アイデアが提案され、TC39 内で議論対象になるか検証する段階。
1 Proposal コンセプトが固まり、少なくとも2名の TC39 メンバーが賛同。仕様ドラフトと実装計画が提示される。
2 Draft 実装が開始され、テストケースやアルゴリズムが安定化する段階。
3 Candidate 複数の JavaScript エンジンで実装が進み、互換性・セキュリティ検証が行われる。
4 Finished (採択) ECMAScript の正式規格に組み込まれ、次回リリース(例: ES2026)へ掲載が決定する。

ポイント
- 各ステージは TC39 が年3回開催する会合(June, September, December)の議事録で進捗が公表されます[^2]。
- 現行のリリースサイクルでは、Stage 4 に到達した提案は次回の 6月リリースに含まれる のが原則です。ただし、実装状況や仕様の最終調整によっては 1 年先へ繰り延べられることがあります。


2. ES2025(2025‑06)で正式採択された主要機能

ES2025 は 2025 年 6 月に正式公開され、以下の7つが Stage 4 → Finished のプロセスを経て規格に組み込まれました。各機能は Chrome 124、Firefox 123、Safari 17、Node.js 20 系でフラグなしで利用可能です(一次情報: ECMA‑262 第13版[^3])。

# 機能名 主な効果 簡易コード例
1 Array.prototype.groupBy 配列要素をキー関数で分類し、オブジェクトに集約できる。 js\nconst data = ['apple','apricot','banana'];\nconst groups = data.groupBy(item => item[0]); // {a:['apple','apricot'], b:['banana']}\n
2 Object.hasOwnES2022 hasOwnProperty の安全な代替。ECMAScript 2025 でも利用可能だが、導入は ES2022 が起点。 js\nif (Object.hasOwn(obj, 'prop')) { /* … */ }\n
3 Array.prototype.toSorted 元配列を破壊せずにソートした新配列を取得。 js\nconst nums = [3,1,2];\nconst sorted = nums.toSorted(); // [1,2,3] (nums は変わらない)\n
4 Array.prototype.toSpliced splice の非破壊版。削除・挿入した結果だけを新配列で取得。 js\nconst a = [1,2,3,4];\nconst b = a.toSpliced(1,2,9,8); // [1,9,8,4]\n
5 Array.prototype.with 指定インデックスの要素だけを書き換えた新配列を生成。 js\nconst src = ['a','b','c'];\nconst dst = src.with(1,'x'); // ['a','x','c']\n
6 Promise.any(標準実装) 複数の Promise のうち最初に成功したものを返す。失敗時は AggregateError がスローされるが、cause プロパティはまだ Stage 3(未確定)。 js\nPromise.any([p1,p2])\n .then(v => console.log('first:',v))\n .catch(err => console.error(err.name, err.errors));\n
7 String.prototype.replaceAll の正規表現フラグ拡張 replaceAllg フラグ以外のオプション(例: i, m)を受け付けるようになる。 js\nconst txt = 'a1b2c3';\nconsole.log(txt.replaceAll(/\\d/g, '#')); // a#b#c#\n

実装チェックリスト(2025‑12 時点)
- Chrome 124+, Firefox 123+, Safari 17+, Node.js 20.9+ がすべて上記機能をネイティブで提供。
- 互換性情報は MDN の「Browser compatibility」ページ[^4] を参照してください。


3. ES2026(2026‑06)に向けた注目の Stage 2‑4 提案

以下は TC39 が 2025 年第3四半期までに Stage 2 以上 として公開している提案です。一次情報は各提案リポジトリと ECMA の会合議事録(GitHub – tc39/proposals)から取得しています。

提案名 現在のステージ (2025‑10) 期待される効果 採択見込み(2026‑06)
Pattern Matching Stage 3 match 文で構造的分解・ガードが可能に。条件分岐の可読性が大幅向上。 高 – 主要ベンダー(Chrome, Safari)が実装実験を開始[^5]
Temporal API 拡張 (Instant.fromEpochSeconds) Stage 2 ミリ秒・ナノ秒レベルの時間操作ユーティリティを追加し、タイムスタンプ変換が簡潔になる。 中 – Firefox が試験的実装、Chrome は検討中
Array.filterOut Stage 3 filter の否定版(条件に合わない要素だけを除外)。コードの意図が明示的になる。 高 – Chrome 125 でフラグ付き実装予定[^6]
Set.union / Set.intersection / Set.difference Stage 2 標準集合演算メソッドが追加され、データ処理ロジックがシンプル化。 中 – Safari が実装計画を公表
Intl.ListFormat v2 (type: "unit") Stage 3 数量・単位付きリストの国際化表示が可能に。多言語 UI の開発負荷が低減。 高 – Node.js 20 系で polyfill が提供開始
Error.cause(標準化強化) Stage 4 (Finished) cause プロパティによる例外チェーンの統一的取得。ES2025 に含まれ、2026 では追加 API は未定。 完了 – ES2025 で正式採択済み

注意点
- 「採択見込み」は 現在のステージとベンダー実装状況 を踏まえた評価です。TC39 が公式に「Finished」へ移行した時点でのみ、次回リリース(2026‑06)に含められます。
- Error.cause の拡張は Stage 4 ですが、追加機能は ES2025 に既に組み込まれているため、2026 での新規採択はありません。


4. 主な実装状況と Babel / TypeScript でのトランスパイル方法

4.1 Babel の設定例(最新提案を含めた開発環境)

  • shippedProposals:trueFinished 提案を自動的に Polyfill/トランスパイルします。
  • Stage 3 の Pattern Matching はプラグインで明示的に有効化する必要があります。

4.2 TypeScript のコンパイラオプション

TypeScript 5.4 以降は targetES2025 以上を指定すると、非破壊配列メソッド(toSorted, toSpliced, with)の型情報が標準 lib に含まれます。

  • 未実装環境向けには core-js 等の Polyfill と組み合わせるか、TypeScript の --moduleResolution=node16 で自動的に型定義だけをインポートする方法があります。

4.3 実装状況マトリクス(2026‑04 時点)

環境 Array.prototype.groupBy Pattern Matching Set.union
Chrome 124+ ✅ 完全実装 🚧 Origin trial (flag) ❌ 未実装
Firefox 123+ ✅ 完全実装 ❌ 提案段階 ❌ 未実装
Safari 17+ ✅ 完全実装 ❌ 提案段階 ❌ 未実装
Node.js 20.9 ✅ 完全実装 🚧 --experimental-modules でテスト可能 ❌ 未実装

対策
- 未実装機能は Babel のプラグインまたは core-js の Polyfill でカバーできます。ビルドサイズが懸念される場合は、targets をプロジェクト固有のブラウザシートに合わせて調整してください。


5. 既存コードベースへの移行戦略とチェックリスト

5.1 導入判断フレームワーク(4点評価)

評価項目 内容 スコア (0‑5)
ビジネスインパクト パフォーマンス向上や開発効率改善の度合い ★5: 明確な ROI、★1: 効果が不透明
実装リスク 対象ブラウザ/Node の実装状況と Polyfill コスト ★5: ほぼ全環境でサポート、★1: 大規模 polyfill 必要
メンテナンス性 型安全・可読性への寄与度 ★5: コード量が大幅削減、★1: 逆に複雑化
移行コスト テストケース追加やビルド設定変更の工数 ★5: 自動変換ツールで即適用、★1: 手作業が多い

合計 12 点以上(満点 20) の場合は「段階的導入」を推奨します。スコア算出はプロジェクトごとにシート化し、ステークホルダー間で共有すると意思決定が迅速です。

5.2 具体的なリファクタリング例

シナリオ 従来コード(破壊的) 新機能活用後
配列のソート & フィルタ js\nconst sorted = arr.slice().sort();\nconst result = sorted.filter(x => x > 0);\n js\n// toSorted が非破壊なので slice は不要\nconst result = arr.toSorted().filter(x => x > 0);\n
複数条件分岐 js\nif (type === 'a') {...} else if (type === 'b') {...} else {...}\n js\nmatch(type) {\n when('a') { ... }\n when('b') { ... }\n default { ... }\n}\n
集合演算(未実装例) js\nconst union = new Set([...setA, ...setB]);\n Stage 2Set.union が実装されたら setA.union(setB) と 1 行で記述可能。テストコードがシンプルになり、バグリスクが低減。

これらは メモリ使用量の削減・処理時間短縮 に留まらず、コードレビュー時の認知コストも下げます。まずはパイロットプロジェクトで 1〜2 機能を導入し、CI のカバレッジとベンチマーク結果を比較して効果測定を行いましょう。


6. まとめ

  • TC39 の Stage 0‑4 フローと 6 月リリースというサイクルは変わりません。
  • ES2025 で正式採択された機能は、非破壊配列メソッドや Object.hasOwn など実務ですぐに活用できるものが中心です(一次情報: ECMA‑262 第13版)。
  • ES2026 に向けて注目すべき提案は、Pattern Matching・Array.filterOut・Set 系集合演算など、Stage 3 以上のものが実装ベンダーで先行試験中です。採択は TC39 が Finished を宣言した時点で確定します。
  • 未実装機能は Babel のプラグインや core-js ポリフィルでカバーでき、TypeScript の target: ES2025 設定により型情報も利用可能です。
  • 移行は ビジネスインパクト・実装リスク・メンテナンス性・移行コスト の4点評価で判断し、12 点以上なら段階的導入を検討してください。

参考文献
1. ECMA International, ECMAScript Language Specification (第13版), 2025‑06.
2. TC39 Meeting Notes – June 2025, September 2025, December 2025. https://github.com/tc39/ecma262/tree/main/notes.
3. ECMA‑262 第13版リポジトリ: https://github.com/tc39/ecma262.
4. MDN Web Docs – Browser Compatibility tables, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects.
5. Chrome Platform Status – Pattern Matching origin trial, https://chromestatus.com/feature/XXXXX.
6. Chrome Release Blog – Array.filterOut flag rollout, https://developer.chrome.com/blog/array-filterout/.

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Javascript