| パラダイム | マルチパラダイム:プロトタイプベース、機能的、命令型 |
|---|---|
| デザイン: | ブレンダン・アイヒ、Ecma International |
| 初登場 | 1997年 |
| タイピングの規律 | 弱い、ダイナミック |
| Webサイト | www.ecma-international.org/publications-and-standards/standards/ecma-262/ |
| 主な実装 | |
| JavaScript、ActionScript、JScript、QtScript、InScript、Google Apps Script | |
| 影響を受けた | |
| Self、HyperTalk、AWK、C、CoffeeScript、Perl、Python、Java、Scheme | |
| ファイル名拡張子 |
.es |
|---|---|
| インターネットメディアの種類 |
アプリケーション/ecmascript |
| 開発者 | サン・マイクロシステムズ、 Ecma International |
| 初回リリース | 1997年6月 |
| 最新リリース | 2024年6月15日版 |
| フォーマットの種類 | スクリプト言語 |
| Webサイト | 標準 |
ECMAScript(/ ˈ ɛ k m ə s k r ɪ p t / ; ES ) [ 1]は、 JavaScript、JScript、ActionScriptなどのスクリプト言語の標準です。異なるWebブラウザ間でのWebページの相互運用性を保証することを目的としたJavaScript標準として最もよく知られています。[2] Ecma InternationalによってECMA-262文書で 標準化されています。
ECMAScriptはWorld Wide Web上のクライアント側スクリプトによく使われており、 Node.js [3]、deno [4]、bun [5]などのランタイム環境を使ったサーバー側アプリケーションやサービスにも使われるようになってきています。
ECMAScript、ECMA-262、JavaScript
ECMA-262、またはECMAScript言語仕様は、 ECMAScript言語、または単にECMAScriptを定義します。[6] ECMA-262は、 Array、Function、globalThisなどのコアアプリケーションプログラミングインターフェイス( API )の言語構文とセマンティクスのみを指定しますが、JavaScriptの有効な実装では、入出力やファイルシステムの処理などの独自の機能が追加されます。
歴史
ECMAScript 仕様は、 NetscapeのBrendan Eichが開発したスクリプト言語の標準化仕様です。当初は Mocha、その後 LiveScript、最終的に JavaScript と名付けられました。[7] 1995 年 12 月、Sun Microsystemsと Netscape はプレス リリースで JavaScript を発表しました。[8] 1996 年 11 月、Netscape はJavaScript の標準化を進めるためにEcma International標準化組織の会議を開催することを発表しました。 [9] ECMA-262 の最初のエディションは、1997 年 6 月の Ecma 総会で採用されました。それ以来、言語標準のいくつかのエディションが発行されています。「ECMAScript」という名前は、言語の標準化に関与する組織、特に Netscape と Microsoft の間の妥協案であり、この 2 つの論争が初期の標準化セッションの主流でした。Eich は、「ECMAScript は常に皮膚病のように聞こえる望ましくない商標名でした」とコメントしました。[10] ECMAScriptは、スタンフォード大学とロンドン大学インペリアル・カレッジ・コンピューティング学部のセキュリティ分析と標準化の作業によって、操作意味論を通じて形式化されました。 [11] 「ECMA」は1994年まで「European Computer Manufacturers Association」の略でした。
進化
Ecmaの技術委員会39(TC39)は、ECMAScriptのメンテナンスを担当しています。[12]言語に対する新しい提案は段階的なプロセスを経て、各段階で提案の仕様の完成度が示されます。提案を次の段階に進めるには、委員会内で合意に達する必要があります。最終段階であるステージ4に到達した提案は、標準の次のバージョンに含まれます。[13] 2015年6月のバージョン6のリリース以来、新しいメジャーバージョンが毎年6月に完成し、公開されています。[14]
特徴
ECMAScript言語には、構造化、動的、関数型、プロトタイプベースの機能が含まれています。[15]
命令的で構造化された
ECMAScript JavaScriptはC言語スタイルの構造化プログラミングをサポートしています。以前はJavaScriptはキーワードを使用した関数スコープvarのみをサポートしていましたが、ECMAScript 2015ではキーワードletとが追加されconst、JavaScriptはブロックスコープと関数スコープの両方をサポートできるようになりました。JavaScriptは自動セミコロン挿入をサポートしており、通常C言語で文を終了させるセミコロンはJavaScriptでは省略できます。[16]
C スタイルの言語と同様に、制御フローはwhile、、for/ 、/ 、およびステートメントで行われます。関数は弱い型付けで、任意の型を受け入れて返すことができます。指定doされていない引数は、デフォルトで になります。
whileifelseswitchundefined
弱い型付け
ECMAScriptは弱い型付けです。つまり、実行される操作に基づいて特定の型が暗黙的に割り当てられます。ただし、JavaScriptの変数をある型から別の型に変換する実装にはいくつかの癖があります。これらの癖は、Watと題された講演の主題でした。[17] [18]
動的
ECMAScriptは動的に型付けされます。したがって、型は式ではなく値に関連付けられます。ECMAScriptは、ダックタイピングを含むオブジェクトの型をテストするさまざまな方法をサポートしています。[19]
トランスパイル
ES 2015 以降、JavaScript のトランスパイルは非常に一般的になっています。トランスパイルとは、新しいバージョンの JavaScript が使用されるソースからソースへのコンパイルであり、トランスパイラーがソースコードを書き換えて、古いブラウザーでサポートされるようにします。通常、トランスパイラーは、すべてのバージョンのブラウザーとの互換性を維持するために、ES3 にトランスパイルします。特定のバージョンにトランスパイルする設定は、必要に応じて構成できます。トランスパイルはビルド プロセスに余分な手順を追加し、ポリフィルの必要性を回避するために行われることがあります。ポリフィルは、機能が不足している古い環境用に新しい機能を作成します。ポリフィルは、ユーザーのブラウザーやサーバーなどのインタープリターで実行時にこれを行います。代わりに、トランスパイルは、インタープリターに到達する前に、開発のビルド フェーズで ECMA コード自体を書き換えます。
適合性
2010年、Ecma Internationalは、Ecma 262 ECMAScriptの標準テストの開発を開始しました。[20] Test262は、JavaScriptの実装がECMAScript仕様にどれだけ忠実に従っているかをチェックするために使用できるECMAScript適合性テストスイートです。テストスイートには何千もの個別のテストが含まれており、それぞれがECMAScript仕様の特定の要件をテストします。Test262の開発は、Ecma技術委員会39(TC39)のプロジェクトです。テストフレームワークと個別のテストは、TC39のメンバー組織によってEcmaに提供されています。
Google ( Sputnikテストスイート) とMicrosoftは、数千のテストを提供し、重要な貢献を果たしました。Test262テストスイートは、2020年1月現在、38,014件[アップデート]のテストが実施されています。[21] ECMAScript仕様はES7まで、主要なウェブブラウザで十分にサポートされています。以下の表は、ECMAScriptの最新版に対する現在のバージョンのソフトウェアの適合率を示しています。
参照
参考文献
- ^ Stefanov, Stoyan (2010). JavaScript パターン. O'Reilly Media, Inc. p. 5. ISBN 9781449396947. 2016-06-10 にオリジナルからアーカイブされました。2016-01-12に取得。
コア JavaScript プログラミング言語 [...] は、 ECMAScript標準 (略して ES) に基づいています。
- ^ Wirfs-Brock , Allen; Eich, Brendan (2020-05-02). 「JavaScript: 最初の20年」。ACMプログラミング言語に関する議事録。4 : 1–189。doi : 10.1145 /3386327。S2CID 219603695 。
- ^ 「Node.js — ECMAScript 2015 (ES6) 以降」。
- ^ 「DenoがJavaScript標準化の取り組みに参加」。2021年12月14日。
- ^ https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a 文
- ^ Guo, Shu-yu (2022-02-14). 「ECMAScript® 2022 言語仕様」tc39.es . 2020-05-08 時点のオリジナルよりアーカイブ。2022-02-14に取得。
- ^ Krill, Paul (2008-06-23). 「JavaScript の作者が過去と未来を熟考」. infoworld.com . InfoWorld. 2014-09-20 にオリジナルからアーカイブ。2013-10-31に取得。
- ^ 「Netscape と Sun が、エンタープライズ ネットワークとインターネット向けのオープンなクロスプラットフォーム オブジェクト スクリプト言語 JavaScript を発表」。Netscape.com。Netscape。1995年12 月 4 日。2002 年 6 月 6 日時点のオリジナルよりアーカイブ。2019年 11 月 4 日閲覧。
- ^ プレスリリース (1996 年 11 月 15 日)。「業界リーダーが標準化団体会議で Netscape の JavaScript の標準化を推進」。Netscape.com。Netscape。1998年12 月 3 日時点のオリジナルからアーカイブ。2013年 10 月 31 日閲覧。
- ^ Eich, Brendan (2006-10-03). 「es4 に推奨されるファイルサフィックスはありますか?」mozilla.org . Mail.mozilla.org. 2020-06-21 時点のオリジナルよりアーカイブ。2021-05-05に取得。
- ^ Maffeis, Sergio; Mitchell, John C.; Taly, Ankur (2020-01-03). 「JavaScript の操作的セマンティクス」(PDF) . stanford.edu . Association for Computing Machinery . 2020-01-03 のオリジナルからアーカイブ(PDF) . 2020-01-03に取得。
- ^ 「TC39」、技術委員会、Ecma International 、 2024年8月11日閲覧
- ^ 「TC39プロセス」、TC39、Ecma International 、 2024年8月11日閲覧
- ^ 「ECMAScript、TC39、そしてJavaScriptの歴史」、ui.dev 、 2024年8月11日閲覧
- ^ 「About」。ECMAScript。2012年8月2日時点のオリジナルよりアーカイブ。2009年12月17日閲覧。
- ^ David Flanagan (2006 年 8 月 17 日)。JavaScript: 決定版ガイド: 決定版ガイド。「O'Reilly Media, Inc.」。p. 16。ISBN 978-0-596-55447-7. 2020年8月1日時点のオリジナルよりアーカイブ。2019年11月11日閲覧。
- ^ Bernhardt, Gary. Wat. CodeMash 2012. Destroy All Software . 2019年10月28日時点のオリジナルよりアーカイブ。2021年8月18日閲覧。
- ^ Gilbertson, Scott (2012年1月26日). 「オタクのためのジョーク:プログラミングにおけるワットの瞬間」. Wired . 2020年8月23日時点のオリジナルよりアーカイブ。2021年8月22日閲覧。
- ^ 「JavaScript のデータ型とデータ構造 – JavaScript | MDN」。Developer.mozilla.org 2017-02-16。2017-03-14 にオリジナルからアーカイブ。2017-02-24に取得。
- ^ 「ECMAScript 言語 – test262」。Test262.ecmascript.org。2011 年 5 月 14 日時点のオリジナルよりアーカイブ。2013年 10 月 31 日閲覧。
- ^ “tc39/test262”. GitHub . 2020年1月24日. 2019年10月1日時点のオリジナルよりアーカイブ。 2020年1月29日閲覧。
- ^ ES5 はこのテスト スイートのベースラインです。他のエディションの適合率は、包括的なスコアではなく、新機能のサポートのみを反映しています。
- ^ 「ECMAScript 5 互換性表」。compat -table.github.io . 2024-04-14。2024-01-14 にオリジナルからアーカイブ。2024-04-14に取得。
- ^ 「ECMAScript 6 互換性表」。compat-table.github.io . 2024-04-14。2024-04-04 時点のオリジナルよりアーカイブ。2024-04-14に取得。
- ^ 「ECMAScript 2016+ 互換性表」。compat -table.github.io . 2024-04-14。2024-01-14にオリジナルからアーカイブ。2024-04-14に取得。
- ^ 「ECMAScript Next 互換性表」。compat-table.github.io . 2024-04-14。2024-01-14 にオリジナルからアーカイブ。2024-04-14に取得。
- ^ ES7から次版ドラフトまでの新機能を含む複合スコア
