1d399045.jpgGoogleClosureCompilerはJavaScriptのコードを最適化して圧縮してくれるコマンドラインツールです。まず、GoogleClosureCompilerのページの右側のFeatured downloads:からcompiler-20091217.zipをダウンロードします。zipを展開して入っているcompiler.jarが本体です。

in.jsを圧縮して、out.jsに出力するには、次のように入力します。簡単。
 java -jar compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js=in.js --js_output_file=out.js
SIMPLE_OPTIMIZATIONSを指定することでローカル変数名を短いものに置換してくれます。

メトセラで実行した結果は以下です。
・元ファイル:918KB
・自作ツールで改行とコメントを消去:623KB
・GoogleClosureCompiler:565KB

元ファイルからは39%減、そこそこ最適化したファイルからは9%減です。特にモバイルだと、ロード時間が直接ユーザビリティに響いてくるので、10%減るのは大きいですね。ちなみにFlashではバイトコードにまで落ちるので218KBになります。この差は、グローバル変数名と関数名ではないかと考えています。

最適化テクニックもすごくて、
  activity_thre[p]=2500;

  activity_thre[a]=9E4;
と16進数に置換することで容量を削減していたりもします。その発想は無かった!

さらにGoogleClosureCompilerは文法チェックもしてくれます。

compress.js:25637: WARNING - unreachable code
if(name=="")
^
compress.js:27746: WARNING - Suspicious code. This code lacks side-effects. Is there a bug?
if(player_y[i]>=511) player_y[i]>=511;
^

のように、到達しないコードや、代入を間違って比較にしてしまった部分とかを警告してくれます。JavaScriptはインタプリタなので非常に助かります。GoogleClosureCompiler、かなりオススメです。