はじめに
私は今までAPIを触ったことがありませんでした。
今回は湧き水APIを動かしてみたので、その様子を紹介します。
開発環境
まず、今回使用した開発環境を紹介します:
- Windows 11 (AMD Ryzen 5 7530U with Radeon Graphics 2.00 GHz)
- Visual Studio Code 1.90.2
- Anaconda(仮想環境 Python3.11)
Pythonを動かす仮想環境として、Anacondaを使用しています。
環境構築
APIを使うための準備として、Anacondaを使ってPython3.11の動作する環境を作成します。
以下のステップで簡単に環境を構築できます:
-
Anacondaの仮想環境を確認
conda info -e
-
Python 3.11の環境を作成
conda create -n py311 python=3.11
-
作成した環境を起動
conda activate py311
-
Requestsをインストール
pip install requests
-
python-dotenvをインストール
pip install python-dotenv
これで、APIを試す準備が整いました!
ソースコード
さて、いよいよ湧き水APIを使うためのコードを書いていきます。
こちらをコピペして使っていきます。
以下が完成したソースコードです:
「main.py」スクリプト
import requests
import json
import os
from dotenv import load_dotenv
# .envファイルから環境変数を読み込む
load_dotenv()
def fetch_spring_water_list(pref, token):
url = "https://app.livlog.xyz/webapi/v2/spring-water/list"
params = {
"pref": pref
}
headers = {
"Authorization": f"Bearer {token}"
}
try:
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
data = response.json()
# JSONデータをファイルに保存
filename = f"spring_water_{pref}.json"
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
print(f"JSONデータを {filename} に保存しました。")
print("湧き水リスト:")
for spring in data["results"]:
print(f"名前: {spring['name']}")
print(f"住所: {spring['address']}")
print(f"概要: {spring['overview']}")
print("---")
print(f"合計 {len(data['results'])} 件の湧き水が見つかりました。")
else:
print(f"エラー: ステータスコード {response.status_code}")
print(response.text)
except requests.RequestException as e:
print(f"リクエスト中にエラーが発生しました: {e}")
# 使用例
pref = "愛知県"
token = os.getenv("API_KEY") # .envファイルからAPIキーを読み込む
fetch_spring_water_list(pref, token)
「.env」スクリプト
API_KEY=<ここに取得したAPIキーを入力します>
コードの説明
このコードでは、以下のようなことを行っています:
- 必要なライブラリをインポート
- 環境変数(.envスクリプト)からAPIキーを読み込む
- 湧き水リストを取得する関数を定義
- APIにリクエストを送信
- 取得したデータをJSONファイルに保存
- 湧き水の情報を表示
使用例のpref="愛知県"の部分を書き換えることで、他の県の情報も調べることができます。
実行結果
湧き水APIから、愛知県の湧き水情報一覧を獲得することができました。
コードの一部を転記
{
"metadata": {
"title": "Success",
"detail": "OK",
"status": 200
},
"_links": {
"self": {
"href": "/v2/spring-water/list"
}
},
"results": [
{
"createDate": "2024-02-25T10:05:00.000+00:00",
"createCd": "admin",
"updateDate": "2024-02-25T10:05:00.000+00:00",
"updateCd": "admin",
"id": 1828,
"name": "金明水",
"furigana": "きんめいすい",
"oldAddress": "愛知県名古屋市千種区天白町 金明水",
"overview": "東山動植物園の東南の斜面から湧出しており、近傍には小さな祠が作られています。",
"access": "◎",
"activity": "市民モニターによる実態調査",
"address": "愛知県名古屋市名東区藤巻町1丁目",
"latitude": 35.1507491,
"longitude": 136.9848604,
"link": "https://www.env.go.jp/water/yusui/result/sub4-2/map/23100-1.jpg"
},
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
// 一部省略しています。
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
{
"createDate": "2024-02-25T10:05:00.000+00:00",
"createCd": "admin",
"updateDate": "2024-02-25T10:05:00.000+00:00",
"updateCd": "admin",
"id": 1861,
"name": "恋の水神社",
"furigana": "こいのみずじんじゃ",
"oldAddress": "愛知県美浜町知多郡大字奥田字中白沢92-91 恋の水神社",
"overview": "歴史的由緒ある泉を「恋の水」として奉り、拝殿・祠等と共に「恋の水神社」として管理保全されている。",
"access": "◎",
"activity": "観光地として神社の社守により、付近の清掃等が行われている。",
"address": "愛知県知多郡美浜町大字奥田字中白沢92-91",
"latitude": 34.7868012,
"longitude": 136.8793983,
"link": ""
}
],
"errors": null
}
まとめ
AnacondaとPython、そしてVisual Studio Codeを使えば、意外と簡単にAPIを叩くことができました。最初は不安でしたが、実際にやってみると楽しく、新しい発見がたくさんありました。
APIを使うことで、様々なデータや機能を自分のプログラムに組み込むことができます。今回は湧き水のデータでしたが、他にも面白いAPIがたくさんあるので、ぜひ探してみてください!
参考文献
- Anaconda
- 湧き水API
- Qiita記事 湧き水APIをPythonでたたいてみた!
APIの世界は奥が深く、まだまだ探求の余地がありそうです。
みなさんも、APIを使って新しいことにチャレンジしてみてください!