前回の記事では、買いタイミングを表示する機能を実装しました。
銘柄コードを入力すると、買いシグナルかどうかが表示されるところまではできました。
ただし、別の銘柄に変更しても、最初の銘柄の結果が表示されたまま変わりませんでした。
シグナル取得エラー HTTP 500 が発生していました。
今回は、そのエラーをAIと一緒に調査し、最終的に修正できたところまでを記録します。

修正するエラー内容
銘柄を変更したら、その銘柄に応じた買いシグナルが表示される状態にすることです。
しかし実際は、
- 最初の銘柄は表示される
- 別の銘柄にするとエラーになる
- しかも表示は最初のまま残る
という状態でした。
間違った銘柄のシグナルを見ているため、修正していきます。
AIへの指示内容
伝えた内容は以下です。
初回の銘柄入力時のエラーは解決しましたが、まだ銘柄を切り替えたときのシグナル取得エラー: HTTP 500エラーは残っています。原因を網羅的に調査してください
どの操作で
何が起きて
どうしてほしいか
を伝えました。
市場データの取得エラー
最初にAIが見つけたのは、市場データの取得エラーでした。
私の売買ルールでは、
指数が上昇トレンドのときだけ買う
という条件を入れています。
そのため、指数データが必要です。
当初はTOPIXを使っていましたが、yfinanceで取得できませんでした。
その結果、シグナル判定APIが失敗していました。
そこでAIは、TOPIXから日経平均に変更という修正を行いました。
これでHTTP 500の一部は解消しました。
エラーの修正
原因の特定
しかし、これで完全に解決ではありませんでした。
銘柄を切り替えると、まだエラーが出ます。
実際に動かして確認すると、
初回はOK
切り替えでエラー
表示も更新されない
という状態が続いていました。私はこの結果をそのままAIに伝えました。
ここからAIがさらに調査を進めます。
結果として見えてきたのは、複数の原因でした。
サーバーのリロード問題
開発環境では、uvicornのreload機能を使っていました。
これは便利ですが、監視範囲が広すぎると問題になります。
フロントエンドの更新でもバックエンドが再起動してしまい、API処理が途中で切れる可能性があります。
これがHTTP 500の原因の一つでした。
対応として、監視対象をPythonコードのみに限定していました。
フロントの状態管理の問題
もう一つの原因はフロントエンドです。
エラーが出たときに、
前の銘柄のデータがそのまま残る
という状態でした。
つまり、
新しいデータが取得できない
でも古いデータは消えない
という状態です。
対応として、
新しい検索時にstateをリセットする
ように修正していました。
rulesetの読み込み問題
さらに、修正後に別のエラーが発生しました。
初回からHTTP 500が出る状態です。
原因はrulesetの読み込みタイミングでした。
起動時に読み込んでいたため、不安定になっていました。
対応として、
必要なときに読み込む遅延ロードに変更
していました。
最終的な修正内容
最終的には、以下の修正を行いました。
- 指数データをTOPIXから日経平均に変更
- uvicornのreload対象を限定
- フロントのstateを検索時にリセット
- rulesetを遅延ロードに変更
複数の問題が重なっていた形でした。しかし、すべてAIが原因を特定して、解決まで実行できました。
本当にすごいです。
結果
最終的には、
銘柄を変更すると正しくシグナルが更新される
エラー時に古い表示が残らない
状態になりました。
まとめ
今回は、買いタイミング表示の不具合を修正しました。
結果として、
ツールとして使える状態に一歩近づいた
と思います。
今回も、
- 動かす
- 壊れる
- 直す
というループを何度も回しており、AIが自らエラーの解決までやりきってくれました。

