「MoMA」を使って.NETアプリをLinuxのMonoに移植してみる.NET互換性検証ツールレビュー(3/5 ページ)

» 2009年04月13日 08時00分 公開
[Jeff Cogswell,eWEEK]
eWEEK

 次に、MoMAの機能の概要を説明する。このプログラムは専用のディレクトリにインストールされる。MoMAには数個のDLLが含まれ、プログラム自身も.NETバイナリであるからだ。

 MoMAは.NETバイナリなのだから、このツールを使ってMoMA自身を分析できるのではないかと考えた。実際、MoMA上でMoMAを実行することができた(単なる好奇心からやったことだが)。MoMAでは何も問題が検出されないとわたしは予想した。

 MoMAプログラムは、幾つかのステップからなるウィザードとして動作する。

 ステップ1は、MoMAの機能を説明した導入画面である。

moma1

 ステップ2では、バイナリを選択し、どのMonoバージョンに対してテストするかを指定する。この画面には、テストの対象となるバイナリのリストボックスが示されている(複数のバイナリをテストすることも可能)。このステップでは、個々のファイルあるいはディレクトリ全体を選択できる。ディレクトリ全体を選択する場合は、テストしたいバイナリが含まれるディレクトリが表示されるまでディレクトリツリーをたどり、そのディレクトリを選ぶ。するとMoMAツールのリストボックスには、そのディレクトリに含まれるすべてのDLLと.exeファイルが表示される。テストする必要のないものは、このリストから手作業で取り除くこともできる。

moma2

 多数のバイナリファイルがある場合は、このようにディレクトリで選択する方法が効果的だ。そうでない場合は、「+」ボタンをクリックして個々のバイナリを追加していけばよい。(わたしはちょっとした裏技も発見した。個々のファイルを選択するための「File-Open」ボックスでは、複数のファイルを選択できるのだ。つまり、バイナリを選択する方法はたくさんあるということだ。)

 このテストでは、MoMAのディレクトリから3つのDLLと1つの実行形式ファイルを選び、リストボックスに含めた。次に「Next」をクリックして、ウィザードの次の画面に移動した。

 ウィザードのステップ3ではスキャニングが開始される。ツールが最初に行うのは、選択されたすべてのバイナリが本当にCLIバイナリであるか確認することだ。例えば、従来のWin32 DLL/.exeファイルが選択されていると、そのファイルはスキップされるというアラートが表示される。

mono3

 次に、検出された問題の要約が画面に表示される。MoMAツール自身のバイナリに対するテストでは、わたしが予想した通り、何の問題も検出されなかった。4つのカテゴリーについてテストが行われ、いずれも合格した。

  • All methods called exist in Mono:Mono Projectに実装されていないメソッドを呼び出していないことを意味する。
  • No P/Invokes are called:OSへの直接呼び出しを行っていないことを意味する。
  • No methods that throw NotImplementedException are called:技術的にはMono内でスタブとして存在するけれども、まだコード化されていないメソッドを呼び出していないことを意味する(Monoは進行中のプロジェクトであることをお忘れなく)。
  • No methods marked with [MonoTodo] are called:上のカテゴリー(「No methods that throw……」)と基本的に同じ意味である。

 ステップ4は非常に興味深い(間違った使い方をしなければの話だが)。検査結果をMono Projectに直接提出することができるのだ。今回はMoMAを使ってそれ自身をテストし、文句なしに合格となったので、「Submit Report」ボタンはクリックしなかった。

mono5

 「Next」ボタンをクリックしてステップ5に移動したところ、Monoおよびツールなどダウンロードするためのボタンが3つあるだけだった。

mono6

Editorial items that were originally published in the U.S. Edition of “eWEEK” are the copyrighted property of Ziff Davis Enterprise Inc. Copyright (c) 2011. All Rights Reserved.

注目のテーマ