こんにちは、はやたす(@hayatasuuu )です。
第3回目の本記事では「APIとは何か」を解説していきます。
前回の記事 : 2 Python×ビットコイン自動売買 | Bitcoin自動売買の環境構築をしよう!
なぜAPIについて解説をするのか。それはビットコインの自動売買で、APIをスムーズに操作する必要があるからです。
Googleで「APIとは」と検索すると、以下のような解説が出てきます。
Application Programming Interface(アプリケーション プログラミング インターフェース)のことです。
世の中のサイトに申し訳ないですが、このような解説では何も理解できません…。
僕自身、プログラミングを始めたとき意味が不明でした。
「そういうことを聞きたいんじゃないんだよな〜」と、かなり理解に苦労した記憶があります。
そこで当記事では、APIについて分かりやすく解説していきます。
ビットコインの自動売買をするなら、APIは必要不可欠です。
APIを理解しておくと、他にも応用が利きます。今のうちに理解を進めておきましょう!
APIとは?初心者でも3分で理解できるように解説!
APIとはApplication Programming Interface(アプリケーション プログラミング インターフェース)のことです。
なんとなく「アプリケーションなのかな…?」と理解できますが、これだけ聞いてもイマイチ腑に落ちないですよね。
なので、ここから丁寧に解説していきます。
一般的なWebアプリ(Webサイト)の場合
APIの解説をする前に、一般的なWebアプリやWebサイトを考えてみましょう。
Webアプリとは何かというと、PC版のYouTubeとかTwitterのことです。パソコンでhttps://twitter.comにアクセスすれば、Twitterアプリを利用できますよね。
このようにYouTubeやTwitterは、Web上で使えるアプリケーションなので”Webアプリ”と呼ばれます。
でもここで言いたいのは、そんな当たり前の話ではないです。
ここで考えたいのは、これらWebアプリは「誰のために作られているのか?」です。
当然ですが僕たちが使うので、Webアプリは「ヒトのために作られている」と言えます。
つまり、いうなれば”Application Human Interface”です。
インターフェースという言葉が曖昧ですが、接している部分とか表面みたいな意味だと思ってください。
なので”Application Human Interface”を直訳するなら、ヒトが接するアプリケーションってことですね。
ゆえに、Webアプリは”Application Human Interface”だと言えます。
※Application Human Interfaceなんて言葉は存在しません。勝手に僕が言っているだけです。笑
WebアプリとAPIの違い
Webアプリはヒトが使うためのアプリなので、”Application Human Interface”でした。
それに対して、APIは”Application Programming Interface”です。
- Webアプリ : Application Human Interface
- API : Application Programming Interface
つまり、APIというのはプログラムのためのアプリケーションになります。
例えば僕たちはTwitter(https://twitter.com )にアクセスして、良いと思った投稿に「いいね!」します。
でもプログラムを使う場合は、URLにアクセスして「いいね!」します。
要するにAPIとは、プログラムから何らかの操作をしたり、データ取得したりするためのアプリケーションです。
Pythonを使ったAPIアクセスの実例【スクレイピングと比較して解説】
というわけでAPIについて解説してみましたが、実例を見たほうが理解しやすいです。
ここではPythonを使って、①Webサイトへのアクセスと②APIへのアクセスを比較していきます。
※この記事はPython×ビットコイン自動売買シリーズの一つなので、Coincheck APIへのアクセスをおこなっていきます。
Webサイトにアクセスする場合
Pythonを使って当ブログ「テックダイアリー」にアクセスしてみたいと思います。
import requests
url = 'https://tech-diary.net'
r = requests.get(url)
print(r.text)
上記のようなコードを書くことで、Pythonから当サイトにアクセスできます。
※ここら辺が怪しい場合には、僕のYouTubeで公開しているスクレイピング入門の学習をオススメします!
僕たちはブラウザを介してWebサイトにアクセスします。ブラウザというのは、Google ChromeとかSafariのことですね。
ゆえに普段アクセスするときは、見やすい形でWebページが表示されます。
でもWebページのもとになっているのは単なるHTMLです。だから、Pythonを使ってWebサイトにアクセスすると、WebページのHTMLを取得できます。
※HTMLの内容が非常に長いので掲載は割愛します!
APIにアクセスする場合
次はPythonを使ってCoincheck APIにアクセスしてみます。公式ドキュメントを見ると、色々な機能が提供されていることが分かります。
今回は試しにティッカー情報を取得してみましょう。
※口座を持っていなくても大丈夫なので、ぜひコピペして実行してみてください!
import requests
url = 'https://coincheck.com/api/ticker'
r = requests.get(url)
print(r.json())
スクレイピングのコードと比較すると、今回変わっているのはurl
とr.json()
の2点だけだと分かります。
url
の変更については問題ないと思います。宛先を変更したいなら、それはURLを変更する必要があるからです。
一方で、最後のprint()
で書かれている中身も変わっています。
Webサイトのときはr.text
だったのに対して、APIではr.json()
になっていますね。
なぜr.text
ではなくr.json()
なのかというと、それはAPIにアクセスして取得できるデータがJSON形式だからです。
つまり、WebサイトとAPIのアクセスで取得できるものが違っています。
- Webサイト : テキスト状態のHTML
- API : テキスト状態のJSON
ここまで聞くと「JSON形式ってなんだよ…」という話になると思うので、実行結果の出力を見てみましょう。
{'ask': 4074342.0,
'bid': 4072359.0,
'high': 4293031.0,
'last': 4071695.0,
'low': 4050000.0,
'timestamp': 1612663936,
'volume': 5662.81601249}
これがJSON形式になります。
※「中身のデータが何を表すのか」については、次の記事で解説していきます!
出力結果を確認すると、波カッコの中に{Key: Value}
の形で値が格納されていることが分かります。
この形は、どこかで見覚えがありますよね…?
そうです、これはPythonの辞書と同じ形になっています。
APIにアクセスして取得した生身のデータは文字型(=str
)です。でもr.json()
のように書いてあげるとPythonの辞書オブジェクト(=dict
)に変換してくれます。
まとめ : WebサイトとAPIの比較
WebサイトとAPIアクセスの違いを、以下の表にまとめてみました。
Webサイト・Webアプリ | API | |
---|---|---|
誰向き? | ヒト | プログラム |
取得できるデータ形式 | HTML | JSON |
WebアプリとAPIは、両方ともアプリケーションです。でも対象としているモノと、取得できるデータ形式が違うんですね。
URLにアクセスする部分は同じなので、こう考えてみるとAPIは意外と単純な概念だと分かります。
以上がAPIの解説でした。
今回は少し退屈な解説になってしまいましたが、次回からはPythonを使ってAPIを操作していきます。
少しずつ実装の部分が入ってくるので、ぜひ楽しんでいきましょう!