スクリプト作成時のベストプラクティスとルール

FileMakerのスクリプトは、一般的なプログラミング言語と同じように繰り返し・分岐・変数などの基本構造を持ち、カスタムアプリケーションの作成を可能にするFileMakerの強力な構成部品です。他の言語を少しでも触ったことがあれば簡単に理解することができますが、使いこなすにはFileMaker特有の注意しなくてはいけないポイントがいくつか存在します。
今回は、スクリプト作成時の留意事項についてのDB ServicesのEmory Brownさんのブログ記事を紹介します。


スクリプト作成時のベストプラクティスとルール
( FileMaker Scripting Best Practices and Conventions )

Emory Brown
2014/10/13

アプリケーションの開発時にはエンドユーザを想定してシステムを構築すべきですが、コードを書くときには開発者を意識して、そのアプリケーションが表側だけでなく裏側も使いやすいものにすることが大切です。我々DB Servicesでは、開発時に留意すべきいくつかのルールをベストプラクティスとして守るようにしています。

エラートラップ

ユーザー体験を大幅に向上できることの一つは、ユーザーフレンドリーなエラートラップです。操作が失敗した場合に、何も表示しないのではなく、何が悪かったかを詳細なエラーメッセージでユーザにあらゆる場面で知らせるようにすれば、ユーザとの信頼関係を築くことができます。またユーザが自分で問題を解決することも可能になります。さらに開発者が問題を特定する助けにもなります。ポイントは、コードの何行目で、どのレコードで、問題が発生したのかが開発者にわかるように具体的なエラーメッセージにすることです。DB Servicesでこれを実践する一つの方法は、何が問題かを説明した後に、FileMakerが返すエラーもそのまま含むようにしています。

のFileMakerエラーメッセージ

このようにユーザにやさしいエラーメッセージにするために、「エラー処理」はオンに、「ユーザによる強制終了を許可」はオフにします。「ユーザによる強制終了を許可」をオフにすることで、実行中のスクリプトをユーザがエスケープキーで停止できないようにします。もしこれをオンのままにしておくと、ユーザが想定していない画面やアクセスするべきでない画面に入り込んでしまう可能性が出てきます。また、スクリプトがデータに変更を加えようとする途中だった場合に、ユーザがデータベースを不整合な状態にできてしまいます。

「エラー処理」をオンにすることで、FileMakerが返すエラーによってユーザ操作が中断されないようにします。その代わりに、重要なエラーをユーザが見逃さないようにする責任が開発者に委ねられることになります。

適切なコンテキスト

エラートラップを組み込む一番簡単な方法は、インターフェースから呼び出されるすべてのスクリプトの最初にサブスクリプトを実行することです。これによってスクリプトが想定外のコンテキストで実行されないようにします。常にチェックするべき点は以下の3つです。

  1. ユーザは正しいモードにいるか?
  2. 対象レコードにレコードはあるか?
  3. レコードは正常にコミット可能か?

ファイルメーカーUXスクリプト

 

最後の項目は特に重要で、もしフィールドレベルの検証機能が起動すると、コミットは失敗するにもかかわらずスクリプトは継続し意図しない結果となります。

レコードロック

うまく行かない可能性を持ったものがいくつかあります。まず注意するのが「フィールド設定」です。レコードを更新する必要があるときは、常にレコードがロックされていないかどうかをテストするようにしましょう。

ファイルメーカートラップレコードロック

開発者が「データベースの管理」を開いているとそのテーブルがロックされます。その場合「新規レコード」と「レコードを削除」は失敗する可能性があるので、これらのステップの後でも必ずトラップで確認します。「関連レコードへ移動 (GTRR)」は特に危険です。もしエラーが発生した場合でもスクリプトが間違ったコンテキストで動作を継続するので、データに壊滅的な影響を与える可能性があります。さらにGTRRは、対象レコードに対して実行されたときに、実際にはエラーがない場合にも、偽のエラーを発生させます。このステップをトラップする正しい方法は、このステップの前と後でレイアウトが変わっているのを確認することです。最後に、アプリケーションがFileMakerの外のシステムとやりとりをしている場合はいつも、すべてのエラーをユーザに返すようにすることです。ここには「レコードのエクスポート」「レコードのインポート」の他に、Webシステムとやりとりする「HTTP POST」なども含みます。エラートラップのコードを書くことは余分な時間がかかることかも知れませんが、長い目で見れば、後でコードを解読したり問題が発生したときにそれ以上の時間を節約してくれることでしょう。

デバッグのためのヒント

スクリプトトリガをデバッグする方法の一つは、スクリプトデバッガで「ステップイン」ボタンを使う方法です。スクリプトを起動するステップに入ると、起動したスクリプトトリガにデバッガがステップインします。例えば「レコード確定」スクリプトステップにステップインして、かつレコード確定時に起動されるトリガがある場合、そのトリガをデバッグすることができます。

ファイルメーカーのデバッグ

まとめ

堅牢で読みやすいコードを書くことで、ユーザや他の開発者が理解しやすいシステムにしましょう。3つのエラートラップのスクリプトを含むテンプレートFileMaker Scripting Templateをダウンロードしてご利用ください。(オリジナルのサイトからユーザ登録が必要です)

Leave a Reply