はじめに
FileMaker16でJSONをいい感じに触れる関数が追加されたので
適当なAPIからデータを取得し、表示させるアプリを作ってみた話。
環境
- FileMaker 16
- FileMakerGo 16
- iPhoneやらiPad
使ったもの
- カーリル 図書館API
- Google Books API
- Postman
実装したい機能
機能として以下の機能を実装することにした。
- 現在地から近くの図書館を検索する。
- 図書のタイトル、著者を元に該当図書を検索する。
- 対象の図書が図書館にあるのか、あった場合に貸し出し可能か表示する。
実装方法
現在地から近くの図書館を検索する。
FileMakerGoではLocationValues
で現在端末のある緯度経度を取得できるため
LocationValuesでは以下のように値が返ってくるので必要な情報をぬきとる。
// 緯度
37.406489
// 経度
-121.983428
// 高度
0.000000
// 水平精度
65
// 垂直精度
-1
// 経過分数
0.001236
取得した座業データを元に、カーリルのAPIに対してリクエストを投げつける。
$RESPONSE
にAPIからのレスポンスを格納し、$LIMIT
には取得件数を設定している。
データが取得できたことを確認する条件式は
JSONListKeys ( $RESPONSE ; "" ) ≠ ""
を使用した。
データをパースしていくループに関しては
ValueCount(JSONListKeys ( $RESPONSE ; "" ))
を使用している。
今回の実装ではJSONのプロパティ名を取得する際にハードコーディングしているが
フィールド名とJSONのプロパティ名を揃えて
フィールドを名前で指定とJSONListKeysの組み合わせの方が良さげ。
まとめ
実装したい機能2と3についても同様にAPI叩いてJSONをパースするだけなので割愛。
今回JSONListKeysやJSONGetElementを使用してみた感じだと
他言語でのJSONの扱いに比べるとまだちょっと不便。
FileMaker Data APIのライセンスをよく知らないんですけど
WebDirectの速度感とかFileMakerGoのデータ同期とかあとちょっとな感じが多いので
JSONでデータぶつけ合うのがもっと便利になってほしい。
あと初めて書いてみて記事を書くのは大変だと思った。