【FileMaker】テーブルオカレンスって何？

FileMaker特有の概念である『テーブルオカレンス』についてまとめました。

この記事は、[FileMaker オンライン学習 初級編](https://content.claris.com/ja-e-learning-b-index)の内容に基づいて書かれています。
FileMakerを学び始めた入門者向けに分かりやすく簡潔に説明することを目的としています。

# 目的

- FileMaker特有の概念であるテーブルオカレンスを理解する
- テーブルオカレンスの存在意義をざっくりと理解する

# 結論 - テーブルオカレンスって何？

テーブルオカレンスは、**データをレイアウトに表示させるための仕組み**です。
テーブルオカレンスがなければ、データをレイアウトに表示できません。
![無題のプレゼンテーション (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/f0f07933-4ba4-d8c0-80f5-71beca5a0c59.png)

# 概要 - テーブルオカレンスを理解するポイント

:::note info
**レイアウト上のデータは、テーブルオカレンス越しに見えている**
:::

FileMakerでは、テーブルのレコードを表示・編集するときに、ユーザがレイアウトを直接操作することになります。
このとき、**レイアウト上に表示されるデータは、テーブルオカレンスと呼ばれる、レイアウトとデータを繋ぐトンネルを通して見えている**ことになります。
テーブル作成時にはテーブル名と同じ名前のテーブルオカレンスが自動的に1つ作成され、レイアウト上でレコードを表示・編集することができます。

このことを理解するには次の2つを理解する必要があります。

[1. レイアウトには必ず1つのテーブルオカレンスが指定される](#1-レイアウトには必ず1つのテーブルオカレンスが指定される)
[2. テーブルオカレンスには必ず1つのテーブルが指定される](#2-テーブルオカレンスには必ず1つのテーブルが指定される)

それぞれについてFileMakerで確認してみましょう。

# 具体例

顧客名簿を例に挙げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/79694a48-8f46-3d6f-d313-75a5b4ab131d.png)
実際に顧客名簿をFileMakerにインポートすると、下図のように1つのレイアウトがブラウズモードで表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/48e7228b-3bc2-2cfe-cd50-79539b86ef1d.png)
ここで、知ってほしいのは、

:::note warn
**新たにインポートした「顧客」テーブルの全レコードは、自動作成された「顧客」テーブルオカレンスというトンネルを通して、このレイアウト上に表示されている**
:::

ということです。
つまり、
```mermaid
flowchart LR;
顧客テーブル---顧客テーブルオカレンス
顧客テーブルオカレンス---レイアウト;
```
の関係になっていて、
- レイアウトは「顧客」テーブルオカレンスというトンネルの出口
- 「顧客」テーブルは「顧客」テーブルオカレンスというトンネルの入口

になっていると捉えることができます。

## 1. レイアウトには必ず1つのテーブルオカレンスが指定される
![無題のプレゼンテーション (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/ca597642-2517-7022-bec8-cc025a508dca.png)

このことを確認するために、FileMakerでレイアウトモードに切り替えてみましょう。
レイアウトモードには
`メニュー`→`表示`→`レイアウトモード`
をクリックすることで移動できます。

レイアウトモードに移動すると、下図のような画面が表示されます。
**赤丸で囲った部分には`テーブル： 顧客`と表示されていますが、これはレイアウトが「顧客」テーブルオカレンスを指定していることを意味しています。**

![スクリーンショット 2022-05-08 14.57.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/07b0a449-075b-1f16-d9e4-8447586634e1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/9fdb6813-5828-9912-f494-ef7e42fbf723.png)


## 2. テーブルオカレンスには必ず1つのテーブルが指定される
![無題のプレゼンテーション (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/8056a8b6-6db6-fb6e-4a95-b7fff86e7773.png)

このことを確認するために、FileMakerでデータベースの管理画面を表示してみましょう。

データベースの管理画面は
`メニュー`→`ファイル`→`管理`→`データベース`
をクリックすることで表示できます。

データベースの管理画面を開くと、このような画面が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/1ad59da7-fbaf-01f7-8ac4-dd8b8296841e.png)
`リレーションシップ`タブをクリックすると、下図のように「顧客」と書かれたボックスが表示されますが、これが「顧客」テーブルオカレンスを示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/c5fd649b-6fe7-f1da-689f-4f46844160fb.png)
「顧客」テーブルオカレンスの左上の矢印にカーソルを乗せると、ポップアップが表示されます。
ここに、**`ソーステーブル：顧客`と書かれていますが、これは「顧客」テーブルオカレンスが「顧客」テーブルを指定していることを意味しています。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055928/0fcc1fbb-93d6-5ecd-d72e-223d2b7d0df3.png)

以上をまとめると、

:::note info
**インポートされた顧客名簿はテーブルに変換され、レイアウト上から「顧客」テーブルオカレンスを通して「顧客」テーブルを表示・編集できるようになっているわけです。**
:::

```mermaid
flowchart LR;
顧客テーブル---顧客テーブルオカレンス
顧客テーブルオカレンス---レイアウト;
```
# 終わりに

今回は、
【FileMaker】テーブルオカレンスって何？
をテーマに、その仕組みを簡単に解説しました。

本記事の要点は、以下の通りです。

:::note info
**テーブルオカレンスはデータをレイアウトに表示させるための仕組みです。
レイアウト上のデータはテーブルオカレンス越しに表示・編集することができます。**
:::

本記事の内容では、「レイアウトからテーブルオカレンスを通して1つのテーブルしか表示・編集ことができない。」という話になってしまいます。

ですが、このテーブルオカレンスにリレーションシップを定義することで、リレーショナルデータベースの設計をすることが可能です。

次回以降、テーブルオカレンスとリレーションシップを題材に記事にできればと思っています。