Open Exchange Ratesの代替サービス——無料プランがUSD限定だと気づいたら
Open Exchange Ratesの無料プランは月1,000リクエストを提供するが、そのすべてがUSD建てである。変換エンドポイントも時系列も他のベース通貨もなく、月12ドル以上を払うまで使えない。それが実際どれだけのコストになるか、そして他に見るべき4つの場所を紹介する。
USDベースの無料プランからでも、EUR/GBPなど任意のクロスレートは構築できる。USDレートを取得し、一方をもう一方で割れば、クロスレートが得られる。それで動く。ただしそれは、追跡すべきリクエストフィールドが1つ増え、コードに除算が1つ増え、小数第3位あたりに小さな複利誤差が生じることも意味する——ほとんどの請求業務では気づかれないが、一部の照合業務では気づかれる。
無料プランが止まる場所
Open Exchange Ratesは無料アカウントに月1,000リクエストを提供し、1時間ごとのレート更新と日次履歴データが含まれる。落とし穴は、すべてのレスポンスがUSD建てで返ってくることであり、無料プランでそれを変える方法はない。base=EURを指定しても、エンドポイントによっては無視されるかエラーになる。
無料プランは/convertと時系列コールも完全に除外している。どちらも月12ドルからの有料プランに限定されており、有料化すればbaseパラメータが完全に解放されるほか、追加料金なしで任意の数のベース通貨に対する変換・時系列も使えるようになる。
USDベースの回避策を正直に見る
無料プランに留まったままEUR/GBPのレートが必要なら、まだ支払う必要はない。レスポンス内のすべての通貨はUSD建てで建値されているため、EUR/GBPは単にrates.GBP / rates.EURである——本来APIがやってくれるはずの除算を、自分で行うだけである。
見込んでおくべきことは2つある。コード面では、USD以外のすべてのペアに除算ステップと、値が欠落・ゼロの場合のガードが必要になる。丸め誤差の面では、すでに丸められた2つのUSD建てレートを割ることで、そのベースに対して直接取得したレートに比べて小さな複利誤差が生じる——ダッシュボードでは気づかれないが、小数第4位まで数値を確認する照合業務では気づかれる。
/convertには、ベース通貨のようなきれいな自作の代替がない。時系列は、履歴エンドポイントを1日ごとにループ呼び出しすることを意味し、月1,000リクエストの予算を早く食いつぶす——ベース通貨の壁より手ごわい壁である。代わりに見るべき4つの場所
Frankfurter——無料、オープンソース、キー不要、ECB限定
Frankfurterは欧州中央銀行の参照レートをJSON APIでラップしている。APIキーは一切不要で、強制的なクォータもなく、オープンソースである。トレードオフはデータそのものにある——ECBレートは営業日に1回、16:00 CET前後に公表され、週末のデータはまったくない。1日1回、営業日のみのフィックスで用途を満たせるなら、Frankfurterは費用ゼロで登録も不要である。
ExchangeRate-APIのオープンアクセス——無料、キー不要、1日更新
ExchangeRate-APIはopen.er-api.comで正真正銘のキー不要エンドポイントを運用している。登録もAPIキーも不要である。更新は1日1回、Frankfurterと同じ鮮度区分である。2つの条件が付く——目に見える帰属表示("Rates By Exchange Rate API"をexchangerate-api.comへのリンク付きで表示すること)と、生データの再配布禁止(キャッシュは問題ない)。上限を超えるとHTTP 429が返り、20分後に解除される。オープンアクセスの上にキー付きの無料ティアもあり、月1,500リクエストを提供する。
Fixer——無料、キー必須、EUR限定、月100コール
Fixerは無料プランでもキーが必要であり、そのプランはEUR建てのみである——それ以外のすべてのベース通貨と変換機能はBasicティア以上に限定されている。クォータは月100コールで、Open Exchange Ratesより桁違いに厳しい。無料プランには1時間ごとの更新、SSL、完全な履歴データが含まれる。
exchangerate.dev——無料、キー付き、任意ベース、日中更新
ここの無料プランは、クレジットカード不要で465通貨ペアを月10,000コール、毎分12リクエストで運用する。どのプランにもベース通貨の制限はなく——EURベースとUSDベースは同じくコストゼロで——1999年までさかのぼる完全な日次履歴も無料で含まれる。主要通貨ペアは取引日を通じておよそ60秒ごとに更新され、残りはECBまたはFREDの日次参照レートに支えられる。匿名でキー不要の呼び出しも、簡単な評価用にIPごとの上限付きで利用できる。
用途にプランを合わせる
月曜から金曜の終値レートだけを必要とするバッチジョブには、無料で登録不要の選択肢が3つある——Frankfurter、ExchangeRate-APIのオープンアクセス、そして上記のUSD回避策である。土曜日のレートが必要なプロジェクトや、baseパラメータがそのまま動く必要があるプロジェクトは、ECB限定の情報源の先を見る必要がある。取引時間中のライブ価格を提示するには、日中更新される情報源が必要である。
USDベースの回避策は、永遠に迂回し続けなければならないバグではない——今日すぐに出荷でき、丸め誤差が実際に問題になったときに見直せばよい除算にすぎない。