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