ソースコードがなくても大丈夫?
開発を行っている際に、利用しているミドルウェアやライブラリの内部で例外が発生して、そのクラスのソースコードを調べたくなることはありませんか?
例えば、以下のような場合です。
- ほかのチームが開発したモジュールのメソッドが仕様通りの動作をしない仕様通りの動作をしない
- 処理に時間がかかっているが、何の処理に時間がかかっているのか分からない何の処理に時間がかかっているのか分からない
- アプリケーションが応答しなくなり、どこかで停止しているのだが、どこで停止しているか分からないどこで停止しているか分からない
ソースコードがないため、“やきもき”していませんか?
開発者であれば、誰しもこのような経験をしたことがあると思います。ソースコードがあれば、コードを調べて原因を解析できますが、商用のミドルウェアやパッケージなどでソースコードが提供されていない場合は、ソースコードがないので解析できません。
開発元に問い合わせても、すぐには対応してもらえず、やきもきすることもしばしばあります。
オープンソースでも、対応するソースコードを探すのは大変
オープンソースのミドルウェアやフレームワークを利用している場合でも、ソースコードをIDE(統合開発環境)に設定するのは、手間が掛かります。
また、ソフトウェアで利用されているライブラリも「commons-collection.jar」「servlet.jar」というファイル名で提供されており、利用しているソースコードのバージョンの特定が困難であったり、バージョンを特定したとしても、ソースコードの入手場所を探す必要があったりと、ソースコードの特定に非常に手間が掛かります。
JD-Eclipseは、Java 5以降に対応! しかも自動!!
フランスのEmmanuel Dupuy氏が開発するEclipseプラグイン「JD-Eclipse」を利用すれば、ソースコードが存在しない場合でも、[パッケージ・エクスプローラ]や[デバッガ]からクラスファイルへアクセスするだけで自動的にクラスファイルを逆コンパイルしてくれ、あたかもそこにソースコードがあるようにコードの中を見ることができるようになります。
注意!「商用ソフトウェアの場合は、そのライセンスを確認」
商用のソフトウェアは、ものによっては、逆コンパイル(リバースエンジニアリング)を禁止しているものもあります。商用のソフトウェアでJD-Eclipseをご利用の際は、お使いのソフトウェアのライセンスをご確認ください。
以前から「JadClipse」などの逆コンパイラがありましたが、Java 5以降のバイトコード(クラスファイル)に対応していませんでした。JD-Eclipseは、Java 5以降のバイトコードでも逆コンパイルを行えることができ、アノテーションを利用したアプリケーションでも利用できます(図1)。
JD-Eclipseのライセンス
JD-Eclipseのライセンスは、“非商用”の利用の場合は無償で利用できます。ここで、「非商用」とは「商用のソフトウェアプロダクトに組み込んではいけない」という意味です。プロダクトに組む場合には注意が必要です。ツール自身の利用は、商用ソフトウェアの開発の場合でも問題ありません。
JD-Eclipseのインストール
Eclipseのメニューの新規ソフトウェアインストールを利用して、下記のアップデートサイトを入力してプラグインをインストールしてください。
注意!「JadClipseなどはアンイストールしておこう」
JD-Eclipseを利用する際、JadClipseなどのような逆コンパイラがすでにインストールされている場合、正しく動作しない場合があります。JadClipseを無効化するには、JadClipseプラグインをEclipseのプラグインディレクトリから削除してEclipseを再起動してください。
Pleiadesをご利用の場合は、Pleiadesのファイルを展開したディレクトリの下記の場所にJadClipseがインストールされているので、このファイルを削除してください。
- eclipse/dropins/Jadclipse/eclipse/plugins/net.sf.jadclipse_x.x.x.jar
次ページでは、実際に逆コンパイルをやってみましょう。生成されたソースコードも紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.