CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

【PubNub-Unity】仮想通貨取引所BitFlyer APIからTickerを取得する方法

少し前になりますが、先月のMeta2体験会に備えて仮想通貨周りを調べたことがありました。

(ここでは仮想通貨の取引所のHPを空間に浮かべるブラウザアプリをデモしました)

調べている中で、bitFlyerがPubNub経由で情報を公開していることがわかりました。また、PubNubはUnityでも使えることがわかったので、今回はbitFlyerのPubNub経由の情報をUnity表示する方法を整理しました。

なお、以下の環境で動作を確認しています。

  • Mac OSX 10.12.6
  • Unity2017.2.0f3
  • PubNub Unity SDK 3.7.10



0. 仮想通貨のAPI概要

仮想通貨といえば、日本でも複数の取引所があり、その多くはAPIを提供しています。

API | 仮想通貨ビットコイン(Bitcoin)の購入/販売所/取引所【bitFlyer(ビットフライヤー)】

取引所APIドキュメント | 仮想通貨取引所のCoincheck(コインチェック)

APIドキュメント | フィスコ仮想通貨取引所

ZaifAPI ドキュメント — Zaif api document v1.1.1 ドキュメント

APIを使うと、現在の板情報、約定情報、Tickerなどが取得できます。プライベートキーを取得すると、注文や入出金なども可能になります。

今回はPubNubを介して仮想通貨の情報を公開している、BitFlyerのAPIを使わせていただきました。なお、この記事では、仮想通貨に関する個別用語の解説は省略させていただきます。

1. PubNubとは?

PubNub社のHPによると、強固な通信セキュリティが保証されたrealtime infrastructure-as-a-serviceです。

About PubNub, The World's Only Global Data Stream Network | PubNub

Intelの紹介ページによると、2000社以上のパートナー企業を持ち、2億台以上のデバイスで使われているようです。

PubNub | Intel ソリューション・ディレクトリー

ざっくりいうと、PubNubというサービスを介することで、言語や開発環境が変わっても、2つ以上のデバイスの通信が簡単に実現できるという仕組みです。

HPを見ると、70以上のSDKに対応しているとあります。そのため、例えばPythonで書いたアプリケーションとC#で書いたアプリケーション間の通信も、PubNubを利用することで簡単に実現できます。

このようなイメージです。
PubNubの構成イメージ

双方のアプリケーションは、PubNubより発行されたPublishキー(情報を発信する)とSubscribeキー(情報を取得する)を使います。今回は、bitFlyerが一部の情報をPubNubを介して発信しています。そのため、bitFlyerが公開しているSubscribe Keyを使うことで、情報を取得できます。



2. Unityで使うための手順

2.1 GitHubよりサンプルプロジェクトを取得

以下のGitHubのHPから、Unityのサンプルプロジェクトをダウンロードします。

GitHub - pubnub/unity: PubNub for Unity3D 5.x

2.2. bitflyerのTickerをUnityで表示する

Unity2017でプロジェクトを開き、ExampleSceneを開きます。PubnubExample.csを開いて、68行目に、bitFlyerのSubscribeKeyを入力します。(これで、Unity Editor起動毎にキー入力する手間が省けます)

//L.68  2018/3/10時点
string subscribeKey = "sub-c-52a9ab50-291b-11e5-baaa-0619f8945a4f";

シーンを実行します。

PubNub Unity SDKのサンプルシーン実行時の画面

Action → Subscribeと押していきます。

PubNub Unity SDKのサンプルシーン実行時のSubscribe設定

Channelに、取得したい情報を入れます。

PubNub Unity SDKのサンプルシーン実行時の情報入力画面

bitFLyerの場合、2018/3/10時点では「板情報」、「板情報の差分」、「Ticker」、「約定」の情報を取得できます。

例えば、Tickerの場合、下記のようなChannel名を入れることができます。

BTC/JPY 板(現物): lightning_ticker_BTC_JPY

BTC/JPY FX 板: lightning_ticker_FX_BTC_JPY

ETH/BTC 板: lightning_ticker_ETH_BTC

Lightning Futures: lightning_board_snapshot_BTCJPY

ビットコインと日本円の板情報を取得したいときは、「lightning_ticker_BTC_JPY」をChannelに入力します。Subscribeボタンを押すと、このようにリアルタイムに情報を取得できます。今回はTickerを使いました。

3. 終わりに

PubNubとUnityの連携の例はあまり見ないので書いてみました。もう少し使ってみたら続報を書いてみたいと思います。