Eric Lafortune氏は27日(米国時間)、ProGuardの最新版となる「ProGuard 4.0」を公開した。ProGuardはJavaで開発されたクラスファイル最適化ツール。クラスファイルに対して縮小化、最適化、難読化、事前検証などを実施する。プロダクトはGNU GENERAL PUBLIC LICENSE Version 2のもとで公開されている。

ProGuardを使うことでクラス名、フィールド名、メソッド名などを短くて意味がない文字列に変更、つまりクラスファイルの難読化を実現する。また使われていないクラス、フィールド、メソッド、属性を発見して削除できるほか、バイトコードの最適化、使われていないインストラクションの削除なども実現できる。バイトコードの最小化や実行の最適化などにも活用できる。さらにJava 6やJava Micro Editionなどむけにコードの事前検証ができるという特徴もある。

ProGuard 4.0はすべてのオリジナルコードが書き換えられたマイルストーンリリース。アプリケーション名はこれまで同様ProGuardのままだが、実質的に大幅なバージョンアップとみていい。多くのバイトコード最適化機能が実現されたほか、事前検証機能が追加されたのもこの4.0からとなる。

ProGuardにはいくつもの特徴があるが、通常この手のツールは難読化ツールと呼ばれることが多い。しかしながらProGuardは難読化以外にも事前検証機能を持ったことから難読化ツールという呼び方は適切ではなくなりつつある。クラスファイル最適化ツールという呼び方がより適切だろう。Javaはバイトコードが可逆的であることからソースコードの隠蔽が難しい。商用プロダクトの場合、ソースコードにノウハウがつまっていたり契約上公開できない情報が含まれていることがある。こうした場合にはProGuardのような難読化ツールが役立つことになる。

ProGuardが最も効果を発揮する場面は、クラスファイルの最小化と最適化だ。Javaアプリケーション配布物のサイズを軽減させたい場合、ProGuardを検討してみるといいだろう。特に4.0からは最適化機能も強化され活用が期待できる。以前のバージョンはNetBeans IDEのデフォルト難読化ツールとなっているが、NetBeans IDE 6.0のリリースまでにProGuard 4.0が同梱されることになるのではないかとみられる。