👌

ECMAScriptってなんなのかをまとめてみる

2023/04/08に公開

概要

結構長いことJavaScript(TypeScript)を書いてきてるけど、ECMAScriptについてちゃんと覚書書いたことなかったので今回書いてみます。

ECMAScriptとは?

ECMAScriptは、JavaScriptの標準化を担当する団体であるECMAによって定義されたJavaScriptの標準仕様です。
1997年に初めて導入されて以来、新しいバージョンが定期的にリリースされています。
JavaScriptの標準化によって異なるブラウザのJavaScriptエンジン間の互換性を確保し、開発者に統一的な開発環境を提供しています。
2023年4月時点で、ECMAScriptの最新バージョンは2022年にリリースされたECMAScript2022(ES13)です。

生まれた経緯

1995年にNetscape社がWebブラウザであるNetscape Navigatorに、ブラウザ上で動くプログラミング言語JavaScriptを搭載しました。
その後、MicrosoftがWindowsに搭載されているInternet ExplorerにJScriptという、別のプログラミング言語を搭載しました。

同じブラウザ上で動く言語ではあったのですが、仕様が違ったためNetscape社が外部の機関に標準化規格の作成を依頼します。
それがECMA Internationalという会社で、そこからECMAScriptが生まれました。

以降、ECMAScriptがJavaScriptの標準規格として採用されることが多くなりました。

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 予定

現在は毎年6月にリリースになっているので、今年もv14(2023)がリリースされる予定です。

ESModuleの登場

ESModuleは、ECMAScript2015(ES6)で導入された、JavaScriptのモジュールシステムです。
JavaScriptには元々モジュールの概念がなく、すべてグローバルな名前空間にすべての変数や関数を定義して管理していました。
ですが、この方法では大規模開発になっていくにつれて名前の衝突やスコープ問題が発生しやすくなる課題が有りました。

ESModuleはモジュールを定義するための新しい構文を提供することで、名前空間の分離が出来るようになりました。
名前空間の分離により以下の課題が解決されました。

  • 今までグローバルな名前空間だったため起きていた衝突の回避が出来るようになった
  • モジュール間の依存関係が管理しやすくなった
  • モジュール単位での管理ができるようになったことで再利用性が向上した
  • モジュールのインポート・エクスポートが明示的に出来るようになり、可読性や保守性が向上した
  • 必要なモジュールのみをインポート出来るようになったのでパフォーマンス向上が見込めるようになった

昨今のJavaScriptとしては必須不可欠の機能です。

まとめ

とりあえずはECMAScriptのついてはこのくらいにします。
同じ規格であるCommonJSについても書くか悩みましたが、サーバーサイドもECMA側になっていくんじゃないかな?って気がしているので、今回は触れないこととします。

また、気づいた点や追記したいことが出てきたら追記しようと思います。

参考

ECMAScript

Discussion