2026/10/31
競馬のリサーチをAIスキルにしてみた
全頭調査から能力評価、HTMLレポート作成、事後検証まで、競馬のリサーチ手順をAIスキルとして整理した過程を紹介します。
はじめに
最近、競馬について調べたり、レースの展開を考えたりすることを楽しんでいます。 競馬を調べるときには、過去の着順だけでなく、距離やコース、脚質、馬場、騎手など、見たい情報がいくつもあります。
今回は、その調査の観点と進め方をAIスキルとして整理しました。 この記事では、調査からHTMLレポートの作成、結果が出た後の振り返りまでを、どのような手順にしたのか紹介します。
作ったものの全体像
指定したレースの全出走馬を調査し、評価の根拠をHTMLレポートに残すスキルです。 結果との比較を依頼したときには、事前評価を残したまま振り返ります。
スキルの構成
入口となる指示、詳細なルール、HTMLの検証スクリプトを次のように分けています。
| ファイル | 役割 |
|---|---|
| SKILL.md | 分析モード、実行の流れ、必須ルール、調査の停止条件 |
| requirements.md | 全頭に共通する調査項目と情報の扱い |
| scoring.md | 採点、確信度、人気との比較 |
| decision-review.md | 馬場などの条件変更と事後検証 |
| output-format.md | レポートの内容と表示要件 |
| validate_report.py | HTMLの構造や必須項目の簡易検証 |
調査と評価で工夫したこと
人気馬だけでなく全頭を調べる
全出走馬について、枠、脚質、距離、芝、天候、競馬場、過去戦績、騎手との相性を整理するルールにしています。 収集した内容は馬ごとの作業表にまとめ、比較表や個別解説で再利用します。
能力評価の後にオッズと比較する
人気順をそのまま評価の根拠にしないよう、採点を確定してからオッズと照合する順序を指定しています。 独自の点数は馬同士を比較するための指標で、勝率を表すものではありません。
分からない情報は「未確認」として残す
事実と推定、未確認の情報を分け、根拠が見つからない項目を想像で埋めないようにしています。 追加検索を続けすぎないために、調査の停止条件も定義しました。
調査結果をHTMLレポートにする
生成するHTMLには、全頭比較、個別解説、採点根拠、展開シナリオ、出典、オッズの取得時刻を残します。 外部ライブラリ不要の単一ファイルにし、スマートフォンでの閲覧や印刷にも対応する仕様です。

検証スクリプトで確認する
Python標準ライブラリで作ったスクリプトで、タグの対応、必須注記、レスポンシブ・印刷用CSS、指定した馬名の登場回数などを確認します。
ただし、この検査で競走成績の正しさや採点の妥当性まで確認できるわけではありません。 馬名の登場回数だけでは、比較表と個別解説の両方に正しく掲載されていることも保証できないため、内容と画面の確認は別に行う必要があります。
結果が出た後に振り返る
「事前分析」「過去レース再構成」「事後検証」のモードを分けています。 結果を見て事前評価を書き換えるのではなく、当時の根拠と結果を比較し、振り返りを別の区分に残す方針です。
使ってみて感じたこと・今後の改善
実際に使ってみると、情報を整理できても、それだけで予想や買い方が決まるわけではないと感じました。 相手は生き物なので、過去の実績や条件をどれだけ調べても、実際のレースで必ずその通りに走るわけではありません。 むしろ情報が多くなることで、どの馬にも気になる材料が見つかり、候補を絞れなくなったり、買い方に悩んだりすることもあります。 調べる項目を増やすだけでなく、判断に影響する情報をどう見せるかも改善していきたいです。
もう1つ難しいと感じたのは、最初の評価に引っ張られることです。 早い段階で「この馬は厳しそう」と判断すると、後から候補に戻す材料が見つかっても、素直に見直しにくくなります。 これはAIの出力だけでなく、それを読む自分自身にも起こるバイアスだと思います。 今後は、候補から外した理由を残し、馬場や展開の想定が変わったときに、その理由がまだ成立しているかを確認する手順を大切にしたいです。
まとめ
今回は、競馬を調べるときの観点や判断の順序をAIスキルにまとめ、調査結果をHTMLレポートとして残す仕組みを作りました。 実際に使う中で、情報を集めることと、その情報を使って判断することには、それぞれ難しさがあると感じています。
どんなレースにも対応できる完璧なスキルにするのは難しそうですが、使って気づいたことを少しずつ手順に反映することはできます。 競馬を調べる楽しさを持ちながら、できる範囲でこのスキルも成長させていきたいです。