4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Web APIAdvent Calendar 2020

Day 4

【FileMaker】Pokemonの統計情報をゲットだぜ

Last updated at Posted at 2020-12-03

なんてことはない、curlでPokemonゲット、という話です。

なんでFileMakerでPokemonゲットしたくなったか

Rakuten Rapid APIをさまよってたら、偶然Pokemon GoのAPIにたどり着き、コードスニペットとかみたら単純だし、やってみようかな、と思った次第です。

したら、簡単すぎておったまげ。
(「おったまげ」って、商標登録されてましたっけ?してたら修正しないと)

あと、ポケモン好きな息子に褒めてもらえるかな、と思ったりして。

FileMakerバージョン

今回は、curlとJSONを使っていますので、FileMaker 16以上で実装できます。

Rakuten Rapid APIの準備

まずは、アカウントを作ってログインしておけば、大抵のことはできます。
無料・有料にかかわらず、便利なAPIが山のように埋まっているので、溺れないように注意です。
あとは、"pokemon"と検索窓で検索すれば、Pokemon Go APIページに辿り着けます。
というか、この記事を書いている現在、1個しかヒットしません。
貴重です。

しかも、無料です。
ステキです。

アカウントを取得する

Rakuten Rapid APIにアカウントを作ると、自分のAPIキーが割り振られます。

どこぞのAPIのように、「APIキーなくしたらあかんから、どっかにメモっといて」というのもありません。
自分の使いたいAPIのページに行くと、すでに自分のAPIキーが表示され、テスト実行がすぐにできます。
その他、開発者ボードページで、アカウント情報の確認やAPIキーの管理ができます。

「なくしたらあかんから、、、」は不要と言いながら、スクリプトから実行するときはAPIキーは必要なので、複数のAPIを使用する場合は、グローバールフィールドなどに保存しておいた方が使い勝手がいいです。

どのPokemon情報を取得するか

今回は、Pokemon Stats(統計情報)を取得します。
単に、エンドポイントページの最初にあったから、、、

残念ながらPokemonの画像はゲットできませんので、どこかしらAPIを提供しているところがあると嬉しいです。

FileMakerの実装

テーブル設計

まずは、Pokemon Go APIに接続してゲットした際のフィールドを持っておきます。
フィールドにせず、変数でも問題ないので、変数で事足りる場合は、フィールドを作らなくても問題ないです。
あとは、ポケモンの統計情報を保存するテーブルを作ります。
一つのポケモンに対して、formがいくつかあるので、formに関しては子テーブルとして設計します。
スクリーンショット 2020-12-02 18.25.22.png
それぞれのフィールド設計は、以下のような感じです。

テーブル:PokemonJson

(なくてもいい)
スクリーンショット 2020-12-02 18.25.39.png

テーブル:Pokemon

スクリーンショット 2020-12-02 18.25.45.png

テーブル:Pokemons

スクリーンショット 2020-12-02 18.25.50.png

レイアウト設計

Pokemon Go APIを実行するレイアウト:PokemonJSON
ゲットしたPokemonを表示するレイアウト:Pokemon
wk〜となっているレイアウトは、スクリプトの中からゲットしたPokemonを登録する作業用レイアウトで、フィールドを一切配置していません。
件数が多いので、レイアウトにフィールドなどがあった場合、表示処理時間がめっちゃかかってしまうための対策です。
スクリーンショット 2020-12-02 18.26.40.png

レイアウト:PokemonJSON

スクリプトを実行するボタンを配置しています。
単にテストをするだけなら、このレイアウトも要りません。
スクリーンショット 2020-12-02 18.26.17.png

テーブル:Pokemon

ゲットしたPokemonを表示します。
今回は1画面で複数のformも表示できるようにしています。
スクリーンショット 2020-12-02 18.26.58.png

スクリプト

一つのスクリプトにまとめてもいいのですが、別の使い回しとかあるかな、と思って以下のように分けています。
ボタン貼り付け用:mainPokemon
Pokemon統計情報ゲット:getPokemonStats
ゲットした情報を保存:setPokemon

スクリプト:mainPokemon

処理の最後に、作業用レイアウトからPokemonレイアウトに移動しておきます。
スクリーンショット 2020-12-02 18.27.22.png

スクリプト:getPokemonStats

APIのエンドポイントに接続します。
エンドポイント:https://pokemon-go1.p.rapidapi.com/pokemon_stats.json
スクリーンショット 2020-12-02 18.27.45.png

curlオプションのヘッダーは、スニペットにあるものをcurl用に編集して使います。

pokemon-go1.p.rapidapi.com"" &
" -H \"x-rapidapi-key : <APIキー>\""

スクリーンショット 2020-12-02 18.51.53.png

スクリプト:setPokemon

お決まりのように、取得したJSONをグルグルLOOPで回してセットします。
配列構造もネストが無く単純なので、とても扱いやすいです。
ただ、件数はJSONで返されないので、ListKeyで判断します。
スクリーンショット 2020-12-02 19.00.49.png

シンプル。。。

Simple is best.を地で行くようなAPIで、なんていい子なんでしょう。
ただ、全て英語で返されるので、ポケモン名はどこかで日本語を提供しているところにAPIで繋がれれば日本人としてはベストですかね。
英語でも問題ないけど。

Pokemon Go APIには、統計情報の他にも様々なPokemon Go情報を辞書的に取得できるので、自分専用のPokemon Go辞典を作成するのもいいかと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?