演習 1.2: 最初のプローブの作成
この演習を開始する前に、『演習 1.1: 必要なリソースのインポート』を
完了する必要があります。
これから作成するプローブは、プログラム内のメソッドが開始されるたびに報告を行います。
プローブを作成するには、次の 3 つのメインタスクを実行します。
- 空の Probekit ソース・ファイルを作成する
- Probekit ソース・ファイルの内容を作成する
- プローブをチェックする
空の Probekit ソース・ファイルの作成
ここでは、Probekit ソース・ファイルを別個のプロジェクト内に作成します。
(プローブをアプリケーションと同じプロジェクト内に作成することもできますが、プローブをビルドする
ためには、そのプロジェクトを Probekit プロジェクトに変換する必要があります。)
- プローブを保持するための新しい Java プロジェクトを作成する。
- Software Development Platform のメニュー・バーから、「ファイル」>「新規」
>「プロジェクト」をクリックする。「新規プロジェクト」ダイアログ・ボックスが開きます。
- 「Java」エントリーを展開して「Java プロジェクト」を選択し、「次へ」をクリックする。「新規 Java プロジェクト
」ダイアログ・ボックスが開きます。
- 「プロジェクト名」フィールドに「RandomNumbersProbe」と入力して、「終了」を
クリックする。
「RandomNumbersProbe」のエントリーがパッケージ・エクスプローラー・ビューに追加されます。
- プロジェクトを Probekit プロジェクトに変換する。
- パッケージ・エクスプローラー・ビューで、前のステップで作成した「RandomNumbersProbe
」プロジェクトを右クリックして、「新規」>「その他」をクリックする。「新規」ダイアログ・ボックスが開きます。
- 「すべてのウィザードを表示」チェック・ボックスを選択して、「プロファイルおよびロギング
」エントリーを展開する。
- 「Java プロジェクトを Probekit プロジェクトに変換 (Convert Java Projects to Probekit
Projects)」を選択して、「次へ」をクリックする。
- 「使用可能化の確認」ダイアログ・ボックスが開いた場合
は、「常に機能を使用可能にし、今後このメッセージを表示しない」をクリックして、「OK」をクリックする。「Java プロジェクトを
Probekit プロジェクトに変換 (Convert Java Projects to Probekit Projects)」ダイアログ・ボックスが開きます。
- 「RandomNumbersProbe」プロジェクトのチェック・ボックスのみが選択されていることを確
認して、「終了」をクリックする。
- 新しい Probekit ソース・ファイルを RandomNumbersProbe プロジェクト内に作成する。
- パッケージ・エクスプローラー・ビューで、「RandomNumbersProbe」を右クリックして、
「新規」>「ファイル」をクリックする。「新規ファイル」ダイアログ・ボックスが開きます。
- 「RandomNumbersProbe」を選択して親フォルダーに設定する。
- 「ファイル名」フィールドに「RandomNumbersProbe.probe」(.probe 拡張子が必要
) と入力して、「終了」をクリックする。「RandomNumbersProbe.probe」のエントリーがパッケージ・エクス
プローラー・ビューに追加されます。
Probekit エディターと問題ビューが開きます。
これで、空の Probekit ソース・ファイルをそれ自身のプロジェクト内に作成できました。
このファイルは Probekit プロジェクト内にあり、ワークスペースで「自動的にビルド (Build Automatically)」を有効にしているため、プローブ・コンパイラーはこのソース・ファイルのコンパイルを既に試行済みです。
問題ビューでは、空のファイルは有効な Probekit ソース・ファイルでないためにエラーが報告されます。
Probekit ソース・ファイルの内容の作成
次に、Probekit エディターを使用してプローブを作成します。
各プローブ定義には、そのプローブのロジックを定義するフラグメントが含まれています。
これから作成するプローブには、entry 型の単一の Java コード・フラグメントが含まれています。
entry フラグメントは、調査対象プログラム内の指定されたメソッドのメソッド入り口 (entry) を通過する時にトリガーされるフラグメントです。
このプローブでは、メソッドが開始されるたびに、entry フラグメントによってクラス名とメソッド名が出
力されます。
このためには、このフラグメントのソース・コードを作成する必要があると共に、このフラグメントがアクセ
スできる必要のあるクラス名とメソッド名という 2 つのデータを定義する必要があります。
注: Probekit は、entry フラグメント以外の型のフラグメントもサポートしています。
例えば、指定したメソッドの終了時に実行されるフラグメントや、指定したメソッドの例外処理時
に実行されるフラグメントを作成することもできます。
詳細は、ヘルプ・システムを参照してください。
ここでは、すべてのクラスとメソッドに適用されるようにプローブを作成します。
ただし、このプローブを実行するときには、System クラスを起動プロシージャーの一部としてフィルター
により除外して、このプローブの範囲を狭めます。
プローブを作成するには、以下のようにします。
- Probekit エディターの下部で、「プローブ」タブをクリックする。(「一般」ページのエントリーはオプションです。
これらのエントリーは、記録保持用に使用できます。)
- 「プローブの追加」をクリックする。「Probe」エントリーが、エディターの左側のツリー・ペインに
追加されます。
- 新規作成した「Probe」エントリーを右クリックして、「新規」>「フラグメン
ト」をクリックする。「Fragment」エントリーが、ツリー・ペインの「Probe」エントリーの
下に追加されます。
デフォルトでは、フラグメントは entry フラグメントとして作成されます。
(Probekit エディターの右側の編集ペインにある「フラグメント型」フィールドでは、「entry」
も選択肢として用意されています。)
- 「Probekit エディター」ビューのタブをダブルクリックしてエディターを拡大し、編集ペイン全体が表
示されるようにする。
(タブをもう一度ダブルクリックすると、ビューが元のサイズに戻ります。)
- 定義する 1 つ目のデータ項目であるクラス名を保持する変数を作成する。
- 編集ペインの「データ項目」の下で「追加」をクリックする。className 型のデフォルトのデータ項目が追加されます。
- 「編集」をクリックする。
- 「データ項目の編集」ダイアログ・ボックスの「名前」フィールドに、「cname」を変数名として入力して、「OK」をクリックする。
- 2 つ目のデータ項目であるメソッド名を保持するための変数を作成する。
- 「追加」をもう一度クリックして「編集」をクリックし、新たに追加したデータ項
目を編集する。
- データ型として、「methodName」をリストから選択する。
- 「名前」フィールドに「mname」を変数名として入力して、「OK」をクリックする。
- 「Java コード」領域で、次のコード行を入力する。
System.out.println("[Enter method " + cname + "." + mname + "]");
- メニュー・バーから「ファイル」>「保管」をクリックする。プローブ・コンパイラーは、
自動的にプローブをそのソース・コードからコンパイルします。
プローブのチェック
プローブを保管したら、プローブ・コンパイラーは問題ビューでエラーを報告します。
問題ビューをチェックして、問題が発生していないかどうか確認してください。
エラーがある場合は、プローブ・エディターでこれらのエラーを訂正して、プローブをもう一度保管します。
問題ビューには、次の 2 種類のエラーが報告されます。
- 1 種類目のエラーは、Probekit ソース・ファイル内の構造エラーです。
例えば、プローブ・エレメントには同じ型の 2 つのフラグメントを含むことはできません。
問題ビューでは、この種類のエラーは、プローブ・ソース・ファイル内のエラーとして「リソース」列で報
告されます。
- もう 1 種類のエラーは、プローブ・フラグメントの Java ソース・コード・コンポーネント内のエラ
ーです。
Probekit の内部構造のため、これらのエラーは実際には、Probekit によって生成された別のファイルに出力されます。この場合、このファイルは RandomNumbersProbe_probe.java とい
う名前です。問題ビューでこのエラーをダブルクリックすると、この生成された Java ソース・ファイルが開きま
す。
このファイル上で問題の修正をしないでください。このファイルで加えた変更は、
プローブ・コンパイラーが次回にそのファイルをプローブ・ソースから生成するときに上書きされるからです。
代わりに、生成された Java ファイルを調べて、どのフラグメントでそのエラーが発生しているのかを
確認してから、そのフラグメント内の問題を Probekit エディターを使用して修正してください。
以上で終了です。最初のプローブを作成できました。
これで、『演習 1.3: プローブの適用』を開始する準備ができました。