【FileMaker】FileMaker 16のcURL+JSONで楽天ブックス検索

前回前々回と2回にわたり、FileMaker 16新機能であるJSONを扱って、単純ですがcURLを使ってJSON形式でデータ取得を行うという動きを見ていきました。

今回は、もう少し実践的(前回のも割と実践的ですが)に、楽天APIを使って、楽天サイトで展開しているデータを取得していくサンプルをご紹介です。
ほんとはAmazon APIにしようかと思ったのですが、楽天APIのページの方がわかりやすかったので、楽天APIにしました。
Amazon APIのページ、なんであんなにたらい回しにされるんですかね。。。>愚痴です。

楽天API、サービス名は、「楽天ウェブサービス」と言います。
楽天のウェブサービスで提供しているAPIを使って、楽天の様々な情報を取得できますし、何と言ってもネットショッピング(死語)している人なら大抵アカウントを持っているので、楽天APIを利用する上で必要な申請がスムーズに行えます。

ということで、楽天APIを利用する準備として、
アプリ登録
が必要になります。
楽天アカウントが必要になりますので、アカウントを持っていない方は、
アカウント申請→アプリ登録
という順序になります。
さすが楽天、アカウントがない状態でアプリ登録のページに素直に行っても、ちゃんと登録ページに回されます。

※利用規約は、きちんと読んでくださいね。

前回の郵便番号検索APIでは、アプリ登録のような申請はありませんでしたので、ちょっと敷居が高いかもしれませんが、その後のやっていることはほぼ同じです。

以降のテスト実装では、すでにアプリ登録が済んでいることを前提に進めます。

楽天ブックスを検索する

動きの確認

https://youtu.be/eYeXJ-z7FGw

↑のyoutubeで、動きを公開しています。

前回と同じようにURLを指定しますが、パラメータとしてキーワードとアプリIDを付加しています。
FM16JSON3_0.png

結果は、JSON形式で、retStringに返ってきます。
FM16JSON3_1.png
JSONを分解して、サマリ情報を取得します。
今回の「国立科学博物館」というキーワードで検索すると、4件ヒットしたということがわかります。

では、ヒットした4件を分解して、レコードにセットします。
FM16JSON3_2.png
新規レコードで、4件出来上がっているのがわかります。
今回は、取得したmediumImageUrlリンクから、画像も出してみました。

動きは、郵便番号検索とほぼ同じです。

実装してみる

さて、まずは、フィールド作成です。
検索URLに付加するパラメータと、返ってくるデータ、返ってきたデータの全体情報をグローバルフィールドとして定義しました。
この辺は、利用するシーンによって、また、開発ポリシーによっては実装方法が色々あると思います。
今回はテストなので、簡単に。
FM16JSON4_3.png

検索ボタンへは、楽天APIで指定されたURLを指定します。
FM16JSON4_4.png
利用するAPIによって、パラメータは変わりますが、アプリIDは必ず指定します。

アプリIDの直書きは、悪用を防ぐため、絶対にNGデスヨ!

今回サンプルで利用した楽天ブックス総合検索APIの仕様は、こちらから確認できます。
サンプルでは、必要最低限のオプションしか設定していませんので、ご利用環境に応じてオプションを変更してください。

その他のボタンの動きは、前回前々回と同様です。

レコードにセットするところも同じようにJSONGetElementを利用して分解しています。
以下のスクリプトを参考までにどうぞ。
FM16JSON4_5.png

楽天APIでは、1回に取得できるデータを30件となっています。
サンプルでは30件未満のヒット数を予め調べてキーワードを入れました。
30件以上のデータが返ってくる場合は、出力パラメータのcount,page,first,endなどの全体情報を見て、再度リクエストを投げることで、次のページを取得することができます。
逆に、前ページ、次ページのようなページ遷移もデータ取得となりますので、レスポンスが遅い環境だったり一度取得したデータは取りに行かないというような場合は、先にFileMakerのレコードへ全部セットしてから画面遷移をするなどの工夫が必要です。
また、エラー処理もそれなりに用意しておかないと、思った動きが期待できないなど詰まることもあるかと思います。
API仕様を読み込んで実装していってくださいね。

では、簡単ですが楽天APIをFileMakerから操作したサンプルのご紹介でした。