FileMaker Data API を使う 2025年版 vol.9

## 利用環境

 以下の環境を前提に説明しています。

 - Claris FileMaker Pro 21.1.1.41 macOS
 - Claris FileMaker Server 21.1.1.40 Ubuntu 22(AMD)
 - サーバ: Ubuntu 22.04.5 LTS
 - SSL 証明書
 - リクエストする側のサーバ（任意）

 開発段階では、以下を使用した方が楽でしょう。

 - [Postman](https://www.postman.com)

 Web ページの作成は、以下を条件とします。
 - Bootstrap v5.3.3
 - PHP 8.2.22

 ## 新しいサンプルテーブルを作る

 これまで FileMaker Data API によるレコードの取得と検索を扱ってきましたが、今回から、レコードの作成、編集、削除、複製に移っていきたいと思います。
 これまで使用してきた player_batting には必要のないリクエストなので、新たにサンプルテーブルを簡単につくりたいと思います。

 - テーブル名: standings
 - フィールド: mlb_site_id ... MLB 公式サイト ID
 - フィールド: year 数字 ... シーズン
 - フィールド: league テキスト ... リーグ名
 - フィールド: division テキスト ... 地区名
 - フィールド: team テキスト ... チーム名
 - フィールド: wins 数字 ... 勝利数
 - フィールド: losses 数字 ... 敗戦数
 - フィールド: winning_percentage 数字 ... 勝率
 - フィールド: runs_scored 数字 ... 得点
 - フィールド: runs_alowed 数字 ... 失点
 - フィールド: pythagorean_expectation 数字 ... ピタゴラス勝率（ピタゴリアン期待値）
 - フィールド: expected_win_loss 数字 ピタゴラス勝率から求める勝敗数
 - フィールド: winning_percentage_diﬀerence 数字 ... 勝率とピタゴラス勝率との差

 FileMaker Data API には、多数のレコードを一気に作成するようなリクエストは用意されていません。
 例えば、PHP でデータセットを作って、それを流し込むというようなことを Execute Script でやろうとしても、レコード作成処理が、追いつかなくなる可能性を常に、頭に入れておく必要があります。
 このような管理、開発中の作業的なものは FileMaker Pro を使うべきでしょう。

 ということで、この作業は、player_batting と同様に CSV を使うことにします。

 ### standings.csv
```
mlb_site_id,year,league,division,team,wins,losses,runs_scored,runs_allowed
110,2024,アメリカン・リーグ,東地区,ボルチモア・オリオールズ,91,71,786,699
111,2024,アメリカン・リーグ,東地区,ボストン・レッドソックス,81,81,751,747
147,2024,アメリカン・リーグ,東地区,ニューヨーク・ヤンキース,94,68,815,668
139,2024,アメリカン・リーグ,東地区,タンパベイ・レイズ,80,82,604,663
141,2024,アメリカン・リーグ,東地区,トロント・ブルージェイズ,74,88,671,743
145,2024,アメリカン・リーグ,中地区,シカゴ・ホワイトソックス,41,121,507,813
114,2024,アメリカン・リーグ,中地区,クリーブランド・ガーディアンズ,92,69,708,621
116,2024,アメリカン・リーグ,中地区,デトロイト・タイガース,86,76,682,642
118,2024,アメリカン・リーグ,中地区,カンザスシティ・ロイヤルズ,86,76,735,644
142,2024,アメリカン・リーグ,中地区,ミネソタ・ツインズ,82,80,742,735
133,2024,アメリカン・リーグ,西地区,オークランド・アスレチックス,69,93,643,764
117,2024,アメリカン・リーグ,西地区,ヒューストン・アストロズ,88,73,740,649
108,2024,アメリカン・リーグ,西地区,ロサンゼルス・エンゼルス,63,99,635,797
136,2024,アメリカン・リーグ,西地区,シアトル・マリナーズ,85,77,676,607
140,2024,アメリカン・リーグ,西地区,テキサス・レンジャーズ,78,84,683,738
144,2024,ナショナル・リーグ,東地区,アトランタ・ブレーブス,89,73,704,607
146,2024,ナショナル・リーグ,東地区,マイアミ・マーリンズ,62,100,637,841
121,2024,ナショナル・リーグ,東地区,ニューヨーク・メッツ,89,73,768,697
143,2024,ナショナル・リーグ,東地区,フィラデルフィア・フィリーズ,95,67,784,671
120,2024,ナショナル・リーグ,東地区,ワシントン・ナショナルズ,71,91,660,764
112,2024,ナショナル・リーグ,中地区,シカゴ・カブス,83,79,736,669
113,2024,ナショナル・リーグ,中地区,シンシナティ・レッズ,77,85,699,694
158,2024,ナショナル・リーグ,中地区,ミルウォーキー・ブリュワーズ,93,69,777,641
134,2024,ナショナル・リーグ,中地区,ピッツバーグ・パイレーツ,76,86,665,739
138,2024,ナショナル・リーグ,中地区,セントルイス・カージナルス,83,79,672,719
109,2024,ナショナル・リーグ,西地区,アリゾナ・ダイアモンドバックス,89,73,886,788
115,2024,ナショナル・リーグ,西地区,コロラド・ロッキーズ,61,101,682,929
```
![スクリーンショット 2025-02-11 4.02.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833520/ad4d81b8-3d54-eb58-89f4-a224b5d298e7.png)

 MLB は全30球団ですが、3球団は後で、FileMaker Data API を使って入力するので、この CSV は27球団分になります。

 テーブルは予め作っておいても構いません。プライマリーキーをシリアルまたは UUID を設定しても良いでしょう。（この CSV データは、mlb_site_id と year の２つでプライマリーキーになる想定をしています）

 インポートすると、`winning_percentage`、`pythagorean_expectation`、`expected_win_loss`、及び `winning_percentage_difference` が空だということがわかると思います。

## 今後のプラン

 レコードの作成や編集は、ターミナルで結果を見ても面白味がないので、簡単な Web ページを作ります。
 ゼロから作るのは、大変なので、Bootstrap v5.3.3 を CDN で使い、土台として、[Bootstrap Examples](https://getbootstrap.com/docs/5.3/examples/) を改造して使用し、レスポンシブデザインのページから、FileMaker ソリューションのレコード操作ができるようにするのが目標です。
 使用する Example は [Checkout](https://getbootstrap.com/docs/5.3/examples/checkout/) をメインにしたいと思います。

　ここで扱う FileMaker Data API のリクエストは、以下とします。

- records - Create Record ... レコード作成
- records - Edit Record ... レコード編集
- records - Delete Record ... レコード削除
- records - Duplicate Record ... レコード複製
- records - Get Single Record by Id ... レコード ID で 1レコード取得

　完成イメージを掲載します。

 ### Desktop イメージ
 ![スクリーンショット 2025-02-11 4.32.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833520/14a0bf27-a97f-bac5-39cf-7297f9886d9a.png)

### iPad イメージ
![スクリーンショット 2025-02-11 4.38.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833520/c8eb2516-13cd-c0e6-76ed-d3970df490f0.png)

## iPhone イメージ
![スクリーンショット 2025-02-11 4.41.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833520/110159f5-0f6c-317a-866c-5d6fe8ef5b21.png)

　今後、数回に渡って、この Web ページを作っていきたいと思います。