スクリプトでソート条件を復元・再利用する術
スクリプト

スクリプトでソート条件を復元・再利用する術

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

FileMakerで一覧画面を作っていると、「さっき使ったソート順をもう一度使いたい」「ユーザーが自分で並べ替えた順番を、別のスクリプトでも流用したい」と感じることはないでしょうか。ところが、スクリプトステップでソート条件をそのまま復元・再利用する方法は、意外と知られていません。

この記事では、なるべく専門用語を避けながら、「スクリプトでソート条件を保存して、あとから呼び出す方法」を整理してご紹介します。日々の開発や運用の中で、「またソート条件を作り直すの?」という手間を減らすためのヒントとしてお読みください。

ソート条件を「復元・再利用」したい場面とは?

まず、どんな時にソート条件の再利用が役立つかを整理してみます。

  • ユーザーが画面上で自由に並べ替えた結果を、印刷用レイアウトでも同じ順で使いたい
  • 月次レポートやCSV出力など、同じソート順を使う処理がいくつもある
  • 一覧画面AとBで、同じ並び順を維持したい
  • テスト環境と本番環境で、ソート条件をコピペせずに移したい

こうした場面では、「一度決めたソート条件を、どこかに保存して、スクリプトから簡単に呼び出せる」と管理がぐっと楽になります。

基本の考え方:ソート条件は「データとして」扱う

FileMakerのソート条件は、通常はスクリプトステップ「レコードのソート」で個別に設定します。しかしこれだと、同じ条件を別のスクリプトで使いたい時、もう一度同じ設定をやり直す必要があります。

そこで発想を切り替えて、「ソート条件そのものを、フィールドに文字情報として保存してしまう」という考え方を採用します。たとえば、次のような情報をひとまとめにして保存します。

  • どのフィールドでソートするか
  • 昇順(小さい順)か降順(大きい順)か
  • 複数フィールドでの優先順位

これを「ソート定義テーブル」のような専用テーブルに保存しておけば、スクリプトから読み出して、毎回同じルールで並べ替えることができます。

ソート定義テーブルを作るステップ

具体的な作り方を、できるだけシンプルに説明します。

  1. ソート定義用のテーブルを作成
    例として、以下のようなフィールドを持つテーブルを用意します。

    • 名称(テキスト):ソート条件の名前(例:"売上日+顧客名")
    • レイアウト名(テキスト):主に使うレイアウトの名前
    • ソート式(テキスト):ソートルールを文字列で保存する場所
  2. ソート式の書き方を決める
    たとえば、カンマ区切りで「フィールド名:順序」を並べる形式にします。

    売上日:ASC,顧客名:ASC
    売上日:DESC,登録日:ASC
    顧客コード:ASC

    ASCは昇順、DESCは降順、といったルールを自分で決めておきます。

  3. あらかじめよく使うソート定義を登録
    手作業でレコードを登録しておき、「売上画面でよく使う順番」「請求書一覧で使う順番」といった基本パターンを用意します。

スクリプトでソート条件を読み出して適用する

次に、保存しておいたソート式をスクリプトから使う流れを説明します。

  1. 使いたいソート定義レコードを特定する
    スクリプトでは、スクリプト引数やグローバルフィールドなどで「ソート定義ID」や「名称」を受け取り、そのレコードを検索または関連レコードへ移動(GTRR)で取得します。

  2. ソート式(テキスト)を変数に格納
    対象レコードの「ソート式」フィールドを、$sortSpec などの変数に入れます。

  3. テキストを分解して、ソート条件に変換
    $sortSpec をカンマで分割し、1件ずつ「フィールド名」と「順序」に分けて処理します。実装方法はいくつかありますが、代表的なパターンは次の2つです。

    • パターンA:計算でソート用フィールドを作る
      フィールド名をそのまま動的に指定するのではなく、「汎用ソート用の数値/テキストフィールド」をあらかじめ複数用意し、計算スクリプトなどで値を埋めておき、それらを基準にソートする方法です。ソート自体は「レコードのソート」ステップであらかじめフィールドを指定しておき、どのフィールドにどの値を入れるかをソート式に基づいて計算で制御します。

    • パターンB:If分岐でソートステップを切り替える
      ソート式の内容を見て、「もし $sortSpec = ‘売上日:ASC,顧客名:ASC’ なら、このソートステップを実行」といった分岐を用意する方法です。完全な自動化ではありませんが、あらかじめ決めた数パターンだけを使い回したい時に割り切って使えます。

  4. 「レコードのソート」ステップを実行
    最終的には、「レコードのソート」ステップをスクリプトの中で呼び出し、事前に設定しておいたソート条件を適用します。

FileMakerでは、ソート対象のフィールドを計算式から直接動的に指定することはできないため、「テキストを読み取って、あらかじめ用意したソートパターンを選ぶ」「汎用的な順位フィールドを作って、それをソートする」といった工夫がポイントになります。

ユーザー操作からソート条件を「保存」する

次は逆方向、つまり「ユーザーが自分でソートした結果を、定義テーブルに保存する」パターンです。

  1. ユーザーにソートしてもらう
    通常の「レコードのソート」ダイアログを使って、ユーザーに好きな順序で並べ替えてもらいます。

  2. ソート順フィールドを用意する
    レコード側に「並び順(数値)」のようなフィールドを作り、現在の順番を1から順番に書き込むスクリプトを用意します。ループで1レコードずつ回しながら、$n をカウントアップして設定していくイメージです。

  3. その並び順を「ユーザーごとのソート」として保存
    ソート定義テーブルに、ユーザーIDや用途名と一緒に「並び順の値」を保存しておくと、あとから「このユーザーが決めた順番」を復元しやすくなります。

  4. 復元時は「並び順」フィールドでソート
    再利用したい場面では、保存しておいた「並び順」フィールドを使ってソートするだけで、前回と同じ順序を再現できます。

この方法は「どのフィールドでソートしたか」までは分かりませんが、「見た目の順番そのもの」を保存しておきたい時に便利です。

運用上のコツと注意点

  • 名前を分かりやすく
    ソート定義の「名称」は、ユーザーにも開発者にも分かりやすく付けましょう。例:「売上一覧:日付+顧客名 昇順」など。
  • レイアウトごとに分ける
    同じテーブルでも、レイアウトごとに欲しい並びが違うことが多いです。レイアウト名フィールドで紐づけておくと管理しやすくなります。
  • 本番前に想定パターンを洗い出す
    「よく使う順番」を事前にまとめてソート定義テーブルに登録しておくと、スクリプトから呼び出すだけで済みます。
  • 完全自動化にこだわりすぎない
    FileMakerの仕様上、完全に自由なフィールド指定でソートを切り替えるのは難しい部分もあります。現実的には「よく使う10パターンを再利用できればOK」くらいの割り切りもおすすめです。

まとめ:ソート条件を「仕組み」として扱う

ソート条件は、つい「その場で設定するもの」と考えがちですが、「データとして保存し、スクリプトで読み出して再利用する」仕組みを作ると、レイアウト追加や帳票追加のたびにソート条件を作り直す手間が大きく減ります。

ポイントは、次の3つです。

  • ソート条件をテキストとして保持する「ソート定義テーブル」を用意する
  • あらかじめよく使うソートパターンを登録しておき、スクリプトから呼び出す
  • ユーザーが決めた並び順そのものを保存したい場合は、「並び順フィールド」を活用する

これらを組み合わせることで、ソートに関する設定を「一度作れば何度も使える資産」に変えていくことができます。運用中のファイルに少しずつ取り入れて、自分のチームやシステムに合った形に育てていってみてください。

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