→ R版
2022年度から学年進行で施行される高等学校学習指導要領解説の「情報編」には,APIの利用について,次のような記述がある:
例えば,気象データや自治体が公開しているオープンデータなどを用いて数値の合計,平均,最大値,最小値を計算する単純なアルゴリズムや,探索や整列などの典型的なアルゴリズムを考えたり表現したりする活動を取り上げ,アルゴリズムの表現方法,アルゴリズムを正確に表現することの重要性,アルゴリズムによる効率の違いなどを扱うことが考えられる。その際,アルゴリズムを基に平易にプログラムを記述できるプログラミング言語を使用するとともに,アルゴリズムやプログラムの記述方法の習得が目的にならないよう取扱いに配慮する。
また,プログラミングによってコンピュータの能力を活用することを取り上げ,対象に応じた適切なプログラミング言語の選択,アルゴリズムをプログラムとして表現すること,プログラムから呼び出して使う標準ライブラリやオペレーティングシステム及びサーバなどが提供するライブラリ,API(Application Programming Interface)などの機能,プログラムの修正,関数を用いてプログラムをいくつかのまとまりに分割してそれぞれの関係を明確にして構造化することなどを扱うことが考えられる。その際,プログラミング言語ごとの固有の知識の習得が目的とならないように配慮する。
更に問題解決のためのプログラミングを取り上げ,プログラミングでワードプロセッサや表計算ソフトウェアのようなアプリケーションソフトウェアが持つ検索や置換及び並べ替えなどの機能の一部を実現したり,ツールやアプリケーションを開発したり,カメラやセンサ及びアクチュエータを利用したり,画像認識や音声認識及び人工知能などの既存のライブラリを組み込んだり,APIを用いたりすることなどが考えられる。その際,人に優しく使いやすいインタフェース,手順を分かりやすく表現するアルゴリズム,効率的で読みやすいプログラムなどのデザインについて触れる。
オープンデータをAPIで取得するプログラムを作れと言っているようにも読める。実際,2019年5月に出た文科省高等学校情報科「情報Ⅰ」教員研修用教材には,第3章に郵便番号検索APIをPythonで叩く例が載っている。
2020年1月に出た教育用プログラミング言語ドリトルv3.3には,Web APIを扱う機能が付け加えられ,5通りのサンプルプログラムが付いている。
以下では,これらを参考に,無登録で使えるWeb APIをPythonで使う例を紹介する。
import requests
url = "https://zipcloud.ibsnet.co.jp/api/search"
param = {"zipcode": "5140007"}
data = requests.get(url, param).json()
# 上の3行は次の2行と同じことである:
# url = "https://zipcloud.ibsnet.co.jp/api/search?zipcode=5140007"
# data = requests.get(url).json()
address = data["results"][0]
print(address["address1"], address["address2"], address["address3"])
入力を含むプログラム:
#! /usr/bin/env python3
import requests
url = "https://zip-cloud.appspot.com/api/search"
while True:
z = input("7桁の郵便番号を入力してください: ")
if not z:
break
print(z)
param = {"zipcode": z}
data = requests.get(url, param).json()
address = data["results"][0]
print(address["address1"], address["address2"], address["address3"])
2021-02-24 13:00:00 のリニューアルによってさまざまなAPI(とは気象庁は言っていない)が使えるようになったようだ。例:
url = "https://www.jma.go.jp/bosai/forecast/data/overview_forecast/240000.json"
data = requests.get(url).json()
print(data['headlineText'])
print(data['text'])
livedoor(LINE Corporation)の提供するWeather Hacksは,場所を指定すると天気予報が取得できる。詳細はWebサービス仕様参照。
url = "http://weather.livedoor.com/forecast/webservice/json/v1"
param = {"city": "240010"} # 三重県津市
data = requests.get(url, param).json()
for x in data["forecasts"]:
print(f'{x["dateLabel"]}の天気: {x["telop"]}')
カーリル・版元ドットコムのopenBDは書誌情報・書影を提供する。
url = "https://api.openbd.jp/v1/get"
param = {"isbn": "978-4-7741-9690-9"}
data = requests.get(url, param).json()
print("著者名:", data[0]["summary"]["author"])
print("書名:", data[0]["summary"]["title"])
print("出版社名:", data[0]["summary"]["publisher"])
print("出版年月:", data[0]["summary"]["pubdate"])
ハートレイルズのHeartRails Expressは路線/駅名データ等の地理情報を提供する。
url = "http://express.heartrails.com/api/json"
param = {"method": "getLines", "prefecture": "三重県" }
data = requests.get(url, param).json()
print("路線名一覧:")
for i in data["response"]["line"]:
print(i)
param = {"method": "getStations", "line": "近鉄名古屋線" }
data = requests.get(url, param).json()
print("駅と経度・緯度:")
for i in data["response"]["station"]:
print(i["name"], i["x"], i["y"])
鳥山優子さんのコンビニお菓子の情報サイトお菓子の虜のWeb API。
url = "https://sysbird.jp/toriko/api/"
param = {"apikey": "guest", "format": "json", "keyword": "マシュマロ" }
data = requests.get(url, param).json()
print("菓子名・メーカー:")
for i in data["item"]:
print(i["name"], i["maker"])
api_key
として DEMO_KEY
を指定することによって登録なしで使える(IPアドレスあたり毎時30回,1日50回の制限あり)。Last modified: