FileMaker の検索を使いこなすために

# この記事の内容
- Claris FileMaker(以下 FileMaker)の検索に関する方法の整理


# この記事の対象
- FileMaker で検索をする人
- FileMaker を使い始める人に使い方を教える人


# はじめに
FileMaker で作業をする際、かなり多くの人にとって**検索**はその作業のなかで大きな役割を果たすでしょう。

- 条件を満たすレコードに絞り込みたい
- 条件を満たすレコードの詳細な情報を知りたい
- 各条件を満たすレコードに関する統計情報を集計したい

基本的かつさまざまな場面で検索という操作が必要になります。

しかし、長年 FileMaker を使っている人でも、使える知識はやはり作業で必要になった知識に限られてしまい、
検索に関してももしかすると FileMaker に備わっている機能をフルに使いこなせていないかもしれません。

この記事では、高度なテクニックまでは踏み込みませんが、FileMaker 19 に備わっている基本的な検索の方法について整理していこうと思います。

## 参考資料
この記事は主に Claris 社が提供している [FileMaker オンライン学習初級編](https://content.claris.com/ja-e-learning-b-index)の 4, 6 章を参考に作成しています。

オンライン学習の動画も [Youtube](https://www.youtube.com/watch?v=LI_X94neQMQ&list=PLozyw7n9C_VcTUggyR0qv_tOcOHsg85RX) にアップロードされているので、そちらもぜひ参考にしてください。

また、サンプルファイルもこのオンライン学習の演習ファイルを用いています。

# 検索モードでの検索
検索にまつわる用語を確認したあとに検索の方法について整理していきます。
## 用語の整理
### キーワード
検索をする際に入力する単語です。
日本語は**中間一致**（単語内のどこかにそのキーワードと一致するかどうか）、
英単語は**前方一致**（単語の先頭がそのキーワードと一致するかどうか）
で判定されることに注意しましょう。

### 対象レコード
検索条件を満たすレコードたちのことです。
対象レコード数は左上のわっかのところで確認ができます。
![スクリーンショット 2021-05-28 10.59.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/d4d6fbbf-986b-f39d-67a7-66a762c688a2.png)

また、「すべてを表示」から対象レコードを全レコードにすることができます。


## 1 つのフィールドについて 1 つの値で検索（一番簡単な検索）
検索モードに移行します。「検索」ボタンを押すか、`Ctrl` + F (`⌘` + F )で検索モードに移行します。
検索したいフィールドに検索したいキーワードを入力し、
![スクリーンショット 2021-05-28 11.05.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/a4b9cdab-62a7-cec3-c6ea-1a985ad6c9f4.png)
検索実行ボタンを押します。

すると該当の検索が実行されます。![スクリーンショット 2021-05-28 11.07.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/4d1f3950-d69a-33c6-ad1f-e0457ac15046.png)

例では対象レコードは 13434 レコード中の 416 レコード。
ふりがなフィールドで「なか」を中間一致で検索しているので、「なか」から始まる人だけでなく、
「かわなか」「はたなか」などの「なか」を先頭でないところにも含むレコードも
検索の対象となっていることに注意しましょう。

## 除外検索（NOT 検索）
検索モードに移行します。この際、そのまま検索すると、以前の検索条件は破棄されて、
今回新たに指定した検索条件のみで検索されることに注意しましょう。
![スクリーンショット 2021-05-28 11.11.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/12028a61-64ba-4f51-5a37-e61558d77506.png)
除外したい内容を入力し、「一致するレコード」をデフォルトの「含める」から「除外」をクリックします。
色が変わったことを確認して検索を実行すると、
![スクリーンショット 2021-05-28 11.13.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/13d05389-7158-e0da-c748-7a1c4cb320ba.png)
ふりがなフィールドに「やま」が含まれないレコードが対象レコードとなる検索結果が表示されます。

今回は 13434 レコード中の 12651 レコードということで、そこまで「やま」が含まれる人は多くなさそうですね。
 
## 複数のフィールドについて 1 つの値の組で検索（簡単な AND 検索）
検索モードで、複数のフィールドでそれぞれ検索するキーワードを入力します。
今回はふりがなフィールドに「なか」が含まれ、**かつ**、電話番号フィールドが「03-」で始まるという
2 つの条件を同時に満足するレコードが今回の対象レコードとなります。

検索を実行して結果を見てみると……、こうですね。
![スクリーンショット 2021-05-28 11.35.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/6d64859a-bdd8-f184-846c-877d6be0496a.png)

ふりがなに「なか」が含まれるレコードは 416 件ありましたが、
電話番号に関する条件を AND 検索で追加することで対象レコードが 4 件になり、
同時に条件を満たすレコードは非常に少ないことがわかります。

![スクリーンショット 2021-05-28 11.07.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/4d1f3950-d69a-33c6-ad1f-e0457ac15046.png)


### 対象レコードの絞り込み
このような強く絞り込む条件が最初にパッと思いついたらいいのですが、
「一旦検索してみたいけど、このフィールドの値でもうちょっと絞り込みたいな〜」
と思う場面は往々にしてあるでしょう。

上記の先ほどの条件と追加したい条件で AND 検索しなおすのでもいいのですが、
ちょっと便利な条件の追加方法があるので見ていきましょう。

ふりがなフィールドに「なか」が含まれるレコードを対象とするシンプルな検索をしたのちに、
電話番号が「03-」で始まるという条件で絞り込むという操作を考えます。

まず、最初のふりがなでの検索をして、対象レコードをその条件だけで絞った状態にします。

この状態で、もう一度検索モードに入り、追加したい条件のキーワードを入力します。
入力が終わったら、そのまま検索実行する**のではなく**、メニューの「検索条件」にある「対象レコードの絞り込み」をクリックします。

![スクリーンショット 2021-05-28 11.42.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/851c6214-110b-a7b7-2228-87f0cff7f0e5.png)

すると、先ほどと同様の 2 条件に関する AND 検索の結果が得られます。

条件の追加とその絞り込みは 2 条件に限らず逐次的に条件を追加できるので、
最初はちょっとゆるめに検索してあとから少しずつ条件を追加していい感じの対象レコード数となるように検索ができます。

## 1 つのフィールドについて複数の値で検索（簡単な OR 検索）
さて、今度はふりがなに「なか」か「やま」のいずれかの文字列が含まれるレコードが対象レコードとなるような検索をしてみましょう。

まず、検索モードでふりがなフィールドに「なか」と入力します。
その状態で「新規検索条件」をクリックするか、`Ctrl` + N (`⌘` + N )で新規に検索条件を追加できるようにします。
検索条件の 2 行目のふりがなフィールドに今度は「やま」を入力して、検索実行をします。

すると、対象レコードは 1171 件となり、「なか」が含まれるという検索での 416 件より多くなっていることがわかります。

![スクリーンショット 2021-05-28 11.51.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/402b9d6a-550f-9058-cdb3-279e6b15545a.png)
もちろん「なかやま」さんも対象レコードに入っていますね。

この差分は、今回の全レコードのうちふりがなフィールドに「やま」が含まれるけれど、「なか」が含まれていないレコードに相当します。

## 対象レコードの拡大
AND 検索と対象レコードの絞り込みの対応関係のように、OR 検索でも後から条件を追加する方法があります。

まず、ふりがなフィールドが「なか」となるような 416 レコードを対象レコードとする検索を行います。

この状態で新規条件追加をし、ふりがなフィールドに「やま」を入力します。

ここで、メニューの検索条件内にある「対象レコードの拡大」をクリックすることで、
![スクリーンショット 2021-05-28 12.19.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/a1fdfdb2-aa92-d21f-a581-a75c3eff5fc2.png)

先ほどの 2 条件での OR 検索と同様の検索結果を得られます。

**AND は絞る**、**OR は拡げる**という感覚は FileMaker に限らない様々な場面で重宝するでしょう。

## 複数の検索条件と除外検索
ここで、先述した「『やま』が含まれているけれど、『なか』が含まれていないレコード」を対象レコードとする検索を対象レコードとするような検索を考えましょう。

これは「新規条件追加 or 対象レコードの絞り込み」と「除外検索」を組み合わせることで実現します。
今回は「新規条件追加」と「除外検索」の組み合わせで説明しましたが、これまでの説明を踏まえて
「対象レコードの絞り込み」と「除外検索」の組み合わせで実現することは読者への演習とします。

さて、今回は「やま」が含まれてほしいので、検索モードで該当フィールドに「やま」を入力します。
その後、新規検索条件を追加して、該当フィールドに「なか」を入力します。
ここで、2 個目の検索条件が選択されている状態であることを確認した上で「一致するレコード」を「含める」から「除外」に変更します。

![スクリーンショット 2021-05-28 12.03.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/b17343c6-6aed-9527-27b9-3293e345c176.png)


この状態で検索を実行すると目的の検索結果が得られます。

![スクリーンショット 2021-05-28 12.03.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/a24e0c23-9d35-00f9-4d6b-1e5a6da01361.png)

対象レコード数が 755( = 1171 - 416 ) 件になっているのでちゃんと目的の検索になっていそうです。

ここで

（条件を追加したときにはどちらかの条件に該当するレコードが対象となるので、
今回は「やま」が含まれるか、「なか」が含まれないレコードが対象となって、
たとえば「あさくら」さんや「ひぐち」さんなども対象になるんじゃない……？）

といった違和感を持つ方もいるかもしれません。

私も習いたての頃はそのような違和感をもっていましたが、まあそういう仕様なので慣れてください。

逆に（）内で想像していたような検索をするためには、先ほどの 2 条件の順序を逆にすることで実現できてしまいます。

まず、 1 つ目の条件を「なか」を含まない除外検索とし、
![スクリーンショット 2021-05-28 12.10.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/fd3c1998-d6ac-c06f-fa98-aa39247dffe8.png)

追加する 2 つ目の条件を「やま」を含む検索として検索を実行します。
![スクリーンショット 2021-05-28 12.10.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/03c8362e-131e-86e1-602a-9c39f4190568.png)

すると、想定していた結果が出てきました。
![スクリーンショット 2021-05-28 12.11.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/bf99685f-e83d-d54f-6f19-369c9fdc73f7.png)
「なかやま」さんは「なか」は含まれない対象にはなりませんが、2個目の条件の「やま」が含まれるに該当するので対象レコードになっていることに注意しましょう。

**除外検索に関しては、条件の順序次第で結果が変わります**ので、除外検索をする場合には少し慎重になる必要がありそうです。

## 複数のフィールド、複数の値の組で検索
次の 2 条件

- ふりがなに「なか」が含まれてかつ電話番号が「03-」で始まるレコード
- ふりがなに「やま」が含まれてかつ性別が「男」のレコード

をまとめて対象レコードにしたいと考えたとします。
この際は **AND 検索のブロックを OR 検索でつなげていく** という考え方をもとに検索条件を設定します。

検索モードに入り、 1 つ目の AND の条件を 1 行目にまとめて入力します。
![スクリーンショット 2021-05-28 12.25.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/66aac627-64f8-fe06-4a65-c612d336321d.png)

そして、検索条件を追加して 2 つ目の AND の条件を 2 行目にまとめて入力します。
![スクリーンショット 2021-05-28 12.25.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/1007a670-ddf6-6519-8279-64c738ae8dc7.png)

この状態で検索を実行すると、目的の検索結果が得られます。
![スクリーンショット 2021-05-28 12.53.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1346492/1c40e014-df8a-ed09-fb82-f0dae1190aec.png)


ふりがなに「やま」が含まれる男性がほとんどですが、中にすこしだけ「なか」が含まれて電話番号が「03-」で始まる人のレコードも紛れていることがわかります。

このような検索に関しても AND 条件のブロックを「対象レコードの絞り込み」と「対象レコードの拡大」ができますので、随時条件をいい感じに調整していきましょう。


#便利なショートカット
検索条件に関する便利なショートカットを少しだけ紹介します。

## 前回の検索条件が入力された検索モードに移る : ブラウズモードで `Ctrl` + R ( `⌘` + R )
ブラウズモードで`Ctrl` + R ( `⌘` + R ) のショートカットを利用すると、前回の検索条件がすでに入力された検索モードに入ることができます。

さっきの条件ちょっと違ったな〜というときに便利。

## 検索条件を複製する : 検索モードで `Ctrl` + D ( `⌘` + D )
検索モードで`Ctrl` + D ( `⌘` + D ) のショートカット を利用すると、選択している検索条件と同じ検索条件が新規検索条件として追加されます。

たくさんのフィールドに値を入れた検索条件にその中のいくつかだけ値を変更した条件を OR 検索でつなげた〜い（あるいは除外検索で外した〜い）ときに便利。


#まとめ

FileMaker での検索について用語の整理から方法まで整理しました。

検索は基本的な操作ですが、だからこそ経験則的な理解になってしまいがちです。

この記事が少しでも FileMaker での検索について体系的な理解の補助になれば幸いです。