今日から使って先取りECMAScript6 
HTML5minutes! 〜triton-js〜 
© IMJ Corporation. All Rights Reserved. 
IMJ Corporation. Ryo Ohe 
2014.10.20
© IMJ Corporation. All Rights Reserved. 
大江遼Ryo Ohe 
フロントエンドエンジニア 
@ryo_ohe 
# golden_rookie
© IMJ Corporation. All Rights Reserved. 
昨今のJavaScript開発は、 
CoffeeScript 
TypeScript 
など、altJSを使用する機会が多い。
© IMJ Corporation. All Rights Reserved. 
CoffeeScript 
TypeScript 
どちらも素晴らしいソリューションです。
しかし、ECMAScript6で書くという手段もありま 
す。 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
ECMAScript6とは?
JavaScriptの設計書です。 
現在のJavaScriptはECMAScript5を基に作ら 
れていますが、それの次期バージョンにあたる 
ものです。 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
ECMAScript6で追加される機能 
Arrow functions 
Class 
Default function parameters 
Modules 
Template strings 
Promise など
© IMJ Corporation. All Rights Reserved. 
Arrow functions 
ES6 
var square = x => x; 
ES5 
var square = function(x) { 
return x; 
};
© IMJ Corporation. All Rights Reserved. 
Class 
class Greeter { 
constructor(message) { 
this.message = message; 
} 
greet() { 
var element = 
document.querySelector('#message'); 
element.innerHTML = this.message; 
} 
};
ES6の文法や新機能をフルサポートしたブラウ 
ザは現時点では存在しません。 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
しかし、諦める必要はありません。
© IMJ Corporation. All Rights Reserved. 
6to5というツールがあります。
© IMJ Corporation. All Rights Reserved. 
6to5とは?
ES6の形式で書かれたJavaScript をES5の 
形式にコンパイルしてくれます。 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
コンパイル前 
function multiply(a, b = 1) { 
return a*b; 
} 
コンパイル後 
function multiply(a, b) { 
if (b === undefined) 
b = 1; 
return a*b; 
}
© IMJ Corporation. All Rights Reserved. 
6to5を使うことのメリット
メリット① 
ES6は2015年6月に仕様FIX 
新機能を今から使っておくことで、数年後一歩 
リードできる。 
© IMJ Corporation. All Rights Reserved.
メリット② 
ライブラリが不要になる。 
ES6に対応したJavaScirptを使うことで、ライブ 
ラリの機能が不要になり、依存ライブラリを減ら 
すことができたり、altJSに頼らなくても豊富な言 
語機能が扱える可能性が広がります。 
© IMJ Corporation. All Rights Reserved.
とは言え、今多く使われているaltJSではなく、な 
ぜ今ES6を使うのか? 
© IMJ Corporation. All Rights Reserved.
次のAngularJSではES6 + Traceur compilerで 
書かれると発表されました。 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
Traceur compilerとは?
基本的に6to5と同じく、ES6の変換ツールだが、 
runtime.jsというファイルを別途読み込む必要 
があるなど、やや使いづらい。 
© IMJ Corporation. All Rights Reserved.
数あるES6の変換ツールの中でなぜ6to5なの 
か? 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
ES6の変換ツールの比較
© IMJ Corporation. All Rights Reserved. 
コンパイルされたコードがきれい 
ES6 
var seattlers = [for (c of customers) if (c.city 
== "Seattle") { name: c.name, age: c.age }];
コンパイルされたコード 
6to5 Traceur compiler 
var seattlers = (function() { 
var c; 
var $__20 = 0, 
© IMJ Corporation. All Rights Reserved. 
$__21 = []; 
for (var $__22 = 
customers[$traceurRuntime.toProperty(Symbol.iterator)](), 
$__23; !($__23 = $__22.next()).done; ) { 
c = $__23.value; 
if (c.city == "Seattle") 
$traceurRuntime.setProperty($__21, $__20++, { 
name: c.name, 
age: c.age 
}); 
} 
return $__21; 
}()); 
var seattlers = customers.filter(function (c) { 
return c.city == "Seattle"; 
}).map(function (c) { 
return { 
name: c.name, 
age: c.age 
}; 
});
ES6で書いて、一歩先をリードしてはいかがで 
しょうか。 
© IMJ Corporation. All Rights Reserved.
サンプル 
https://github.com/one-a/es6to5_sample 
© IMJ Corporation. All Rights Reserved.
© IMJ Corporation. All Rights Reserved. 
ご清聴ありがとうございました。

今日から使って先取り ECMAScript6

Editor's Notes

  • #2 今日から使って先取り ECMAScript6
  • #3 まずは自己紹介しようと思います。 大江遼と申します。 現在、株式会社アイ・エム・ジェイで、 フロントエンドエンジニアとしてHMTLやJSを書いたりしています。 時間もあまりないので、さっそく本題に入りたいと思います。
  • #4 昨今のJavascriptの開発は、 ・ ・ などのaltJSを使うことが多いかと思います。
  • #5 ・ ・ どちらも素晴らしいものだと思います。
  • #7 そもそも、ECMAScript6とは何なのか?
  • #8 JavaScriptの設計書です。 現在のJavascriptはECMAScript5をもとに作られていますが、 次のバージョンのものです。
  • #9 ECMAScript…長いので、以降ESと略します。 ES6で追加される機能として、 ほんの一部を上げてみました。 これだけだと、よく分からないと思うので、 さらに一部だけ紹介します。
  • #10 Arrow functionという機能は、 Coffeescriptとかでもお馴染みのfunctionをアローで表現できるというものです。 上が、ES6で書いたもの、 下が、ES5で同じ機能を書いたものです。 (関数の引数が一つの場合、かっこを省略できます。)
  • #11 次は、classです。 Javascriptにはclassがありませんでしたが、 ES6でclassの機能が実装されることになりました。
  • #12 ただ、今現在、ES6の文法や新機能をフルサポートしたブラウザは存在しません。 (ほんの一部の機能がFirefoxで実装されているものもありますが・・・。) まぁ、しかし・・・
  • #15 いきなり出てきましたが、 6to5とは何なのか?
  • #16 これは、ES6の形式で書かれたJSを 今のブラウザでも読めるようなES5の形式にコンパイルしてくれます。
  • #17 これが6to5でコンパイルしたものです。 上がES6で書いたもの、 下がコンパイルしてES5の形式に変換されたものです。
  • #18 じゃあ、この6to5を使うことのメリットとして
  • #19 まず一つ目、 ES6は2015年、来年の6月に仕様がFIXの予定です。 追加される新機能を今から使っておくことで、 数年後を一歩リードできます。
  • #20 二つ目のメリットとして、 今まで使っていたライブラリが不要になります。 ES6に対応したJSを使い、新機能などを使うことで、 ライブラリの機能が不要になったり、依存ライブラリを減らすこともできます。 また、altJSに頼らなくても、豊富な言語機能が扱える可能性が広がります。
  • #21 意味とは何なのか?
  • #22 AngularJS2 では 発表されています。
  • #23 また新しく登場してきたもの、traceur coompilerとは?
  • #24 Googleが作っているツールで、 基本的に6to5と同じく、ES6への変換ツールです。 ただし、runtime.jsというファイルを別途読み込む必要があり、 やや使いにくいです。 基本的に6to5と同じく、ES6への変換ツールだが、runtime.jsというファイルを別途読み込む必要があるなど、やや使いづらい。
  • #25 では、数あるES6の変換ツールの中で、なぜ6to5なのか? 4
  • #26 変換ツールを比較すると、実装されている機能が6to5とtraceur compilerが多いです。 (Let scopもきちんと実装されています。) また、6to5にはruntime.jsというものは不要です。 時間なければ… 「実装されている機能が6to5が一番多いです」
  • #27 そして、結構大きいかなと思うのが、コンパイルされたコードがきれいです。 まず、ES6で書かれたこのようなコードがあります。 これをコンパイルすると・・・
  • #28 このようになります。 小さくて見にくいかもしれませんが、同じコードでもこんなに差があります。 Traceurの方は、(変数名に$_や、)runtimejsをつかったコードが書いてあります。 4:35
  • #29 altJSだけでなく、6to5などのツールなどを使って、ES6で書いてみるのも一つの手だと思います。 6to5にはgulpのプラグインもあるので、今からでも使えると思います。 ES6で書いて、一歩先をリードしてはいかがでしょうか?
  • #30 今回のサンプルはコチラです。