クイック検索: 忘れられた機能

前回の記事を読んで、これってクイック検索に似ているな、とか、なぜ検索条件がこんなに複雑になるの? と思った方に、このクイック検索に関する考察を参照されることをお勧めします。
1-more-thingはフランスとベルギーを拠点にしたFileMakerのソリューションプロバイダで、時々英語のブログ記事を公開しています。


Quick Find: the forgotten feature

(元記事はこちら)

Fabrice Nordmann
2018/9/26

今から8年以上も前の2010年、FileMaker 11とともにリリースされたクイック検索は、おそらくFileMakerの中で最も過小評価されている機能の1つです。

何らかの理由でか、リリース時の新機能紹介でもそれほど重点が置かれていませんでした。FileMakerのエバンジェリストであれば「FileMakerでもGoogleのような検索が可能に」とでも言うところですが、ドキュメントには「現在のレイアウトのすべてのフィールドを検索する」と書かれているだけで、この機能の本当の実力は明らかにされませんでした。

そして実際、クイック検索は非常に強力な機能なのです。

 

まずFileMaker全体でクイック検索に関連する部分を見ていきます

  • ツールバーの「クイック検索」フィールド 。おそらくクイック検索について考えるときに最初に思いつくものです。ツールバーに検索フィールドがあり、ユーザーはここに条件を入力して、Enterキーを押すと検索機能が起動されます。ここで言及しておくべきことがあります: それは、この検索フィールドがブラウズモードでしか利用できないという点です。私としては、これが検索モードでも使える方が理にかなっていると思います。ユーザーが最初に何かを探したいと思って検索モードに切り替え、結局後になって「クイック検索」を使えばよかったということに気づくというのが一般的です。そこでまたブラウズモードに戻ることになるのですが、これはちょっと奇妙でありクイック検索の実装がシームレスではないと感じる理由かもしれません。
  • 「クイック検索の実行」スクリプトステップ。検索フィールドがアクティブなときにEnterキーを押すのと同じことを行いますが、検索条件を指定できる点が異なります。そのため、オリジナルのクイック検索インターフェースを簡単に作成することができます。そしてそれは検索モードでも機能します!
  • レイアウトモードで、レイアウトオブジェクトの右下に表示されるクイック検索バッジ 。虫眼鏡アイコンは、FileMakerの検索速度によって、緑色またはオレンジ色で表示されます。基本的には、現在のテーブルのインデックス付きフィールドまたはインデックス設定可能なフィールドの場合は緑色で、インデックスがないフィールドまたは関連フィールドの場合はオレンジ色になります。ここで私が、フィールドではなく「レイアウトオブジェクト」と書いたことに注意してください。マージフィールドを含むテキストオブジェクトも、クイック検索のインデックスに含めることができます。他の種類のオブジェクトは、レイアウトレベルでの計算式(ボタンバー、Webビューア、タブパネル)やマージフィールド(ボタン)が含まれていても、インデックスに含めることはできません。
  • インスペクタの「動作」パネルで、フィールドまたはマージフィールドを含むテキストオブジェクトがアクティブな場合、 「クイック検索にフィールドを含める」のチェックボックスがアクティブになります。残念ながら、FileMakerは最初から、レイアウトに追加されるすべての新しいフィールドオブジェクトがデフォルトでクイック検索に含まれるように設計しました。これが、私が見る限り、この機能が過小評価されていて危険である主な理由です。あるレイアウトで初めてクイック検索が実行されたときに、クイック検索の対象のすべてのインデックス可能なフィールドでインデックスが作成されるため、インデックスは不要に巨大になります。クイック検索が強力である理由は、どのフィールドを検索対象に含めるかを選択できる点にあるのですが、デフォルトで選択されるとなるとその特長が弱まってしまいます。まさかクイック検索のコンテキストで、電話番号またはブール値を検索したいという人はいないでしょう。そのようなことをすれば無関係なデータが返されることになり、インデックスが非常に大きくなってしまいます。
  • レイアウト設定ダイアログで「クイック検索を有効にする」のチェックボックスはデフォルトでチェックされていますが、これをオフにすることでクイック検索を無効にすることをができます。前述したバッジはグレー表示され、ブラウズモードでのクイック検索の検索フィールドは無効になります。このチェックボックスの横には「クイック検索をリセット」というボタンがあります。これは基本的にクイック検索の対象のすべてのフィールドを含みます。というのもそれがデフォルト設定だからです。
  • 最後に、これもレイアウトモードで、 表示/オブジェクト メニューで、レイアウトバッジの表示/非表示を切り替えることができます。デフォルトでは無効になっています[訳注: この項確認要]。これが、クイック検索に含まれるフィールドが多くなりすぎるのを避ける唯一のチャンスであると考えると、この設定は残念です。これらの表示/オブジェクトの設定は、ファイルをサーバにアップロードする前に調整しておく必要があります。これを忘れると、セッションごとに再度設定する必要があります。

チップス

このブログ記事の本題に入る前に、知っておくべきことがいくつかあります。

  • クイック検索では、*, …, //, =, ==などの演算子はサポートされません。
  • 「対象レコードの絞り込み」または「レコードを対象外に」に相当するものはありません。クイック検索を使用して、以前の検索の結果である対象レコードセットを微調整することはできません。
  • エラートラップは、「クイック検索」と通常の「検索実行」では異なります。つまり、エラー401 (レコードが見つかりません)が発生した場合、それ以前の対象レコードが保持されますが、クイック検索では0(ゼロ)レコードになります。したがって、Get(最終エラー) = 401ではなくGet(対象レコード数) = 0でエラーをトラップすることに慣れている場合は、スクリプトをクイック検索用に調整する必要があります。
  • レイアウトの右側に配置されフォームビューやリストビューには表示されないフィールドも、クイック検索に含めることができます。クイック検索に含まれるフィールドを管理するための非常に明確で簡単な方法は以下の通りです。レイアウトの左側(表示される)部分からすべてのオブジェクトを選択し、[クイック検索にフィールドを含める]チェックボックスをオフにします。レイアウトの右側に、クイック検索ゾーンとして検索したいフィールドだけを配置し、それらのフィールドをクイック検索に含めます。
  • あなたのソリューションがツールバーを完全に非表示にしていて、ユーザがツールバーのクイック検索フィールドを使用しないことが確実な場合は、上記の方法をさらに工夫して、レイアウト上でのクイック検索を無効にし、必要なフィールドだけを持った専用レイアウトを作成することもできます。そうすれば、メインレイアウトにいくらフィールドを追加しても、それらがクイック検索に含まれることはありません。

ここからが本題

私は記事の最初に、クイック検索の力が過小評価されていると書きました。私が話していた力とは何のことでしょうか?

それはクイック検索が検索を行う「方法」です。私たちはこれまで、従来の「検索モード」と「検索実行」スクリプトステップを長い間使ってきたので、「クイック検索」を一度に複数フィールドを検索対象にできるだけだというふうに過小評価してきました。

たとえば、ContactというテーブルにfirstName、lastName、occupation、cityというフィールドがあり、そのうちのfirstNameだけがクイック検索に含まれていないとします。そして私はCincinattiのplumber(配管工)を探しているとします。通常の検索での手順は以下のようなものでしょう。

  • 検索モードに移動
  • occupationフィールドに”plumber(配管工)”と入力
  • cityフィールドに”Cincinnati”と入力
  • Enterキーを押して検索を実行

昔、Googleのような検索機能を提案したい場合(Googleを知る前であっても)、インデックス付きの次のような計算フィールドをテーブルに追加することができました。

city & " " & lastName & " " & occupation

そして検索モードで’plumer Cincinatti’と入力します。これは、FileMakerが同じフィールド内の複数の単語をAND演算子を使用した条件と見なすためです。

しかし「クイック検索」では上記のような計算フィールドを作成する必要はありません。それはクイック検索で行なっていることが以下のとおりではないからです。

  • 検索モードに移動
  • lastNameフィールドに”plumber cincinatti”と入力
  • 新規レコード/検索条件 (OR)
  • occupationフィールドに”plumber cincinatti”と入力
  • 新規レコード/検索条件 (OR)
  • cityフィールドに”plumber cincinatti”と入力
  • 検索実行

この通りであった場合、どのフィールドにもこの2語が含まれていないため、レコードは見つかりません。

クイック検索の機能は、単に「検索実行」スクリプトステップだけでは実行できません。複数の単語を分解し、すべての可能な組み合わせを評価する必要があります。したがって、”plumber Cincinatti”と入力された場合は、最初の単語(plumber)を取り出し、3つのフィールドのうちのいずれかに ‘plumber’が含まれるすべてのレコードを検索し、その結果につき、3つのフィールドのいずれかに “Cincinatti”が含まれるすべてのレコードを検索します。この説明は、FileMakerが検索を行う「手順」とは関係ありません(実際のプロセスはおそらくこれとは非常に異なります)。ここでは「何を」するのかを説明しようとしているだけです。

しかし魔法はこれだけではありません。この組み合わせ検索は関連レコードでも機能します。したがって、たとえば”plumber Cincinatti approved supplier”を検索することができます。ここで”approved supplier”は関連テーブルのcompanyに含まれる値です。唯一あなたがすることは、レイアウトにそのフィールドを挿入し、そのフィールドがクイック検索に含まれていることを確認するだけです。

以下のサンプルファイルには、複数のテーブルから結果を取得する検索機能が含まれています。以前であれば、複雑なリレーションを作成したり、≤ や ≥ を含んだ条件や計算式などたくさんの部品を準備する必要がありました。それが今では、クイック検索を使うことで、いかに簡単に結果をグローバルフィールドに取得し、単純なリレーションで結果を表示することができるかを見てください。

この記事であなたが何かを学ぶことを願っています。下のコメント欄に気軽に投稿してください。

サンプルファイルをダウンロード1MT_QuickFind.zip

この記事が気に入ったらぜひ共有してください。

 

 

 

Leave a Reply