(11)取敢えずプログラムを作る

競馬に対する私の能書きばかり書いてきましたが、能書きばかりでどうやったら競馬で儲けられるのかを書いておりません。
読まれる方も話だけでは ’あんたも口先だけか’ と三流の競馬評論家と変わりが無い事になります。
そう思われるのも癪ですので、取敢えず競馬予想プログラムを作ってみる事にします。

競馬予想プログラムを作る前にまず競馬のデーターベース作らなくてはいけません。
競馬のデータベースを作ると言うと、データベースを購入する必要があるのではとか、結構難しい事のように思えます。
しかし、個人のデータベースは特に安定性は必要としませんので難しく考える事はありません。
データベースは広く出回っていて、比較的安価に手に入るAccessで十分だと思います。
最大のファイルの容量が2GBと言う壁があって、躊躇(ちゅうちょ)される方もいるかと思います。
私の場合、現在50万件程度のデータが入っておりますが、特に最適化もしないでAccessの総容量は1.2GB程度です。
現在の所ではスピード的にも安定性に関しても不都合は生じておりません。

考える必要があるのは、データベースに登録する競馬のデータをどこから取り寄せるかです。
私の場合は、JRA-VANに加入しておりましたので、必然的にそこから取り寄せる事になりました。
データは有料なのですが、もともとターゲットという競馬のデータ分析ソフトを使っていましたのでこれにした訳です。
JRA-VANに既に加入されてパソコンの設定も済んでいるとしてお話いたしますが、加入されていない場合や他のデータを使われている場合はこのプログラムを使用する事はできません。

実は、JRA-VANのホームページには、競馬ソフトの作り方の解説がかなり詳しく載っております。
そこには、エクセルを使った方法、VBやVB-NETを使った方法、Cを使った方法等でのサンプルプログラムがあります。
私はVBに関しては若干の知識はあったのですが、それでもデータの構造を理解したり、慣れるまで結構難しいと感じました。
全てが初めての方は大変だと思いますが、まずはデータベースの構築プログラムを作る必要があります。
幸いな事に、このJRA-VANからデータを取り込んでデータベースを構築するPC-KEIBAと言うフリーのソフトが存在します。
手っ取り早く競馬のデータベースを構築したいというのであれば、最初はこのソフトを利用させていただくのが良いと思います。

私が PC-KEIBA を使って作成した競馬予想プログラムが、「エクセル競馬予想 馬ちゃん」(Ver1.03)です。
恐れ多くも、JRA-VAN に登録させていただきました。

【注記】
「エクセル競馬予想 馬ちゃん」(Ver1.03)は2005年12月15日に私が初めてJRA-VANに登録させていただいたソフトでしたが、データベースの構築までは手が回らなかったために、PC-KEIBAの作者様にお願いしてデータベースの使用の了解を得ました。
当時にやり取りしたメール(2005年12月23日付)の一部を掲載致します。(お互いの名前が記載されている部分はぼかしております)

PCKEIBA

最初の数年間(2年半)は非常に順調でしたが、私のソフトへの質問(不具合報告?)がこの作者様へ2件ほどあって苦情を言われた事もありましたので、このソフトは2008年6月25日にJRA-VANの登録を抹消しました。
同時期(2008年6月)に、独自のデータベースを搭載した「エクセル競馬予想 馬ちゃん」スペシャル版をバージョンアップ版として発表させていただきました。
当初はお互いの利益になるだろうと考えておりましたが、他人が作成したソフトの使用はトラブルの元になりますので、多少時間が掛かったとしてもデータベースは自前で用意をした方が良いと思います。  私がプログラム開発者を嫌うようになったのは、この頃からです(笑)


●競馬データベースを新しく作成する

2005年末に競馬予想ソフトを公開して2006年度の重賞競走での的中率や回収率を見たのですが、散々な結果に終わってしまいました。
自分なりにはかなり研究したつもりだったのですが、まだまだ甘いようです。
2007年に入り、次のバージョンのソフトの作成を始めたのですが、この時から自前のデータベースにしたいと考えました。
PC-KEIBAさんのデータベースに関しては、特に不満は無かったのですが、それではソフトが半人前のような気がしたのとデータベースに独自の項目を設けたかったためです。

PC-KEIBAさんのデータベースは、Access の容量の壁(2GBの制限)を避けるために、ファイルを分散してリンク結合にしておりましたが、私は敢えて1つのファイルだけに致しました。
これはなぜかと言いますと、データベースをコピーするのが大変だったためです。
やはり多くのファイルをコピーするよりは、1つのファイルをコピーする方が遥かに楽です。
容量の壁に対しては、不要な内容のものを取り込まなければ済む事です。

不要な内容とは、データは過去5年分程度を活用するだけで競馬予想には十分であり、10年前のデータは全く不要であると感じた事。
よくこのレースの過去10年間の傾向とかで競馬新聞に載っている事はありますが、馬場の改修も頻繁に行われておりますし、10年前のデータはデータの意味が無いばかりか間違った判断を下す場合すらあります。
それとデータの肥大の元となる坂路調教のデータですが、これも競馬予想にはほとんど役に立たない事も感じておりました。
調教時計の比較でも調教回数の比較でも単純にデータを眺めて比較するだけでは、競走馬の能力は全く判断できません。
調教データの載っていない馬が勝つ事もあって、このデータと言うのは百害あって一利なしぐらいに私は感じております。
調教に関しては、馬を見る眼のある人の調教解説を見させて貰う方が遥かに的確です。

それでデータは5年前程度から予想ができれば十分と言う事で、7年前からのデータを取りこんでおります。
10歳馬以上の競走馬も存在しておりますので全ての馬の新馬戦からのデータを見る事はできませんが、通常は8歳馬程度までのデータが全て揃っておれば十分と思っております。
事実、かなりの期間を運用しておりますが過去のデータが不足していると感じた事は全くありません。
ひょっとしたら、競馬予想には5年前程度からのデータを取り込むだけで十分かも知れません。
データは、レース情報の全てと配当情報、繁殖馬情報、競走馬、騎手、調教師、生産者、馬主のデータなど主な物は取り込んでおりますが、7年間でもファイル容量は1.2GB前後に収まっております。

●競馬データベースソフトを登録する

現在(2014年1月)、JRA-VANに競馬データベースソフトとして登録してあるのは結構な数になると思います。
その中で、人気が上位なのは「TARGET frontierJV」ですが、ソフトの使い勝手が良いのとJRA-VANが全面的にバックアップしておりますので、トップの座を明け渡す事はないと思います。
私も随分と前からこのソフトは使用しており、現在でも使っています。
ただ、自分で競馬データベースのソフトを組めるようになると、色々と不満点も感じております。

まず言っておきますが、このプログラムは良い点が非常に多いのですが、それについては全く述べない事にします。
使う人が多いのは良い点が多いからで、今更それを述べた所で無意味だと思うからです。
プログラムを作る側から見れば、良い点はそっくり真似れば良いだけですから、良い点を取り上げる必要はありません。
では、私が個人的に不満だと思う点をいくつか挙げたいと思います。
このプログラムはMDI(Multiple-Document Interface:複数文書インターフェース)で作成されています。
エクセルでお馴染みのインターフェイスの使用ですが、複数の画面を1つのプログラムの中に入れると言う点で表示画面の多い競馬ソフトには最適のように感じますが、「TARGET frontierJV」では独特の造り方になっていて、同時に別々の画面を開いて見るのが非常に困難な造りになっています。
例えば出馬表とIPATの投票画面を同時に見ながら馬券購入をしようと思っても、色々な画面が出たりしますので結局はどっちか一方の画面だけを見ながら操作する事になるでしょう。
事実、私はそのようにしております。
これでは何のためのMDIかと言う事になります。
それと、MDI内部の画面が最大化されて表示されませんので、私は常に最大化ボタンを押して操作しています。
毎回最大化ボタンを押さなkればならないと言うのはストレスを感じます。
これなども、マルチ画面対応のための措置なのでしょうが、シングル画面でしか使用しない人にとっては使いづらい仕様です。
これだけ多くの人が使っているのに誰からも不満が出ないのが不思議です。

表示が遅い点もかなり不満です。
特定のレースの出馬表を表示させてから、別なレースを見る場合に1秒程度は待たなければなりません。
Windowsはメモリーのキャッシュ機能がありますから、時間が掛かるのは最初だけで2回目以降は半分以下の時間で表示するのですが、それでも最初の1回にはストレスを感じます。
ソフトはこういうものだ(時間が掛かる処理なのだろう)と思っている人は何も感じないでしょうが、プログラムを書ける人には極めて処理が遅いと感じます。
特に私はエクセルでプログラムを書いておりますので、あらかじめ全レースを取り込んでおれば瞬時にどこの開催地のどのレースでも表示しますので、強くそれを感じます。
「TARGET frontierJV」でレースの発走時間に合わせて順番に出馬表を見ようとすると、操作のやり方では出来るのでしょうが面倒なのでやっている人は居ないと思います。
初期設定の状態では、開催地を変えた場合に同じレース番号しか表示されませんので、使い勝手が非常に悪いです。

画面の有効利用と言う点でも不満です。
最近は大型ディスプレイが普通になってきているので、解像度も大きくして使っている人が大部分だと思いますが、それで出馬表を表示した場合には画面の半分は空白になってしまいます。
今の時代なら、この部分には競走馬の過去のレース結果を表示したりするのが当たり前になっておりますので、今だに10年以上前の画面構成なのには不満を感じます。
縦方向だけでなく横方向も今のプログラマーならもっと情報を多く表示させる設計にするでしょう。

全体的に動作が重いです。
何でもかんでも(馬名の意味由来だとか各種コメントだとか)取り入れようとした結果でしょうが、動きが鈍いと感じます。
特に検索機能を重点的にして設計しているからか、動作が重いだけでなく操作性も悪くなっています。
データの分析を行う目的のためには必要な機能でしょうが、単に出馬表を見て投票するだけの機能があれば良い人にとっては、動作が重いのは不便なだけです。
過去のレースの結果やタイムなどの最低限度の機能は必要ですが、馬券を買う時に細かい血統表まで必要とする人は極めて少ないと思います。
それから、データの取り込み機能も全て手動で行わなければならないなど、操作性が貧弱である点も不満点に挙げられるでしょう。
さらには、データベースの構造が単純なので、データの取り込み時間が極めて速いのは良いのですが、反面、圧縮を行わないのでデータを保存しておりますので、記憶装置(ハードディスクやSSD)に大容量を必要とするというのも欠点に挙げられるでしょう。
私はこのソフトは優秀なソフトでありますが、決してJRA-VANがもろ手を挙げて推薦するようなソフトでは無いと思っているのですが、こんな考え方をしているのは私だけなんでしょうね。

「TARGET frontierJV」だけでなくJRA-VANには、「スーパーパドック2005」、「馬トモ2」、「PC-KEIBA Database for JRA-VAN Data Lab」、「スピリット」、「EveryDB」などデータベースとして登録しているソフトは掃いて捨ててもまだまだ出てくるのですが、私はそれでも自分のデータベースをJRA-VANに登録しようかと考えております。
やめとけと言われるのがオチですが、言うならば「当たって砕けろ」の精神ですね。
こちらが、やめとけと言われそうな、私が作成したデータベースソフトの実寸大の画面です。

馬ちゃんデータベース1

これはWindowsXpで動作させた時の画面ですが、Windows 7,Windows 8 でも動作するのは確認しております。(32 bit版だけの動作確認ですが)
ソフトはほぼ完成して各OSでの動作確認をしておりますが、公開してもインパクトが少ないと感じておりますので、何かもう少し機能面を拡充したいと考えている所です。
今回初めてC言語を使って作成したのですが、理解が難しい反面、非常に面白味があって、やりがいもある言語だと感じました。
C++とC++MFCでなら、この程度のプログラムは作成できます。(やっとですが)
現在主流のC#はやっておりませんが、C++でプログラムが作成できて、C#では出来ない筈はないと思っていますので、その必要性を感じたら試してみたいと考えています。

馬ちゃんデータベース2

上記の画面はこのデータベースソフトで作成したデータベースのフォルダの内容です。
1986年以降のJRA-VANから提供されている全てのデータ(馬の名前の由来とかセールの取引金額は除く)を取り込んでいるのですが、マイクロソフトアクセス(Access)は7つだけで済ませております。
データの主要な項目は、Umachan.mdbに入っているのですが、1.6GB弱に収まっています。
細かい事を言えば、最適化を掛ける前の状態がどうだとか、馬券の券種が3連複や3連単は2004年以降からだろうとか色々とあるのですが、少なくとも現在は全てのデータを取り込む事ができます。
JRA-VANの「馬吉」がマイクロソフトアクセス(Access)を50近くまでデータベースを分けていたり、1995年以降ぐらいからのデータの取り込みでないとアップアップしそうなのに比較すればデータをいかに効率よくデータベースに登録しているのかが分かっていただけると思います。
ただ、こういった機能は説明しても理解していただけない場合がほとんどですから、公開してもインパクトは少ないだろうと考えています。
それに、1986年からのデータを取り込んだのでは検索するデータが多いので検索も遅くなって余り実用的ではありません。(TARGET frontierJVでは1年毎にデータを分けているようです)
私の感じから述べさせていただくと、10年前からのデータの取り込みぐらいが丁度良いのではないかと思っています。
この程度なら、動きも重くなりませんし、競馬を予想するサイトもレース傾向としては10年前からのデータを使用する場合が大部分ですから不便は感じません。

実は、私がこのソフトの目玉にしようと考えているのはデータを効率よく登録する機能ではありません。
この同じフォルダに入っているAqTkApp.exeと言うソフトにお気づきでしょうか。
これはプログラム作成者には有名な音声合成ソフトのデモ版です。
実は私はこのソフトに音声合成機能を組み込んで音声による案内を行おうとしているのです。
AquesTalkは、株式会社アクエストと言う横浜市にある会社が提供しているのですが、最初の頃はライセンスも無料で個人では自由に使えたのですが、数年前から個人でも開発ライセンスが必要であると変更されたようです。
それで、ソフトの添付が難しくなってきているようなので、このソフトを使うかどうか迷っています。(著作権侵害で訴えられたりすると面倒な事になりますので)
私のソフトに添付しなくても、個人がダウンロードしたり、昔からある読み上げソフトには添付しておりますので、それと共用する事はできます。
その他にも無料で使える音声合成ソフトはありますので、音声案内をさせるかどうかも含めて色々と実験しております。