FileMakerスクリプトの「ダイアログなし」は本当に安全?
FileMakerで日々の業務を自動化していると、「スクリプトをもっと静かに、サクサク動かしたい」と感じることがあるはずです。そこで便利なのが、スクリプトステップのオプションにある「ダイアログなし」。ユーザーに確認を出さずに処理が進むため、とてもスマートに見えます。
ところが、この「ダイアログなし」を安易に使うと、思わぬデータ削除や上書き、誤った検索など、「気づいた時には手遅れ」という状況を招きかねません。この記事では、ダイアログを抑えつつも、安心して運用できる「安全な実装の考え方」と「具体的なやり方」を、なるべく専門用語を減らして解説します。
なぜ「ダイアログなし」が危険になりやすいのか
FileMakerの多くのスクリプトステップには、「ダイアログあり/なし」を選ぶチェックがあります。例えば次のようなステップです。
- レコードの削除
- レコードの複製
- 検索実行
- レコードのインポート・エクスポート
「ダイアログあり」の場合は、ユーザーに確認の画面が出るため、その場で「本当にいいのか?」と立ち止まることができます。しかし「ダイアログなし」にすると、その確認が一切出ないため、次のようなリスクが生まれます。
- 検索条件の設定ミスに気づかず大量レコードを削除
- 本当は1件だけ削除したかったのに、対象レコード全体を削除
- インポート元・先を間違えてデータを上書きしてしまう
つまり、「ダイアログなし」は便利な反面、「間違いに気づくきっかけ」も同時に消してしまうことが問題です。
安全にするための基本的な考え方
ダイアログを完全になくすのではなく、「ユーザーに考えるポイント」を、あらかじめスクリプト側で用意しておくことが大切です。ポイントは次の3つです。
- 条件をスクリプトで厳密に決めておく
削除や更新の対象レコードを、ユーザー任せにしないで、スクリプト内部で確実に絞り込みます。 - 処理前に「見える形」で確認できるようにする
処理対象の件数や内容を、レイアウト上で表示したり、メッセージに出す工夫をします。 - 取り消しやログの仕組みを用意する
最悪の場合でも、元に戻したり、何が起きたかを追跡できるようにします。
安全な「ダイアログなし」の実装パターン
1. 処理対象をスクリプトで絞り込む
レコード削除などの危険な操作は、「今表示しているレコードを削除」ではなく、「スクリプトで検索してヒットしたものだけ」に限定します。
例として、「ステータスが『削除予定』のレコードだけを削除する」スクリプトの場合、次のような流れにします。
- すべてのレコードを表示
- 検索モードに切り替え
- ステータス = 「削除予定」で検索
- ヒットしたレコード数を取得
- 0件の場合は「削除対象がありません」と表示して終了
- 件数がある場合だけ削除処理へ進む
こうすることで、ユーザーの操作に依存せず、スクリプトが「削除してよいレコード」だけを確実に選び出せます。
2. 処理件数を事前にメッセージ表示する
ダイアログを完全にゼロにするのではなく、「確認ダイアログを自前で作る」という考え方もあります。FileMakerの標準ダイアログではなく、「カスタムダイアログ」や専用レイアウトを使うやり方です。
たとえば、削除件数が 100 件以上の場合には、次のようなカスタムダイアログを出します。
- 「削除対象レコード数は 123 件です。本当に削除しますか?」
- 「はい」「キャンセル」ボタンを用意する
このダイアログは「必要なときだけ」表示し、それ以外は静かに処理を進めることで、スピードと安全性のバランスを取ることができます。
3. 「テストモード」を用意する
本番運用の前に、安全性を確認するための「テストモード」をスクリプトに組み込むのも有効です。例えば、スクリプトの引数やグローバル変数で、次のように切り替えます。
- テストモード:削除や更新はせずに、「対象件数の表示」や「ログの記録」だけ行う
- 本番モード:実際に削除や更新を実行する
開発中や仕様変更の際にはテストモードで動かし、問題がないと確認してから本番モードに切り替えることで、「いきなり大量削除」といった事故を防げます。
4. ログを残しておく
万が一に備えて、「いつ・誰が・何件・どんな処理をしたか」を残すログテーブルを用意しておくと安心です。
- ログ記録専用のテーブルを用意する
- スクリプトの先頭または末尾で、処理内容を1件記録する
- 処理前の件数・処理後の件数・ユーザー名・日時なども保存する
ログがあれば、トラブル発生時に原因を特定しやすくなり、同じミスの再発防止にもつながります。
実際に運用するうえでの注意点
「ダイアログなし」を安全に使うには、次の点を意識しておくと良いでしょう。
- 削除や更新など取り返しのつかない操作は、必ずスクリプトで条件を固定する
- 大量処理や危険度の高い処理には、専用スクリプトと専用レイアウトを用意する
- ユーザーが誤ってボタンを押しても、すぐに致命的な処理が走らないようにする
- 運用前に、テスト用のコピーで必ず動作確認をする
「ユーザーに確認させる」代わりに、「スクリプトが責任を持って安全を担保する」という発想に変えると、ダイアログなしでも安心して運用できるようになります。
まとめ:静かに動きつつ、しっかり守るスクリプトを目指す
FileMakerの「ダイアログなし」は、使い方を間違えるととても危険ですが、ポイントを押さえて設計すれば、業務を効率化する強力な味方になります。
- 処理対象はスクリプトで厳密に絞り込む
- 必要なときだけ、こちらで用意した確認メッセージを出す
- テストモードやログで、安全性とトラブル対応力を高める
「とにかくダイアログを消す」のではなく、「ユーザーの代わりにスクリプトが慎重になる」イメージで組み立てることが、ダイアログなし実装を安全に行うためのコツです。