スクリプトでトランザクション処理実装の基本
スクリプト

スクリプトでトランザクション処理実装の基本

2026年5月25日 admin スクリプト

FileMakerで複数のレコードをまとめて登録・更新するとき、「一部だけ失敗してデータが中途半端に保存されてしまった」という経験はないでしょうか。業務データでは、売上と在庫、請求と入金など、セットで正しく処理されていることがとても大事です。そこで役立つのが「トランザクション処理」です。

この記事では、FileMakerのスクリプトで実装するトランザクション処理の基本的な考え方と、シンプルな作り方を、なるべく専門用語を使わずに解説します。

トランザクション処理とは何か

トランザクション処理とは、「いくつかの処理をひとかたまり(1セット)として扱い、全部成功したら保存、どこかで失敗したら全部なかったことにする」仕組みです。

  • すべての処理が成功 → まとめて「コミット(確定)」
  • どこか1つでも失敗 → まとめて「ロールバック(取り消し)」

これにより、「片方だけ保存されて、データのつじつまが合わない」という事故を防ぐことができます。

FileMakerでトランザクションを実現する基本ルール

FileMakerには、いわゆる「データベースのトランザクション機能」が自動では用意されていません。その代わり、スクリプトの作り方とレイアウトの使い方を工夫して、トランザクション処理を実現します。基本ルールは次の3つです。

  1. 1つのレイアウトで、対象テーブルのレコードをまとめて編集する
  2. 処理の途中では明示的にコミットしない(自動保存の挙動も理解しておく)
  3. 最後に成功したらコミット、失敗したら中止してウィンドウを閉じる

つまり、「専用レイアウト+スクリプト」で、ひとまとまりの処理を行い、最後に一回だけ確定させるイメージです。なお、FileMakerではフィールド編集の終了やレコード移動などで自動的にコミットされる場合があるため、スクリプト内で不要なレイアウト切り替えやレコード移動を行わないように設計することが重要です。

トランザクション用レイアウトを用意する

まずは、トランザクション専用のレイアウトを用意すると分かりやすくなります。

  1. 対象となるテーブル(例:受注明細テーブル)のレイアウトを新規作成
  2. ユーザーが直接は使わない「システム用レイアウト」にしておく
  3. 必要ならツールバーやメニューバーを非表示にする(誤操作防止)

このレイアウトは、ユーザーに見せるためではなく、スクリプトが裏側で使う「作業場」と考えるとよいでしょう。

基本的なスクリプトの流れ

トランザクション処理のスクリプトは、だいたい次のような流れになります。

  1. 新規ウィンドウを開いて、トランザクション用レイアウトに移動
  2. 対象レコードを検索または新規作成
  3. 必要な件数だけレコードを追加・編集(処理中にレイアウトやテーブルオカレンスをむやみに切り替えない)
  4. 途中でエラーがあれば処理を中断し、ウィンドウを閉じる(ロールバック)
  5. 最後まで成功したら「レコードをコミット」してウィンドウを閉じる

ポイントは、処理の途中で「レコードをコミット」するようなスクリプトステップ(レコード移動、レイアウト切り替えなど)を入れないことです。コミットするまでは、他のユーザーからは未確定の状態として扱われます。

簡単なトランザクション処理の例

ここでは、「受注ヘッダ」と「受注明細」を同時に登録する、シンプルな例をイメージして流れを紹介します。

  1. メイン画面でユーザーが「受注登録」ボタンをクリック
  2. スクリプトで新規ウィンドウを開く
  3. 受注ヘッダテーブルのトランザクション用レイアウトに移動
  4. 受注ヘッダの新規レコードを作成し、必要な項目をセット
  5. 関連レコード(受注明細)のポータルや関連テーブルで、行数分の明細を作成
  6. 在庫引当や金額計算など、関連する処理をすべて実行
  7. 各処理の後でエラーをチェックし、エラーがあれば「ロールバック」としてウィンドウを閉じる
  8. 問題がなければ最後に「レコードをコミット」し、ウィンドウを閉じて終了

この一連の処理がすべて成功したときだけ、データが確定します。途中で在庫数が不足していたり、必須項目が空だったりした場合には、コミットする前にスクリプトを止めることで「なかったこと」にできます。

エラー判定とロールバックの考え方

トランザクション処理では、エラーを見逃さないことが非常に重要です。代表的なチェック方法は次の通りです。

  • 各ステップの直後に「Get( 最終エラー )」でエラーコードを確認
  • 条件に合わないときは独自のフラグを立てて「エラーあり」と判断
  • エラーがあれば、それ以上レコード編集を行わずに処理を終了

スクリプトの構造としては、「エラーが起きたら共通の終了処理に飛ぶ」形にしておくと、ウィンドウを閉じ忘れたり、コミットし忘れたりといったミスを防げます。

導入のコツと注意点

初めてトランザクション処理を実装するときは、いきなり複雑な画面すべてに適用しようとせず、まずは次のようなシンプルな場面から始めるのがおすすめです。

  • 明細を伴う単票入力(注文・見積・請求など)
  • 複数のテーブルをまたいで同時に更新する処理
  • 在庫の増減、残高の増減など、「セットで正しくないと困る」処理

また、同時編集(他ユーザーとの衝突)やネットワーク切断など、現場ならではのトラブルも想定し、メッセージ表示やログ記録なども検討すると安心です。

まとめ

FileMakerでのトランザクション処理は、特別な機能を使うというよりも、

  • 専用レイアウトと新規ウィンドウを使って
  • 処理をひとまとまりにまとめ
  • 最後に一度だけコミットする

という「作り方のルール」を守ることで実現できます。最初は少し手間に感じるかもしれませんが、運用が長くなるほど、データの整合性を守るための大切な仕組みになります。小さな処理から試して、徐々に範囲を広げていく形で導入してみてください。

※ 本稿は、生成AIを使用して執筆しています。重要な内容については、必ずご自身でマニュアル等をご確認ください。