Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@kaneko77

Ethereumの現在価格を取得する方法

More than 1 year has passed since last update.

はじめに

Ethereumは日に日によって価格が違います。
Webサイトで現在価格を調べればわかりますが、アプリで実装する時はサイトみて如何の斯うのは便利なライブラリがない限りは難しいと思います。(私が調べた限りでは)
現在価格取得できないと日本円換算もドル換算もできない....どうしようと思った時にあるサイトを見つけました。
それは「coinmarketcap」というサイトです。
このサイトはAPIを叩けば現在価格をレスポンスデータで教えてくれるなんとも素晴らしいサイトです。
coinmarketcapさんには大変感謝感謝です!!!!
今回はSwiftで皆さんに展開したいと思います。

開発環境

Xcode 10.2
swift5

準備

ということで前置きは長くなりましたが実際にどういう風に使うかですが、まず「coinmarketcap」でユーザー登録する必要があります。
なぜかというとログインするとAPIキーが渡されます。そのAPIキーを使ってGet処理をすることになるからです。

実装

まず完成品

GetCurrency.swift
//表示した通貨を設定
var currency: String = "USD"
//URLのパス
let currencyURL = https://pro-api.coinmarketcap.com/v1/tools/price-conversion
let API_KEY = "取得したAPIキーをここに入れる"
// URLリクエストを作成
var components = URLComponents(string: currencyURL)
//複数のパラメーターをクエリストリングをしている
components?.queryItems = [URLQueryItem(name:"id",value:"1027"),URLQueryItem(name:"amount",value:"1"),URLQueryItem(name:"convert",value:currency)]
let url = components?.url

let urlString = url?.absoluteString
print("\n URLPath:\(urlString!)")
var request = NSMutableURLRequest(url: NSURL(string: urlString!)! as URL)

//メソッドを設定
request.httpMethod = "GET"
//ヘッダーの設定
request.addValue(API_KEY, forHTTPHeaderField: "X-CMC_PRO_API_KEY")

var task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: { data, response, error in
    if (error == nil) {
        var result = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)!
        print(result)
    } else {
        print(error)
    }
})
task.resume()

説明

今回はHTTPについては触れません。
ですので、パラメータの説明だけさせていただきます。

GetCurrency.swift
//複数のパラメーターをクエリストリングをしている
components?.queryItems = [URLQueryItem(name:"id",value:"1027"),URLQueryItem(name:"amount",value:"1"),URLQueryItem(name:"convert",value:currency)]
key value
パラメータ名 id 1027
説明 仮想通貨のID 仮想通貨の番号

仮想通貨番号は探すの大変でした。1027番がEthですが、他の仮想通貨の場合は各自で調べてください。

key value
パラメータ名 amount 1
説明 仮想通貨の量 調べたい仮想通貨の量を入れる

(例)
1ethを調べたい場合は[amount:1]
0.5eth調べたいときは[amount:0.5]

key value
パラメータ名 convert "JPY"
説明 通貨 実際の換算したい国の名前

このValueの中身に関しも各自で調べてください
下記のURLから「Standards and Conventions」を調べると国の表示リストが出てくるのでそこから自分が換算した国を見つけて[convert:"自分が換算したい国"]を入れましょう。
https://coinmarketcap.com/api/documentation/v1/#section/Endpoint-Overview

レスポンスデータ

JsonData
"status": {
        "timestamp": "時間",
        "error_code": 0,
        "error_message": null,
        "elapsed": 7,
        "credit_count": 1,
        "notice": null
    },
    "data": {
        "id": 1027,
        "symbol": "ETH",
        "name": "Ethereum",
        "amount": 1,
        "last_updated": "時間",
        "quote": {
            "USD": {
                "price": 177.114719131,
                "last_updated": "時間"
            }
        }
    }

データはちょっと見せるためにいじってます。
だいたいこんな感じのものがレスポンスデータで送られてきたらOKです。
"error_code": 0」であれば問題ないと思います。
あとはパースして使うだけです!!!!

終わりに

今回は仮想通貨の換算の方法について展開しました。
仮想通貨自体日本語のリソースはまだしも外国の方もなかなかネットに展開していないので探すのが私自身一苦労でした。皆さんのエンジニアライフに私の情報が少しでも助けになることを願っています。
最後まで、読んでいただきありがとうございました。

最後に、改めてcoinmarketcapさんありがとうございます!!!!!!!!!!:person_with_blond_hair_tone1:

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kaneko77
Apple信者のIOSエンジニアです。 都内でSwiftを用いたIOS開発を行っております。 趣味でNode.jsを使ってAPIサーバで遊んでます。 最近はWebページにも手を出しています。 アプリをストアに公開しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?