2
2

APIを初めて触ってみた!Pythonを使って湧き水APIを動かしてみる

Last updated at Posted at 2024-06-27

はじめに

私は今まで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の動作する環境を作成します。
以下のステップで簡単に環境を構築できます:

  1. Anacondaの仮想環境を確認

    conda info -e
    

    image.png

  2. Python 3.11の環境を作成

    conda create -n py311 python=3.11
    

    image.png

  3. 作成した環境を起動

    conda activate py311
    

    image.png

  4. Requestsをインストール

    pip install requests
    

    image.png

  5. python-dotenvをインストール

    pip install python-dotenv
    

    image.png

これで、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キーを入力します>

APIキーは湧き水検索の取得一覧から取得します。
APIキー取得画面

コードの説明

このコードでは、以下のようなことを行っています:

  1. 必要なライブラリをインポート
  2. 環境変数(.envスクリプト)からAPIキーを読み込む
  3. 湧き水リストを取得する関数を定義
  4. APIにリクエストを送信
  5. 取得したデータをJSONファイルに保存
  6. 湧き水の情報を表示

使用例のpref="愛知県"の部分を書き換えることで、他の県の情報も調べることができます。

実行結果

湧き水APIから、愛知県の湧き水情報一覧を獲得することができました。
image.png
image.png

取得したJsonファイル
実行結果画面

コードの一部を転記

{
    "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がたくさんあるので、ぜひ探してみてください!

参考文献

APIの世界は奥が深く、まだまだ探求の余地がありそうです。
みなさんも、APIを使って新しいことにチャレンジしてみてください!

2
2
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
2
2