【 Javascript 】
2005年12月18日

Javascriptの圧縮と難読化
ここで言うJavascriptの圧縮とは、内部変数の簡略化、コメントの削除、余計な空白の削除等を行う事でJavascriptのファイルサイズを小さくする事を指します。上記の処理をすることで、結果的にソースの難読化も行えます(変数が"_1"とかになれば読みにくいですよね)。
通常HPで使うJavascriptは大規模なものにならない場合が多いので、必要ないと思われるかもしれませんが、全く同じ動作をするならできるだけソースが軽い方がいいと思いませんか?そこで今回紹介するのは、ソース圧縮のプログラムcustom_rhino.jarです。ソースにもよりますが、40%~60%くらい圧縮できます。実行する為にはjava1.4以上が必要ですが、非常に便利なので覚えておいて損はないと思います。
使い方は簡単(事前にjavaをインストールしておいてください)。
これで、"infile.js"を圧縮し"outfile.js"に吐き出してくれます(誤爆して"infile.js"と"outfile.js"を同一名にして数日立ち直れませんでした_no)。実行するJavascriptの数にもよりますが、Windowsの場合はバッチファイル(.bat)に列挙する程度で十分に便利です。大規模になれば、MakeFileを作ると更に便利になると思います。要はサーバーにUPする直前に実行したらいいわけです。
ただし、この"custom_rhino.jar"の注意点。
・また、文字列内の日本語は変換されますが、なぜか文字コードを"Shift-JIS"で保存しないと文字化けする(HP自体は文字コード"UTF-8"なんですが、"UTF-8"で保存し圧縮すると文字化けします・・・)。
・日本語の文字列を変換すると可読性は低くなりますが、圧縮どころか容量増える傾向にあります(笑
※OSはWindows2000を使っているので、UNIXの場合は日本語の挙動が違うかもしれません。
[追記]
難読化については、日本語が単純には読めない文字列に変換され(例えば"難読化"→"\u96e3\u8aad\u5316")、内部変数や関数の引数が全部意味のない文字に変換されるので、ソースの解読を抑制する効果は期待できると思います。
ただし、解析しようと思ったらいくらでも解析できるので、DVD等のカジュアルコピー防止みたく、カジュアル解析(造語)防止程度に考えておいた方がいいかもしれませんね。
ちなみに、ECS4.0のXML受信についてで紹介した、JKL.ParseXML(ver0.18)を圧縮した場合、25KB→11KBに圧縮(56%減)されました。
※圧縮して使用する場合でもCopyright(著作権表記)等のコメントは後からきちんと追加しましょうね。
投稿者 shiz : 2005年12月18日 21:50
トラックバック
このエントリーのトラックバックURL:
http://mt.amonya.com/mt-tb.cgi/3
※トラックバックのリンク確認後に掲載させて頂きます。
(当エントリー又は当サイトへのリンクがない場合は掲載しません)