Google Closure Tools

Closure ToolsというものがGoogleからアナウンスされた.JavaScript関連の3つの技術の総称らしい.

  • Closure Compiler
  • Closure Library
  • Closure Templates

Closure Compiler

JavaScript -> JavaScriptコンパイラ.変数名を短くしたり,実際には使われていないコードを削除したりすることで,JavaScriptソースコードを圧縮し,ダウンロードや実行を高速化する,とのこと.文法チェック,参照のチェックもしてくれるらしい.実行する前に,わかるのはうれしいかもしれない.

FirefoxプラグインJavaScriptデバッガFireBugの拡張Closure Inspectorを用いると,圧縮したコードに対して普通のコードと動揺にデバッグできる,とのこと.変数名は失われていそうだが,どうやってやるんだろう?

Closure Library

JavaScriptのライブラリ集.パッケージ関連や,継承の実現など言語レベルの機能から,UIウィジェットまで幅広い.
API ドキュメントを見ると度肝を抜かれる.およそ考えつくようなウィジェットが全部ある感じ.こりゃすごい.
どうもThird Partyライブラリをバックエンド?として使っているらしい.

Closure Templates

Yet another template engine, ではあるが,

  • テンプレートをターゲットコードにコンパイルするので高速.
  • ターゲットコードとして,JavaJavaScriptの双方が選択可能.したがって,一つのテンプレートで,Serverで生成する場合とブラウザで生成する場合を吸収できる.
  • テンプレートから別のテンプレートを呼び出すことができる.これによって,画面の部品をテンプレートで構成して,それを組み合わせてレンダリングすることが容易になる.

といった特徴がある.

ただし,Javaで使うときには,構造データをいちいちMapとして書かなければいけないようだ.FreeMarkerやVelocityのようにBeanを解釈してはくれないらしい.これは結構きつい.

所感

なんで「Closure」なんだろう?いろいろドキュメントを読んでもわからなかった.
あと,GWTとの関連はどうなってるんだろう?Closure Libraryで使われているWidgetの多くはGWTと共有しているのだろうが.
GWTの技術者は,「JavaScriptは言語としては面白いけど,静的型付けがないため,デバッグしづらく,Software Engineering的に苦しい.だからJavaのコードからJavaScriptを生成するのだ」といっていた.私もこの意見には賛成なのだが,ひょっとすると,Closure Compiler,LibraryをEclipseと組み合わせて,静的チェックを行うようにすれば,Javaと同じように開発できるぞ,ということなのだろうか?