Python PR

【Python】簡単なWeb APIを使ってみよう!

記事内に商品プロモーションを含む場合があります

この記事では、Pythonで色々なWeb APIを使ってみます。

APIを使うことでそのサービスの機能を自分(自社)で開発する必要が無く、開発効率の向上と開発費用の削減が見込める。もちろんお金がかかるAPIもあるので注意してください。

それでは、APIの使い方について見ていきましょう!

APIとは?

APIとは、「Application Programming Interface(アプリケーション プログラミング インターフェイス)」の頭文字です。

名前からはどんなものかイメージしづらいですが、簡単に言えば 自分が作っているアプリ内で他のアプリの機能を使うためのもの です。

例えば、開発しているアプリ内で顔認証システムを使いたいとします。しかし、顔認証システムを一から実装するのはコストが高く、なかなか難しい。そんな時にMicrosoftが提供している「Face API」を使えば、簡単にアプリに顔認証システムを組み込むことができます。

このように、APIを使うことで自分で開発を行わなくても欲しい機能を実装することができます。

もっと詳しく知りたい場合は、以下のリンクを参考にしてください。

外部リンクAPI (エーピーアイ)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

Web APIの使い方

APIの中でも「Web API」というものがよく使われています。Web APIとは、Web経由で使用できるAPIのことを言います。

もう少し具体的に言うと使用するサービスのエンドポイント(サービスに接続するためのURL)に色々な情報を含めてHTTPリクエストを送信することで使用できます。

イメージとしては、窓口(エンドポイント)に色々な資料を持って「こういうことがしたいんで機能を使わしてくれませんか?」とお願いしにいってる感じです。

HTTPリクエストを送信すると返事(HTTPレスポンス)が返されます。API仕様書通りにHTTPリクエストが送れていればお願いしたことの結果が返されます。

例えば、天気予報 API(livedoor 天気互換)に「東京の天気を教えてください」とHTTPリクエストを送るとHTTPレスポンスとして天気や気温、風の強さなどを取得することができます。

郵便番号検索API

郵便番号検索APIとは、郵便番号から住所を取得できるAPIです。登録フォームなんかで郵便番号を入力すると住所が勝手に出てきてくれるようなアレを実装できたりします。

外部リンク郵便番号検索API - zipcloud

今回は、input関数で受け取った郵便番号の住所を返すプログラムを作成します。早速作っていきますが、最初にサイト(API仕様書)をよく読みましょう!

すると、エンドポイントと必要なパラメータが書いてあります。今回必須なパラメータは郵便番号(zipcode)だけなので用意してリクエストを送ります。

HTTPリクエストは「Requests」を使って送信します。

LinkHTTPリクエストを送信する方法

import requests

# 任意の郵便番号を受け取る
zipcode = input('郵便番号: ')

# エンドポイント
api_endpoint = 'https://zipcloud.ibsnet.co.jp/api/search'
# クエリパラメータ
params = {
    'zipcode' : zipcode,
}

# HTTPリクエストを生成
res = requests.get(api_endpoint, params)
# HTTPレスポンスを出力
print(res)

# jsonを辞書に変換
res_json = res.json()

# 取得したデータを出力
for result in res.json()['results']:
    print(result['address1'] + result['address2'] + result['address3'])

実行結果

郵便番号: 162-0825
<Response [200]>
東京都新宿区神楽坂

郵便番号検索APIを使って郵便番号から住所を取得することができました。

まとめ

この記事では、PythonでWeb APIを使う方法を簡単に解説しました。

今回はシンプルなWeb APIを使ったので簡単でしたが、DropboxやTwitterなどのAPIを使用するには、そのサービスのアプリを作成してAPIキーを生成する必要があります。

また、OAuth(オーオース: 認可)などのフレームワークも登場しますが、頑張って勉強しましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ