
FileMaker開発者が知っておくべき「OData」活用法:Data APIとの違い(実践編)
さて前章では、ODataの基本的なデータ取得方法と、主キーによる特定レコードの検索方法を学びました。本章では、さらに高度なデータ操作に挑戦します。
ODataの強力な機能である**$filterや$select**といったクエリーオプションを使い、より効率的に、必要なデータだけを取得する方法を見ていきましょう!
目次
②レコードの検索を試す!:条件による絞り込み
$filterオプションの使い方
ODataでのレコード検索には、$filterを使用します。
📝 基本形
https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名>?$filter=(<式>)
💡 実践例
例1:完全一致検索
条件: 担当者IDが「1001」の人を検索
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons2?$filter=”担当者ID” eq 1001

✅ 成功!半角スペースは、エンコードされて「%20」となっていますが、検索は成功です。
例2:前方一致検索(startswith)
条件: 住所が「東京都」から始まるレコードを検索
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons2?$filter=startswith(“住所”, ‘東京都’)

✅ 検索できました!
例3:部分一致検索(contains)
条件: 住所に「新宿」を含むレコードを検索
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons2?$filter=contains(“住所”,’新宿’)

✅「新宿」の人だけを検索できました!
🔗 複数条件の組み合わせ
条件: 担当者IDが「1001」で、生年月日が「1990年1月1日」以上の人を検索
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons2?$filter=”担当者ID” eq 1001 and “生年月日” ge 1990-01-01

✅ 複数条件も問題なし!
ポイント:
シンプルで直感的です!「and」「or」で条件を追加するだけです。
📦レコードの検索を試す!③:取得フィールドを選択するには
$selectオプションの活用
ODataでFileMakerにアクセスするのも、だいぶ慣れてきましたね。
先ほどまでのデモでは、フィールド選択の設定をしていなかったので、テーブルのフィールドをすべて取得していました。
次は、必要なフィールドだけを取得してみます!
💡 基本的な使い方
例1:特定フィールドのみ取得
条件: Personsの「id」と「名前」だけを取得
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons?$select=”id”,”名前”

✅ 成功です!
例2:検索とフィールド選択の組み合わせ
条件: 担当者が「1001」のレコードで、「id」「名前」のみを取得
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons?$select=”id”,”名前”&$filter=”担当者ID” eq 1001

✅ 担当者が「1001」のレコードで、「id」「名前」のフィールドのみを取得しました!
🆚 Data APIとの比較
DataAPI を学んでいるかたは、この機能はとても便利だと思えるでしょう。
DataAPIで取得するフィールドは、取得時に選択したレイアウトに配置されているフィールドです。つまり、「id」と「名前」だけを取得したい場合は、「id」と「名前」だけのフィールドを配置したレイアウトを作成する必要がありました。
対して、ODataは、テーブルそのものからデータを取捨選択して取得できます。必要な情報のみ引っ張ってこれるというのは、大きなデータを扱うさいにとてもありがたいです。
検索、フィールド取得で使用した「$filter」「$select」は、クエリーオプションと呼ばれるものです。
FileMaker ODataで使えるクエリーオプション:
$skip
$apply
$count
$expand
$orderby
$top
ここでは、そのうち「$count」の例のみ、デモしてみます。
例:$countの使用
レコード数をカウントしてみます。
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/Persons?$select=”id”,”名前”&$filter=”担当者ID” eq 1001&$count=true

✅18件取得できたことが表示されました。
🔗関連レコードの検索するには:SQLライクなデータ取得TOに依存しない検索方法
関連レコード、またはポータルの取得方法を確認していきます。
折角なので、TOに依存しない、SQL的な取得方法を試してみましょう!
次は、関連レコード、またはポータルの取得方法を確認していきます。
📌 デモの前提
今回のテーブル「Persons」「Persons2」は、「担当者ID」を持っています。
担当者IDは、従業員IDとして、テーブル「従業員」とリレーションを組むことが可能ですが、実際にはリレーションを組んでいません。
この状態で、「Persons」から担当者IDに紐づく従業員の名前を表示させてみます。

🎯 クロス結合の実装
「Claris FileMaker OData API ガイド」では「非関連テーブルのクロス結合の要求」という見出しで説明されています。
📍基本形
https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/$crossjoin (<テーブル 1>, <テーブル 2>)?$filter= (<フィルタ式>)&$expand=(<展開式>)
📍今回の例
https://xxxx.xxxx.xxx/fmi/odata/v4/Demo/$crossjoin(“Persons”,”従業員”)?$filter=”Persons”/”担当者ID” eq “従業員”/”従業員ID”&$expand=”Persons”($select=”id”,”名前”,”担当者ID”),”従業員”($select=”名前”)

✅ 結果
取得したかったのは:
- id
- 名前
- 担当者ID
- 名前(従業員)
「Persons Link」「授業員 Link」「主キー」というのがくっついていますが、SQLのINNER JOINのように値を取得することができました🎉
これもDataAPIではできなかったことです。DataAPIの場合は、TOでリレーションを組んで置く必要がありました。
DataAPIのときは、ほしいデータセットを取得するためだけのTOとレイアウトを作成していたので、SQLのようにデータが取れるのは、嬉しいですね。
💻応用編:CLI(PowerShell)からのデータ取得
ここまで、ブラウザを通してODataでのデータ取得方法を確認してきました。
ODataは、他システムとFileMakerとの連携をするために利用されることがほとんどでしょう。
つぎは、CLIでデータを取得してみます。
🔧 PowerShellでの実装例
例としてPowershell を使ってデータを取得してみましょう。
と言っても、先ほどのURLをPowershell で実行するだけですので、とても簡単です。

Step 1:基本設定
$server = “ホスト名”
$database = “ファイル名”
$login = “<account>:<password>をbase64エンコードしたもの”
注: accountが「test」、passwordが「testpass」だったら、「test:testpass」という文字列をbase64エンコードします。
Step 2:ヘッダーの作成

“Content-Type”が “application/json” と “text/plain” の2パターンあったので、雑ですが、2つ用意しました。
Authorization に Basic 認証を設定します。

Step 3:関数の作成
今回のデモの場合、$uri には「https://xxxx.xxxx.xxx/fmi/odata/v4/Demo」という値が入ります。
Invoke-RestMethod で URLを実行します。

✅ 実行結果
ファイル「Demo」のテーブル一覧が取得できています。

テーブルのレコード一覧を確認します。
結果はご覧の通りです。

このように、URLをInvoke-RestMethod で実行すれば、値が取れます。
🎯 デバッグのコツ
値がうまく取れないときは:
- ブラウザでURLを叩いてテストする
- 結果を確認してから、スクリプトに反映
Data APIと比べるとデバッグがしやすいのも大きなメリットです!
🎉まとめ:ODataがもたらす開発効率の向上
今回紹介した内容
OData、いかがでしたか?
今日は、ODataの使い方について、一部分だけ紹介しました。
🌟 ODataでできることはもっとある!
今回は、データの取得だけでしたが、もちろん他にも:
✅ データの書き換え
✅ 新規レコードの作成
✅ レコードの削除
✅ テーブルの作成
✅ フィールドの追加
✅ テーブルの削除
✅ スクリプトの実行
✅ オブジェクトフィールドの操作
つまり、データの扱いについては、何でもできそうです!
💎 ODataの優位性
Data APIとの共通点
- データ使用量の制限がなくなった
- 柔軟なデータアクセスが可能
ODataにしかできないこと
- TOに依存しないSQL的なデータ取得
- フィールド選択が自由(専用レイアウト不要)
- デバッグがしやすい(ブラウザで確認可能)
- テーブル構造の変更も可能
🚀 使い方の感想
- Data APIよりシンプル
- 直感的で理解しやすい
- 実装が簡単
📈 今後の展望
いかがでしたか?
今回はODataのさまざまな機能を紹介しました!
今回の検証で、ODataにしかできない機能を多数発見できました。
使い方もData APIより簡単に感じました。
今後は、どんどん利用していきたいと思いました!✨
みなさんもODataの活用を始めてみてください!🚀
🔗 参考リンク
前編:https://fmsolution.supportas.co.jp/blog/20251008-1
後編:https://fmsolution.supportas.co.jp/blog/20251008-2