Python×ビットコイン自動売買

#3 Python×ビットコイン自動売買 | APIとは?初心者でも理解できるように解説!

python-bitcoin-trade

こんにちは、はやたす(@hayatasuuu )です。

今回は「Python×ビットコイン自動売買」の第3回目ということで、この講義で使っていくAPIについて解説していきたいと思います。

前回の記事はこちら

python-bitcoin-trade
#2 Python×ビットコイン自動売買 | Bitcoin自動売買の環境構築をしよう!こんにちは、はやたす(@hayatasuuu )です。 今回は「Python×ビットコイン自動売買」の第2回目ということで、Pyt...

なぜ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サイトにアクセスすると、このHTMLを取得できます。

※HTMLの内容が非常に長いので掲載は割愛します!

APIにアクセスする場合

今後はPythonを使ってCoincheck APIにアクセスしてみます。

公式ドキュメントを見ると、色々な機能が提供されていると分かるのですが、今回は試しにティッカー情報を取得してみます。

※口座を持っていなくても大丈夫なので、ぜひコピペして実行してみてください!

import requests

url = 'https://coincheck.com/api/ticker'

r = requests.get(url)
print(r.json())

 

スクレイピングのコードと比較すると分かるのですが、今回変わっているのはurlr.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
誰向き?ヒトプログラム
取得できるデータ形式HTMLJSON

 

WebアプリとAPIは、両方ともアプリケーションですが、対象としているモノと取得できるデータ形式が違うということですね。

URLにアクセスする部分は同じなので、こう考えてみると意外と単純な概念なのかなと思います。

以上がAPIの解説でした。
今回は少し退屈な解説になってしまいましたが、次回からはPythonを使ってAPIを操作していきたいと思います。

少しずつ実装の部分が入ってくるので、ぜひ楽しんでいきましょう!

第4回目の記事はこちら

python-bitcoin-trade
#4 Python×ビットコイン自動売買 | Coincheck APIを使って最新価格を取得しよう!こんにちは、はやたす(@hayatasuuu )です。 今回は「Python×ビットコイン自動売買」の第4回目ということで、Pyt...

トップページはこちら

python-bitcoin-auto-trade
Python×ビットコイン自動売買 | 初心者でも理解できる入門講義『Pythonを使ったビットコインの自動売買って、どうやって実装するんだろう...。分かりやすく書かれている入門記事はないかな〜。』このような悩みを解決する記事になっています。Pythonを使ったビットコインの自動売買を学んでみたい人は必見です。...
ABOUT ME
はやたす
たくさんPythonを紹介するYouTuberです(登録者1.94万人) | フリーランスで機械学習/分析案件も請けています(経験業界 : 金融, 情報通信, サービス) | 元プログラミングスクール講師