CodeZine(コードジン)

特集ページ一覧

FileMaker Pro Advancedの強力なデバッグツール

ITエンジニアのためのFileMaker講座 第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/06/19 14:01

 本連載では、リレー連載の形式で「FileMaker Pro」というデータベースソフトウェアを紹介します。連載6回目となる本稿は、作成したスクリプトのデバッグ作業には欠かせないFileMaker Pro Advancedの「データビューア」と「スクリプトデバッガ」について紹介します。

はじめに

 連載6回目となる本稿は、作成したスクリプトのデバッグ作業には欠かせないFileMaker Pro Advancedの「データビューア」と「スクリプトデバッガ」について紹介します。その他、スクリプト作成のポイントについてもいくつか紹介します。

「データビューア」と「スクリプトデバッガ」を使いこなそう

 開発者にとっては、いかに効率よくデバッグできるツールが揃っているかが重要なポイントとなってきます。例えば、処理内容を追うことができるデバッガは最も必要とされるツールと言えます。

 FileMaker Pro Advancedには「データビューア」や「スクリプトデバッガ」などのツールが用意されているため、複雑なスクリプトで問題が発生したときに、その問題となるステップやデータの状態を確認し、確実に対応することが可能となります。

スクリプトデバッガを起動する

 スクリプトをデバッグするときは事前に「スクリプトデバッガ」を起動しておきます。

図01 [ツール]メニューから[スクリプトデバッガ]を選択しスクリプトデバッガを表示します。
図01 [ツール]メニューから[スクリプトデバッガ]を選択しスクリプトデバッガを表示します。
図02 [スクリプトデバッガ]ウインドウが表示された状態で、スクリプトを実行するとスクリプトデバッガにスクリプトが表示されます。
図02 [スクリプトデバッガ]ウインドウが表示された状態で、スクリプトを実行するとスクリプトデバッガにスクリプトが表示されます。

 スクリプトデバッガには、いくつかのボタンがあり、これらのボタン操作でスクリプトをコントロールします。

スクリプトデバッガのボタン
ボタン 処理
[ステップオーバー] 1ステップずつ実行します。実行するステップが[スクリプト実行]の場合は次のブレークポイントまでステップが実行されます。サブスクリプトにブレークポイントがあれば、そこで停止します。
[ステップイン] 1ステップずつ実行します。実行するステップが[スクリプト実行]の場合はサブスクリプトの先頭のステップで停止します。
[ステップアウト] 現在のスクリプトのステップすべてを実行します。サブスクリプトを含めて途中にブレークポイントがあれば、そこで停止します。
[次のステップを設定] 実行するステップを指定した位置に移動します。現在のステップから指定されたステップの間は実行されません。
[実行/一時停止] すべてのステップを実行します。ただし、途中にブレークポイントがあれば、そこで停止します。
[全スクリプト終了] 実行を停止します。
[ブレークポイントの設定/消去] 選択したスクリプトステップに対して、ブレークポイントの設定と解除を行います。設定されたステップにはマークが表示され、「実行/一時停止」ボタンをクリックしたときに、設定されたステップで一時停止します。
[スクリプトの編集] 現在実行しているスクリプトの[スクリプトの編集]ウインドウを開きます。スクリプトの作成時と同様に編集することができます。スクリプト実行途中で編集内容を保存した場合、スクリプトは停止します。
[データビューアを開く/閉じる] [データビューア]の開閉を行います。
[スクリプトの認証/認証解除] スクリプトのロックを解除します。FileMaker Proは高度なセキュリティ機能によりデータベースに対してさまざまなアクセス権を設定することができます。スクリプトについても編集権限のないユーザーはデバッグすることができません。
図03 実際に[ステップオーバー]ボタンをクリックしてスクリプトステップを進めていくと順番に実行しているステップに青い矢印マークが移動します。
図03 実際に[ステップオーバー]ボタンをクリックしてスクリプトステップをすすめていくと順番に実行しているステップに青い矢印マークが移動します。
図04 [スクリプト実行]ステップで[ステップイン]ボタンをクリックするとサブスクリプトの先頭に青い矢印マークが移動します。
図04 [スクリプト実行]ステップで[ステップイン]ボタンをクリックするとサブスクリプトの先頭に青い矢印マークが移動します。
図05 [スクリプトデバッガ]ダイアログの下部にある[アクティブなスクリプト]の枠内には、呼び出し元のスクリプト名とサブスクリプト名が表示されます。
図05 [スクリプトデバッガ]ダイアログの下部にある[アクティブなスクリプト]の枠内には、呼び出し元のスクリプト名とサブスクリプト名が表示されます。
図06 ステップをすすめ[レイアウト切り替え]ステップを実行するとサンプルのレイアウトが実際に切り替わっていることが確認できます。
図06 ステップをすすめ[レイアウト切り替え]ステップを実行するとサンプルのレイアウトが実際に切り替わっていることが確認できます。
図07 ウインドウからレコードを選択する操作によってもステップが実行されます。
図07 ウインドウからレコードを選択する操作によってもステップが実行されます。

 [データビューアを開く/閉じる]ボタンをクリックし、[データビューア]を表示してみると、サンプルで選択されたレコードの値が表示されます。

 または[ツール]メニューから[データビューア]を選択し表示することもできます。

図08 [データビューア]には実行中のスクリプトで[フィールド設定]ステップで指定されたフィールド名がすべて表示されます。また、ステップを進めていく過程で各フィールドの値の変化を見ることができます。
図08 [データビューア]には実行中のスクリプトで[フィールド設定]ステップで指定されたフィールド名がすべて表示されます。また、ステップをすすめていく過程で各フィールドの値の変化を見ることができます。

データビューアの使い方

 データビューアには上部の「現在」と「監視」というタブを切り替えることで、現在のスクリプトで使用しているフィールド以外の値も参照することができます。また計算式を入力して直接結果を確認することができます。

図09 データビューアの監視タブの、プラスマークのボタンをクリックすることにより、フィールド名や変数また計算式を入力する[式の編集]ダイアログが表示されます。
図09 データビューアの監視タブの、プラスマークのボタンをクリックすることにより、フィールド名や変数また計算式を入力する[式の編集]ダイアログが表示されます。
図10 [式の編集]ダイアログで入力する値は、直接タイプすることもできますが、フィールド名のリストから監視するフィールドを指定したり、また、スクリプトで指定している計算式と同じ式を指定するといったことができます。
図10 [式の編集]ダイアログで入力する値は、直接タイプすることもできますが、フィールド名のリストから監視するフィールドを指定したり、また、スクリプトで指定している計算式と同じ式を指定するといったことができます。
図11 入力した式はリスト上に表示され、スクリプトデバッガでステップを進めている間、同時にその値の変化を監視することができます。
図11 入力した式はリスト上に表示され、スクリプトデバッガでステップを進めている間、同時にその値の変化を監視することができます。

 リストの式を編集するときは、式を選択し鉛筆マークボタンをクリックするか、直接式をダブルクリックして[式の編集]ダイアログに式を表示します。

 一度登録した式は、データビューアを閉じても入力した式は消去されないので、監視を継続することができます。そして、監視が終了したものから削除ボタンで削除します。

スクリプト作成のポイント

 ここで少し、本格的なスクリプト作成には欠かせないポイントを紹介します。

計算結果を一時的に保管するには

 計算結果を他の計算式で使用するため一時的に保管する場合には、変数を使用します。変数は[変数を設定]ステップで作成できます。また、変数には「$count」や「$item」のように「$」で始まるローカル変数と、「$$user」や「$$account」のように「$$」で始まるグローバル変数があり、保管された値のクリアのタイミングが違います。ローカル変数の場合はスクリプト終了時にクリアされ、グローバル変数の場合はファイルが閉じられた時にクリアされます。

図12 ローカル変数「$window」を作成し現在のウインドウ名をセットします。
図12 ローカル変数「$window」を作成し現在のウインドウ名をセットします。

スクリプトに値を渡すには

 ボタンをクリックして実行するスクリプトに引数を渡すには、[スクリプト指定]のスクリプトパラメータで指定します。引数の指定は、数字やテキストといった固定値や、フィールド名や計算式により状態が変化する値で行えます。また呼ばれたスクリプト側ではGet ( スクリプト引数 )関数を使用し値を受けとることができます。

図13 引数をスクリプトパラメータで指定します。
図13 引数をスクリプトパラメータで指定します。
図14 スクリプト中ではGet ( スクリプト引数 )関数で取得します。
図14 スクリプト中ではGet ( スクリプト引数 )関数で取得します。

スクリプトの実行結果を取得するには

 呼ばれたサブスクリプトでは実行結果を[現在スクリプト終了]ステップの引数にセットします。また元のメインスクリプトではGet ( スクリプトの結果 )関数で取得します。

修飾キーの種類を調べるには

 ボタンのクリック時に、「Ctrl」や「Shift」といった修飾キーを押しているかどうかを、呼ばれたスクリプト側で検出することができます。Get ( アクティブ修飾キー )関数により「Shift:1」「Ctrl:4」「Alt:8」などの修飾キーを数値で区別します。

 例えば、「Shift」と「Ctrl」が同時に押された場合は「5」となり複数押されている場合は合計した値となります。

 ちなみにスクリプトトリガで指定されたタイミングで修飾キーを検出するにはGet ( トリガ修飾キー )関数を使用します。

指定回数の処理を繰り返すための記述方法は

 繰り返しの処理では[Loop]から[End Loop]までのステップが繰り返し実行されます。また[Exit Loop If]ステップで指定された条件に一致するまで繰り返し実行されます。

図15 「$i」が「$max」より大きい場合、繰り返しの処理は終了します。
図15 「$i」が「$max」より大きい場合、繰り返しの処理は終了します。

まとめ

 今回はFileMaker Pro Advancedの「スクリプトデバッガ」と「データビューア」を中心に紹介しましたが、まだまだご紹介できない「カスタム関数の作成機能」や「メニューのカスタマイズ」などさまざまな機能が搭載されています。開発効率がアップするためにもFileMaker Pro Advancedを選択することをお進めします。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 新居 雅行(ニイ マサユキ)

     テクニカルライター、デベロッパー、コンサルタントとして、Mac OS X、iPhone、FileMakerを中心に活動している。近著には「新 リレーションで極めるFileMaker」(共著/ラトルズ)、 「FileMaker Server大全」(ラトルズ)、「Mac OS Xシステム管理」(ラトル...

  • 西村 早苗(ニシムラ サナエ)

     メインフレームを利用した基幹業務のシステム設計やプログラムを経験、その後、1987年にファクトリーを設立。当時より、HyperCard、4th Dimension、dBase、FileMakerといったデータベースを利用したシステム開発やコンサルティング、執筆、トレーニングなどを担当。著書には、「...

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5