Web APIの利用

Web APIとは

APIはApplication Programming Interfaceの略で、プログラムからアプリケーションを利用できるように用意されたもので、開発者(プログラマー)向けのアプリケーションだと思っても良い。

Web APIはWebを介して使用するAPIで、近年ではAPIというとWeb APIを指していることが多い。

Web APIとスクレイピング

Web APIで実現できることは、スクレイピングを用いて実現できることも多い。ただし、APIはサービス提供側が開発者向けに公開しているのに対して、スクレイピングはHTMLコンテンツをコンピュータで強引に解析するもので、公式にサポートされた方法ではない。

スクレイピングは公式にサポートされた方法でないため、Web APIを利用する場合と比べて以下のようなデメリットがある。

  • デザインやURLの変更の影響で、突然プログラムが動作しなくなることがある
  • サービス提供側にロボットと判断され、アクセス拒否される可能性がある
  • サービス提供側のサーバに負荷をかけすぎて、偽計業務妨害に問われる可能性がある
  • 認証が必要なサービスを利用する場合、開発者側でIDやパスワードなどを管理する必要があり、セキュリティリスクが大きい
  • そのため、スクレイピングがしたいと思った場合、まずAPIが用意されていないか、代替手段はないか確認するのが良い。

    API使用上の注意点

    APIには、サーバーへの負荷を抑えるため、「リクエストは1秒に1回まで」や「1日に1万回まで」といったような実行回数制限が設定されていることが多い。テスト実行時では取得するデータが少なく問題が起きないが、本番運用時では取得するデータ数が増えて障害がでることもあるため、利用回数の見積もりと設計が必要になる。どうしてもAPI利用回数が実行回数制限内に収まらない場合は、APIの運営会社に制限緩和の相談をすると対応してくれる場合もある。その際、事前に追加の費用をどのくらい用意できるか決めておくのが良い。

    また、有料のAPIキーには有効期限がある場合もあるため、本番運用時はAPIキーの更新イベントを忘れないように注意する必要がある。

    Web APIを使ってみる

  • 以下のリンクから無料で利用できる「図書館API」を確認する https://calil.jp/doc/api.html
  • ページの下部に「こちらから申請してください」とあるので、ここからアプリケーションキーを取得する
  • Notion Image

    3. 図書館API仕様書を確認する

    Notion Image

    4. 図書館API仕様書に従って、Pythonで以下の処理を記述する

    appkey = "<appkey>"
    url = f"https://api.calil.jp/library"
    param = {"appkey":appkey, "pref":"神奈川", "city":"横浜", "format":"json", "callback":"no"}
    res = requests.get(url, param).json()
    for library in res:
        print(library["formal"])
    
    
    # 神奈川県立図書館
    # 横浜市中図書館
    # 横浜市中央図書館
    # 横浜市保土ケ谷図書館
    # 横浜市南図書館
    # ...

    著者画像

    ゆうき

    2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.