プログラミング

Babel とは?

投稿日:2017年7月3日 更新日:

1. Babel とは?

Babel とは、新しい機能を使って書いた JavaScript のコードを、以前のバージョンの書き方に変換してくれるツールです。

近年、JavaScript には便利な文法が数多く導入されており、コードが書きやすくなっています。しかし、古いウェブブラウザではこれらに対応していません。ですので、プログラムの動作対象となるウェブブラウザの範囲を広げようと思うと、昔の面倒な書き方をしなければいけないということになり不便です。
こんなとき Babel を使うと、新しい文法を使って書いたコードを、古い書き方に変換することができるので、古いウェブブラウザでも動作させることができるのです。

ということで、以下のように使います。

  1. 新機能を使って JavaScriptのコードを書く
  2. そのファイルを Babel に読み込ませ、以前の書き方に変換したファイルを出力させる
  3. 2で出力されたファイルを Webサーバーに配置する

スポンサードリンク

2. JavaScript のバージョン

現在の JavaScript は ECMAScript という仕様として定義されています。

ECMAScript の主なバージョンの変遷は以下になります。

ES5 --> ES2015 (ES6) --> ES2016 (ES7) --> ES2017 (ES8)

参考

3. プラグイン (plugins)

Babel の変換機能は、変換する機能毎にプラグインとして実装されています。

4. プリセット (preset)

プラグインを特定のカテゴリでまとめたものをプリセットと言います。

ECMAScript のバージョンで分類したプリセットには以下があります。

ES2015

ES2016

ES2017

実際に利用したいのは、Env というプリセットです。

Env

  • targetsオプションで指定した環境(ブラウザや Node.js のバージョン)に必要なプラグインだけを使用することができるプリセットです。対象とする環境で既に実装されている機能については変換処理を行わないため、生成されるコードに無駄がありません。
  • ブラウザのバージョンを指定する場合(Node.jsではなく)は、browserl.ist を使って記述することができます。(記述例はこちらでも説明されています –> ai/browserslist
  • 参照: Env preset · Babel

以下は非推奨となったプリセットです。

Latest (非推奨)

  • 現在はこのプリセットを使用することは推奨されていません。
  • es2015, es2016, es2017 の全ての変換を行います。
  • ブラウザを指定するようなことはできず、どんなコードも ES5 に変換されます。

使用するプリセットが決まったら、該当する npm モジュールをインストールして使用します。

その他にもプリセットはありますが、詳細は以下のリンク先をご覧ください。

参考

5. 基本的な使い方

お勧めのプリセットは Env です。なるべく targets オプションで、対象とする環境を指定しましょう。

開発用のプロジェクトディレクトリ直下に、設定ファイル .babelrc を作る際は、例えば、以下のような記述を行うことになります。

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "node": "6.10"
      }
    }]
  ]
}

6. Babel のイメージ

以下の関係を図にしてみました。

  • JavaScriptコード
  • プラグイン (Plugins)
  • プリセット (Presets)
  • ブラウザ

※ babel-core v6.25.0

Babelのイメージ(クリックすると拡大できます)
  • 実際は「ES2015までサポートしているブラウザ」というように、サポートしている機能がECMAScriptのバージョンによってきっちりと分類できるブラウザはありません。機能毎にサポートしていたり、サポートしていなかったりします。

📂-プログラミング

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

WordPress

WordPressのソースコード。HTMLにPHPを埋め込むスタイル。

WordPress本体のPHPソースコードや、テーマに含まれているPHPのソースコードを見ると、やたらと PHPの開始タグ(<?php)と終了タグ(?>)が埋め込まれています。 例えば、こ …

no image

ウェブプログラミングの知識があるとできること(その1)

先日、あるブログを見ていたら最新の記事だけが表示されない仕組みになっていました。 ウェブプログラミングの知識があるとこんなことができますという例として、その仕組を調べた時の過程を紹介します。 目次きっ …

Python

定期的にツイートするbotをPythonで作る方法

Twitterでツイートを行う botプログラムを Python(プログラミング言語)で作ります。 このプログラムは、CentOS(Linuxの一種です)上で定期実行します。 スポンサードリンク 目次 …

no image

Riot.jsを使ってみた感想

Riot.js を使って、素数判定を行うページを作ってみた感想です。 ※ 以前は、ここにその素数判定を実装していたのですが、今はありません。 目次Riot.jsを使った感想良い点悪い点 Riot.js …

React Redux

React + Redux のチュートリアルをやってみた

目次1. はじめに2. Redux について2. Action と Action CreatorActionAction Creators関連ソースコードactions/index.jscontain …