Javascript

2005年12月18日 はてなブックマーク livedoorクリップ

Javascriptの圧縮と難読化

ここで言うJavascriptの圧縮とは、内部変数の簡略化、コメントの削除、余計な空白の削除等を行う事でJavascriptのファイルサイズを小さくする事を指します。上記の処理をすることで、結果的にソースの難読化も行えます(変数が"_1"とかになれば読みにくいですよね)。

通常HPで使うJavascriptは大規模なものにならない場合が多いので、必要ないと思われるかもしれませんが、全く同じ動作をするならできるだけソースが軽い方がいいと思いませんか?そこで今回紹介するのは、ソース圧縮のプログラムcustom_rhino.jarです。ソースにもよりますが、40%~60%くらい圧縮できます。実行する為にはjava1.4以上が必要ですが、非常に便利なので覚えておいて損はないと思います。

使い方は簡単(事前にjavaをインストールしておいてください)。

java -jar custom_rhino.jar -c infile.js > outfile.js

これで、"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

※トラックバックのリンク確認後に掲載させて頂きます。
(当エントリー又は当サイトへのリンクがない場合は掲載しません)

コメント
コメントしてください




保存しますか?