削除された内容 追加された内容
COCKY (会話 | 投稿記録)
注釈テンプレートの変更
 
(62人の利用者による、間の107版が非表示)
1行目:
{{出典の明記|date=2020年6月}}
{{Template:プログラミング言語}}
{{Infobox プログラミング言語
'''ECMAScript'''(えくますくりぷと)は[[Ecma International]]によって策定された[[スクリプト言語]]である。互換性の低い[[JavaScript]]と[[JScript]]を標準化すべく、両方の言語に共通する部分を取り入れて作られた。現在の最新バージョンは3 (3rd edition)。[[1999年]][[12月]]に標準化。関連規格の一つである[[ECMAScript for XML]](E4X)では、<!--標準化された構文と汎用、クロスプラットフォーム、ベンダ中立を謳っているほか、-->ネイティブで[[Extensible Markup Language|XML]]がサポートされている。
| fetchwikidata = ALL
| onlysourced = false
| name = ECMAScript
| released = {{Start date and age|1997}}
| latest release version = ECMA-262 14th Edition (ECMAScript 2023)<ref name="ES2023">{{Cite web
|date=June 2023
|title=ECMA-262. ECMAScript® 2023 language specification. 14th edition, June 2023
|url=https://ecma-international.org/publications-and-standards/standards/ecma-262/
|publisher=[[Ecmaインターナショナル]]
|access-date=2024-03-19
|language=en
}}</ref>
| latest release date = {{Start date and age|2023|06}}
| dialects = [[JavaScript]], [[ActionScript]], [[JScript]], [[QtScript]], [[DMDScript]], [[InScript]]
| typing = [[ダック・タイピング]]、弱い[[動的型付け]]
| website = {{ConditionalURL}}
}}
{{Infobox file format
| name = ECMAScript
| icon = [[ファイル:Crystal source.png]]
| logo =
| screenshot =
| caption =
| extension = <code>.es</code>
| mime = text/javascript{{Efn2|過去には {{IETF RFC|4329}} で「application/ecmascript」とされていたが、互換性のために {{IETF RFC|9239}} で廃止(OBSOLETE)され「text/javascript」に統一された。}}
| type code =
| uniform type =
| magic =
| owner = [[サン・マイクロシステムズ]]<br />[[Ecma International]]
| released = {{Start date and age|1997|6}}
| latest release version = 14th Edition (ECMAScript 2023)
| latest release date = {{Start date and age|2023|6}}
| genre = [[スクリプト言語]]
| container for =
| contained by =
| extended from = [[JavaScript]]
| extended to =
| standard =
| url = {{Cslist
| [https://ecma-international.org/publications-and-standards/standards/ecma-262/ ECMA-262]
| [https://ecma-international.org/publications-and-standards/standards/ecma-402/ ECMA-402]
| [https://ecma-international.org/publications-and-standards/standards/ecma-419/ ECMA-419]
| [https://ecma-international.org/publications-and-standards/standards/ecma-414/ ECMA-414]
| [https://ecma-international.org/publications-and-standards/standards/ecma-290/ ECMA-290](廃止)
| [https://ecma-international.org/publications-and-standards/standards/ecma-327/ ECMA-327](廃止)
| [https://ecma-international.org/publications-and-standards/standards/ecma-357/ ECMA-357](廃止)
}}
}}
 
{{プログラミング言語}}
==ECMAScriptの呼称==
ECMAScriptはWebブラウザをはじめとする多くの[[アプリケーションソフトウェア|アプリケーション]]でサポートされている。[[Document Object Model|DOM]]との連携はドキュメントの操作を可能にする。
 
'''ECMAScript'''(エクマスクリプト)は、[[Ecmaインターナショナル]]において[[標準化]]された[[JavaScript]]の[[国際規格]]である。また、[[ISO/IEC JTC 1]]においてはISO/IEC 22275:2018{{Efn2|ISO/IEC 16262は、[https://www.iso.org/standard/29696.html ISO/IEC 16262:1998]→[https://www.iso.org/standard/33835.html ISO/IEC 16262:2002]→[https://www.iso.org/standard/55755.html ISO/IEC 16262:2011]と改訂されてきたが、2021年8月時点の最新の[https://www.iso.org/standard/73002.html ISO/IEC 22275:2018 Information technology — Programming languages, their environments, and system software interfaces — * ECMAScript Specification Suite]として、
{| border="1" cellpadding="1" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse;"
* ECMA-262, ECMAScript Language Specification
|- style="background: #ececec"
* ECMA-402, ECMAScript Internationalization API Specification
* ISO/IEC 21778, Information technology — The JSON data interchange syntax (Adoption of ECMA-404)
の最新規格を一括して参照するようになった。}}、[[日本産業規格]]においてはJIS X 3060:2000として規格化されている{{Efn2|JIS X 3060:2000は、ISO/IEC 16262:1998(ES1相当)の日本語訳。}}<ref>{{Cite web|和書| url = https://webdesk.jsa.or.jp/books/W11M0090/index/?bunsyo_id=JIS+X+3060%3A2000
| title = JIS X 3060:2000, ECMAScript言語, Information technology -- ECMAScript language specification
| date = 2000-06-30
| accessdate = 2021-08-16
| quote = 対応国際規格:ISO/IEC 16262:1998 (IDT); IDT=identical(一致)
}}</ref>。
 
__TOC__
 
==バージョン==
{{更新|date=2022年3月|section=1}}
ECMAScript仕様は、Ecma InternationalにてECMA-262という規格番号で標準化されている。改訂にあたっては版 (edition) が更新されている。
 
6th editionから、「ECMAScript 2015」仕様の名称に発行年が付加されることになった。以降、ECMAScriptは毎年改訂されることになり、以降特定の版を指す場合は、edition名ではなく年号つきの仕様書名で呼ばれることが推奨されている<ref>{{Cite web |title=Some ECMAScript Explanations and Stories for Dave |url=https://wirfs-brock.com/allen/posts/778 |website=wirfs-brock.com |access-date=2025-01-14 |language=en-US |date=2017-08-31}}</ref>。
 
{| class="wikitable"
|- style="background:#ccf;"
!Edition
!公開日
!以前のバージョンとの違い
!編集者
|-
!1
|1997年6月
|初版
|[[ガイ・スティール・ジュニア|Guy L. Steele, Jr.]]
|-
!2
|1998年6月
|Editionとしての仕様はそのままであり、ISO/IEC 16262 international standardに完全な対応をした
|Mike Cowlishaw
|-
!3
|1999年12月
|正規表現、よりよい文字列の取り扱い、新しいコントロール構文、try/catch例外処理、より厳格なエラー処理、数字のその他の書式化フォーマット
|Mike Cowlishaw
|-
!4
|放棄
|4th Editionは放棄された。言語の複雑化に関する政治的な差異による。いくつかの成果は5thの基礎として採用され、いくつかは6thの基礎となっている。
|
|-
!5
|2009年12月
|"strictモード"、初期化時に発生しがちなエラーを回避するための追加仕様の追加。多くの曖昧な部分、および仕様に準拠しつつも現実世界の実装の融通の利く振る舞いを明確にした。いくらかの新機能、getterやsetter、[[JavaScript Object Notation|JSON]][[ライブラリ]]のサポート、より完全な[[オブジェクト (プログラミング)|オブジェクト]]の[[属性]]の[[リフレクション (情報工学)|リフレクション]]<ref>[http://www.youtube.com/watch?v=Kq4FpMe6cRs JavaScriptの変更, Part 1: EcmaScript 5]</ref>
| Pratap Lakshman, Allen Wirfs-Brock
|-
! 5.1
| 2011年6月<ref>[https://262.ecma-international.org/5.1/ ECMAScript Language Specification - ECMA-262 Edition 5.1]</ref>
| ISO/IEC 16262:2011規格と同様の表記に修正
| Pratap Lakshman, Allen Wirfs-Brock
|-
!6 (2015)
|2015年6月<ref>{{cite web|url=https://262.ecma-international.org/6.0/|title=ECMAScript 2015 Language Specification – ECMA-262 6th Edition|accessdate=2025-03-17}}</ref>
|[[クラス (コンピュータ)|クラス]]、[[モジュール]]、イテレータ、for/ofループ、[[Python]]スタイルのジェネレータ、アロー関数、2進数および8進数の整数リテラル、Map、Set、WeakMap、WeakSet、プロキシ、テンプレート文字列、let、const、型付き配列、デフォルト引数、Symbol、Promise、分割代入、可変長引数
|Allen Wirfs-Brock
|-
!7 (2016)
|2016年6月<ref>{{cite web|url=https://262.ecma-international.org/7.0/|title=ECMAScript® 2016 Language Specification|accessdate=2025-03-17}}</ref>
|冪乗演算子、Array.prototype.includes
|Brian Terlson
|-
!8 (2017)
|2017年6月<ref>{{cite web|url=https://262.ecma-international.org/8.0/|title=ECMAScript® 2017 Language Specification|accessdate=2025-03-17}}</ref>
|非同期関数 ([[async/await]])、SharedArrayBufferとAtomics、String.padStart/padEnd、Object.values/entries、Object.getOwnPropertyDescriptors、関数の引数における末尾のカンマ許容
|
|-
!9 (2018)
|2018年6月<ref>{{cite web|url=https://262.ecma-international.org/9.0/|title=ECMAScript® 2018 Language Specification|accessdate=2025-03-17}}</ref>
|オブジェクトに対するスプレッド構文、非同期イテレーション、Promise.prototype.finally、正規表現への機能追加
| Brian Terlson
|-
!10 (2019)
|2019年6月<ref>{{cite web|url=https://262.ecma-international.org/10.0/|title=ECMAScript® 2020 Language Specification|accessdate=2025-03-17}}</ref>
|Array.prototype.flat/flatMap、Object.fromEntries、String.prototype.trimStart/trimEndメソッドの追加。catchブロックの引数省略を許可。他
|Brian Terlson, Bradley Farias, Jordan Harband
|-
!11 (2020)
|2020年6月<ref>{{cite web|url=https://262.ecma-international.org/11.0/|title=ECMAScript® 2020 Language Specification|accessdate=2025-03-17}}</ref>
|[[Null条件演算子|オプショナルチェイニング演算子]]<code>?.</code>、[[Null合体演算子]]<code>??</code>サポート。BigInt型の追加。動的importサポート。for-in文の順序保証。他
|Jordan Harband, Kevin Smith
|-
! 12 (2021)
| 2021年6月<ref>{{cite web|url=https://262.ecma-international.org/12.0/|title=ECMAScript® 2021 Language Specification|accessdate=2025-03-17}}</ref>
| String.prototype.replaceAllメソッド追加。Promise.any追加。<code>??=</code>、<code>&&=</code>、<code><nowiki>||=</nowiki></code> 演算子追加。数値の区切り文字としてのアンダースコア <code>_</code>サポート。弱い参照WeakRefサポート。
| Jordan Harband, Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
! 13 (2022)
| 2022年6月<ref>{{cite web|url=https://262.ecma-international.org/13.0/|title=ECMAScript® 2022 Language Specification|accessdate=2025-03-17}}</ref>
| Array、String、TypedArrayに対して負数指定可能なatメソッド追加。静的クラスフィールドサポート。プライベートフィールド/メソッドサポート。トップレベルawaitサポート。
| Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
! 14 (2023)
| 2023年6月<ref>[https://262.ecma-international.org/14.0/ ECMAScript 2023 Language Specification]</ref>
| 配列操作メソッドの追加、<code>#!</code>([[シバン (Unix)]])のサポート、WeakMapのキーにおけるSymbolの利用。
| Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|}
 
ECMAScriptにはいくつかの拡張が存在する。
 
* ECMA-357 ([[ECMAScript for XML]]) - 2004年公開、E4Xとして知られる
* ECMA-402(国際化API) - 2012年公開
* ECMA-404 (JSON) - 2013年公開
 
EcmaはECMAScriptのための "Compact Profile" も定義した — ES-CP、あるいはECMA 327として知られる — リソースの厳しいデバイス用にデザインされている。ECMAScriptのいくつかの動的な機能(『eval』関数など)はオプションにされている。これにより、処理系はプログラムの振る舞いに対してより多くの仮定ができるようになり、その結果、より良いパフォーマンス・トレードオフを実行時に得ることができるようになる。
[[HD DVD]] standardはECMAScript Compact Profileに準拠し、完全なECMAScriptの支援をより少ないメモリのデバイスで実行できるよう採用している。
 
== 文法 ==
{{main|JavaScript#文法}}
 
== 方言およびその呼称 ==
ECMAScript は、[[ウェブブラウザ]]をはじめとする多くの[[アプリケーションソフトウェア|アプリケーション]]でサポートされている。[[Document Object Model|DOM]]との連携はドキュメントの操作を可能にする。
 
{| class="wikitable"
|-
!アプリケーション
!呼称
12 ⟶ 176行目:
!対応するECMAScriptリビジョン
|-
|[[Mozilla]] およびその派生品
|[[JavaScript]]
|1.78.5
|ECMA-262 3rd5.1 edition<br/>ECMA-357<ref>{{Efn2|Mozillaは[http://www.mozilla.org/releases/mozilla1.8b1/README.html 1.8 Beta 1]以降で[[ECMAScript for XML|E4X]] をサポートしている。</ref></sup>}}
|-
|rowspan="2" | [[Internet Explorer]]
|[[JScript]](IE8まで)
|5.78
|ECMA-262 3rd edition
|-
|JavaScript ([[OperaChakra]])
|11.0
|ECMAScript, with extensions to both [[JavaScript]] and [[JScript]]
|ECMA-262 5.1 edition
|-
|[[Google Chrome]]<br>[[Opera]]
|JavaScript
|
|ECMA-262 3rd5.1 edition
|-
|[[KonquerorSafari]] (KJSJSCore)
|JavaScript
|
|ECMA-262 3rd5.1 edition
|-
|[[SafariKonqueror]] (JSCoreKJS)
|JavaScript
|
44 ⟶ 212行目:
|[[.NET Framework|Microsoft .NET]]
|[[JScript .NET]]
|810.0
|ECMA-262 4th草案 <ref>{{Efn2|2001年頃のMicrosoft[[マイクロソフト]]の草案であり、独自に開発を進めたもので、現在のECMAScript 4草案とは大きく異なる。</ref>}}
|-
|[[Adobe Flash]]
|[[ActionScript]]
|3
|ECMA-262 4th草案 <ref>{{Efn2|2001年頃のNetscapeの草案に近く、現在のECMAScript 4草案のサブセットに近い。</ref>}}<br/>ECMA-357
|-
|[[Adobe Acrobat]]
76 ⟶ 244行目:
|1.5
|ECMA-262 3rd edition
|-
|[[Google Chrome]]
|JavaScript
|
|ECMA-262 3rd edition
|-
|}
<references/>
 
== ECMAScript 4 ==
{{See also|JavaScript#JavaScript 2.0}}
現在、ECMAScript 4 の仕様作成が進められている。
ECMAScript 4は過去2回仕様作成が挑戦されたが、仕様がまとまらず、失敗に終わっている。
型に関する機能が増え、大規模・大人数開発のための機能が増えている。
単純なプログラムから、より巨大で信頼性の高い大規模プログラムへの「進化的プログラミング」のための機能を提供する。
ECMAScript 3 とは、少々、下位互換性がない。
ActionScript 3 の、おおかた上位互換であるが、これも、一部、互換性がない。
 
=== 1回目 ===
* http://www.ecmascript.org/docs.php - 最新の仕様
2000年〜2003年ごろ行われた。主に、旧[[ネットスケープコミュニケーションズ|Netscape]]社<ref>{{Cite web |title=ECMAScript 4 Netscape Proposal |url=https://www-archive.mozilla.org/js/language/old-es4 |website=www-archive.mozilla.org |access-date=2025-01-14 |date=2003-06-30}}</ref>と[[マイクロソフト]]によって行われたが、意見がまとまらずに、打ち切りとなった。この時の案は[[ActionScript]]へと引き継がれた。
* http://www.mozilla.org/js/language/old-es4/ - 昔のNetscape草案
 
==外部リンク= 2回目 ===
2007年〜2008年ごろ、2回目の仕様作成が行われた。大きく機能を追加される予定であったが、意見がまとまらず、[[2008年]][[8月13日]]に、小規模の改善にとどまる、ECMAScript 3.1を進めることとなった<ref>{{Cite web |title=ECMAScript Harmony |url=https://esdiscuss.org/topic/ecmascript-harmony |website=esdiscuss.org |access-date=2025-01-14 |date=2008-08-13}}</ref>{{Efn2|仕様は、http://www.ecmascript.org/docs.php にて公開されている。}}。
* [http://www.ecmascript.org/ ECMAScript]
*ECMAScript言語仕様
**[http://www.ecma-international.org/publications/standards/Ecma-262.htm Standard ECMA-262 ECMAScript Language Specification 3rd edition (December 1999)]
**[http://www.ecma-international.org/publications/standards/Ecma-290.htm Standard ECMA-290 ECMAScript Components Specification (June 1999)]
**[http://www.ecma-international.org/publications/standards/Ecma-327.htm Standard ECMA-327 ECMAScript 3rd Edition Compact Profile (June 2001)]
**[http://www.ecma-international.org/publications/standards/Ecma-357.htm Standard ECMA-357 ECMAScript for XML (E4X) Specification (June 2004)]
**[http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ Under Translation of ECMA-262 3rd Edition(日本語訳)]
* ECMAScript実装
**[http://www.mozilla.org/js/spidermonkey/ SpiderMonkey] - C - Firefox/Mozillaブラウザで使われている
**[http://webcvs.kde.org/kdelibs/kjs/ KJS] - C++ - KDEのKonquerorブラウザで使われている
**[http://developer.apple.com/darwin/projects/webcore/ JavaScriptCore] - C++ - MAC OS XのSafariブラウザやdashboardで使われている。KJSベース
**[http://www.njs-javascript.org/ NJS] - C
**[http://www.adaptive-enterprises.com.au/~d/software/see/ SEE - Simple ECMAScript Engine] - C
**[http://ixlib.sourceforge.net/ ixlib] - C++
**[http://www.trolltech.com/products/qsa/ QSA - Qt Script for Applications] - C++
**[http://www.digitalmars.com/dscript/ DMDScript] - C++/D
**[http://sourceforge.jp/projects/dmonkey/ DMonkey] - Delphi
**[http://www.mozilla.org/rhino/ Rhino] - Java
**[http://www.lugrin.ch/fesi/ FESI - Free EcmaScript Interpreter] - Java
**[http://scriptonite.sourceforge.net/ Scriptonite] - Java
**[http://www.xwt.org/ xwt] - Java
**[http://janet-js.sourceforge.net/ JANET] - Java
**[http://www.mozilla.org/js/language/Epimetheus.html Epimetheus] - C++ - Mozillaプロジェクトによる以前のECMAScript Edition 4草案の実装
**[[Narcissus]] - JavaScript
**[http://burstproject.org/build/doc/shells.html more...]
 
以下のような予定があった。
* 大規模・大人数開発のための機能の追加{{要出典|date=2011年2月}}<!--というか具体的に-->
* 型に関する機能の追加{{要出典|date=2011年2月}}<!--これも具体的に-->
* [[ジェネリックプログラミング]]の機能の追加
* ECMAScript 3 が下位互換だが、互換でない仕様が一部に入る{{要出典|date=2011年2月}}<!--これも具体的に-->
* ActionScript 3 の上位互換だが、互換でない仕様が一部に入る{{要出典|date=2011年2月}}<!--これも具体的に-->
 
== 実装 ==
* [[V8 (JavaScriptエンジン)|V8]] - C++ - Google Chromeブラウザで使われている
* [[Rhino]] (Rhino) - Java
* [[Narcissus]] - JavaScript
* [[SpiderMonkey]] (SpiderMonkey) - C - Firefox/Mozillaブラウザで使われている
* KJS - C++ - KDEのKonquerorブラウザで使われている
* JavaScriptCore - C++ - MAC OS XのSafariブラウザやdashboardで使われている。KJSベース
* NJS - C
* SEE - Simple ECMAScript Engine - C
* ixlib - C++
* QSA - Qt Script for Applications - C++
* DMDScript - C++/D
* DMonkey - Delphi
* FESI - Free EcmaScript Interpreter - Java
* Scriptonite - Java
* xwt - Java
* JANET - Java
* Epimetheus - C++ - Mozillaプロジェクトによる以前のECMAScript Edition 4草案の実装
 
== 脚注 ==
{{脚注ヘルプ}}
=== 注釈 ===
{{Notelist2}}
 
=== 出典 ===
{{Reflist|2}}
 
== 関連項目 ==
* [[ECMAScript for XML]] (E4X)
* [[JavaScript Object Notation]] (JSON)
* [[CommonJS]]
* [[TypeScript]]: JavaScriptの構文を保ちつつ、型に関する機能を外部的に追加したプログラミング言語
 
== 外部リンク ==
{{外部リンクの注意|section=1}}
* [https://262.ecma-international.org/ ECMAScript]
* ECMAScript言語仕様
** [https://www.ecma-international.org/publications/standards/Ecma-262.htm Standard ECMA-262]
*** [https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf ECMA-262 ECMAScript Language Specification 3rd edition (December 1999)]
*** [https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262%205th%20edition%20December%202009.pdf ECMA-262 ECMAScript Language Specification 5th edition (December 2009)]
*** [https://www.ecma-international.org/ecma-262/5.1/index.html ECMA-262 ECMAScript Language Specification 5.1 edition (June 2011)]
*** [https://www.ecma-international.org/ecma-262/6.0/index.html Standard ECMA-262 6th Edition / June 2015 ECMAScript 2015 Language Specification]
*** [https://www.ecma-international.org/ecma-262/12.0/index.html Standard ECMA-262 12th Edition / June 2015 ECMAScript 2021 Language Specification]
** [https://tc39.es/ecma262/ The most accurate and up-to-date ECMAScript Language Specification]
** [https://www.ecma-international.org/publications/standards/Ecma-290.htm Standard ECMA-290 ECMAScript Components Specification (June 1999)]
** [https://www.ecma-international.org/publications/standards/Ecma-327.htm Standard ECMA-327 ECMAScript 3rd Edition Compact Profile (June 2001)]
** [https://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/index.html Under Translation of ECMA-262 3rd Edition(日本語訳)]
 
{{ECMAScript}}
{{プログラミング言語一覧}}
{{DEFAULTSORT:えくますくりふと}}
[[Category:JavaScript|*]]
[[Category:スクリプト言語]]
[[Category:Ecma]]
 
[[ca:ECMAScript]]
[[da:ECMAScript]]
[[en:ECMAScript]]
[[es:ECMAScript]]
[[fr:ECMAScript]]
[[hu:ECMAScript]]
[[ko:ECMA스크립트]]
[[no:ECMAScript]]
[[pl:ECMAScript]]
[[pt:ECMAScript]]
[[ru:ECMAScript]]
[[sv:Ecmascript]]
[[uk:ECMAScript]]
[[zh:ECMAScript]]