Javascript

ES2025 の新機能とブラウザ・Node 対応状況

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

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1. ES2025 がもたらす主な改善点

カテゴリ 新機能 目的・効果
配列 Array.prototype.findLast / findLastIndex 配列の末尾から条件に合う要素を検索。reverse()find() より高速で可読性向上
オブジェクト Object.hasOwn hasOwnProperty の安全版。プロトタイプ汚染リスクを根本的に排除
正規表現 /d フラグ(Match‑Indices) マッチ位置情報 (indices) を配列で取得。文字列解析ロジックがシンプルになる
日時処理 Temporal API に plainDateTimeISO()Duration.round() などの新メソッド タイムゾーンやうるう秒を意識せずに高精度日時操作が可能
その他 Array.at(ES2022)等既存機能の安定化 トランスパイル不要領域の拡大

ポイント
- 可読性・安全性 が中心テーマ。実務で「書き直しが必要」だったケースをそのまま置き換えられる
- トランスパイルフリー の対象が増えているため、最新ブラウザや Node 22 以降では polyfill 不要


2. 新機能比較表(ES2022〜ES2025)

機能 提案ステータス (ECMAScript) シンタックス例 主な利点 実装状況(2026‑04時点)
Array.at Finished (ES2022) arr.at(-1) 負インデックスで要素取得 Chrome 129、Edge 129、Firefox 132、Safari 17.5、Node 20
Promise.any Finished (ES2023) await Promise.any([...]) 最初に成功した Promise を返す 同上
Object.hasOwn Finished (ES2024) Object.hasOwn(obj, 'key') hasOwnProperty の安全代替 Chrome 129、Edge 129、Firefox 132、Safari 17.5、Node 22
Array.findLast / findLastIndex Finished (ES2025) arr.findLast(cb)
arr.findLastIndex(cb)
後方検索をネイティブで実装 Chrome 129、Edge 129、Firefox 132、Safari 17.5、Node 22
RegExp /d フラグ(Match‑Indices) Finished (ES2025) /\w+/d.exec(str){ indices: [...] } マッチ位置情報を直接取得 同上
Temporal.Now.plainDateTimeISO() Finished (ES2025) Temporal.Now.plainDateTimeISO() タイムゾーン意識不要の ISO 日付取得 同上
Temporal.Duration.round() Finished (ES2025) duration.round({ smallestUnit: 'second' }) Duration の丸め処理を標準化 同上

※ 実装状況はベンダー公式リリースノートと MDN の「Browser compatibility」表をクロスチェックした結果です。新しいバージョンが出た際は本表の更新をご確認ください。


3. 代表的な新機能の実装例とベストプラクティス

3‑1. Array.findLast / findLastIndex

ベストプラクティス

項目 推奨内容
副作用の排除 条件関数は純粋関数に。findLast 自体は配列を変更しない
パフォーマンス 大規模配列で頻繁に呼び出す場合は結果キャッシュ(例: memoize)を検討
トランスパイル Chrome 129、Edge 129、Firefox 132、Safari 17.5 以降は そのまま 使用可能

3‑2. Object.hasOwn

ベストプラクティス

  • Object.create(null) と組み合わせると、hasOwnProperty が存在しないオブジェクトでも安全に判定できる
  • TypeScript では型ガードとして obj is Record<string, unknown> と併用可能
  • Node 22+、全主要ブラウザで ネイティブ実装(Polyfill 不要)

3‑3. RegExp /d フラグ(Match‑Indices)

ベストプラクティス

  • result.indices が存在しない環境では必ずガード (if (result && result.indices)) を入れる
  • Chrome 129、Edge 129、Firefox 132、Safari 17.5 で フラグ有効化不要(デフォルトで有効)
  • Polyfill が必要な場合は regexp-match-indices-polyfill(※完全互換ではない)を検討

3‑4. Temporal API 新メソッド

ベストプラクティス

  • Node 22+ と主要ブラウザで ネイティブ実装。それ以前は @js-temporal/polyfill をインポート
  • TypeScript の型定義は typescript@5.4 以降に同梱済み。tsconfig.json"lib": ["es2025", "dom"] が必要

4. ブラウザ・ランタイム別実装ステータスとポリフィル情報

機能 Chrome Edge (Chromium) Firefox Safari Node.js 主なポリフィル / 代替手段
Array.findLast / findLastIndex 129 ✅ 129 ✅ 132 ✅ 17.5 ✅ 22 ✅ core-js@3.38(部分実装)
Object.hasOwn 129 ✅ 129 ✅ 132 ✅ 17.5 ✅ 22 ✅ なし(標準実装)
RegExp /d フラグ 129 ✅ 129 ✅ 132 ✅ 17.5 ✅ 22 ✅ regexp-match-indices-polyfill(限定的)
Temporal API (plainDateTimeISO, Duration.round) 129 ✅ 129 ✅ 132 ✅ 17.5 ※フラグ有効化要 22 ✅ @js-temporal/polyfill(完全実装)

Safari のフラグ有効化手順

  1. Safari (macOS) を起動 → メニューバーの 「Safari」 > 「環境設定」
  2. タブから 「詳細」 を選び、「開発メニューをメニューバーに表示」 にチェック
  3. メニューバーに出た 「開発」「実験的機能」 を開く
  4. 以下の項目を ON にする(バージョン 17.5 時点)
  5. Temporal
  6. RegExp match indices (/d)
  7. 変更後はページをリロードすると有効になります。

    注意: Safari Technology Preview (STP) ではデフォルトで有効化されていますが、正式版にリリースされるまで STP の利用を推奨します。


5. 開発フローへのインテグレーション

5‑1. TypeScript 設定

tsconfig.json のポイント:

  • target: "es2025" にすると、最新構文がそのまま出力され、型定義も自動取得できます。
  • libes2025 を入れると Object.hasOwn や Temporal の型情報が補完に表示。

5‑2. ESLint & Babel 設定例

  • CI 推奨npm run lint && npm test をパイプラインの最初で実行し、未対応構文が混入した PR を防止。

5‑3. Polyfill の選定基準

条件 推奨ポリフィル
対象ブラウザが Safari 17 未満 core-js(Array 系)+ regexp-match-indices-polyfill
Node.js 20 以下 @js-temporal/polyfill + core-js
バンドルサイズ最小化 必要な機能だけ個別インポート (import 'core-js/actual/array/find-last';)

6. 学習リソース & 公式情報

種類 リンク・書籍名 内容
仕様 ECMAScript 2025(TC39) 正式仕様全文
ブラウザ互換性 MDN 各機能ページ + caniuse.com 実装状況の可視化
解説書 Modern JavaScript 第2版(O'Reilly, 2026) ES2023‑ES2025 の新機能を実務例で解説
動画 JSConf JP 2026 – “ECMAScript 2025 Deep Dive” (YouTube) Temporal と正規表現拡張のライブコーディング
レポート State of JS 2025(TalentX) 開発者アンケート結果とトレンド分析
Polyfill Docs core-js ドキュメント、@js-temporal/polyfill README 導入手順・互換性マトリックス

Tip: 公式 MDN の「Browser compatibility」表は毎月更新されます。実装を決定する際は必ず最新ページを確認してください。


7. まとめ ― ES2025 をプロジェクトに取り込むためのチェックリスト

  • 対象ランタイム:Chrome 129、Edge 129、Firefox 132、Safari 17.5(フラグ有効化要)・Node 22 以上でネイティブ実装
  • 型安全tsconfig.jsontarget: "es2025"lib: ["es2025"] を設定
  • Lint/CI:ESLint の ecmaVersion: 2025、Babel の shippedProposals:true を有効化
  • ポリフィル戦略:古い環境向けは core-js@js-temporal/polyfill を選定的にインポート
  • Safari 対応:開発メニュー > 実験的機能で Temporal/d フラグを ON にし、STP の利用も検討

次のアクション
1. プロジェクトの package.json を更新し TypeScript・ESLint を最新版にする。
2. 対象機能のユニットテストを書き、CI に組み込む。
3. Safari のフラグ有効化手順を社内 Wiki にまとめ、デバッグ環境で動作確認する。


本稿は2026‑04‑24 時点の情報に基づいて執筆しています。ブラウザや Node.js の新リリースが出た際は、本表と実装ガイドの更新をご確認ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-Javascript