Claris FileMakerで大規模データの集計を高速化する方法
2026年01月28日 12:00 PM
ファイルメーカーのTips
〜JSONを使って処理を劇的に軽くする実例〜
Claris FileMaker(ファイルメーカー)で業務システムを運用していると、「集計画面の表示が遅い…」「ソートに時間がかかる…」と感じることはありませんか?
特にレコード数が増えると、従来型の集計方式ではパフォーマンス低下が起きやすくなります。これは販売管理・工事管理・受注管理など、日々レコードが大量に増える業務では特に顕著で、業務効率に直接影響する大きな課題です。
今回は、実際の開発現場で効果絶大だった「JSONを使った高速集計」の手法を、初心者の方にもわかりやすく解説します!
1. なぜ「普通の集計」は遅くなるのか?
まず、これまでの一般的な集計方法(集計フィールドやポータルでの合計)を振り返ってみましょう。
例えば毎月数万点の商品が販売され、月ごとの「販売金額」を集計するとします。
【図解イメージ1:従来の方法】
従来の方法では、FileMaker は集計のたびに「全レコードを読み込み → 条件で絞り込み → 合計値の計算」を実行します。そのためレコード数が増えるほど計算にかかる時間が指数的に増えていきます。

またネットワーク越しの場合、サーバーから大量のデータをダウンロードするため、表示が極端に遅くなる原因となります。
2. JSONを使った「持たせない」集計の仕組み
今回の解決策は、「あらかじめ月ごとの合計値を一つのテキストフィールドにまとめて持っておく」という方法です。ここで活躍するのがJSONです。JSONとは「名前」と「値」をセットで管理できるデータ形式で、複数の金額をひとつのフィールドにまとめて保存できる“柔軟な入れ物”のようなものです。
新しいテーブル構成
新しく「月次実績」というテーブルを作ります。
- レコードの単位 = 年月で1レコード
- 販売金額json(テキストフィールド): ここに、複数の取引ごとの販売金額をJSON形式で保存します。
例えば、4月に販売された取引ごとの金額をまとめると、次のようなJSONになります。
【JSON中身】
{
“商品A” : 25600580,
“商品B” : 25589080,
“商品C” : 15269870
}
このように、「どの取引がいくらか」を一つの箱(フィールド)に詰め込みます。
3.実装のキモ:JSONを計算式で合計する
「箱に詰めたのはいいけど、どうやって合計するの?」と思いますよね。ここでこんな計算式を使います。この計算式は「JSONに入っている複数の金額を取り出し、足し算できる形に変換して合計する」ためのものです。
合計値を出す計算式
集計用の「月次実績」テーブルに、以下のようなオプションを設定した計算フィールド(結果は数字)を作成します。
Let (
[
~json = 販売金額json;
~jsonListValue = JSONListValues ( ~json ; “” ); // JSONから値だけを一覧(改行区切り)で出す
~calc = Substitute ( ~jsonListValue ; “¶” ; “+” ) // 改行を “+” に置き換える
] ;
Case (
IsEmpty ( ~json ) or IsEmpty ( ~jsonListValue ); 0;
Evaluate ( ~calc ) // 「25600580+25589080+15269870」という文字列を計算式として実行!
)
)
【計算の流れ】
- JSONの値を取り出す →
25600580¶25589080¶15269870 - 改行をプラスに変える →
25600580+25589080+15269870 - Evaluate関数が「これ計算して!」と命令 →
66459530
この方法なら、数千件のレコードを読み込む必要はありません。自分のレコードにある1つのフィールドを見るだけなので、一瞬で表示が終わります。
また計算結果も非保存ではない計算フィールドにできますので、販売金額json(テキストフィールド)が変更されない限り、再計算されません。
過去の月の金額は基本的に変わらないため、計算結果を保持しておくことで表示が非常に速くなり、毎回再計算する必要もありません。
4. データを最新に保つ方法
JSONの中身は、ある商品の販売の金額が変わったタイミングで更新します。
スクリプトの処理手順:
1. 対象商品の金額が変更されたタイミングをトリガーとする
2. 「月次実績」テーブルから該当する年月のレコードを検索
3. JSONSetElement 関数を使って、その取引の金額をJSON内で上書きし、レコードを保存する
これだけで、常に最新の合計値が保たれます。
まとめ:この手法のメリット・注意点
この方法は特に以下のようなシステムで効果を発揮します
・販売管理や受注管理など、毎日大量のレコードが追加される業務
・リスト表示やソートを頻繁に行う画面があるシステム
・ネットワーク越しに Claris FileMaker を利用する環境
◎ メリット
- 圧倒的な速さ: リスト表示やソートが、レコード数に関わらず一瞬で完了します。
- サーバー負荷の軽減: 大量のレコードを読み込まないため、ネットワークが重い環境でも快適です。
△ 注意点
- スクリプトの実装が必要: 金額が変わった時にJSONを更新する処理を作る必要があります。
- データの整合性: 万が一のために、夜間にJSONを再計算して整合性を合わせるバッチ処理などがあると安心です。
最後に
「集計が遅い」はユーザーのストレスに直結します。
JSONを「データの貯金箱」のように使うこのテクニック、ぜひ皆さんのシステムでも試してみてください!
