No.301 トランザクション処理を使って Loop 処理を高速化 | Claris FileMaker 10分でスキルアップ
▶ 動画を見る 📁 サンプルファイル

AI による要約

この動画では、FileMaker の [トランザクションを開く] スクリプトステップを活用して、[Loop] 処理を高速化する方法を紹介しています。大量のレコードを一括処理する際のパフォーマンス改善を検討している方におすすめの内容です。

通常の [Loop] 処理では、レコードの作成や更新が 1件ずつサーバーと通信しながら行われるため、件数が多いほど処理時間がかかります。[トランザクションを開く] と [トランザクション確定] の間に [Loop] 処理を配置することで、まとめてデータを確定できるようになり、特にクラウド環境の FileMaker Server においては処理速度の大幅な改善が見込まれます。ローカル環境ではほぼ差がありませんが、サーバー環境での比較では明確な速度差が確認できました。

ただし、トランザクション処理にはいくつかの注意点があります。

1つ目は、エラー発生時の復帰(ロールバック)の扱いです。通常の処理では途中までの結果が保存されますが、トランザクション処理では 1つのエラーで全件が取り消されます。エラーを無視して最後まで実行させたい場合は [エラー時のトランザクション復帰設定] を [オフ] にする必要があります。

2つ目は、シリアル番号の欠番です。ロールバックが発生しても、トランザクション中に自動入力で発番されたシリアル番号は元に戻りません。厳密な連番が必要な場合は、自動入力オプションに頼らず採番処理を工夫する必要があります。

3つ目は、途中のレコード確定は無視されるという点です。トランザクション中にレコード確定を実行しても内部的には無視され、すべてのデータは [トランザクション確定] のタイミングでまとめて保存されます。

4つ目として、一部の操作はトランザクションによる復帰の対象外となる場合があります。スクリプト設計の際には注意が必要です。

処理速度を意識したスクリプト設計のヒントとして、ぜひ参考にしてください。

機能

    なし

スクリプト・スクリプトトリガ

  • ・トランザクションを開く Loop 処理の前に配置し、トランザクションを開始するスクリプトステップです。レイアウトを切り替える前に実行します。
  • ・トランザクション確定 外側の Loop 処理の終わりに配置し、トランザクション内の変更をすべて確定するスクリプトステップです。
  • ・トランザクション復帰 トランザクション中にエラーが発生した際の復帰(ロールバック)動作を制御するスクリプトステップです。「オフ」に設定するとエラーを無視してスクリプトを継続実行します。デフォルトは「オン」です。
  • ・フィールド設定 新規作成したレコードに外部キーなどの値を設定するために使用しています。これによりルックアップで商品名や取引先名が自動入力されます。

関数

  • ・ValueCount 変数「$dList」に含まれる値の数を取得し、Loop の最大回数「$max」を設定するために使用しています。
  • ・GetValue 「$dList」から Loop のカウント変数「$i」に対応する値を 1件ずつ取り出し、商品名の検索条件として使用しています。
  • ・Get (現在の時刻 UTC ミリ秒) スクリプトの開始時と処理終了後にそれぞれ取得し、差分から処理の所要時間を計測してダイアログに表示するために使用しています。

字幕