PHP+MySQLで競馬データベースアプリを自作・データ取得編

PHP+MySQLで競馬データベースアプリを自作 プログラム

PHP+MySQLで競馬データベースアプリを自作する方法・データ取得編

プログラムスキル向上のためにいろいろアプリを作っています。
今回は自作した競馬データのWEBアプリの作成手順をまとめていこうと思います。

自分が競馬に興味を持ったきっかけはゲーム・ダービースタリオンでした。
そこから競走馬の血統に興味を持ち、血統から競馬予想するようになってもう20年以上。

このへんの本は読んでいて楽しいです。
なので種牡馬の産駒成績ランキングをWEBアプリ化してみました。

種牡馬の産駒成績ランキングアプリ・詳細

産駒の集計項目は以下。

・芝/ダート別
・性別
・馬場状態別
・競馬場別
・距離別
・コース別距離成績

以上の条件の「勝率・連対率・複勝率・単回率・複回率・着数」を集計し一覧表示するものとなっています。

[トップ画面]
PHP+MySQLで競馬データベースアプリを自作

トップ画面。

[種牡馬個別データ画面]

PHP+MySQLで競馬データベースアプリを自作

・芝/ダート・性別・馬場状態別・コース別・距離別データ表示画面。

[コース別データ表示画面]

PHP+MySQLで競馬データベースアプリを自作

コース別データ表示画面。

構築環境

プログラム:PHP7.4
データベース:MySQL8.0

競馬予想ソフトのTARGETがあればもっと詳細なデータ分析ができるんですが、PCのデスクトップアプリなのでPCが無いと動かせません。

外出先で競馬予想をしてちょっとデータを確認したいという時に、WEBアプリならスマホやタブレットから見れて便利なのです。

産駒の成績データが肝

何は無くとも作成には大元となる産駒の成績データが必要です。
目的に合う(あわよくばなるべく加工する必要が無い)データさえ見つけられれば後はシステムを組むだけ。
実はシステムを作成することよりも条件に合うデータ探しに時間がかかりました。ですが今回の条件にぴったりなデータがあったんです。

JRA-VAN DataLabを使用

JRAが提供している競馬データサービスJRA-VAN、この中の「DataLab」を使用します。

JRA-VANの特徴

「JRA-VAN」は、JRAの100%関連会社であるJRAシステムサービス株式会社が提供するJRA公式データを使った競馬情報サービスのブランド名称です。
過去30年分のレースデータから、オッズ、提供しています。JRA-VANを使えば、パソコン向け競馬ソフトやスマートフォンで、競馬をより深く・便利に楽しむことができます。

JRA-VANホームページから

今回はJRA-VANのDataLabから成績データを入手しています。
DataLab詳細はこちら

JRA-VAN DataLab.|競馬情報ならJRA-VAN
JRA-VAN DataLab.は競馬予想に役立つ、JRA公式の競馬データを利用した種類豊富な競馬ソフトから好きなソフトが利用できるサービスです。

*JRA-VAN DataLabは使用料として月額2,090円かかります。

JRA-VAN DataLabから得たデータはいくつか配布されているソフトを使用して閲覧しますが、今回は前述のTARGET frontier JVを使ってデータ抽出します。

TARGET frontier JVから産駒成績データを抽出する方法

1.TARGET frontier JVを起動し「種牡馬」をクリック
PHP+MySQLで競馬データベースアプリを自作

 

2.データを取得したい種牡馬名を入力、検索し種牡馬名をクリック
PHP+MySQLで競馬データベースアプリを自作

 

3.「産駒一覧→産駒一覧(登録馬のみ/本賞金順」をクリック
PHP+MySQLで競馬データベースアプリを自作

 

4.「全」をクリックして検索対象年齢を2~99にして再検索。その後、一括戦歴をクリック。
PHP+MySQLで競馬データベースアプリを自作

 

5.コースの芝、ダートを選択し次(選択馬の条件)をクリック
PHP+MySQLで競馬データベースアプリを自作

 

6.次(検索範囲の指定)をクリック
PHP+MySQLで競馬データベースアプリを自作

 

7.検索開始日を任意の範囲で指定→データがある限り無条件継続(1980年まで)→検索実行
PHP+MySQLで競馬データベースアプリを自作

 

8.出力→レース一覧・★画面イメージ(CSV形式)→保存
PHP+MySQLで競馬データベースアプリを自作

これで以下のTarget上の該当産駒データがカンマ区切りでcsv出力されます。

M,日付,開催,R,レース名,馬名,C,性別,年齢,騎手,斤量,頭数,馬番,馬印,馬印2,馬印3,馬印4,レース印1,馬主(最新/仮想),人気,着順,芝・ダ,距離,コース区分,馬場状態,賞金,多頭出し,所属,調教師,走破タイム,着差,2角,3角,4角,上り3F,PCI,好走,PCI3,RPCI,上3F地点差,馬体重,馬体重増減,ブリンカー,単勝配当,複勝配当,枠連,馬連,馬単,3連複,3連単

この中から自分は7つのデータ

・性別
・着順
・芝・ダ
・距離
・馬場状態
・単勝配当
・複勝配当

を抽出、集計してデータベース化しています。

芝コース内回り・外回り区分を追加する方法

で、作成後に気づいたんですが「レース一覧・★画面イメージ(CSV形式)」のデータにはコースの内回り・外回りの区別がありません。
外回り・内回りを厳密に集計したいのであれば「レース一覧・成績CSV形式(項目固定)」に「コースコード」という項目があるのでこちらを出力してください。

レース一覧・成績CSV形式(項目固定)」で出力されるcsvでは「レース一覧・★画面イメージ(CSV形式)」と同じデータの並びで日付順に馬の成績データが出力されます。
このcsvをエクセルで開いて「コースコード」の列をコピーし「レース一覧・★画面イメージ(CSV形式)」のcsvの任意の列に貼り付けることで内回り・外回り区別データを追加したcsvを作ることができます。

これでシステムに必要なほぼ理想形のデータがゲットできました。

自分は年初に前年のサイアーランク1位~50位と気になる種牡馬のcsvデータを出力しています。
50頭以上なので1頭ずつcsv出力するのが地味に大変ですが、産駒の曖昧だった特徴がデータとして可視化できる第一歩なので非常に面白い作業でもあります。

競馬データベースアプリ・データベース設計編に続く

コメント

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