無料為替レートAPI:データ元・対応範囲・制限
無料の為替レートAPIが向いている用途
無料の為替レートAPIが返すのは参考レートです。つまり、通貨ごとに1日1つ公表されるレートであり、リアルタイムの取引相場ではありません。ほとんどのアプリケーションにはそれで十分です。訪問者の現地通貨での価格表示、請求書の概算、旅行予算の作成、月末の集計レポートなどは、日次レートで問題なくこなせます。できないのは、銀行がこの瞬間に適用するレートを知ることです。そのため、機能と同じくらい制限を把握しておくことが重要です。
ipto の通貨エンドポイントは、この考え方に基づいて作られています。同じデータは通貨コンバーターで試せるほか、/v1/currency/convert、/v1/currency/rates、/v1/currency/history からコードで呼び出すこともできます。詳細は APIドキュメントをご覧ください。
レートの出どころ
主なデータ元は、オープンデータセットの fawazahmed0/currency-api です。パブリックドメインで、APIキーは不要、毎日更新されます。2つの独立したコンテンツ配信ネットワークから提供されており、ipto は順番に試行するため、片方で障害が起きてもレートの更新は止まりません。サービスは日次スケジュールでこのデータを更新して高速キャッシュに保存するので、ページ上での換算が外部リクエストを待つことはありません。
欧州中央銀行(ECB)が公表する参考レートは別のもので、ここではフォールバックとしてのみ使われます。メインのデータ元の両ネットワークが利用できない場合、ipto はレートデータを完全に失う代わりに、ECB が公表する約31の主要通貨の提供を続けます。通常運用では、ECB のデータを見ているわけではありません。
対応範囲
ipto は世界の154通貨に対応しています。これは、はるかに大きなソースリストから絞り込んだものです。ソースには暗号資産や、決済通貨ではない会計単位も含まれていますが、これらは意図的に除外しています。対応する通貨にはすべて名称と国旗があるため、コンバーターでは単なるコードではなく、読みやすい表示になります。
履歴
履歴エンドポイントは、通貨ペアの過去30日、60日、90日分の日次参考レートを返します。コンバーターページのチャートもこれを描画したものです。履歴は、トレンドの把握、取引を計上した日のレートの確認、おかしく見える数値の妥当性チェックに役立ちます。ただし対象は90日間であり、複数年にわたるアーカイブではありません。監査業務などで1999年までさかのぼったレートが必要な場合は、そのアーカイブを公開しているデータ元を使い、コピーを自分で保管してください。
あらかじめ想定しておくべき制限
- 日次であり、リアルタイムではありません。レートは1日1つの値です。取引や支払いの決済には使わないでください。
- 手数料やマージンは含まれません。銀行やカードネットワークはスプレッドを上乗せします。顧客が実際に負担するコストは、参考レートとは異なります。
- 週末と祝日。データのない日はエラーとせず、直前に利用可能だったレートとして扱ってください。
- キャッシュの古さ。設計上、レートは最大で1日古い場合があります。換算後の金額の横には日付を表示してください。
IPジオロケーションとの組み合わせ
最も一般的な組み合わせは、IPルックアップエンドポイントで訪問者のIPアドレスから国を判定し(このエンドポイントはその国の通貨も返します)、価格をその通貨に換算する方法です。ジオロケーションは概算にすぎないため、訪問者が通貨を変更できるようにしておいてください。また、VPNを使っている訪問者は別の国にいるように見える場合があります。その検出には VPNチェッカーが役立ちます。
まとめ
無料の参考レートは、表示、概算、レポートに適しています。お金が動く処理には向きません。この範囲内で使うなら、無料の日次レートAPIは、その用途において有料のデータ配信よりシンプルで安価、しかも同等に正確です。