Draft ECMA-262 / September 16, 2025

ECMAScript® 2026 言語仕様

この仕様書について

https://tc39.es/ecma262/ にある文書は、最も正確かつ最新の ECMAScript 仕様です。ここには、最新の年次スナップショットの内容と、スナップショット以降に 完了した提案提案プロセスにて Stage 4 に到達し、複数の実装に導入され、次回の実用的な改訂に含まれる予定のもの)が含まれています。

本仕様書は 単一ページ、および 複数ページでご利用いただけます。

この仕様書への貢献について

この仕様は GitHub 上で ECMAScript コミュニティの協力によって開発されています。仕様書の開発に貢献する方法はいくつかあります:

この文書の作成方法については colophon を参照してください。

はじめに

このEcma標準は、ECMAScript 2026言語を定義します。これはECMAScript言語仕様の第17版です。1997年の第1版公開以来、ECMAScriptは世界で最も広く使われている汎用プログラミング言語の一つに成長しました。主にウェブブラウザに組み込まれている言語として知られていますが、サーバーや組み込み用途にも広く採用されています。

ECMAScriptはいくつかの技術をもとにしており、最もよく知られているのはJavaScript(Netscape)とJScript(Microsoft)です。この言語はNetscapeのBrendan Eichによって発明され、同社のNavigator 2.0ブラウザで初めて登場しました。その後、Netscapeの全てのブラウザと、Internet Explorer 3.0以降のMicrosoftの全てのブラウザに搭載されています。

ECMAScript言語仕様の開発は1996年11月に始まりました。このEcma標準の第1版は1997年6月のEcma総会で採択されました。

このEcma標準はISO/IEC JTC 1に高速トラック手続きで提出され、1998年4月に国際標準ISO/IEC 16262として承認されました。1998年6月のEcma総会では、ISO/IEC 16262との完全な整合性を保つため第2版(ECMA-262)が承認されました。第1版と第2版の間の変更は編集上のものです。

第3版の標準では、強力な正規表現、より良い文字列処理、新しい制御文、try/catch例外処理、エラー定義の強化、数値出力のフォーマット、将来の言語成長を見越した小さな変更などが導入されました。ECMAScript標準の第3版は1999年12月のEcma総会で採択され、2002年6月にISO/IEC 16262:2002として発行されました。

第3版発行後、ECMAScriptはWorld Wide Webとともに大量に普及し、事実上すべてのウェブブラウザでサポートされるプログラミング言語となりました。第4版の開発も大きく進みましたが、最終的には完了せず、第4版としては公開されませんでした。しかし、その一部は第6版の開発に取り込まれました。

第5版(ECMA-262第5版として発行)は、ブラウザ実装で一般的となった言語仕様の事実上の解釈を成文化し、第3版以降に登場した新機能への対応を追加しました。これにはアクセサプロパティ、オブジェクトの反射的な生成・検査、プロパティ属性の制御、配列操作関数の追加、JSONオブジェクトエンコーディング形式のサポート、エラー検出とプログラムの安全性を強化するstrict modeなどが含まれます。第5版は2009年12月のEcma総会で採択されました。

第5版はISO/IEC JTC 1に高速トラック手続きで提出され、国際標準ISO/IEC 16262:2011として承認されました。ECMAScript標準のEdition 5.1では小さな修正が加えられ、ISO/IEC 16262:2011と同一のテキストとなりました。5.1版は2011年6月のEcma総会で採択されました。

第6版の集中的な開発は2009年に始まりましたが、その前には1999年の第3版発行以降、言語拡張設計や実験が積み重ねられてきました。第6版の完成は、まさに15年にわたる取り組みの集大成です。本版の目標には、大規模アプリケーションやライブラリ作成、他言語のコンパイルターゲットとしてのECMAScriptのサポート強化などが含まれます。主な拡張点は、モジュール、クラス宣言、レキシカルブロックスコープ、イテレータとジェネレータ、非同期プログラミングのためのPromise、分割代入パターン、適切な末尾呼び出しです。組み込みライブラリも拡張され、マップ・セット・バイナリ数値配列のほか、文字列や正規表現でのUnicode補助文字サポートも強化されました。組み込みオブジェクトはサブクラス化によって拡張可能になりました。第6版は、定期的かつ漸進的な言語・ライブラリ拡張の基礎となります。第6版は2015年6月の総会で採択されました。

ECMAScript 2016は、Ecma TC39による新たな年次リリースおよびオープン開発プロセスのもとで初めて公開されたECMAScript版です。ECMAScript 2015のソース文書からプレーンテキスト文書を作成し、以降の開発は全てGitHub上で行われました。本標準の開発期間中、数百件のPull RequestやIssueが提出され、何千ものバグ修正や編集修正、その他の改善が行われました。また、Ecmarkup・Ecmarkdown・Grammarkdownなどの開発支援ツールも多数作られました。ES2016では新しいべき乗演算子や、Array.prototypeincludesメソッドが追加されました。

ECMAScript 2017ではAsync Function、Shared Memory、Atomicsが導入され、他にも小規模な言語・ライブラリ拡張やバグ修正、編集更新が行われました。Async FunctionはPromiseを返す関数のための構文を提供し、非同期プログラミング体験を向上させます。Shared MemoryとAtomicsは、複数エージェント間で原子的な操作による通信を可能にし、並列CPUでも明確な実行順序を保証する新しいメモリモデルを導入します。また、ObjectにはObject.valuesObject.entriesObject.getOwnPropertyDescriptorsなどの新しい静的メソッドが追加されました。

ECMAScript 2018では、非同期イテレーションを実現するasync iteratorプロトコルとasync generatorがサポートされました。さらに、4つの新しい正規表現機能(dotAllフラグ、名前付きキャプチャグループ、Unicodeプロパティエスケープ、後方参照)が追加されました。最後に、オブジェクトのrest/spreadプロパティも導入されました。

ECMAScript 2019では、Array.prototypeflatflatMapObject.fromEntriesによるObject.entriesの戻り値から新しいオブジェクトを直接作成する関数、String.prototypetrimStarttrimEnd(従来のtrimLefttrimRightよりも適切な名称)などのビルトイン関数が追加されました。また、構文と意味への小規模な更新も含まれています。構文の更新では、catchバインディングパラメータの省略や、文字列リテラルでU+2028(行区切り)・U+2029(段落区切り)をJSONに合わせて許可する変更がありました。その他、Array.prototype.sortの安定ソートの要求や、JSON.stringifyの入力に関わらずUTF-8の整形式な出力の要求、Function.prototype.toStringの仕様明確化(元のソースまたは標準プレースホルダーの返却)が行われました。

ECMAScript 2020(第11版)では、文字列の全マッチオブジェクトをイテレータで返すmatchAllメソッド、動的指定子でモジュールを非同期インポートするimport()構文、任意精度整数を扱う新しい数値型BigInt、短絡しないPromise合成のためのPromise.allSettled、グローバルなthis値への統一的アクセス手段globalThisexport * as ns from 'module'のモジュール構文、for-in列挙順序の標準化、モジュール文脈情報のためのimport.meta、nullish値(undefinednull)の扱いを改善するnullish合体演算子・オプショナルチェーン演算子などが導入されました。

ECMAScript 2021(第12版)では、文字列のreplaceAllメソッド、Promiseの短絡合成Promise.any、複数のエラーを同時に表現する新しいエラー型AggregateError、論理代入演算子(??=&&=||=)、ガベージコレクション抑止なしでターゲットオブジェクト参照を可能にするWeakRef、ガベージコレクション時のクリーンアップ操作管理のためのFinalizationRegistry、数値リテラルの区切り(1_000)、Array.prototype.sort実装定義順序を減らす仕様強化などが追加されました。

ECMAScript 2022(第13版)では、モジュールのトップレベルでawaitキーワードが使用できるようになり、クラスの新要素(public/privateインスタンスフィールド、public/private staticフィールド、privateインスタンスメソッド・アクセサ、private staticメソッド・アクセサ)、クラス内のstatic blockによる初期化、#x in obj構文によるオブジェクトのprivateフィールド存在判定、正規表現の/dフラグによるマッチ開始・終了インデックス取得、エラーの原因記録用causeプロパティ、文字列・配列・TypedArrayでの相対インデックス取得のatメソッド、Object.hasOwnによるObject.prototype.hasOwnPropertyの簡便な代替手段などが導入されました。

ECMAScript 2023(第14版)では、Array.prototypeTypedArray.prototypetoSortedtoReversedwithfindLastfindLastIndexメソッド、およびArray.prototypetoSplicedメソッドが追加されました。また、ファイル先頭の#!コメントによる実行可能ECMAScriptファイル対応や、弱コレクションのキーとしてほとんどのSymbolの使用が許可されました。

ECMAScript 2024(第15版)では、ArrayBufferとSharedArrayBufferのサイズ変更・転送機能、文字列集合操作に便利な新しいRegExp /vフラグ、Promise構築のためのPromise.withResolvers、データ集計のObject.groupByMap.groupBy、共有メモリ変更を非同期で待つAtomics.waitAsync、文字列のUnicode整形式判定・修正のString.prototype.isWellFormedString.prototype.toWellFormedなどが導入されました。

ECMAScript 2025(第16版)では、イテレータ操作のための新しいグローバルIterator(静的・プロトタイプメソッド付き)、Set.prototypeのセット操作メソッド、JSONモジュールのインポートとインポート属性宣言構文、正規表現用のRegExp.escapeメソッド、正規表現内での修飾子フラグのインライン変更構文、Promise返却有無を問わず常にPromiseを返すPromise.tryメソッド、新しいTypedArrayFloat16Arrayとそれに対応するDataView.prototype.getFloat16DataView.prototype.setFloat16Math.f16roundメソッドが導入されました。

本版および以前の版の開発において、Ecma TC39には多くの組織を代表する多数の個人が非常に重要な貢献をしています。さらに、TC39のECMAScript活動を支える活発なコミュニティも生まれました。このコミュニティは多数のドラフトのレビュー、数千件に及ぶバグ報告、実装実験、テストスイートの提供、世界中の開発者へのECMAScriptの教育などで貢献しています。残念ながら、この取り組みに貢献した全ての個人や組織を特定し、謝意を表することは不可能です。

Allen Wirfs-Brock
ECMA-262、第6版プロジェクトエディター

Brian Terlson
ECMA-262、第7~10版プロジェクトエディター

Jordan Harband
ECMA-262、第10~12版プロジェクトエディター

Shu-yu Guo
ECMA-262、第12~16版プロジェクトエディター

Michael Ficarra
ECMA-262、第12~16版プロジェクトエディター

Kevin Gibbons
ECMA-262、第12~16版プロジェクトエディター