いつも使っているスクリプトデバッガですが、まだまだすべての機能を使いこなしているとは言えません。今回はGeist Interactiveのブログシリーズ「Learn FileMaker Like a Boss」の中からスクリプトデバッガに関する記事を紹介します。
LIKE A BOSS: USING THE SCRIPT DEBUGGER TO ITS FULL POTENTIAL
(元記事はこちら)
Jeremy Brown
2018/2/19
この連載「Learn FileMaker Like A Boss」(ボスのようにFileMakerを学ぶ)では、よりよい開発者になるための手法・考え方・ツールを探っていきます。まず最初は、私自身がFileMakerの開発に関わった長年の間に発見したトピックから始めます。今回の記事ではFileMakerスクリプトデバッガを見ていきます。
FileMakerスクリプトデバッガ(FileMaker Pro Advancedの[ツール]メニューにあります)は、スクリプトをテストしてユースケースで記述されているとおりに動作するかどうかを確認する、開発者にとって不可欠なツールです。スクリプトを実行しながらステップごとに動作を見ることができます。テストをするときには、スクリプト全体またはスクリプトの一部を実行して、正確に制御することができます。
図の中にはデバッガのボタンと部品がたくさんありますが、 FileMakerのヘルプにそれらすべての詳細な説明があります。
注目する部分
今回は、図の4,5,6,7のラベルがついたボタンの使い方について詳しく見ていきます。FileMakerのヘルプにも説明はありますが、ここでは実際にどのように使用するかを具体的に説明します。以降の説明を読みながら、この図を参照するようにしてください。
できること
できること:
- 各ステップを順番に実行する
- 複数のステップを一度に実行する
- サブスクリプト全体を、ステップを表示させずに実行する
- スクリプトの特定の部分をスキップする
- スクリプトを停止する
これらのそれぞれについて順に説明しましょう。下のビデオ(訳注: 現在準備中です)も参考にしてください。
各ステップを順番に実行する
ボタン5「ステップイン」は、実行可能なステップを順に実行します。ボタンをクリック(またはショートカットF6)すると、アクティブインジケータがオン(ラベル10)のステップが実行され、次のステップで一時停止します。このボタンをサブスクリプトでクリックすると、そのサブスクリプトのステップがデバッガに表示され、アクティブインジケータはこのスブスクリプトの最初の実行可能ステップに移動します。このボタンは、呼び出されるすべてのスクリプトのすべてのステップを監視するのに非常に便利です。私はこのボタンをもっともよく使います。
一度に複数のステップを実行する
ボタン6「ステップアウト」は、ブレークポイント(ラベル11)またはスクリプトの最後に達するまで、現在のスクリプト内のすべてのステップを実行します。これは、親スクリプト内かサブスクリプト内かで動きがことなります。サブスクリプト内にいてブレークポイントがない場合、アクションは親スクリプトの次の行に戻ります。
サブスクリプトをステップごとに表示せずに実行する
ボタン4は私があまり使っていなかったものですが、最近は使うようになりました。「ステップオーバー」はボタン5とほぼ同じで、各スクリプトステップを順番に実行し、サブスクリプト全体をブレークポイントまで実行します。このボタンをクリックすると、サブスクリプトのステップはブレークポイントがない限り表示されません。
スクリプトの特定の部分をスキップするか、停止する
このアクションと次のアクションは同じボタン7「次のステップを設定」によって実行されます。私はいつも忘れがちですが、これは素晴らしいコマンドです。元同僚のAgnes Rileyが教えてくれました。このボタンを使用すると、実行する次のステップを指定することができます。次に行きたいステップを強調表示し、このボタンを押します。アクティブインジケータはそのステップに進みますが、実行はしません。
どのように使うか
- スクリプトの最初に戻る
- スクリプトの一部のセクション全体をスキップする
- スクリプトの通常の流れではtrue(真)ではないロジックに進む
このようなアクションには注意が必要です。FileMakerではコンテキストが重要で、期待されるアクションを実行するには、スクリプトステップに適切なコンテキストが必要です。スクリプト全体をスキップするのは意味がないかもしれませんが、安全に実行できるのであれば、このボタンが役立ちます。スクリプトの一部を繰り返しテストする場合にこれは非常に便利です。私はこの機能の有用性を最近ますます感じるようになりました。
実例でのスクリプトデバッガ
最近おこなったデモで、渡されたスクリプト引数に応じてカードウィンドウに説明文を表示するスクリプトを書きました。簡単なスクリプトなので、見ればその目的を理解できるでしょう。
実際の使用方法
停止とやり直し
このスクリプトのテストを開始します。まずスクリプトワークスペースからボタン5の「ステップイン」を押します。私は、デバッガがIf文のいずれにも入っていかないことに気づき、引数を渡すボタンからこれを実行するのを忘れていることに気づきます。スクリプトを停止する代わりに、データビューア(次回の記事を参照)で変数$paramを追加して、値を「part1」に設定して11行目に戻ります。その行を選択して強調表示し「次のステップを設定」(ボタン7)を押します。これによりアクティブインジケータが11行目に戻り、スクリプトを最後まで実行することができます。
中に入る
次に15行目のIF文内のロジックのテストを終了します。27行目に行き、このスクリプトを停止する前に19行目をテストします。$param = “part1″であっても、「次のステップを設定」ボタンを使って18行目のlF文の中に入ることができます。19行目を選択して強調表示し 「次のステップを設定」を押します。
サブスクリプトをスキップする
もう一度スクリプトを実行し、 引数が「Solution」のボタンの場合で21行目がtrue(真)になるようにしてデバッグします。22行目でカードウィンドウを開きます。次に「ステップオーバー」(ボタン4)を押し、サブスクリプトが完全に実行されます。改めてそのサブスクリプトをテストする必要がないので便利です。
サブスクリプトをテストする
23行目のサブスクリプトをテストしてみます。引数を「solution」としてスクリプトをデバッグし、23行目で「ステップイン」を押します。デバッガでサブスクリプトが開きます(ラベル13のコールスタックに2つのスクリプトの名前が表示されます)。このサブスクリプトを見て、一行ごとにステップを進める必要はないと判断し、「ステップアウト」(ボタン6)を押します。そのサブスクリプトが完全に実行され、親スクリプトに戻ります。