仮想通貨取引所LiquiのAPIからPythonで情報を取得してみよう

はじめに

今回は仮想通貨の取引所であるLiquiから仮想通貨の情報を取得していきます。
LiquiはAPIを公開してくれているため、特にWebスクレイピング等のグレーかつややこしい対策を打つ必要はなく、基本的にはこのリファレンスを参考にPythonで実装を進めていきます。

 

プログラミング言語はPythonでもRubyでも、それこそJavaでもなんでも良いのですが、Jupyter Notebookを使ってインタラクティブに、動作確認を行いながら進めていくのが一番早いと思うため、個人的なオススメのPythonを使っていきます。Python万歳。

 Pythonは「ニシキヘビ」らしいですね

そもそもAPIとは?

APIとは、Web系の開発をしているとよく耳にするのですが、なんなんでしょうか。

アプリケーションプログラミングインタフェース(API、英: Application Programming Interface)とは、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。
引用元:Wikipedia

もともと、オブジェクト指向とやらで、プログラミングのソースコードではなく、その動作自体に重きを置いて、中身をよくわからなくても、「こんな入力を与えると、こんな出力が出てくるよ」とリファレンスを見ながら、コマンドを叩くかのように進めていくスタイルのプログラミング(のインターフェース)をAPIを呼んだりします。
そのため、PythonとかJavaとかの print() とか join() とか、このあたり全てのコマンドがAPIとなっているわけです。
つまり、Pythonなどでプログラミングをしていると必然的にAPIには触れているわけです。

ただ、今回読んでいるAPIは少し話が違って、厳密にいうと、Web API とか REST API とか呼ばれるものです。
これは、Pythonなどが提供するコマンドではなく、HTTPもしくはHTTPS経由でリクエストを送り、それに対して情報を返してもらうことで、プログラミング内でのやり取りではないのですが、ある入力を与えるとある出力が返ってくるという、プログラミングと同じことを実現している仕組みです。
これをよく API として呼んだりするので、APIで検索した時に「あれ?」と思った方は、Web APIで検索して、その理解を深めてみてください。

LiquiのAPIリファレンスを見よう

Liquiにはありがたいことに、APIが公開されており、これを使用すれば、データを簡単に読み込むことができます。
これは、エンジニアの方が公向けにわざわざ工数を使って作ってくれているので感謝です。

LiquiのAPIに関する情報はこちらです。

今回はこちらの中から、Liqui public API と呼ばれるログイン不要でできるデータ取得を行います。

やっぱり英語力は必要??

リファレンスは基本的に英語ですが、ルー語が流行るこのご時世、というよりもインターネットに多く触れている方であれば、割と読める方は多いのではないでしょうか。もしくはGoogle翻訳がすごい勢いで進化しているので、これを使えばざっくりとした理解は問題ないかと思います。

ただ、プログラミングをする上で、英語は必須 でしょう。
単語レベルぐらいでも良いので理解しておくことをおすすめします。
別に社交辞令が言えるほど流暢に話せるといったレベルを求めているわけではなく、言うならば「TOEIC600点」くらいあれば全く問題ないかと思います。

プログラミングに英語が必要な理由は以下の通りです。
・英語がベースのため、コマンド名で動作をある程度理解できる習得が早いため
・エラーが出た時の対処は Stack Overflow にまとまっているケースが多いため

※ 筆者の吉崎は学生時代にCybouzの方が作った iVoca で単語を効率的に覚え、英語力を一気に伸ばしたので、まず単語から覚えられていないよという方にはおすすめです。

APIのリファレンスをざっと見て掴もう

今回欲しい情報は、各仮想通貨の情報です。
リファレンスを見ながらつかむべき情報は以下の2つです。

  • どのような情報が取得できるか
  • どのようなURLの形式でリクエストを送るか

その点では、現時点(2017/7/2)では、このような情報として見つかりました。

まず先頭に載っていたのが、リクエストはこういうURLで送ってねというリクエストの形式

それから出力はこうやって得られるよといった出力の形式

では、早速ですが、この出力結果を得るためのプログラムを書いていきましょう。

PythonでAPI経由で情報を取得

Pythonの環境構築ができていない方は

Pythonの環境構築については、ここでは割愛しますが、以前割とどんなPCでもつまずかずにインストールできる環境構築法を整理してあるので、こちらを御覧ください。

○Macの方:

 

○Windowsの方:

 

Jupyter Notebookを立ち上げよう

Pythonで解析をする時は Jupyter Notebook 一択です。
試行錯誤をいかに素早くできるかが解析の作業では大切であり、これをガンガンできる Jupyter Notebook はデータ解析の最高のパートナーです。

では、Jupyter Notebook を立ち上げましょう。
Macの方はターミナル、Windowsの方はコマンドプロンプトかWindows Power Shellから以下のように

$ jupyter notebook

と入力して、Enterを押しましょう。
こちらを押すと、数十秒以内にブラウザが立ち上がると思います。

※2017年6月のMacのアップデートで自動的にブラウザが立ち上がらなくなったため、このエラーを手動で修正したい方は下記の記事をご参照ください。

「New」から新しいノートを作って、こちらで解析を進めていきましょう。

データを取得しよう

それでは、こちらからが本題となります。

今回はpublic APIとして公開されている「Method info」と「Method ticker」の2つから情報を取得することにします。

必要なモジュールのインポート

今回はHTTP経由でアクセスするため、Pythonでよく使われている requests という外部モジュールを使用していきます。
また、基本的にはJSON形式で送られてくるのですが、受け取った時は文字列(String)となっているため、それをJSON形式として読み込むために jsonというモジュールも使用します。

import json
import requests

Method info

色々と書いても「百聞は一件にしかず」ということで、実際にどのようにプログラムを書いて、挙動を確認しているかを見ていただければと思います。

このような感じで、JSON形式では、keyとvalueがセットになっているため、特に説明が必要なく、あとは中のkeyの値を見ながら必要なvalueにたどり着けるまで絞っていく作業になります。

Method ticker

こちらも同様に取得していきましょう。

このように、Method infoと同様に簡単に情報が取得できました。

まとめ

APIとは?から始まり、具体的にどのような手順でデータを取得するかを説明しました。
今回使用したJupyter Notebookのファイルをこちらより配布しておりますので、ぜひお手元で試してみてください。
Liquiからデータ取得.ipynb

今回はデータを取得することにフォーカスを当てており、まだこれでは実際に使えるか?と言われると、一時点での情報しか取得できていないので、Noですね。
PoloniexのAPIであれば、結構な日数のデータを取得できるのですが、Liquiは残念ながらその機能がありませんでした。

もし、この記事に反響があれば、これを定期的にDBに保存して、可視化したり解析したりするための手順もそのうち解説していくかも知れませんので、Twitter等のSNSでガンガン拡散していただけることを楽しみにしています。

宣伝

最後に今回の件で、「おっ!案外プログラミングいけるかも!」と思っていただけた方へ

株式会社キカガクでは、Pythonのプログラミングを活用した情報収集や作業効率化から始まり、人工知能・機械学習の数学やプログラミングを2〜3日間で効率良く学べるセミナーを開催しておりますので、ぜひ覗いてみてください。

▶ 予約受け付け中のセミナー一覧

また、クラウドコンピューティングのAzureを提供しているマイクロソフトと、ディープラーニングのフレームワークであるChainerを開発しているPreferred Networkとタッグを組み、ディープラーニングに特化したセミナーも2017年7月から開催します。

▶ ディープラーニング ハンズオンセミナー

3日間で20万円と決して安くは無いですが、これは絶対に受講した方が良いです(自分達で言うのも何ですが)。
人工知能関連の初心者向けに教育に定評のある弊社、ディープラーニング理論の最先端のPreferred Networks、言わずもがな最強のインフラを持つマイクロソフトが組むことで、これまでとは違ったセミナーが実現できました。

数学の理論を学ぶだけでなく、Chainerによる本格的なプログラミングでの実装、さらにAzure上のGPUマシンを使用した高速化まで、これからディープラーニングを触っていきたいと思っている人が必要なスキルセットを全て網羅しています。

しかも、受講者限定のコミュニティへの招待といった特典もあり、マイクロソフト、Preferred Networks、キカガクとの繋がりができたり、簡単な質問への対応といったアフターフォロー付きです。
個人的には、なかなか作ることができないコネクションを作ることができる、この特典が一推しです。

それでは、みなさん、セミナーでお待ちしています。

 

1 個のコメント