Page4クラス・ライブラリが何をしているか知りたいときクラス・ライブラリは便利なものであり、プログラムを開発する際にはお世話になることが多い。Frameworkに標準で含まれるものもあるし、ほかのベンダから提供されるものを使う場合もあるだろう。共通して使うクラスをクラス・ライブラリとして自分で開発することもあるだろう。クラス・ライブラリを使っていると、しばしばある種の問題に直面する。クラスの動作がはっきりしない、あるいは意図したとおりではない、という場合である。クラス・ライブラリのソース・コードがあればそれを見て確認できるが、それが提供されていない場合はリファレンス・マニュアルにより判断することになる。これの出来が悪いと頭を悩ませることになる。マニュアルの記述があいまいで、どういう動作になるのが正しいか分からなかったり、マニュアルに記述された動作と実際の動作が違ったりする場合などは、本当に悩むことになる。ここでは1つの例として、以下のような宣言を伴うメソッドがクラス・ライブラリの中にあるとしよう。これは、与えられた2つのXY座標から、その2点間の距離を求めるメソッドとする。)このメソッドを使おうとしたとき、ふと次のような疑問を持ったとする。整数で示される2点間の距離は、必ずしも整数になるとは限らない。このメソッドは整数を返す。小数部が出たとき、それはどうなるのだろうか。切り捨てられるのだろうか。四捨五入なのだろうか。ソース・コードはないし、マニュアルにもそのことは書かれていない。そんな状況に陥ったとしよう。Disassembler(ildasm.exe)を使った逆アセンブルである。Language)と呼ばれる仮想的なマシン語によって記述されている。実行ファイルをILの命令コードによる記述へと復元するものが、Disassembler(逆アセンブラ)である。DisassemblerはGUIで操作できるので、使用はさほど難しくない。ildasm.exeを探して実行し、[ファイル]メニューの[開く]で、目的のアセンブリ(具体的にはEXEファイルやDLLファイル)を開く。Disassembler(ildasm.exe)の実行画面アセンブリの内容がツリー構造で表示される。画面では、クラス「Calculate」の配下にコンストラクタ(.ctor)とDistanceメソッドが見える。次に、ツリー構造の中から目的のメソッドを探して、それをダブルクリックする。ILで記述されているDistanceメソッドの内容ツリーから該当するメソッドをダブルクリックするとこのウィンドウが表示される。一般のプログラマーがこれを読んで理解するのは困難だ。これでプログラムが何をしているか、一目瞭然となった......といいたいところだが、恐らく読者のほとんどは「何が書いてあるのかさっぱり分からない」という感想を持ったと思う。確かに、表示形式は人間に見やすい形になったが、ILが読めなければ何の意味もない。低レベルなILの学習に迫られるプログラマーはほとんどいない。従って一般のプログラマーは読めないのが普通と思って間違いないだろう。こんな状況にはどう対処すればよいのだろうか。.NET(以下VB.NET)など、一般のプログラマーが普段使っている言語に復元してくれるツールがあればベストである。いったツールが世の中にはいくつか存在する。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。