Open Exchange Ratesを使用した「$1を円に変換した価格」の取得方法

ブログメインビジュアル

PHPプログラマーの松永です。

今回は、為替レートを取得することができるAPIを提供しているOpen Exchange Ratesを使用し、「$1を円に変換した価格」を取得する実装方法をPHPを使用して紹介します。

目次

Open Exchange Ratesとは

Open Exchange Ratesは、世界各国の為替レートを取得することができるAPIを提供しているサービスです。

https://openexchangerates.org/

APIの使用には、無料プランと有料プランがあり、今回は無料プランを使用しています。
無料プランの場合は下記の制限がありますので、リアルタイムを重視する方はご注意ください。

1時間ごとの更新(基本通貨USDを使用)と最大1,000リクエスト/月

では早速、為替レートを取得するための実装を見ていきましょう。

アカウントの作成

  1. https://openexchangerates.org/にアクセスし、sign upをクリックします。
  2. 無料プランがないように見えますが、上部にテキストリンクがあり、そこからアカウント登録ができます。
  3. 必要情報を入力し、アカウント登録します。

アカウントの作成は以上です。

アプリIDの確認

APIを使用するためには、アプリIDが必要になりますので、まずはアプリIDを確認します。

アカウントの作成直後にOpen Exchange Ratesから送信されるメールにアプリIDは記載されていますが、今回は管理画面で確認していきます。

  1. ログイン後のページ最下部にあるGrab your App IDをクリックすることでアプリIDを確認することができます。
  2. Grab your App IDをクリックすると、下記キャプチャの画面が表示されますので、赤枠内に記載されているアプリIDをメモしておきます。このアプリIDを使用し、APIへアクセスします。

アプリIDの確認は以上です。

PHP

では実際にPHPを使用して「$1を円に変換した価格」を取得してみます。

※データは都度変化しています。そのため、下記に記載されているデータは時間が経過するにつれ古くなり、正確ではないデータになりますのでご注意ください。

/**
 * データ取得するURL設定
 */
$appId                = 'ここにアプリIDを記述してください';
$openExchangeRatesUrl = 'https://openexchangerates.org/api/latest.json?app_id=' . $appId;


/**
 * データ取得
 */
$crulHandle = curl_init(); // cURLセッションの初期化

$options = [
    CURLOPT_URL            => $openExchangeRatesUrl,
    CURLOPT_HEADER         => false,
    CURLOPT_RETURNTRANSFER => true
];

curl_setopt_array($crulHandle, $options);

$results     = curl_exec($crulHandle);
$resultsData = json_decode($results);
$resultsData = get_object_vars($resultsData);
$resultsData = get_object_vars($resultsData['rates']);
$jpy         = $resultsData['JPY'];

curl_close($crulHandle); // cURLセッションの終了


/**
 * $1を円に変換した価格
 */
var_dump($jpy); // float(106.525)

float(106.525) が返ってきました。

この記事を書いている時点での$1は106.525円ということになります。

106.525の小数点以下の取り扱いも実装者側で決めることができ、とても柔軟に使用することができます。

今回は「円」についてのみ取得しましたが、$resultsData['JPY']$resultsDataをvar_dumpしてみると世界中の為替レートが取得できています。

データ数が多いため、全データを記載することはできないのですが、170カ国以上のデータが含まれています。

array(171) {
...
...
["JPY"]=>  float(106.525)
...
...
["USD"]=>  int(1)
...
...
}

以上でございます。

まとめ

取得したデータは、DBやCSVなどに保持しておくと便利です。

保持し、次回の取得までにいつでも呼び出せるようにしておくことで、無料プランの制限内で最大数取得できると思います。

「$1と円に変換したい」という方の参考になれば幸いです。

この記事を書いた人 matsunaga 自宅に音楽スタジオがあるとこを夢見るPHPエンジニア
TOP