9月23日、Master.dev Blogが「What To Know in JavaScript (2026 Edition) – Master.dev Blog」と題した記事を公開した。ES2025が2025年6月にリリースされ、ES2026の仕様策定も完了を迎えた今、JavaScriptはここ数年で最も大きな進化の局面にある。
中でも長年の不満の種だった日付・時刻処理がネイティブで解決されたことは、多くの開発者にとって実感しやすい変化だ。本記事では実務への影響が大きい機能を中心に、ES2025・ES2026の新機能を整理する。
Temporal API:JavaScriptの日付処理がついにまともになった
ES2026の目玉はTemporal APIだ。一言でまとめると「JavaScriptの日付・時刻処理がネイティブで解決された」。
これまでMoment.jsやdate-fnsなどの外部ライブラリが埋めてきたギャップを、標準仕様で解決する。たとえば「1月31日に1ヶ月加算する」という操作は、従来のDateオブジェクトでは予期しない結果を返す:
const date = new Date(2026, 0, 31);
date.setMonth(date.getMonth() + 1);
console.log(date.toDateString()); // → "Tue Mar 03 2026"(!?)
Temporal APIなら正しく動く:
const jan31 = Temporal.PlainDate.from("2026-01-31");
const feb = jan31.add({ months: 1 });
console.log(feb.toString()); // → "2026-02-28"
タイムゾーン指定も一行で済む:
const now = Temporal.Now.zonedDateTimeISO("America/New_York");
console.log(now.toLocaleString());
Temporal APIはTC39のStage 4(仕様確定)に到達し、ES2026に正式収録された。主要ブラウザへの対応状況は常に変化しているため、最新情報はMDN互換性テーブルで確認されたい。
ECMAScript 2025:リリース済みの主要新機能
ECMAScript 2025は2025年6月にリリース済み。仕様全文も公開されており、主要ブラウザへの実装も進んでいる。
Iterator Helpers(遅延評価)
配列の.map()・.filter()に相当するメソッドが、イテレーター自体に追加された。従来の配列チェーンとの決定的な違いは遅延評価にある:
// 従来:途中結果をすべてメモリに展開する
const result = array
.map(x => x * 2)
.filter(x => x > 10)
.slice(0, 3);
// ES2025:必要な分だけ処理する
const result = Iterator.from(array)
.map(x => x * 2)
.filter(x => x > 10)
.take(3)
.toArray();
Iterator.from()はSet・Map・ジェネレーターなどあらゆるイテラブルに対して使える。大量データの処理や無限シーケンスとの相性がよい。
Set Methods
2つのSetの和集合・積集合・差集合などを求めるメソッドが追加された:
const youKnow = new Set(["JS", "Python", "CSS", "SQL"]);
const jobNeeds = new Set(["JS", "TypeScript", "Python"]);
youKnow.intersection(jobNeeds); // 共通スキル
youKnow.union(jobNeeds); // 全スキル
jobNeeds.difference(youKnow); // 自分が持っていないもの
youKnow.symmetricDifference(jobNeeds); // どちらか一方だけにあるもの
jobNeeds.isSubsetOf(youKnow); // true/false
RegExp.escape():長年待望されたエスケープ関数
ユーザー入力をそのままRegExpに渡すと、$や.などの特殊文字がバグの原因になる。これを安全にエスケープするRegExp.escape()がようやく標準化された:
const goodRe = new RegExp(RegExp.escape(userInput), "g");
これまでは各プロジェクトで独自実装するか、escape-string-regexpなどのライブラリに依存するのが一般的だった。
Promise.try()
同期・非同期の両方でエラーが起きうる関数を、まとめて.catch()で処理できる:
Promise.try(() => loadUser(id))
.then(user => render(user))
.catch(err => showError(err));
Import Attributes
JSONやCSSをES Modulesとしてインポートできる構文が正式化された:
import data from "./file.json" with { type: 'json' };
import componentStyles from "./component.css" with { type: "css" };
CSSのインポートはWeb Components(Shadow DOM)との組み合わせで特に有用だ。ただしJSONインポートについては、失敗時にモジュールグラフ全体が落ちるリスクと、データがページのライフタイム中メモリに残り続ける点には注意が必要だ。
ECMAScript 2026のその他の注目機能
Explicit Resource Management(usingキーワード)は、スコープを抜けた際にリソースのクリーンアップを保証する仕組みだ。TypeScriptでは5.2から先行実装されており、使い慣れた読者も多いだろう。ファイルハンドルやDB接続など、確実にclose/disposeしたいリソースの管理がシンプルになる:
async function saveData() {
await using file = new FileHandle("output.txt");
await file.write("hello world");
// スコープを抜けると自動的にdisposeが呼ばれる
}
**Error.isError()**は、Web WorkerやiFrameなど異なる「レルム(Realm)」をまたいで受け取ったオブジェクトが本物のErrorインスタンスかどうかを確実に判定する。instanceof Errorではレルムをまたぐと正しく動作しないケースがあり、ライブラリや複雑なアーキテクチャでは待望の機能だ。
**Array.fromAsync()**は非同期ジェネレーターの結果を配列にまとめる際に役立つ。元記事ではES2026での正式収録として紹介されている。
さらに詳しく知りたい場合
ES2025の全機能を網羅したい場合は、InfoWorldのMatthew TysonによるECMAScript 2025: The best new features in JavaScript(英語)も参考になる。機械学習モデルの推論効率化に使われるFloat16Array(精度を抑えてメモリ使用量を削減する型付き配列)など、本記事が省いた機能もカバーされている。
詳細はWhat To Know in JavaScript (2026 Edition) – Master.dev Blogを参照していただきたい。