SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
Babelで先取り次世代
javascript
1
Tsuyoshi Maeda
目次
1. Node.jsをインストール
2. Babelとは
1. ES6で使えるようになった代表的な機能。
3. 合わせて使うと便利なツール
1. browserify
2. gulp
4. 実際にES6に触れてみよう
2
Node.jsをインストール
• 本家サイトからインストールするなり、nvm・
nodeenvを使うなりお好きな方法でどうぞ。
• 以前Gruntの紹介をしたときにNode.jsのインストール方法を
記述してあるのでこちらも参考になるかと。
• http://www.slideshare.net/tsuyoshimaeda56/
grunt-40575694
3
Babelとは
• ES6(次世代)で組み込まれる機能をいち早く使え
るようにするツール。(JavaScript Transpiler)
• 元々の名前は「6to5」という名前だったが
「Babel」という名前に変更された。

http://www.infoq.com/news/2015/02/babel-new-name-for-6to5
4
ES6で追加された主な機能
(サンプルで紹介する分のみ)
!
• Arrow Function
• Class
• let, const(変数・定数宣言)
• Template Strings
!
• 他にも追加される機能はたくさんあるので以下のページも参考に。
https://babeljs.io/docs/learn-es6/
http://es6-features.org/#BlockScopedConstants
5
Arrow Function
• thisコンテキストがbindされる。
6
document.addEventListener('click', e => {
console.log(this, e);
});
!
↓ 以下と同じ
!
var self = this;
document.addEventListener('click', function (e) {
console.log(self, e);
});
Class
• 他の言語のようにclassでコードを書くことが出来る。

(今まではprototypeを利用して実現していた。)
7
function Animal(name) {

this._name = name ¦¦ default name ;

}

Animal.prototype.getName = function () {

return this._name;

};
↓ 以下と同じ
class Animal {

constructor(name = default name ) {
this._name = name;

}



getName() {

return this._name;

}

}
let・const(変数・定数宣言)
• let
• 変数の影響範囲がブロックスコープになる。

(var宣言は関数スコープ)
• const
• 一度宣言したら再代入出来ない。

(コンパイルエラー)
8
Template Strings
• 文字列内で変数展開ができるようになる。
• バッククォート「``」で変数を囲む。
9
function introduce(firstName, lastName) {

return my name is + lastName + + firstName . ;

}
!
↓ 以下と同じ
!
function introduce(firstName, lastName) {

return `my name is ${lastName} ${firstName}.`;

}
合わせて使うと便利なツール
• ES6でコードを書いて挙動を確認するたびに
babelコマンドを叩くのは非効率。
• babelコマンドは以下のページを参照

https://babeljs.io/docs/usage/cli/
• 機能ごとにclassでファイルを分けて、必要に応
じて外部ファイルをimport(require)して、最終
的には複数に分けたファイルを一つにまとめる
のが今っぽい書き方。
10
合わせて使うと便利なツール
• gulp
• ES6でコードを書いて挙動を確認するたびにbabelコマンドを叩くのは非効率。
• babelコマンドは以下のページを参照

https://babeljs.io/docs/usage/cli/
• browserify(or webpack)
• 機能ごとにclassでファイルを分けて、必要に応じて外部ファイルをimport(require)し
て、最終的には複数に分けたファイルを一つにまとめるのが今っぽい書き方。
11
gulp
• タスクランナー
• タスクとは?
• ファイル編集保存をフックにコンパイル
• 本番リリース時に行う一連作業の登録 など
• sass, altJSなどのコンパイル
• ファイル連結
• ファイル圧縮
• http://gulpjs.com/
12
browserify
• サーバーサイドJSのモジュール管理機構(CommonJS)
をブラウザ側でも使えるようにするツール。
• 旧来はAMD(RequireJS)でモジュール管理をして、非
同期で依存ファイルをブラウザ上で読み込むやり方が
流行っていたが、現在の主流はブラウザ側も
CommonJSの書き方で対応して、依存ファイルをあら
かじめコンパイルして解決するやり方になっている。
• AMD、CommonJSについて参考になる記事

http://tsuchikazu.net/javascript-module/
• http://browserify.org/
13
実際にES6に触れてみよう
以下のサンプルコードをclone
https://github.com/duyoji/
babel_browserify_in_gulp
14

Mais conteúdo relacionado

Mais procurados

Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)崇之 清水
 
早く家へ帰るための
Grunt入門
[+gulp紹介]
早く家へ帰るための
Grunt入門
[+gulp紹介]早く家へ帰るための
Grunt入門
[+gulp紹介]
早く家へ帰るための
Grunt入門
[+gulp紹介]Masayuki Maekawa
 
Gruntの罪と罰
Gruntの罪と罰Gruntの罪と罰
Gruntの罪と罰kamiyam .
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaYoshihiro Iwanaga
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発するHiroyuki Kusu
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Nobuhiro Nakashima
 
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築kamiyam .
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Kohei Asai
 
CloudFoundryこと始め
CloudFoundryこと始めCloudFoundryこと始め
CloudFoundryこと始めNaoto TAKAHASHI
 
月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみたSeiya Konno
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyHikari Fukasawa
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingTakuya ASADA
 

Mais procurados (20)

Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
早く家へ帰るための
Grunt入門
[+gulp紹介]
早く家へ帰るための
Grunt入門
[+gulp紹介]早く家へ帰るための
Grunt入門
[+gulp紹介]
早く家へ帰るための
Grunt入門
[+gulp紹介]
 
Gruntの罪と罰
Gruntの罪と罰Gruntの罪と罰
Gruntの罪と罰
 
20131012 nodejs
20131012 nodejs20131012 nodejs
20131012 nodejs
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
 
CloudFoundryこと始め
CloudFoundryこと始めCloudFoundryこと始め
CloudFoundryこと始め
 
20150523
 20150523 20150523
20150523
 
月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
 
Nodeについて
NodeについてNodeについて
Nodeについて
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meeting
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 

Semelhante a Babelで先取り次世代javascript

Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Makoto Nishimura
 
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜niwatako
 
worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所yo_waka
 
ビルド職人の朝は早い
ビルド職人の朝は早いビルド職人の朝は早い
ビルド職人の朝は早いMasashi MATSUI
 
node.js 開発のためのお手軽サーバ構築について(仮)
node.js 開発のためのお手軽サーバ構築について(仮)node.js 開発のためのお手軽サーバ構築について(仮)
node.js 開発のためのお手軽サーバ構築について(仮)Toru Tamura
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsTadahiro Ishisaka
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdeviofd0
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Kazuto Kusama
 
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話yuosaka
 
ES6で始めるNode.js / Starting NodeJS Development with ES6
ES6で始めるNode.js / Starting NodeJS Development with ES6ES6で始めるNode.js / Starting NodeJS Development with ES6
ES6で始めるNode.js / Starting NodeJS Development with ES6Taro Odashima
 
Firefox mobile for android internals
Firefox mobile for android internalsFirefox mobile for android internals
Firefox mobile for android internalsMakoto Kato
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメIsamu Suzuki
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編Asami Abe
 

Semelhante a Babelで先取り次世代javascript (20)

Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
 
worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所
 
ビルド職人の朝は早い
ビルド職人の朝は早いビルド職人の朝は早い
ビルド職人の朝は早い
 
node.js 開発のためのお手軽サーバ構築について(仮)
node.js 開発のためのお手軽サーバ構築について(仮)node.js 開発のためのお手軽サーバ構築について(仮)
node.js 開発のためのお手軽サーバ構築について(仮)
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Ppl
PplPpl
Ppl
 
Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座
 
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
 
Nuxt0501ver1
Nuxt0501ver1Nuxt0501ver1
Nuxt0501ver1
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
ES6で始めるNode.js / Starting NodeJS Development with ES6
ES6で始めるNode.js / Starting NodeJS Development with ES6ES6で始めるNode.js / Starting NodeJS Development with ES6
ES6で始めるNode.js / Starting NodeJS Development with ES6
 
Firefox mobile for android internals
Firefox mobile for android internalsFirefox mobile for android internals
Firefox mobile for android internals
 
Firefox Mobile
Firefox MobileFirefox Mobile
Firefox Mobile
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 

Babelで先取り次世代javascript