SlideShare a Scribd company logo
Closure CompilerのES6対応 
あるいは 
ES6時代のAltJS生存戦略 
@teppeis 
ES6 Casual 2014/10/29
Hello! 
• @teppeis 
• cybozu kintone 
• Closure Compiler, TypeScript, Testing, Scaling..
Closure Compiler
Closure Compiler 
• compile JS to better JS 
• 超圧縮&最適化 
• JSDocベースの静的型付け
あなたも毎日使ってます!
JSDocベースの静的型付け
JSDocベースの静的型付け 
• 冗長だけど、既存のJSとの親和性がバツグン 
• JavaScriptの進化に追随できる(後述) 
• コンパイルなしでも実行可能 
• どうせJSDoc書くし。 
まさか、ドキュメント書かない気ですか?
5月にGitHub化
活発に開発中
最近何やってんの? 
• ECMAScript6対応 
• 型推論の強化 
• RefasterJS(自動リファクタリング) 
• Conformance(規約チェック)
ECMAScript 6
Compile ES6 to ES3 
java -jar compiler.jar  
--language_in ECMASCRIPT6  
--language_out ECMASCRIPT3  
--js foo.js
Arrow Function
Class
Enhanced object literals
Default, rest, spread params
and already supported ! 
• const/let 
• Generator 
• Destructuring 
• String templates 
• Binary & octal literal 
• …
実装中の大物 
• Modules 
• super (Class)
ES6 compatibility table 
各種ブラウザとコンパイラのES6対応表 
http://kangax.github.io/compat-table/es6/
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
対応状況のチェックを自動化 
• かなりの書きなぐりコード 
• 6to5とかも対応しようと思ったけど面 (ry
Why doesn’t 
Closure use Traceur?
Tracuerを使わなかった理由 
• Tracuerは変換結果にコメントを残せない 
• Closure CompilerではJSDocが肝 
• パフォーマンス問題 
• TraceurはJS実装、ClosureはJava実装 
• ASTとソースの変換が2回
コンパイルのコスト 
• Traceur + Closure 
• ES6 > Traceur AST > ES5 > Closure AST > Optimized ES5 
• Closure only 
• ES6 > Closure AST (ES6 > ES5) > Optimized ES5
nodeconf.eu 2014 
http://yosuke-furukawa.hatenablog.com/entry/2014/09/10/191140
ちょw
Tracuerの微妙なところ 
• 自前で実装する基準がよくわからない 
• String.prototype.startsWith とか 
• そのおかげでランタイムがめちゃでかい。 
• コンパイル不要な機能は 
es6shimに任せれば良いのでは?
ES6 vs. AltJS
AltJS黎明期 
• 各種AltJSがオレオレ最強Syntaxを実装 
• そのうち有用なものをES6/7が取り込む 
• ES6だけでも十分モダンなsyntaxに 
• 各ブラウザとコンパイラがES6対応開始 
• いまここ
AltJSの選定基準 
• そのコンテキストにおけるJSの不満を解決 
• 主目的はそれぞれ 
• 学習コスト、開発者の確保 
• ECMAScriptベースだと楽じゃない? 
• AltJSからの出口戦略(プロダクトとAltJSどっちが長生き?) 
• 開発の継続性 
• コミュニティが活発 
• 強力な後ろだて(政治) 
• 移行コスト 
• 元コードがキレイ or 生成コードがキレイ(標準に近い)
ECMAScript準拠の強み 
• Closure Compilerは基本文法はJSそのまま 
• JS (ECMAScript) が進化すれば、 
Closure Compilerも合わせて進化できる 
• 独自syntaxのAltJSではそうもいかない 
• 進化しないと、機能落ち、 
類似だけど微妙に違う仕様、などに陥る
ES6時代のAltJS 
• 欲張らないES6ベース + 独自色(主目的) 
• Closure(型、圧縮) 
• TypeScript(型) 
• AngularJS AtScript(型、アノテーション) 
• Facebook Flow(型、高速化?)
型ばっかりでゴメンw 
• でも Google, Microsoft, Facebook, 
ビッグネームが型付きJS始めたのは 
偶然じゃあない。 
• ECMAScript Types が提案に(次の発表で!) 
• 最強の出口戦略: 標準化 
• 来るか大統一型定義時代!
http://teppeis.hatenablog.com/entry/2014/10/facebook-flow-in-3-minutes
Thanks!

More Related Content

PDF
Closure Compiler Updates for ES6
PDF
本当のClosure Compilerをお見せしますよ。
PDF
Flowtype Introduction
KEY
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
PDF
コンパイラ指向ReVIEW
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
Isomorphic web development with scala and scala.js
PDF
Ember コミュニティとわたし
Closure Compiler Updates for ES6
本当のClosure Compilerをお見せしますよ。
Flowtype Introduction
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
コンパイラ指向ReVIEW
ng-japan 2015 TypeScript+AngularJS 1.3
Isomorphic web development with scala and scala.js
Ember コミュニティとわたし

What's hot (20)

PPTX
Web socket and gRPC
PPTX
React.js + Reduxで作るSPA
PPTX
Ansibleハンズオン勉強会
PDF
Presentation on your terminal
PDF
ECMAScript6による関数型プログラミング
PDF
About Reauire.js
PPTX
Containerで変わるDevOps
PDF
OSC 2011 KeySnail
PDF
LocalStack
PPTX
webアプリケーションフレームワークの話
PDF
Reactとbabelで簡易タスク管理ツール作ってみた
PDF
うわ…私のEmacs力、低すぎ...?
PDF
Babelで先取り次世代javascript
PDF
LT#7 Hello coffeeしてきた
KEY
Yesodを支える技術
PPTX
Yesod勉強会
ODP
高トラフィックサイトをRailsで構築するためのTips基礎編
PDF
仮想マシンを使った開発環境の簡単共有方法
PDF
200k/sec
Web socket and gRPC
React.js + Reduxで作るSPA
Ansibleハンズオン勉強会
Presentation on your terminal
ECMAScript6による関数型プログラミング
About Reauire.js
Containerで変わるDevOps
OSC 2011 KeySnail
LocalStack
webアプリケーションフレームワークの話
Reactとbabelで簡易タスク管理ツール作ってみた
うわ…私のEmacs力、低すぎ...?
Babelで先取り次世代javascript
LT#7 Hello coffeeしてきた
Yesodを支える技術
Yesod勉強会
高トラフィックサイトをRailsで構築するためのTips基礎編
仮想マシンを使った開発環境の簡単共有方法
200k/sec
Ad

Viewers also liked (20)

PDF
React Canvasで作るFlappy Bird
PDF
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
PDF
Kotlinこんなん出ましたけど
PDF
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
PDF
非ガチ勢「よし、Coffee script使おう!」
PDF
9 anti-patterns for node.js teams
PDF
Next Generation Web Application Architecture
PDF
これからはじめるCoda2とSublime Text 2
PDF
Sinatraのススメ
PDF
new Objctive-C literal syntax
PDF
blogサービスの全文検索の話 - #groonga を囲む夕べ
PDF
Rubyはとても「人間的」
PDF
本格的に始めるzsh
PPTX
Ruby1.9のfiberのかっこいい使い方
PDF
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
PDF
プログラマとして仕事をするために勉強すること
PDF
Project Lambdaの基礎
PDF
DefinitelyTyped良いという話
PDF
受託開発時におけるAWSクラウド活用術
KEY
Code as data as code.
React Canvasで作るFlappy Bird
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
Kotlinこんなん出ましたけど
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
非ガチ勢「よし、Coffee script使おう!」
9 anti-patterns for node.js teams
Next Generation Web Application Architecture
これからはじめるCoda2とSublime Text 2
Sinatraのススメ
new Objctive-C literal syntax
blogサービスの全文検索の話 - #groonga を囲む夕べ
Rubyはとても「人間的」
本格的に始めるzsh
Ruby1.9のfiberのかっこいい使い方
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
プログラマとして仕事をするために勉強すること
Project Lambdaの基礎
DefinitelyTyped良いという話
受託開発時におけるAWSクラウド活用術
Code as data as code.
Ad

Similar to Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略 (20)

PDF
JavaScript Tips 2015(PDF 版)
PDF
TypeScript 言語処理系ことはじめ
PDF
ES6 in Practice
PDF
traceur-compilerで未来のJavaScriptを体験
PDF
Learn ES2015
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
PDF
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
PDF
TypeScript 1.0 オーバービュー
PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PDF
JavaScriptトレンド総括(2014)
PDF
Ecmascript2015とその周辺について
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
PPTX
JavaScript使いのためのTypeScript実践入門
PPTX
TypeScriptハンズオン第1回テキスト
PDF
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
PDF
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
PDF
TypeScript と Visual Studio Code
PPTX
今日から使って先取り ECMAScript6
PDF
traceur-compilerで ECMAScript6を体験
PDF
今すぐブラウザでES6を使おう
JavaScript Tips 2015(PDF 版)
TypeScript 言語処理系ことはじめ
ES6 in Practice
traceur-compilerで未来のJavaScriptを体験
Learn ES2015
サーバサイドエンジニアが 1年間まじめにSPAやってみた
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
TypeScript 1.0 オーバービュー
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
JavaScriptトレンド総括(2014)
Ecmascript2015とその周辺について
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
JavaScript使いのためのTypeScript実践入門
TypeScriptハンズオン第1回テキスト
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
TypeScript と Visual Studio Code
今日から使って先取り ECMAScript6
traceur-compilerで ECMAScript6を体験
今すぐブラウザでES6を使おう

More from Teppei Sato (20)

PDF
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
PDF
サイボウズの給与交渉戦 - Boss Side -
PDF
Recent compat-table issues
PDF
kintoneがAWSで目指すDevOpsQAな開発
PDF
Automated Dependency Updates with Renovate
PDF
君はyarn.lockをコミットしているか?
PDF
サイボウズのフロントエンド開発 現在とこれからの挑戦
PDF
サイボウズの現在と未来
PDF
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
PDF
サイボウズの開発を支えるKAIZEN文化
PDF
SPAと覚悟
PDF
JavaScript Language Update 2016 (LLoT)
PDF
You Don't Know ES Modules
PDF
Our wish to Flowtype
PDF
Effective ES6
PDF
DockerがYAVAY!
PDF
JavaScript Unit Test Why? What? How?
PDF
Effective JavaScript Ch.1
PDF
Browser oh browser browser
KEY
goog.require()を手書きしていいのは小学生まで
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
サイボウズの給与交渉戦 - Boss Side -
Recent compat-table issues
kintoneがAWSで目指すDevOpsQAな開発
Automated Dependency Updates with Renovate
君はyarn.lockをコミットしているか?
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズの現在と未来
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
サイボウズの開発を支えるKAIZEN文化
SPAと覚悟
JavaScript Language Update 2016 (LLoT)
You Don't Know ES Modules
Our wish to Flowtype
Effective ES6
DockerがYAVAY!
JavaScript Unit Test Why? What? How?
Effective JavaScript Ch.1
Browser oh browser browser
goog.require()を手書きしていいのは小学生まで

Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略