Web APIっていうのは初めて使ってみたらビックリだった
どうも、じぇいかわさきです。
みなさんは、実際のWebなどのサービスが自分のプログラムで使えたら良いなって思ったこと無いですが?
簡単にいえば、AmazonやGoogleなどの機能を自分のプログラムで使えたら、かっこよくなるのにってなことですね。
それを実現するのが、Web APIと言う機能なんです。今回は初めてWeb APIを使って見たことを紹介します。
プログラミングを始めた人が、Web APIに興味を持ってくれると良いですね。
Web APIを使うと簡単に機能拡張ができるぞ
使いこなせたら、Coolなアプリができる
モジュールと同じ感じだね
そもそもWeb APIってなんだろう
今までプログラミングを勉強してきていますが、自分がプログラムを組めなくても、誰かが作ったプログラムを活用する方法が有った。
その活用するためのプログラムは、モジュールとかライブラリーとか言われているもので、既に誰かが作成して公開しているものがそれに当たります。
現在、自分はPythonを勉強していますが、Pythonではimportと言うコマンドを使って、既に存在しているモジュールを自分のプログラムに呼び込む事ができます。
このモジュールをimportすることにより、プログラムのコードを書かなくても、その機能を手に入れることができるんです。
例えば、import requestsとコードを書くことにより、requestsと言うモジュールを取り込むことができます。
このrequestsというのは、インターネットへアクセススうるための機能が書かれたモジュールなんですね。
このように、自分でコードを書かなくても自分のプログラムを補完してくれるのが、モジュールなんです。
これと同じ考え方なのが、Web APIなんですね。
このWeb APIは、インターネット上に有る他のコンピューターの機能を、HTTPを使って利用できる仕組みをWeb APIと言うんです。
従って、Web APIは自分でつくるのではなく、Webで公開しているコンピューター側で、どうぞこのWebサービスの機能を使ってくださいと、公開しているんですね。
例えば、Googleが検索機能のWeb APIを公開していれば、そのWeb APIを使うことによって、あなたが作ったプログラムで、Googleの検索機能を組み込む事ができるんです。
自分が若かりし頃は、プログラミングをするときには、全部自分でコードを書かなければいけませんでした。
しかし、現在は沢山のモジュールが公開されていますし、インターネットの発達によりWeb APIのような機能も公開されているので、非常に簡単に素晴らしいアプリを開発できるようになったんですね。
ちなみに、APIはApplication Programming Interfaceの略語で、そのものズバリ、アプリケーションとプログラムをつなぐものってことですね。
つまり、Webなどが使っている機能(アプリケーション)を自分のプログラムで使用するための仲介役(インターフェース)ってことです。
天気の自動取得に挑戦してみた
今回は、参考書に書かれている通りにOpen Watherと言うところが提供しているAPIを使って、自分のところの天気を取得するコードを作ってみた。
このOpen WatherのAPIを使用するためには、Open Watherに登録しなければいけません。その方法は、目的ではありませんので割愛しますが、ネットで調べれば直ぐに出てきます。
まず、地元の天気をAPIを使って取得する簡単なコードを、参考書にそってタイプしてみます。
import requests
import json
url = "http://api.openweathermap.org/data/2.5/weather?q={city}&appid={key}&lang=ja&units=metric"
url = url.format(city="Shizuoka,JP", key="API key code")
jsondata = requests.get(url).json()
print(jsondata)
今まで習って来なかったのは、jsonというモジュールですね。
jsonと言うのは、javascript object notationの略で、シンプルで使いやすいデータ表現方法らしい。そのため、javascriptだけでなく他の言語にも使われるようになったそうだ。
上記のコードを実行すると、以下のようなデータを入手されるのだ。
================== RESTART: /Users/******/Documents/chap5-2.py =================
{'coord': {'lon': 138.3831, 'lat': 34.9769}, 'weather': [{'id': 500, 'main': 'Rain', 'description': '小雨', 'icon': '10d'}], 'base': 'stations', 'main': {'temp': 10, 'feels_like': 7.88, 'temp_min': 10, 'temp_max': 10, 'pressure': 1018, 'humidity': 100}, 'visibility': 8000, 'wind': {'speed': 3.09, 'deg': 50}, 'rain': {'1h': 0.47}, 'clouds': {'all': 75}, 'dt': 1611364556, 'sys': {'type': 1, 'id': 8019, 'country': 'JP', 'sunrise': 1611352258, 'sunset': 1611389110}, 'timezone': 32400, 'id': 1851717, 'name': '静岡市', 'cod': 200}
>>>
どうやら、{で始まり、}で終わるのがjsonの記述方法らしいね。しかし、このままじゃ、ところどころに分かるワードが有るが、それ以外はさっぱり意味が分からない。
従って、このjson記述のデータを整理して見やすくする必要が有ると思いませんか。
このjson記述データを整形するのがpprintというモジュールらしい。
それでは、その機能を使って先程のデータをもっと見やすく変換してみよう。
import requests
import json
from pprint import pprint
url = "http://api.openweathermap.org/data/2.5/weather?q={city}&appid={key}&lang=ja&units=metric"
url = url.format(city="Shizuoka,JP", key="API key code")
jsondata = requests.get(url).json()
pprint(jsondata)
違いは、pprintというモジュールを読み込み、最後のprintがpprintに変わっただけです。
このコードを実行すると、なんとこんなにも見やすくなるんです。
================== RESTART: /Users/******/Documents/chap5-5.py =================
{'base': 'stations',
'clouds': {'all': 75},
'cod': 200,
'coord': {'lat': 34.9769, 'lon': 138.3831},
'dt': 1611370412,
'id': 1851717,
'main': {'feels_like': 6.26,
'humidity': 100,
'pressure': 1017,
'temp': 9,
'temp_max': 9,
'temp_min': 9},
'name': '静岡市',
'rain': {'1h': 0.69},
'sys': {'country': 'JP',
'id': 8019,
'sunrise': 1611352258,
'sunset': 1611389110,
'type': 1},
'timezone': 32400,
'visibility': 6000,
'weather': [{'description': '小雨', 'icon': '10d', 'id': 500, 'main': 'Rain'}],
'wind': {'deg': 40, 'gust': 8.75, 'speed': 3.6}}
>>>
つながっていると分からなかったデータも、このように整列されると、何が書いてあるのかが一目瞭然になりますね。
内容は実に密度が濃く、東経や北緯の位置から、気温や湿度、最高気温と最低気温、風速や郵便番号までも入っているんですね。
このデータはすごいや。
このデータの中から、必要な部分だけを更に抜き出せば、自分が必要としている天気に特化した内容になりますね。
先の結果より、目的とする項目のタイトルが分かりましたので、コードを以下のように修正します。
import requests
import json
url = "http://api.openweathermap.org/data/2.5/weather?q={city}&appid={key}&lang=ja&units=metric"
url = url.format(city="Shizuoka,JP", key="API key code")
jsondata = requests.get(url).json()
print("都市名 = ",jsondata["name"])
print("気温 = ",jsondata["main"]["temp"])
print("天気 = ",jsondata["weather"][0]["main"])
print("天気詳細 = ",jsondata["weather"][0]["description"])
これを実行すると、必要としていた天気だけが抜き出せるんです。
================== RESTART: /Users/******/Documents/chap5-6.py =================
都市名 = 静岡市
気温 = 9
天気 = Rain
天気詳細 = 小雨
>>>
すごい、Webサイトからデータを取得して、自分の欲しい物だけを抜き出すことができました。
相変わらず、途中でエラーが多発しますが、全て自分のタイプミスばかりです。
自分でコードをタイプする方法は、ホントに身につきますね。
Web APIを使えると世界が変わる
今回はWeb APIを使用することについて書いてみましたが、どうでしたか?
自力ではどんなコードを書けばよいのか、全くわからないような内容でも、その機能を持っているWeb APIを利用すれば、ほんの数行でプログラムが実現できるんです。
自分で全てを作るのも大切ですが、既に出来上がっており、多くの人が使うことで完成度が上がっているモジュールを利用するほうが、もっと簡単にプログラムできるということですね。
そして、自分で使うことで動作内容も理解出来、自分のものにすることができるんです。
興味を持った方、是非やってみてください。