ECMAScript(エクマスクリプト)。 ES2015(ES6)という記述の仕方など、でもよく見かけます。 聞いたことがあるけど、JavaScriptのバージョンに関係していることくらいしかわから ないという方は多いのではないでしょうか?
JavaScriptとECMAScriptの違いや、使い方について勉強していきたいと思います。
JavaScriptとECMAScriptの違い
JavaScriptの歴史
JavaScriptとはWebサイトに動きをつけることを目的として開発されたプログラミング言語です。
そのJavaScriptパイセンが世に登場した1995年(エアマックス狩り流行った時代ですねー)当時はブラウザによって仕様が違っていて開発が非常に大変だったことをご存知でしょうか?
JavaScriptはNetscape社のブラウザで利用する言語として誕生しました(当時は「LiveScript」と呼ばれていたそうで)。他のブラウザはJavaScriptを独自に拡張してき、、結果JavaScriptはブラウザ間の互換性が低く、標準化されていない言語だったわけです。
ECMAScriptの誕生
これでは色々と問題があるとして、Netscape社は国際標準化団体のECMAパイセンに依頼してJavaScriptのコアとなる部分の標準化しました。
これがECMAScriptと呼ばれるものになります。
ということはつまり、JavaScriptはECMAscriptに準拠した言語であると言えるわけです。
但し、ECMAScriptは各ブラウザの独自拡張を限定的に認めています。そのおかげで、ブラウザごとに若干仕様が異なる部分もまだあります。
ECMAScriptのバージョン
バージョン | リリース時期 |
---|---|
v1 | 1997/06 |
v2 | 1998/06 |
v3 | 1999/12 |
v4 | 破壊的変更があったため、破棄された(こわっ!) |
v5 | 2009/12 |
v5.1 | 2011/06 |
v6(ES2015) | 2015/06 |
v7(ES2016) | 2016/06 |
v8(ES2017) | 2017/06 |
v9(ES2018) | 2018/06 |
v10(ES2019) | 2019/06 |
v11(ES2020) | 2020/06 |
v12(E$2021) | 2021/06 |
v13(ES2022) | 2022/06 |
v14(ES2023) | 2023/06 |
ES6の登場
ES5から6にアップデートされるのに6年かかっていると言うこともあり、かなりの大規模アップデートでした。 かなりの機能がES6では追加されています。
ES6はモダンブラウザが完全対応しているため、いまだにECMAScriptの標準となっています。
ES6で導入されたESModule
ESModuleは、ECMAScript2015(ES6)で導入された、JavaScriptのモジュールシステムです。
以前はJavaScriptにモジュールの概念がなく、すべてグローバルな名前空間にすべての変数や関数を定義して管理していました。小規模開発であれば問題ないですが、大規模開発になっていくにつれて名前の重複やスコープ問題が発生する課題が有りました。
ESModuleはモジュールを定義するための新しい構文を提供し、名前空間の分離が出来るようになりました。ということで昨今のJavaScriptとしては必須不可欠の機能となったわけです。
トランスパイルについて
ES6に対応していない「IE11」ブラウザでも動作するようにBabelというツールを利用し、トランスコンパイルするのが一般的でした。
しかしIE11も2022年6月16日(日本時間)にサポート終了となったため、今後トランスパイルは不要になる日が。。。ただしフレームワーク(Next.jsやReactなど)に縛られているため すぐに排除するのは難しそうです。
まとめ
今回は、JavaScriptとECMAScriptの関係性について勉強をしました。
JavaScriptは「ECMAScritp」に基づいて実装されているプログラミング言語ですが、バージョンやブラウザ環境によって使える機能が変わってきます。 プロジェクトに合わせて利用しましょう!
それではまたー!