OnObjectModifyで実現する「サクサク動く」ライブ検索術
FileMakerで検索画面を作るとき、「検索ボタンを押さないと結果が出ない」「入力ミスにすぐ気づけない」といったもどかしさを感じることはありませんか。
そんなときに役立つのが、フィールドの入力が変わった瞬間に自動でスクリプトを動かせるトリガ「OnObjectModify」です。これを使えば、いわゆる「ライブ検索」(入力するたびに結果が変わる検索)を簡単に実装できます。
ここでは、できるだけ専門用語を避けながら、OnObjectModifyを使ったライブ検索の考え方と、実際の作り方を手順で紹介します。
ライブ検索とは?どんなメリットがあるのか
ライブ検索とは、検索用のフィールドに文字を入力するたびに、一覧の内容がリアルタイムで絞り込まれていくような動きのことです。
Googleの検索候補や、ECサイトの商品一覧の絞り込みのような動きをイメージすると分かりやすいと思います。
FileMakerでライブ検索を導入すると、次のようなメリットがあります。
- 検索ボタンを押さずに、入力するだけで結果が変わる
- 入力ミスや条件の掛けすぎにすぐ気づける
- 画面の印象が「動的」で、使っていて気持ちが良い
- 社内システムでも「Webアプリっぽい」体験を提供できる
OnObjectModifyでライブ検索を実現する考え方
OnObjectModifyは、フィールドの内容が変わるたびに起動するスクリプトトリガです。
このトリガを検索キーワード入力用のフィールドに設定し、「フィールドが変わるたびに、検索用スクリプトを実行する」という仕組みにします。
流れはとてもシンプルです。
- ユーザーが検索用フィールドに文字を入力する
- 入力が1文字変わるたびに、OnObjectModifyがスクリプトを呼び出す
- スクリプトが、その文字に応じてレコードを絞り込む
この「呼び出されるスクリプト」の部分で、
「対象となるテーブル」「検索するフィールド」「部分一致にするかどうか」などを決めていきます。
準備:検索用フィールドとレイアウトを用意する
まずは、ライブ検索を行いたいレイアウトに、検索用のフィールドを用意します。既に検索用フィールドがある場合は、それを利用してもかまいません。
- 検索したいテーブルに「検索用」フィールドを作成(例:
g_searchKeyword)
※グローバルフィールド(グローバルストレージ)にしておくと、どのレコードからでも同じ検索条件を使えるので便利です。 - 一覧を表示しているレイアウトに、この検索用フィールドを配置
- レイアウト上で、検索用フィールドのラベル(「キーワード」など)を分かりやすく配置
ここまでで、「キーワード入力欄」と「一覧」が同じ画面に並んでいる状態になっていればOKです。
検索を実行するスクリプトを作る
次に、OnObjectModifyから呼び出されるスクリプトを作成します。基本的な考え方は「キーワードがあれば絞り込み、空なら全件表示」です。
大まかなステップは以下のようになります。
- 検索用フィールドの内容を変数に格納する(例:
$keyword) - キーワードが空かどうかを判定する
- 空なら、全件表示(または初期状態)に戻す
- 空でなければ、検索モードに切り替えて対象フィールドに条件をセット
- 検索を実行して、ブラウズモードに戻る
部分一致検索にしたい場合は、検索条件にワイルドカード(例:「*」)を加えて「*キーワード*」のようにするのが定番です。
ユーザーとしては「含まれていればヒットする」検索の方が直感的に感じられることが多いでしょう。
フィールドにOnObjectModifyトリガを設定する
スクリプトができたら、いよいよOnObjectModifyトリガを検索用フィールドに設定します。
- レイアウトモードに切り替える
- 検索用フィールドを選択する
- インスペクタの「データ」タブで「スクリプトトリガ」を開く
- 「OnObjectModify」にチェックを入れる
- 先ほど作成した検索用スクリプトを選択する
- レイアウトを保存して、ブラウズモードに戻る
これで、検索用フィールドの内容が1文字変わるたびに、スクリプトが実行されるようになります。
実際に文字を入力しながら、一覧の絞り込みがリアルタイムで変わっていくか確認してみてください。
使いやすくするための工夫ポイント
基本のライブ検索ができたら、使い心地を良くするために、次のような工夫も検討してみてください。
- 最低文字数を決める
1文字入力しただけで検索が走ると、対象レコード数が多い場合に重くなることがあります。
「2文字以上入力されたら検索する」といった条件をスクリプト内で指定すると、負荷を軽減できます。 - 検索対象を絞る
すべてのフィールドを対象にするのではなく、「よく検索に使うフィールド」だけを対象にすると、動作が軽くなり、結果も分かりやすくなります。 - キャンセル操作を用意する
検索用フィールドを空にしたときに自動で全件表示に戻したり、「クリア」ボタンを用意してキーワードを一気に消せるようにすると、操作に迷いがなくなります。 - 検索の状態を表示する
「○件ヒット」などのメッセージを画面に表示しておくと、ユーザーにとって安心感があります。
OnObjectModifyライブ検索を使いこなして、快適な画面に
OnObjectModifyを使ったライブ検索は、少しのスクリプトと設定で実現できる割に、ユーザー体験に与えるインパクトが大きい機能です。
「検索ボタンを押す」という一手間がなくなるだけで、画面全体がぐっと「今どきのシステム」に近づきます。
まずはシンプルな一覧レイアウトから導入してみて、慣れてきたら複数条件のライブ検索や、並び順の切り替えなど、少しずつ発展させていくのがおすすめです。
難しそうに感じる場合でも、「入力が変わる → スクリプトが走る → 検索結果が更新される」という流れを意識すれば、仕組み自体はとても分かりやすいはずです。
日々使う画面ほど効果が出やすいので、顧客一覧や商品一覧などから、ぜひ試してみてください。