高等学校 情報Iの要点 コンピュータとプログラミング後編 #6
リュディアです。引き続き高等学校 情報Iの要点 コンピュータとプログラミング後編 をまとめていきます。
高等学校 情報Iの要点 コンピュータとプログラミング後編のまとめへのリンクをまとめておきます。
今回は Python を使ってWEB で公開されている API を利用したプログラミングの例を見てみましょう。APIとはApplication Programming Interface のことです。アプリケーションをプログラミングするためのインタフェースということなのですが何のことだかわかりませんね。例をあげてみていきます。
例えば以下のページを見てください。郵便番号から住所を検索するための API を公開しているページです。
プログラム中からこの URL にアクセスし、郵便番号を指定すると住所を返す仕組みが定義されています。郵便番号から住所を検索するプログラムを準備する際に、WEB で公開されている API を利用するメリットは何でしょうか?例えば WEB API を使ったプログラムはネットワークにつながっていない環境では動作しないというデメリットもあるのになぜわざわざ API を利用するのでしょうか。
最大の理由はデータのメンテナンスが不要であるということです。例えば同じ機能を提供するプログラムとして郵便番号のデータをダウンロードして手元に置きその内容を検索するプログラムも考えられます。しかしダウンロードしているということは郵便番号と住所の対応が変わる度に新しいデータをダウンロードする必要があります。しかし API を使えば常に最新の郵便番号情報を利用することが可能です。もちろんデータが常にメンテナンスされているような公式データを使う必要があります。
では郵便番号から住所を検索するプログラムを Python で作ってみましょう。
import requests
import json
url = "http://zipcloud.ibsnet.co.jp/api/search"
param = {"zipcode": "100-0013"}
res = requests.get(url,params=param)
print(res.text)
実行結果
{
"message": null,
"results": [
{
"address1": "東京都",
"address2": "千代田区",
"address3": "霞が関",
"kana1": "トウキョウト",
"kana2": "チヨダク",
"kana3": "カスミガセキ",
"prefcode": "13",
"zipcode": "1000013"
}
],
"status": 200
}
順に見ていきます。最初の import は Python の requests, json という名のライブラリをこのプログラムで利用しますという意味です。プログラムの実行環境に requests や json の Python モジュールをインストールしておく必要があるのですが Google Colab を使っているのでプログラミング環境を気にする必要はありません。
次に API を公開している URL を url に格納し、検索規則に従って郵便番号 = zipcode を 100-0013 に設定します。これを requests.get に渡し res という変数に格納し、res 関数の中の text 領域を表示しているわけです。少し細かいことまで書いてますが慣れてください。この実行結果に表示している形式を JSON 形式と言います。JSONは JavaScript Object Notation を表し JavaScript だけでなく様々な場所で利用されています。詳細については英語ですが以下のページに標準仕様がありますがプログラミングをするだけならこういう形なのかと思っておけば問題ないです。
そして先ほどの続きに以下を追加しましょう。
response = json.loads(res.text)
address = response["results"][0]
print(address["address1"])
print(address["address2"])
print(address["address3"])
実行結果
東京都
千代田区
霞が関
いかがでしょうか?郵便番号から郵便番号に対応した住所を取得できましたね。このような API を利用すれば外部で管理されているデータを利用したプログラムを容易に作成可能です。
私どもリュディアでも過去に Google AppScript という Google が提供するJavaScript の拡張言語を使って緯度経度から住所を検索するプログラムを作成しました。Python でも同様のことが可能です。参考にどうぞ。
高等学校 情報Iの要点 コンピュータとプログラミング後編 に関するまとめの続きは以下からどうぞ。
では、ごきげんよう。