ボートレースAIの自動収集が停止していました|7月29日・30日の予想について

ボートレースAIがバックテストから実戦形式のForward Testへ進むことを表したアイキャッチ画像 ボートレースAI開発

ボートレースAIのデータ収集とForward Testの運用状況を確認したところ、2026年7月29日と30日の処理が実行されていないことが分かりました。
7月28日までは、レースデータの収集、AIによる事前判定、結果取得、成績評価まで正常に完了しています。
しかし、7月29日と30日は日次処理が起動しておらず、予想データそのものが作成されていませんでした。
今回は、その状況と今後の対応について報告します。

7月29日・30日は予想を実施していません

7月29日と30日は、AI予想の結果が悪かったため公開しなかったわけではありません。
データ収集、事前判定、結果評価の処理自体が実行されておらず、予想の元になるデータが存在していません。
そのため、両日は次のように扱います。

  • AI予想なし
  • 購入判定なし
  • 見送り判定なし
  • Forward Testの成績集計対象外
  • 投資額0円としての集計もしない

購入候補が0件だったのではなく、処理が行われなかった「欠測日」です。
後からレース結果を取得して予想判定を作成することも技術的には可能ですが、それでは結果確定前に作成された予想であることを証明できません。
そのため、7月29日と30日の予想を後付けで作成することは行いません。

停止につながった要因

今回確認できた範囲では、AIの予想ロジックやデータベースの破損が原因ではありませんでした。
7月28日までに保存されたデータには、大きな不整合や破損は確認されていません。
固定している予想条件についても、変更は確認されませんでした。
現在のForward Testでは、次の条件を使用しています。

  • 券種:3連複
  • 買い目:AI予想上位3艇
  • 信頼度:1位と2位のスコア差
  • 購入基準:スコア差11.02以上
  • 購入金額:1レース100円

今回確認できた範囲では、日次処理を継続的に起動する正式な自動実行環境が、まだ構築されていなかったことが停止につながったと考えています。
ただし、7月29日と30日に処理が起動しなかった直接的な原因を、完全に特定できたわけではありません。
現在は、実行環境や処理経路を一つずつ確認しながら、安全に再開できる構成を作っています。

7月28日の結果

停止前最後となった7月28日は、下関の12レースを対象に事前判定を行いました。
結果は次のとおりです。

  • 対象レース:12レース
  • 購入判定:6レース
  • 見送り判定:6レース
  • 的中:0レース
  • 投資額:600円
  • 払戻額:0円
  • 収支:マイナス600円
  • 回収率:0%

厳しい結果となりましたが、この結果もそのままForward Testの成績に含めます。
良い結果だけを選んで掲載したり、予想条件を後から変更したりすることは行いません。

データや判定の改変は確認されていません

今回の確認では、7月28日までに保存されている次のデータを調べました。

  • レース情報
  • 展示前情報
  • レース結果
  • 払戻情報
  • AIの順位予想
  • 購入・見送り判定
  • Forward Testの評価結果
  • ブログ掲載用の予想データ

確認した範囲では、既存の判定や評価結果が書き換えられた形跡はありませんでした。
また、AIの予想データにレース結果や払戻情報が混入している形跡も確認されていません。
ただし、現在のデータベースには、予想判定の直接更新を完全に禁止する仕組みまでは入っていません。
今後は、予想確定後の内容をより変更しにくくするため、履歴やハッシュ値を使った監査機能も検討します。

現在進めている再発防止対策

現在、AIの日次処理を安全に自動化するための改修を進めています。

実行場所に依存しない構成

これまでは、プログラムを起動する場所やフォルダ構成の違いによって、必要なファイルを正しく見つけられない可能性がありました。
現在は、どのフォルダから起動しても、プログラム自身の配置場所を基準に必要なファイルや設定を見つけられる仕組みに変更しています。
この対応については、既存テストと新規テストを合わせた163件のテストがすべて成功しました。
また、通常のプロジェクトフォルダ以外から起動する検証でも、外部接続やデータ書き込みを行わないdry-runが正常に完了しています。

二重起動の確認

同じ日、同じ処理が重複して起動すると、判定の重複保存や処理同士の競合につながる可能性があります。
今後は、既存のロック機能も含めて、正式な実行環境で二重起動を防止できることを確認します。
古いロックファイルや、すでに終了したプロセスの情報が残った場合でも、安全に判断できる構成が必要です。

開始・終了・失敗ログの明確化

これまでのログには、個別処理の終了記録はあっても、日次処理全体が最後まで完了したことを明確に示す行が不足しているものがありました。
今後は、次の状態を明確に記録できるようにします。

  • 処理開始
  • 各工程の開始と終了
  • 正常終了
  • エラー終了
  • エラーが発生した工程

処理が起動しなかった場合や、途中で停止した場合にも、より早く気付ける構成を目指します。

過去日の予想作成を禁止する仕組み

結果が確定した後に予想を作成すると、Forward Testとしての信頼性が失われます。
今後は、過去日や、すでに結果が保存されているレースについて、新しい予想判定を作成できない仕組みを追加する予定です。
7月29日と30日のような欠測日についても、購入0件や見送り0件として扱うのではなく、処理未実施の欠測日として別に記録します。

本番環境と開発環境の分離

現在は、実際にデータを保存する環境と、プログラムを修正・テストする環境を分離する準備を進めています。
修正中のプログラムが誤って本番データを書き換えないように、専用の実行環境を用意する予定です。
現在の段階では、将来使用する実行環境でも安全にパスを解決できるようにする改修まで完了しています。
正式な実行環境への配備や、本番データの移行はまだ行っていません。

自動実行はまだ再開していません

プログラムのパス解決や安全停止機能については、現時点で163件のテストがすべて成功しています。
データベースや外部サイトへ接続しないdry-runでも、処理手順を安全に確認できています。
また、実行がまだ許可されていない状態で通常実行を要求した場合には、旧処理へ進まず、安全に停止することも確認しました。
ただし、正式な自動実行環境への配備や、実際のデータ収集再開はまだ行っていません。
現在は次の段階として、一時的な検証環境を作成し、以下を確認する予定です。

  • 実行環境へのファイル配備
  • 専用Python環境の作成
  • 設定ファイルの読み込み
  • 外部接続なしでの動作確認
  • 本番データへ接続しないことの確認
  • 実行禁止状態で安全に停止することの確認

これらの確認が完了した後、正式な実行環境と自動起動方法を設計します。

Forward Test再開について

Forward Testは、正常な事前判定を結果確定前に保存できる状態を確認してから再開します。
再開時には、過去の欠測日を埋めるのではなく、再開日以降のレースを新しいForward Test対象として扱います。
7月29日と30日は、今後も成績表へ無理に追加せず、欠測日として記録します。
再開前には、少なくとも次の点を確認します。

  • データ収集が正常に完了すること
  • レース結果取得前に予想が固定されること
  • 同じ判定が重複保存されないこと
  • 既存の予想が上書きされないこと
  • 処理の正常終了をログで確認できること
  • 再起動や実行場所の違いで処理が失敗しないこと

まとめ

今回の確認結果は次のとおりです。

  • 7月28日まではデータ収集と評価が完了
  • 7月29日と30日は日次処理が起動していない
  • 両日は正式な予想成績に含めない
  • 後付けの予想判定は作成しない
  • データベースの破損は確認されていない
  • 固定している予想条件の変更も確認されていない
  • 正式な自動実行環境が未構築だったことが停止につながったと考えられる
  • 直接的な停止原因を完全に特定したわけではない
  • 実行場所に依存しないプログラム構成への改修は完了
  • 163件のテストはすべて成功
  • 正式な自動実行とForward Testはまだ再開していない
  • 安全確認が完了するまで実運用を再開しない

AI予想では、的中した結果だけでなく、外れた結果やシステムの停止、データの欠測も含めて記録を残すことが重要だと考えています。
今後も、予想結果だけではなく、データ収集や検証環境で発生した問題についても、できるだけ正直に公開していきます。

コメント

タイトルとURLをコピーしました