2009年11月5日,Googleは自社サービス製品であるGmail,Google Maps,Google Docsなどの開発に使用しているJavaScriptアプリ開発ツール群「Google Closure Tools」を一般公開しました。
"Closure"は一般的に,閉鎖や閉店といった意味で使われます。ツールの命名としては少しネガティブなニュアンスを感じますが,Google Closure Toolsの場合は,終結といった意味で,開発プロジェクトにおける最終ステップの仕上げ用ツール。すなわち“栓”という意味で中身があふれ出さないようにキッチリ閉めておくものといった意味合いから命名されているようです。
Ultimate(究極)に近い意味でGoogleの自信の表れと受け取った方がいいかもしれません。Googleで新規公開になったプロジェクトとしては珍しく,ベータ版の表記もありません(Google Mapsなどはいまだにベータです)。
Google Closure Toolsは以下の三つのツールで構成されています。
- JavaScriptのコードを最適化する「Closure Compiler」
- ライブラリの「Closure Library」
- テンプレートの「Closure Templates」
わかりやすいClosure Compiler
Closure Compilerについて説明しましょう(詳細は公式ページを参照)。もともとコンパイルは,人間にとって可読性のあるソースコードから,PCが直接解釈できるバイナリ・コードへと変換する作業のことをいいます。JavaScriptはインタプリタのスクリプト言語ですから,バイナリを生成する必要はありません。したがってコンパイラという名称はちょっと誤解を呼ぶかもしれません。
Closure Compilerは元のJavaScriptコードに対して大きく分けて二つの処理を行います。
- 既存のJavaScriptコードの最適化
- 外部参照しているコードの取り込み
実例を見ながら確認してみましょう。まずはコードの最適化機能です。ブラウザから利用できるClosure CompilerのWeb版で実際にJavaScriptコードがどう最適化されるのかを体験してみます(図1)。
Closure Compiler Web版は最初にアクセスした段階で,左側のテキストエリアに次のようなコードが書かれています。非常に小さくてシンプルなJavaScriptで,初心者でも理解できるサンプルです。
// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name default.js
// ==/ClosureCompiler==
// ADD YOUR CODE HERE
function hello(name) {
alert('Hello, ' + name);
}
hello('New user');
上の4行のコメントはコンパイルのオプション指定(実質的なオプション指定そのものは真ん中の2行です)です。@compilation_levelでどこまでの最適化を行うか,@output_file_nameで最適化後のファイル名を指定します。