SlideShare uma empresa Scribd logo
1 de 31
ライブラリにあらず!
∼Google   Closure Toolsの事始め∼
           面白法人カヤック
      HTMLファイ部 比留間和也
自己紹介

• 面白法人カヤック
HTMLファイ部所属
比留間 和也

• 最近はJSばっかりで、
あんまりHTML書いてません。
ちょっと書きました
すべての人に知っておいてほしい
HTML5 & CSS3 の基本原則




  すべての人に知っておいてほしい
   スタイルシートデザインの基本原則
Google Closure Toolsとは
Google Closure Toolsは、
いわゆる一般的なJavaScriptライブラリ
ではありません
GCTは3種の神器
• Google Closure Library

• Google Closure Compiler

• Google Closure Template
これら3つが組み合わさって初めて
「Google Closure Tools」の真価が発揮される
Google Closure Template
SoyToJsSrcCompiler.jarというファイルを使います
Buildする


$ java -jar SoyToJsSrcCompiler.jar 
--shouldProvideRequireSoyNamespaces 
--outputPathFormat simple.js simple.soy
Buildする


$ java -jar SoyToJsSrcCompiler.jar 
--shouldProvideRequireSoyNamespaces 
--outputPathFormat simple.js simple.soy
Google Closure Compiler
弊社社内でも最後の仕上げとして、圧縮する
ために使われたりしています
Compileする
SRC = js/hoge.js js/fuga.js

COMBINE = js/hoge.prod.js
COMPRESS = js/hoge.prod.min.js

$(COMBINE) : $(SRC)

   cat $^ > $@


   java -jar /Applications/gcc/compiler.jar 
    --js $(COMBINE) 
    --js_output_file $(COMPRESS)

.PHONY: clean
clean :

    rm -f $(COMBINE) $(COMPRESS)

               弊社で使われているshell                    script
Compileする
SRC = js/hoge.js js/fuga.js

COMBINE = js/hoge.prod.js
COMPRESS = js/hoge.prod.min.js

$(COMBINE) : $(SRC)

   cat $^ > $@


   java -jar /Applications/gcc/compiler.jar 
    --js $(COMBINE) 
    --js_output_file $(COMPRESS)

.PHONY: clean
clean :

    rm -f $(COMBINE) $(COMPRESS)

               弊社で使われているshell                    script
Google Closure Library
Google Closure Toolsの中でもコア機能
Googleの集大成ともいえるライブラリ群
Build
 $ python ./closure-library/closure/bin/build/
 closurebuilder.py 
 --root=./js 
 --root=./closure-library 
 --namespace="hoge" 
 --output_mode=compiled 
 --output_file=hoge.min.js 
 --compiler_jar=/Applications/gcc/compiler.jar 
 -f "--define=goog.DEBUG=false"



圧縮のレベルを指定するオプション
 #-f "--compilation_level=ADVANCED_OPTIMIZATIONS"
Build
 $ python ./closure-library/closure/bin/build/
 closurebuilder.py 
 --root=./js 
 --root=./closure-library 
 --namespace="hoge" 
 --output_mode=compiled 
 --output_file=hoge.min.js 
 --compiler_jar=/Applications/gcc/compiler.jar 
 -f "--define=goog.DEBUG=false"



圧縮のレベルを指定するオプション
 #-f "--compilation_level=ADVANCED_OPTIMIZATIONS"
• JavaScriptで手軽にクラスベース風の継承機能
を提供


• require的な各ファイルの依存関係を解決して
くれるPythonベースのツール


• 依存関係の解決から圧縮までをコマンドライ
ン一発でやってくれるPythonベースのツール
Google Closure Toolsは、
こうしたツール群を駆使してつくり上げる
巨大なフレームワーク
ライブコーディング
Appendix
• Google Closure Tools
• Google Closure Library
• Google Closure Templates
• Google Closure Compiler
• Google Closure compilerをオンラインで

• Closure Libraryによるアプリ開発のはじめ方
ご清聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

CategoLJについて
CategoLJについてCategoLJについて
CategoLJについて
Toshiaki Maki
 

Mais procurados (20)

CategoLJについて
CategoLJについてCategoLJについて
CategoLJについて
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
 
Reactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたReactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみた
 
Babelで先取り次世代javascript
Babelで先取り次世代javascriptBabelで先取り次世代javascript
Babelで先取り次世代javascript
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
200k/sec
200k/sec200k/sec
200k/sec
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
 
Web socket and gRPC
Web socket and gRPCWeb socket and gRPC
Web socket and gRPC
 
Cocoa勉強会#63-Xcode Server〜みんなで使ってみる
Cocoa勉強会#63-Xcode Server〜みんなで使ってみるCocoa勉強会#63-Xcode Server〜みんなで使ってみる
Cocoa勉強会#63-Xcode Server〜みんなで使ってみる
 
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
 
Lightweight C#
Lightweight C#Lightweight C#
Lightweight C#
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScript
 
About Reauire.js
About Reauire.jsAbout Reauire.js
About Reauire.js
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについて
 
PowerShell de Azure
PowerShell de AzurePowerShell de Azure
PowerShell de Azure
 

Semelhante a ライブラリにあらず! 〜Google Closure Toolsの事始め〜

TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
Nobuhiro Sue
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
Tomonori Yamada
 
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3editionRails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
cmtomoda
 

Semelhante a ライブラリにあらず! 〜Google Closure Toolsの事始め〜 (20)

Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
Haikara
HaikaraHaikara
Haikara
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
Pycon2014 django performance
Pycon2014 django performancePycon2014 django performance
Pycon2014 django performance
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3editionRails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像
 
G * magazine 1
G * magazine 1G * magazine 1
G * magazine 1
 

Mais de Kazuya Hiruma

Mais de Kazuya Hiruma (20)

MESONプロジェクトから学ぶこれからのAR開発に必要なこと
MESONプロジェクトから学ぶこれからのAR開発に必要なことMESONプロジェクトから学ぶこれからのAR開発に必要なこと
MESONプロジェクトから学ぶこれからのAR開発に必要なこと
 
PORTAL with Nreal in CES 2020 開発の学び @XR Hub
PORTAL with Nreal in CES 2020 開発の学び @XR HubPORTAL with Nreal in CES 2020 開発の学び @XR Hub
PORTAL with Nreal in CES 2020 開発の学び @XR Hub
 
ARグラスで 魅力的な絵作り
ARグラスで 魅力的な絵作りARグラスで 魅力的な絵作り
ARグラスで 魅力的な絵作り
 
AWE Nite ARKit3 Hackathon
AWE Nite ARKit3 HackathonAWE Nite ARKit3 Hackathon
AWE Nite ARKit3 Hackathon
 
レイマーチ入門勉強会資料
レイマーチ入門勉強会資料レイマーチ入門勉強会資料
レイマーチ入門勉強会資料
 
MESONで手がけたARアプリ AR Developer Meetup #2
MESONで手がけたARアプリ AR Developer Meetup #2MESONで手がけたARアプリ AR Developer Meetup #2
MESONで手がけたARアプリ AR Developer Meetup #2
 
みんなレイ飛ばしてる?
みんなレイ飛ばしてる?みんなレイ飛ばしてる?
みんなレイ飛ばしてる?
 
VRゲーム制作楽しいよ! @UnityおとなのLT大会
VRゲーム制作楽しいよ! @UnityおとなのLT大会VRゲーム制作楽しいよ! @UnityおとなのLT大会
VRゲーム制作楽しいよ! @UnityおとなのLT大会
 
ElminaAR - Unity x ARKit 入門Meetup
ElminaAR - Unity x ARKit 入門MeetupElminaAR - Unity x ARKit 入門Meetup
ElminaAR - Unity x ARKit 入門Meetup
 
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
 
UnityでARKitハンズオン
UnityでARKitハンズオンUnityでARKitハンズオン
UnityでARKitハンズオン
 
すぐそこにある未来〜AR〜
すぐそこにある未来〜AR〜すぐそこにある未来〜AR〜
すぐそこにある未来〜AR〜
 
VRで酔わないコンテンツ作り
VRで酔わないコンテンツ作りVRで酔わないコンテンツ作り
VRで酔わないコンテンツ作り
 
WebVRコンテンツ制作入門
WebVRコンテンツ制作入門WebVRコンテンツ制作入門
WebVRコンテンツ制作入門
 
WebVRってこんなことできるよ!
WebVRってこんなことできるよ!WebVRってこんなことできるよ!
WebVRってこんなことできるよ!
 
そしてWebVR
そしてWebVRそしてWebVR
そしてWebVR
 
Unity入門ハンズオン
Unity入門ハンズオンUnity入門ハンズオン
Unity入門ハンズオン
 
WebVR 酔いづらいコンテンツの作り方
WebVR 酔いづらいコンテンツの作り方WebVR 酔いづらいコンテンツの作り方
WebVR 酔いづらいコンテンツの作り方
 
WebVRことはじめ
WebVRことはじめWebVRことはじめ
WebVRことはじめ
 
集まっTail #5 LT
集まっTail #5 LT集まっTail #5 LT
集まっTail #5 LT
 

Último

Último (12)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

ライブラリにあらず! 〜Google Closure Toolsの事始め〜

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n