nomfjmtスクリプト作成時のベストプラクティスとルールFileMakerのスクリプトは、一般的なプログラミング言語と同じように繰り返し・分岐・変数などの基本構造を持ち、カスタムアプリケーションの作成を可能にするFileMakerの強力な構成部品です。他の言語を少しでも触ったことがあれば簡単に理解することができますが、使いこなすにはFileMaker特有の注意しなくてはいけないポイントがいくつか存在します。Brownさんのブログ記事を紹介します。Brown2014/10/13アプリケーションの開発時にはエンドユーザを想定してシステムを構築すべきですが、コードを書くときには開発者を意識して、そのアプリケーションが表側だけでなく裏側も使いやすいものにすることが大切です。Servicesでは、開発時に留意すべきいくつかのルールをベストプラクティスとして守るようにしています。エラートラップユーザー体験を大幅に向上できることの一つは、ユーザーフレンドリーなエラートラップです。操作が失敗した場合に、何も表示しないのではなく、何が悪かったかを詳細なエラーメッセージでユーザにあらゆる場面で知らせるようにすれば、ユーザとの信頼関係を築くことができます。ユーザが自分で問題を解決することも可能になります。開発者が問題を特定する助けにもなります。ポイントは、コードの何行目で、どのレコードで、問題が発生したのかが開発者にわかるように具体的なエラーメッセージにすることです。Servicesでこれを実践する一つの方法は、何が問題かを説明した後に、FileMakerが返すエラーもそのまま含むようにしています。このようにユーザにやさしいエラーメッセージにするために、「エラー処理」はオンに、「ユーザによる強制終了を許可」はオフにします。「ユーザによる強制終了を許可」をオフにすることで、実行中のスクリプトをユーザがエスケープキーで停止できないようにします。これをオンのままにしておくと、ユーザが想定していない画面やアクセスするべきでない画面に入り込んでしまう可能性が出てきます。スクリプトがデータに変更を加えようとする途中だった場合に、ユーザがデータベースを不整合な状態にできてしまいます。「エラー処理」をオンにすることで、FileMakerが返すエラーによってユーザ操作が中断されないようにします。その代わりに、重要なエラーをユーザが見逃さないようにする責任が開発者に委ねられることになります。適切なコンテキストエラートラップを組み込む一番簡単な方法は、インターフェースから呼び出されるすべてのスクリプトの最初にサブスクリプトを実行することです。これによってスクリプトが想定外のコンテキストで実行されないようにします。常にチェックするべき点は以下の3つです。ユーザは正しいモードにいるか?対象レコードにレコードはあるか?レコードは正常にコミット可能か?最後の項目は特に重要で、もしフィールドレベルの検証機能が起動すると、コミットは失敗するにもかかわらずスクリプトは継続し意図しない結果となります。レコードロックうまく行かない可能性を持ったものがいくつかあります。注意するのが「フィールド設定」です。レコードを更新する必要があるときは、常にレコードがロックされていないかどうかをテストするようにしましょう。開発者が「データベースの管理」を開いているとそのテーブルがロックされます。その場合「新規レコード」と「レコードを削除」は失敗する可能性があるので、これらのステップの後でも必ずトラップで確認します。(GTRR)」は特に危険です。エラーが発生した場合でもスクリプトが間違ったコンテキストで動作を継続するので、データに壊滅的な影響を与える可能性があります。GTRRは、対象レコードに対して実行されたときに、実際にはエラーがない場合にも、偽のエラーを発生させます。このステップをトラップする正しい方法は、このステップの前と後でレイアウトが変わっているのを確認することです。最後に、アプリケーションがFileMakerの外のシステムとやりとりをしている場合はいつも、すべてのエラーをユーザに返すようにすることです。POST」なども含みます。エラートラップのコードを書くことは余分な時間がかかることかも知れませんが、長い目で見れば、後でコードを解読したり問題が発生したときにそれ以上の時間を節約してくれることでしょう。デバッグのためのヒントスクリプトトリガをデバッグする方法の一つは、スクリプトデバッガで「ステップイン」ボタンを使う方法です。スクリプトを起動するステップに入ると、起動したスクリプトトリガにデバッガがステップインします。「レコード確定」スクリプトステップにステップインして、かつレコード確定時に起動されるトリガがある場合、そのトリガをデバッグすることができます。まとめ堅牢で読みやすいコードを書くことで、ユーザや他の開発者が理解しやすいシステムにしましょう。Templateをダウンロードしてご利用ください。