【要約】株価情報「stooq」が使えなくなったのでyfinanceに移行した話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、既存の株価チャート分析アプリの運用中に、データソースの仕様変更によるデータ取得不能に直面した。具体的には以下の問題が発生した。
- ・stooqの仕様変更により、pandas_datareader経由のデータ取得が失敗した。
- ・yfinanceへの移行時、取得データがMultiIndexとなり、従来の列アクセスが機能しなくなった。
- ・実行環境に日本語フォントがなく、matplotlibでのグラフ描画時に文字化けが発生した。
- ・Hugging Face SpacesのZeroGPU環境において、GPUを使用しないアプリが起動エラーとなった。
// Approach
開発者は、データソースをyfinanceへ変更し、発生した構造的・環境的な問題を個別に解決した。具体的には以下の手順を踏んでいる。
- ・データ取得:銘柄コード末尾に「.T」を付与し、yfinanceで取得する実装へ変更した。
- ・データ構造:
isinstanceを用いてMultiIndexを判定し、列を平坦化する処理を追加した。 - ・日本語表示:
japanize-matplotlibを導入し、フォント問題を解消した。 - ・起動エラー回避:
@spaces.GPUを付与したダミー関数を実装し、ZeroGPUの仕様を回避した。
// Result
開発者は、一連の修正により、Hugging Face Spaces上で動作する安定した株価チャートアプリを再構築した。得られた成果は以下の通りである。
- ・yfinanceへの移行により、日本株データの継続的な取得が可能となった。
- ・MultiIndexの平坦化により、グラフ描画や計算におけるエラーを排除した。
- ・日本語表示とZeroGPU環境での正常な起動を実現し、サービス提供を再開した。
- ・エラー内容を画面に表示する仕組みを導入し、トラブルシューティングを容易にした。
Senior Engineer Insight
> 外部APIへの依存は、今回のように予期せぬ遮断を招く。エラー内容を画面に出す設計は、運用上極めて重要だ。また、Hugging FaceのZeroGPUに対するダミー関数による回避は、迅速なデプロイには有効だ。しかし、インフラ設定の変更が可能な場合は、それが本質的な解決策となる。環境依存のトラブルは、開発・デプロイの両フェーズで必ず発生することを念頭に置くべきだ。