Closure Tools2013/08/24 LLまつり
自己紹介•天野 祐介 (@ama_ch)•サイボウズ株式会社• kintone開発チーム•WEB+DB PRESSにてJS連載を執筆中「JavaScript活用最前線 ─ 大規模開発の現場から」
• webデータベース型のビジネスアプリを作成できるサービス
•ノンプログラミングで作れる•データベース + コミュニケーション
kintoneの規模
• PG12名• JSは約21万行
JSフレームワーク
• Closure Compiler• Closure Library• Closure Templates• Closure Linter + JSHint
Closure Library•フルスタックなJSライブラリ•クラスベースなオブジェクト指向•低レイヤな機能からUIコンポーネント, テストスイートまで
• Closure Compilerと一緒に使われることを想定
Closure Compiler
• JS圧縮・難読化ツール•高い圧縮率•詳細なエラーレポート• JSDocアノテーションによる型付け
JSDocアノテーション
エラーレポート
ツール同士の連携
• Closure Tools同士を一緒に使うと、さらに最適化される
• Closure CompilerがClosure Libraryの特定のコードを削除したり型推論したり
コンパイル前 コンパイル後
Warning
連携なし
コンパイル前 コンパイル後
Warning
連携なし
assertで要素の存在は確認しているのに、nullableだと怒られる
コンパイル前 コンパイル後
Warningなし
連携あり
コンパイル前 コンパイル後
Warningなし
連携あり
• CompilerがLibraryのassertを削除• Libraryのassertを見て型推論
Closure Toolsまとめ• Googleで使われている実績•フルスタックなライブラリ•高い圧縮率• JSDocアノテーションによる型付け•コンパイル時の詳細なレポート•ツール同士の連携