FileMakerで「監査ログ」を自動記録する意味とは?
FileMakerで顧客情報や売上データを扱っていると、「いつ」「誰が」「どの項目を」「どのように変更したか」を後から確認したくなる場面が少なくありません。
しかし、標準の状態では、詳細な変更履歴が自動で残るわけではないため、問題が起きたときに原因をたどれず困ってしまうことがあります。
そこで役に立つのが「監査ログ(変更履歴)の自動記録」です。
ポイントをおさえておけば、難しいプログラミングをしなくても、FileMakerの標準機能だけでシンプルな監査ログを作成できます。
この記事では、FileMakerで監査ログを自動記録するための基本的な考え方と、実現のための設定手順を、できるだけわかりやすく解説します。
監査ログを自動記録するための基本設計
まず、監査ログを考えるときに決めておきたいことは、次の4点です。
- 誰が(ユーザー名)
- いつ(日時)
- どのレコードを(主キーやID)
- どんな操作・変更をしたか(新規/編集/削除、変更前後の値)
この4つを押さえておけば、あとから状況を十分にたどることができます。
具体的には、次のような構成が基本形になります。
- 監査ログ専用のテーブルを1つ作る
- 監査ログ専用のレイアウトを1つ用意する(実際にはユーザーには見せなくてよい)
- 対象テーブルの「OnRecordCommit」などのレイアウトトリガスクリプトで、ログ用テーブルにレコードを書き込む
監査ログ用テーブルの作成
まずは、FileMakerで監査ログを保存する専用テーブルを作成します。
テーブル名の例としては、監査ログ や AuditLog などがわかりやすいでしょう。
監査ログテーブルには、最低限、次のようなフィールドを用意します。
- ログID(主キー、シリアル番号やUUID)
- テーブル名(どのテーブルのレコードか)
- レコードID(元のテーブルの主キーを保存)
- 操作種別(新規/編集/削除などを文字列で保存)
- フィールド名(変更されたフィールド名)
- 変更前の値
- 変更後の値
- ユーザー名(
Get ( アカウント名 )などを使用) - 操作日時(
Get ( 現在のタイムスタンプ )などを使用)
最初はこれだけでも十分に役立つログになります。
「どのフィールドが変わったか」を細かく取りたくない場合は、「変更前のレコード情報」「変更後のレコード情報」をテキストで丸ごと保存するだけの、シンプルな設計にすることも可能です。
監査ログ記録用のスクリプトの考え方
次に、実際にログを記録するスクリプトの流れを整理します。標準的なパターンは次のようなものです。
- 対象レコードの主キーや変更箇所を取得する
- 監査ログテーブルのレイアウトに切り替える
- 新規レコードを作成して、ログ用フィールドに値をセットする
- 元のレイアウトに戻る
「いつスクリプトを動かすか」がポイントになります。
一般的には、レイアウトに対して「OnRecordCommit(レコード確定時)」トリガを設定し、レコードの新規作成や編集が確定されたタイミングで、ログ記録用スクリプトを呼び出します。
レコード確定時にログを記録する設定の例
ここでは、レコードの編集が確定されたタイミングで、監査ログを1行追加する流れを、ざっくりと説明します。
※ 実際のスクリプト名やフィールド名は、運用中のファイルに合わせて調整してください。
-
対象テーブルのレイアウトを開く
レイアウトモードで、「レイアウト設定」→「スクリプトトリガ」から
「OnRecordCommit」に「監査ログ_記録」などのスクリプトを指定します。 -
「監査ログ_記録」スクリプトの作成(イメージ)
- 変数に元レコードの主キーや、必要に応じてフィールド値を格納
- 「新規ウインドウ」や「カードウインドウ」で監査ログ用レイアウトを表示(ユーザーに見せたくない場合はオフスクリーンに表示)
- 「新規レコード/検索条件」ステップでログレコードを作成
- 「フィールド設定」ステップで、テーブル名・レコードID・操作種別・ユーザー名・日時などを格納
- ウインドウを閉じて、元のレイアウト(元のウインドウ)へ戻る
削除時のログも取りたい場合は、「OnRecordDeleteRequest」トリガを使うと、削除前に情報を記録できます。
このように「いつトリガを起動するか」と「どの情報を保存するか」を整理することで、必要十分な監査ログが自動で蓄積されていきます。
どこまで細かくログを取るべきかの判断ポイント
監査ログは細かく取りすぎると、ログの件数が膨大になり、管理が大変になります。
実務上は、次のような観点で「どのレベルまで記録するか」を決めるとよいでしょう。
- 金額や契約内容など、重要情報が変わったときだけ記録したいのか
- すべてのフィールド変更を記録したいのか
- 過去の状態へ戻す(ロールバック)までやりたいのか、原因追跡だけでよいのか
たとえば、「重要なフィールドだけを対象にして、その他はログを取らない」という割り切りをすることで、運用がシンプルになり、パフォーマンスへの影響も抑えられます。
運用上の注意点とメンテナンス
監査ログの自動記録を始めると、時間の経過とともにログテーブルのデータ量が増えていきます。
そのため、次のような運用ルールを事前に決めておくと安心です。
- 「◯年以前のログはアーカイブファイルに移す」などの整理ルール
- バックアップの対象に含めるかどうかの確認
- 一般ユーザーが監査ログにアクセス・編集できないように、権限セットを調整する
とくに権限管理は重要です。
監査ログを簡単に削除できる状態だと、せっかくの履歴が意味をなさなくなります。閲覧は管理者だけに制限するなど、アクセス権をしっかり設定しておきましょう。
まとめ:まずは「シンプルな監査ログ」から始める
FileMakerでの監査ログ自動記録は、難しそうに見えますが、
- 専用テーブルを用意する
- 記録したい項目をしぼる
- レコード確定時などのトリガでログ記録スクリプトを呼び出す
という基本を押さえれば、比較的シンプルに始められます。
まずは最小限の項目だけを記録する「シンプルな監査ログ」を作ってみて、
運用の中で「ここも記録したい」「このログは不要だった」といった気づきを反映しながら、少しずつ改良していくのがおすすめです。