ポータルフィルタで動的検索ボックス実装術
Tips

ポータルフィルタで動的検索ボックス実装術

2026年4月1日 admin Tips

FileMakerで「一覧からサッと絞り込みたい」「入力中に候補を減らしたい」と思ったことはないでしょうか。レイアウト上にポータルで一覧を表示していても、件数が増えると目的のレコードを探すのに時間がかかってしまいます。そこで便利なのが、ポータルフィルタと組み合わせた「動的検索ボックス」です。文字を入力するたびに絞り込み結果が更新されるため、直感的でスピーディーな検索が実現できます。ここでは、専門用語はできるだけ避けながら、基本的な考え方と作り方を解説します。

ポータルフィルタ+検索ボックスの基本イメージ

まずは全体像をイメージしておきましょう。

  • レイアウトの上部に「検索用の入力フィールド」を1つ置く
  • 下に関連レコードを表示するためのポータルを配置する
  • ポータルに「フィルタ計算式」を設定し、検索フィールドの内容に応じて表示を絞り込む
  • ユーザーが文字を1文字入力するごとに、ポータルの表示が自動で更新される

これだけで、いわゆる「インクリメンタルサーチ」や「動的検索」と呼ばれる動きに近い操作感を実現できます。

準備:検索用フィールドを用意する

最初に、検索文字を受け取るためのフィールドを用意します。ここでは、シンプルに「グローバルフィールド」を使う方法を紹介します。

  1. 「ファイル」メニューから「管理」>「データベース…」を開き、「フィールド」タブを表示します。
  2. ポータルを置く側のテーブルに、新しいテキストフィールドを作成します。
    例:g_検索キーワード
  3. 作成したフィールドを選択し、「オプション…」ボタンをクリックします。
  4. 「ストレージ」タブを開き、「グローバルフィールド(このファイルの全セッションで共有)」にチェックを入れます。
    ※ユーザーごとに別々の検索内容を持たせたい場合は、グローバルではなく通常フィールド+ログインユーザー別の仕組みなども考えられますが、ここでは最も簡単な方法を紹介します。

次に、検索ボックスとして使いたいレイアウトに戻り、このg_検索キーワードフィールドを配置します。ここがユーザーが文字を入力する「検索ボックス」になります。

ポータルフィルタに計算式を設定する

次に、ポータルのフィルタを設定します。ここが動的検索の心臓部です。

  1. 対象レイアウトで、絞り込みたい一覧を表示しているポータルオブジェクトを選択します。
  2. インスペクタで「データ」タブを開き、「ポータルの行のフィルタ」オプションをオンにします。※バージョンによっては、ポータルを右クリックして「ポータルの設定…」から「フィルタ」をオンにする操作になります。
  3. フィルタの計算式を設定します。

例えば、「顧客名」フィールドで検索したい場合のシンプルな例は次のようになります。

IsEmpty ( g_検索キーワード )
or
PatternCount ( 顧客::顧客名 ; g_検索キーワード ) > 0

この計算式の意味は、

  • 検索キーワードが空(何も入力していない)なら、全件表示
  • 何か入力されている場合は、「顧客名」にその文字列が含まれているレコードだけ表示

というものです。PatternCount関数を使うことで、「部分一致」の検索ができます。例えば「田」と入力すれば、「田中」「山田」「田村」などをまとめてヒットさせられます。

複数項目をまとめて検索する工夫

「顧客名だけでなく、電話番号やメールアドレスでもまとめて検索したい」という場面もあります。その場合は、検索対象のフィールドをつなげて「まとめて1つのテキスト」として扱う方法が簡単です。

例えば、次のように計算式を組み立てます。

Let (
  [
    検索文字 = g_検索キーワード ;
    対象テキスト =
      顧客::顧客名 & " " &
      顧客::電話番号 & " " &
      顧客::メールアドレス
  ] ;

  IsEmpty ( 検索文字 )
  or
  PatternCount ( 対象テキスト ; 検索文字 ) > 0
)

この方法のポイントは、

  • 顧客名・電話番号・メールをスペースでつなげて、1つの「検索対象テキスト」として扱う
  • ユーザーはどの情報を意識することなく、1つの検索ボックスに文字を入れるだけ

というシンプルさです。小規模なシステムであれば、これだけで十分実用的です。

使い勝手を良くするためのちょっとした工夫

動的検索は「入力すればすぐ結果が見える」ことで便利になりますが、実際の画面では以下のような工夫を加えると、より使いやすくなります。

  • プレースホルダテキストを設定する
    検索フィールドに「名前・電話・メールで検索」などの案内文をプレースホルダとして表示すると、ユーザーが迷いません。
  • 検索クリア用のボタンを付ける
    「×」ボタンなどを横に配置し、「g_検索キーワードを空にするスクリプト」を割り当てておくと、検索結果をリセットしやすくなります。
  • 大文字・小文字を区別しない検索
    英数字を扱う場合、Lower ( ) などで小文字にそろえて比較すると、「ABC」と「abc」を同じものとして検索できます。
  • パフォーマンスに注意
    レコード数が非常に多い場合や、計算が重いフィールドを大量に結合すると、検索のたびに表示が重くなることがあります。最初はシンプルなフィルタで作り、必要に応じて調整していくのがおすすめです。

まとめ:ポータルフィルタで「探しやすい」画面を作る

ポータルフィルタと検索ボックスを組み合わせることで、

  • ユーザーが一覧をスクロールして探す手間を減らせる
  • 入力や確認のスピードが上がる
  • レイアウトを大きく変えずに、今ある画面をそのまま便利にできる

といったメリットがあります。ポイントは、

  • グローバルフィールドなどで「検索キーワード」を受け取る
  • ポータルフィルタで IsEmptyPatternCount を上手に組み合わせる
  • 必要に応じて複数項目をまとめて検索したり、クリアボタンなどで操作性を上げる

という3点です。難しいスクリプトを組まなくても、画面上の設定だけでかなり実用的な動的検索ボックスが実現できますので、まずはテスト用レイアウトなどで試してみてください。

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