競馬のSQLデータベースがほしいから作ることにした 2017

競馬データの取得元の選択肢はJRA-VAN DataLab.netkeiba.comなどいくつかあって、ウマナリティクス~競馬×データサイエンスや、AlphaImpact理論解説に情報があります。

JRA-VAN DataLab.のデータベースソフトをいくつか使ってみたんですが、私の環境ではエラーで動かなかったり(EveryDB2、PC KEIBA Databaseとか)、機能が複雑すぎたり(TARGET frontierJVとか)、私がほしいソフトは見つかりませんでした。

  • データベースはSQLite(SQLで操作できる)
  • ボタンをクリックするだけでデータベースをセットアップ、アップデートする
  • スキーマ情報など必要な情報がマニュアルに書いてある
  • 開発が続いていてバグが少ない

こんなシンプルでちゃんと機能する解析者向けのデータベースソフトがほしいんですが、ないみたいなので自分で作っています。

作り始めて思うんですが、ちゃんと動くソフトを作るのは大変です。

データベースがAccessでいいなら、馬ちゃんのデータベースは競馬をよく知っている作者が作っているようで良さそうです。 私はこのソフトは使ってはいないのですが、競馬のデータベース開発のヒントを求めてggって見つけた馬吉の解析:データベースからこの作者を知りました。設計をよく練ってソフトを作っているようですごく参考になりました。

2017-11-25 完成してリリースしました

この後、ソフトウェアJVData To SQLiteを作りました。JRA-VANデータラボに登録しました。

2017-11-27 馬ちゃんのデータベースについて補足

私が実際に使ってみて、このソフトは生データをパースしていないことがわかりました。

例えば、コーナー通過順位というデータがあるのですが、これは生データでは、

(4,5,6,*7)=1-2,3,8,9(10,11)   12,13

のような文字列になっています。

これはあるコーナーの馬の通過順位を表していて、左から順番に1番通過、2番通過となっています。

また、記号はそれぞれ、

() 集団を表し、集団内の並び順はコーナー内側からの順番
= 大差
- 小差
* 先頭集団のうちで先頭の馬番
, 馬番の区切
___ スペース3桁後ろの馬番はコーナーを通過しなかった馬番

という意味です。

コーナー通過順位をデータ解析するには、この生データの文字列をパースして数値を抽出する必要があります。

ちなみに、私が作ったデータベースソフトウェアJVData To SQLiteでは、この文字列をパースしてテーブルにしています。

上の例だと次のようになります。

馬番 通過順位 先行馬との差(単位:馬身) 内側からの順番 先頭馬
4 1 0 1 0
5 1 0 2 0
6 1 0 3 0
7 1 0 1 1
1 5 5 1 0
2 6 2 1 0
3 7 1 1 0
8 8 1 1 0
9 9 1 1 0
10 10 1 1 0
11 10 1 2 0
12 NULL NULL NULL NULL
13 NULL NULL NULL NULL

他にも、JRA-VANデータラボの登録ソフトウェアではパースしていなかったり、エラーがあったりと実用にならないソフトウェアが多いのですが、JVData To SQLiteはパースをちゃんとしているし、エラーに強い設計になっていると思います。

Kosuke Maeda / まえだこうすけ

「機械学習で競馬予想して勝てるのか?」をテーマに活動中! QiitaにはR、VBAなどのTipsを投稿しています。