[Golang]bitFlyerのPublic APIで遊んでみる

GolangでbitFlyerのAPIを触ってみました。あくんととか持ってなかったので、Public APIを使うことにしました。

サンプルコードもGithubに置いときました。

go-ticker-btc

こちらの記事を参考にした。

それでは早速やってみます。

最終取引価格の表示

今回はビットコインの最終取引価格を表示してみましょう。

APIにアクセスしてJSONから構造体を定義します。

type Ticker struct {
	ProductCode     string  `json:"product_code"`
	Timestamp       string  `json:"timestamp"`
	TickID          int     `json:"tick_id"`
	BestBid         float64 `json:"best_bid"`
	BestAsk         float64 `json:"best_ask"`
	BestBidSize     float64 `json:"best_bid_size"`
	BestAskSize     float64 `json:"best_ask_size"`
	TotalBidDepth   float64 `json:"total_bid_depth"`
	TotalAskDepth   float64 `json:"total_ask_depth"`
	Ltp             float64 `json:"ltp"`
	Volume          float64 `json:"volume"`
	VolumeByProduct float64 `json:"volume_by_product"`
}

では、実際にAPIにアクセスして結果を返します。

package main

import (
  "encoding/json"
  "fmt"
  "net/http"
  "io/ioutil"
)

type Ticker struct {
	// 省略
}

func main() {
    url := "https://api.bitflyer.jp/v1/getticker"
    resp, _ := http.Get(url)
    defer resp.Body.Close()
    byteArray, _ := ioutil.ReadAll(resp.Body)

    jsonBytes := ([]byte)(byteArray)
    data := new(Ticker)

    if err := json.Unmarshal(jsonBytes, data); err != nil {
      fmt.Println("JSON Unmarshal error:", err)
      return
    }
    fmt.Println(data.Ltp)
}

これをターミナルで実行してみます。

$ go run main.go
390000

このように数字がかえって来たら、成功です。