こんにちは、JS2IIUです。
今回は為替レートを取得するAPIのexchangerate.hostからデータを取得しStreamlit上に表示するアプリを作成してみます。よろしくお願いします。
はじめに
この記事では、公開API(exchangerate.host)から為替データを取得し、Streamlitを使ってインタラクティブなチャートを表示する方法をご紹介します。
初心者の方でも一歩ずつ進めるよう、APIの使い方から、グラフ表示までをステップバイステップで丁寧に解説していきます。
最終的には、期間(開始日・終了日)をGUIで選べる為替レートチャートアプリを作ります。
この記事で学べること
- 為替API(exchangerate.host)の使い方
- PythonでAPIからデータを取得する方法
- Pandasを使ったデータ整形の基礎
- Streamlitで期間選択&グラフ表示する方法
ステップ1:必要なライブラリのインストール
以下のコマンドをターミナルで実行し、必要なライブラリをインストールします。
pip install streamlit pandas requestsステップ2:為替レートAPIの概要
今回使うのは https://api.exchangerate.host/timeframe というエンドポイントです。
これは、特定の期間の為替レートを日毎に取得できる便利な無料APIです。
APIを利用するために、無料のユーザー登録が必要です。メールアドレスや住所などを入力するとすぐに使える様になります。APIのアクセスキーは下の図、赤枠内に表示されます。ここからコピーして、ソースコードに貼り付けてください。下のソースコードの6行目です。

例:
https://api.exchangerate.host/timeframe
? access_key = "YOUR_API_KEY"
& currencies = USD,GBP,EUR
& start_date = 2010-03-01
& end_date = 2010-04-01指定できるパラメータ:
| パラメータ名 | 内容 |
|---|---|
| start_date | 開始日(YYYY-MM-DD) |
| end_date | 終了日(YYYY-MM-DD) |
| base | 基準通貨(例: USD) |
| currencies | 対象通貨(例: JPY) |
ステップ3:Streamlitアプリの全体コード(期間選択付き)
以下のコードを app.py という名前で保存してください。
import streamlit as st
import requests
import pandas as pd
from datetime import datetime, timedelta
API_KEY = 'YOUR_API_KEY'
st.set_page_config(page_title="為替レートチャート", layout="centered")
st.title("為替レートチャートアプリ(USD/JPY)")
st.write("為替レートAPI(exchangerate.host)からデータを取得し、グラフ表示します。")
# --- 日付選択 ---
today = datetime.today()
default_start = today - timedelta(days=30)
start_date = st.date_input("開始日を選択", default_start)
end_date = st.date_input("終了日を選択", today)
# バリデーション
if start_date > end_date:
st.error("開始日は終了日より前にしてください。")
else:
# 通貨指定(今回は固定で USD → JPY)
base_currency = "USD"
target_currency = "JPY"
# APIリクエスト作成
url = "https://api.exchangerate.host/timeframe"
params = {
"start_date": start_date.strftime("%Y-%m-%d"),
"end_date": end_date.strftime("%Y-%m-%d"),
"base": base_currency,
"currencies": target_currency,
"access_key": API_KEY,
}
# APIからデータ取得
response = requests.get(url, params=params)
if response.status_code != 200:
st.error("APIリクエストに失敗しました。")
else:
data = response.json()
print(data) # デバッグ用
# データ整形
if data.get("quotes"):
df = pd.DataFrame(data["quotes"]).T
df.columns = [f"{base_currency}/{target_currency}"]
df.index = pd.to_datetime(df.index)
df = df.sort_index()
# 表とグラフ表示
st.subheader(f"{base_currency}/{target_currency} 為替レート({start_date} 〜 {end_date})")
st.dataframe(df)
st.line_chart(df)
else:
st.warning("為替データが取得できませんでした。")ステップ4:アプリの実行方法
ターミナルで以下のコマンドを実行してください。
streamlit run app.pyブラウザが開き、開始日と終了日を自由に選んで為替レートのグラフを確認できるようになります!


補足:日付や通貨をもっと自由にするには?
本記事のコードでは通貨は「USD → JPY」で固定していますが、次のように書き換えると任意の通貨ペアに対応可能です。
base_currency = st.selectbox("基準通貨", ["USD", "EUR", "GBP"])
target_currency = st.selectbox("対象通貨", ["JPY", "USD", "EUR", "GBP"])また、デフォルトの取得期間を「7日間」や「90日間」などに変更するのも簡単です。
まとめ
今回の記事では、
- 為替API(exchangerate.host)で為替レートデータを取得
- Pandasで整形してDataFrame化
- Streamlitで開始日・終了日をGUI選択
- 折れ線グラフで為替レートを可視化
という一連の流れをみていきました。
「API × データ分析 × Streamlit」 の組み合わせは、ビジネス・教育・研究などさまざまな場面で応用できます!
参考リンク
最後に書籍のPRです。
24年11月に第3版が発行された「scikit-learn、Keras、TensorFlowによる実践機械学習 第3版」、Aurélien Géron 著。下田、牧、長尾訳。機械学習のトピックスについて手を動かしながら網羅的に学べる書籍です。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。


コメント