Javascriptの難読化&圧縮ツール:custom_rhino.jar

2010年2月14日

JavascriptでWebサービスを構築したとしても、ソース丸ごとエンドユーザが いつでも閲覧できる状態になってしまいます。

なんか、もったいないな〜という気が 沸いてくるもんです。そういうときに有効なツールが custom_rhino です。


javascriptはソースとしてそのままクライアントブラウザの元に送信されますので、 コメント文・長い変数名、スペース・タブ・改行コードなど、すべてが*そのまま*送信されるのです。


 なので、これを圧縮・難読化して送信するといったツールです。

圧縮方法としては、

  • コメント文除去
  • スタック変数・関数名を「_」で始まる短い特殊文字(符号語)に変換
  • 定数文字列(""で囲まれているところ)の表現方法を最適化


などの手法を駆使して、ソースのテキスト長を短くするといったものです。 

なので結果的にこれが難読化につながるわけです。 


またうれしいことに、マルチバイトの%エンコーディングも行ってくれます。 

これは非常にありがたく、通常ブログパーツなんかを作っていると、

貼り付け先の charsetとブログパーツ側のJavascriptソースの文字コードが一致してないと 

プログラムとして認識されない羽目になり、実行エラーにつながります (文字化け現象も当然として)。


でも、このツールのおかげでcharsetとは異なる 文字コードでjavascriptを実装していても怖くないんですねー。すばらしい。


また圧縮率としては、元ソースの40〜50%程度にまでなりますので、

Javascriptの ソース送信時間の短縮にもつながってありがたい効果ですね。 

具体的には以下のようなコマンドを実行します。

1
$ java -jar custom_rhino.jar -c ahahan.js > ahahan_comp.js
これで、圧縮・難読化されたJavascriptソース(ahahan_comp.jp)が手に入ります。 

改行コードは除去してくれないようなので、

改行コードについては適当に自分でプログラム書いて 除去しましょう。


そうすると、ぱっと見、全く解読できません。

#まぁ、ほんとうは簡単に解読できるツールあるんですけどね。。。