PythonでポケモンAPIを叩いてみよう
株式会社テイクーワンのY.Mです。
業務でAPIを扱う機会は増えているものの、「そもそもAPIって何をしているのか」「どうやってデータを取得するのか」がイメージしづらいと感じる方は多いと思います。抽象的な説明だけでは理解しにくい概念も、身近な題材を使うとぐっと掴みやすくなります。私自身「APIを叩く」と言われ、本質的な操作を理解していないと感じていました。
そこで今回は、誰もが知っている“ポケモン”のデータを提供してくれる PokéAPI を使いながら、APIの基本的な仕組みをPythonで実際に触れて学んでいきます。ポケモンの名前やタイプを取得しながら、REST APIの構造やリクエスト・レスポンスの流れを掴んでみたいと思います。
「APIってこういうことだったのか」と腑に落ちるきっかけになれば幸いです。
![]()
準備
今回使うPokéAPIは、APIの中の一つであるREST APIになります。REST APIは、Webブラウザが普段やっている通信の仕組みを、そのままAPIのやり取りにも使う方式です。
(具体的にはHTTPでは GET https://example.com/weather/today とすると今日の天気ページが返ってくるといったGETメソッド,POSTメソッドなどの仕組みを用いています)
※PokéAPI は任天堂株式会社・株式会社ポケモンが提供する公式 API ではなく、有志によって運営されている非公式の公開 API です。
まずは気軽に、ピカチュウをPythonで呼び出すところから始めてみましょう。
APIという言葉を聞くと難しそうに感じますが、実際には「URLにアクセスしてデータを取得する」だけの、とてもシンプルな仕組みです。
例えば、ピカチュウのデータは以下のURLからjson形式で取得できます。ブラウザで開くと、ずらっとJSONが表示されます。
https://pokeapi.co/api/v2/pokemon/pikachu
次にPythonでAPIを叩くための準備をしていきます。Pythonは公式サイトからインストールするだけでOKです。
PythonでHTTPリクエストを送るには、標準的には requests ライブラリを使います。
インストールするにはコマンドプロンプトにて以下を実行するだけで構いません。
pip install requestsC:\Users\bofde>pip install requests
Collecting requests
Downloading requests-2.33.0-py3-none-any.whl.metadata (5.1 kB)
ピカチュウの情報を取得する
実際にピカチュウのデータを取得してみましょう。下記のコードを用意してください。
import requests
url = "https://pokeapi.co/api/v2/pokemon/pikachu"
response = requests.get(url)
# レスポンスをJSONとして読み込む
data = response.json()
print("名前:", data["name"])
print("タイプ:", data["types"][0]["type"]["name"])
print("重さ:", data["weight"])
print("高さ:", data["height"])
コードのポイント解説
requests.get(url)
→ 指定したURLにGETリクエストを送る
response.json()
→ APIから返ってきたJSONをPythonの辞書型に変換する
data["types"][0]["type"]["name"]
→ JSONの階層構造を辿って「タイプ」を取得している
<実行結果>
名前: pikachu
タイプ: electric
重さ: 60
高さ: 4
「APIを叩く」という言葉のイメージが、少し具体的になってきたのではないでしょうか。
ピカチュウの他のデータも取り出してみる
次に、ピカチュウの特性も取り出してみます。以下のコードを用意します。
import requests
url = "https://pokeapi.co/api/v2/pokemon/pikachu"
response = requests.get(url)
data = response.json()
print("【特性一覧】")
for ability in data["abilities"]:
print("-", ability["ability"]["name"])
<実行結果>
【特性一覧】
- static
- lightning-rod
ピカチュウはせいでんき(static)と、ひらいしん(lightning-rod)という特性です。
APIが持つたくさんの情報を選んで抽出できるということが体験できたでしょうか。
JSONの階層構造を辿ることで、必要なデータだけを抽出できます。
おわりに
PokéAPIを使ってピカチュウのデータを取り出してみるだけでも、APIがどれだけ多くの情報を返してくれるかが分かったと思います。プロフィールや特性だけでなく、技や進化情報など、さらに複雑なデータも扱えることがイメージできたのではないでしょうか。
また、複数のデータを組み合わせれば、ポケモン同士を比較したり、条件に合うポケモンを探したりと、相互に処理する仕組みも作れそうです。こうしたデータ取得の方法で、必要な情報を簡単に取り出せると知れたら、より高度な自動化ツールや情報収集ツールなどに生かせるのではと感じていただければ幸いです。
今回の内容が、APIを使った開発に興味を持つきっかけになれば嬉しいです。
