LoginSignup
12
5

More than 5 years have passed since last update.

ざっくりECMAScriptとBabelの話

Last updated at Posted at 2018-10-05

ECMAScriptとは?

ECMAScriptは、JavaScriptを元にして標準規格化されたスクリプト言語です。

JavaScriptはNetscapeによって開発されましたが、それをベースにしたJScriptをマイクロソフトが独自に開発していたりと、互換性に乏しい状態でした。そこで、1990年代後半に、情報通信システムの分野における国際的な標準化団体であるEcma Internationalによって、JavaScriptを元にした標準規格のECMAScriptが策定されました。

ECMAScriptのバージョン

ECMAScriptは、ECMA-262という規格番号で標準化されています。
1997年に、1st editionである、ECMAScript 1が策定され、2009年に5th editionのECMAScript 5(以下、ES5)とアップデートをしてきました。
(4th editionは仕様がまとまらず、破棄されました)

2015年の6th editionから、それまでのECMAScript 番号というeditionベースの略称から、年号ベースの仕様書名で呼ばれることが推奨されるようになり、ECMAScript 2015(以下、ES2015)と表記されています。

JavaScript系のブログ等で、ES6/ES2015と、2つの表記が混在しているのは、そのためです。

また、ES2015からは毎年改訂が行われるようになり、2018年10月現在は、ES2018までが策定されています。

Babelの機能と役割

ECMAScriptは、ES5からES2015で大きく変化しました。
クラスやモジュール、イテレーター、アロー関数、分割代入等、とても便利な記法が追加されたわけですが、ECMAScriptの変化にブラウザやクローラーがピッタリとついてきているわけではありません。
たとえば、Internet Explorer 11(以下、IE11)やGooglebotのレンダリングはES5相当なので、ES2015以降のバージョンでかかれたJavaScriptは、それらの環境では正しく動作しません。

しかし、ES2015以降の便利な記法は、どんどん利用したい。。
そこで、Babelの出番です。

Babelは、ES2015〜2018の記法を、ES5に自動的に変換してくれるツールです。
(変換することをトランスパイルとも言います)

Babelを利用することにより、モダンなJavaScriptの記法を使用しながら、レガシーな環境にも対応できるわけです。
便利ですね!

Babel使用時の注意点

BabelはES2015〜2018をES5相当までトランスパイルしてくれますが、機能を追加するわけではありません。
たとえば、async/awaitとかそのまま使うと「Promiseねえよ!」って、IEで怒られたりします。
そういった場合は、@babel/polyfill等のポリフィルを使う必要があります。

まとめ

  • ECMAScriptは、JavaScriptを元にして標準規格化されたスクリプト言語
  • 5th editionまではES5のようにバージョン表記で、6th editionからはES2015のように年号表記
  • ES2015から多くの機能・記法がついかされたが、ブラウザやクローラーが追いついていないので、レガシー環境に対応する場合はBabelでトランスパイルしてあげる必要がある
  • 機能まで欲しい場合は、@babel/polyfill等のポリフィルが必要
12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5