FileMaker Server 内の「データベース名」、「レイアウト名」、「フィールド名」を表示できるウェブアプリケーションを作った

# FileMaker Server 内の各種情報
FileMaker では以下のような階層構造でデータベースとしての情報が存在しています。

- データベース名
    - レイアウト名
        - フィールド名

これらを一覧するための方法としては「デザインレポート」を用いるなどの方法があります。ただ、その方法ですと何か変更がある度に「デザインレポート」の出力のし直しが必要です。

データベースがある程度の規模になると出力に結構な時間がかかってしまうため、リアルタイムで現在のデータベースの情報を見られるような仕組みがあると良いなと思いました。

# Inspect FM
そこで `Inspect FM` というウェブアプリケーションを作りました。以下の場所に公開しています。

[corselia/inspect\-fm: the list of Database name, Layout name and Field name in FileMaker is shown](https://github.com/corselia/inspect-fm)

# 起動方法
`Inspect FM` の起動方法を説明します。

#### 1. `git clone` する
まずは公開しているファイル群を持ってこなくてはいけません。`git clone` しましょう。`zip` をダウンロードして展開しても構いません。

```bash
$ git clone https://github.com/corselia/inspect-fm.git
```

#### 2. `config/filemaker.yml` に FileMaker Server への接続情報を書く
`config/filemaker.yml` に以下のような書式で FileMaker Server への接続情報を書きましょう。

```yaml:filemaker.yml
host: 10.10.10.10
account_name: my_account_name
password: my_password
```

#### 3. 必要な `gem` をインストールする
`bundle install` をして必要な `gem` をインストールします。

```bash
$ bundle install --path vendor/bundle
```

#### 4. `Inspect FM` を起動する
`Inspect FM` を実行するためにサーバを起動しましょう。以下のコマンドでは、ポート番号を `4567` と指定して起動しています。また `-D` オプションを付けてバックグラウンドで起動しています。

```bash
$ bundle exec unicorn -c unicorn.conf -p 4567 -D
```

#### 5. ウェブブラウザでアプリにアクセスする
「4.」のコマンドを実行することでアプリが起ち上がったら、ウェブブラウザでアプリにアクセスしましょう。`http://localhost:4567` でアクセスできます。

アクセスして以下のようなトップページが表示されれば正しく起動されています。

<img width="685" alt="inspect_fm.png" src="https://qiita-image-store.s3.amazonaws.com/0/72181/a52d4799-667f-7d6f-4410-034533e08a64.png">

# 使い方
`Inspect FM` の使い方をスクリーンショットともに説明します。

- 画面上部のメニューから `Inspect` → `Start` とたどると「データベース名」の一覧が表示されます
![inspect_fm_02.png](https://qiita-image-store.s3.amazonaws.com/0/72181/202377c1-a791-064f-0525-fb2b09267b2c.png)

- 「データベース名」の一覧から個々のデータベース名をクリックすると、そのデータベースが持っている「レイアウト名」の一覧が表示されます
![inspect_fm_03.png](https://qiita-image-store.s3.amazonaws.com/0/72181/79176216-6e97-606a-bcf1-ea7434730c4d.png)

- 「レイアウト名」の一覧から個々のレイアウト名をクリックすると、そのレイアウトが持っている「フィールド名」の一覧が表示されます
![inspect_fm_04.png](https://qiita-image-store.s3.amazonaws.com/0/72181/ab957099-2347-6c63-d7a9-a7063f736630.png)

- 表示権限がない情報にアクセスしようとするとエラーになります
    - `config/filemaker.yml` で指定したアカウントの表示権限に基づき、表示することができない情報にアクセスしようとするとエラー画面が出ます

![inspect_fm_05.png](https://qiita-image-store.s3.amazonaws.com/0/72181/8e80fb0a-10d5-60c0-1ebb-666565e61ba5.png)

- 表示される情報はリアルタイムです
    - ページを遷移する度に FileMaker Server にアクセスしているため、表示される情報はリアルタイムな情報になります

上記のようにリンクをたどることで、FileMaker Server に格納されている「データベース名」、「レイアウト名」、「フィールド名」を横断的、探索的に表示することができます。

# Inspect FM の中身
`Inspect FM` は `Sinatra` で作られたウェブアプリケーションです。FileMaker のデータを扱うために [以前紹介しました `filemaker-ruby`](https://qiita.com/corselia/items/94ae4e7392d739f6e4d7) を用いています[^1]。

中身としては特別なことは行っておらず、ごくごく普通のウェブアプリになっています[^2]。次のライブラリを使っています。

- sinatra
- filemaker-ruby
- unicorn
- [Honoka](http://honokak.osaka/)

[View の部分のコード](https://github.com/corselia/inspect-fm/tree/master/views) が一部 DRY でないのは見逃して下さい。

# ダメなところ
- 検索機能がない

これに尽きます。時間があれば付けたいです。

# いいところ
FileMaker 本体だけでは扱いにくい情報がリアルタイムで取得できる、というのはいいところだと思っています。これは以前書いた [FileMaker の API \(Web API\) の使いどころ](https://qiita.com/corselia/items/3e2807d4ffc25b64fa40) を踏まえてのことですね。

[^1]: 大感謝です
[^2]: ソースコードがそれを雄弁に物語っています