水浴 [ Home ]

【絵の解説】

●はじめに

私は「エクセル競馬予想 馬ちゃん」 と言うマイクロソフトのエクセル(Excel)で作成した競馬予想ソフトを作成して JRA-VAN に登録させていただいております。
今までに何回かのバージョンアップを行って機能の拡張を行ってまいりましたが、データベースはマイクロソフトのアクセス(Access)をほぼ共通で使用してまいりました。
アクセスはエクセルとの馴染みが良く、プログラムの解説書や解説サイトも多い事からソフトの作成は比較的に楽に行う事が出来ました。
しかし、長らく使用していると多くの不満点が出てくるものです。 以下に私が感じるている不満点や巷で述べられている不満点について記載してみます。

(1)処理が遅い。
(2)データベースのファイルの容量は、2GB以下にしなければならない。
(3)ネットワークデータベースとして動作させた場合に不安定になる場合がある。
(4)マイクロソフトはSQLサーバーへ移行する事を推奨している。

処理が遅いと言われる点については、他のデータベースと比較しての話になるのですが、例えば MySQL と比較した場合に遅いと言われております。
ただ、この点に関してはソフトに工夫を加える事で、例えばインデックス(Index)を作成するとか、データをメモリーキャッシュに取り込んで処理するとかで、使用感としては遅いどころか速くなる場合も多いようです。 他のデータベースに移植してみて初めて気が付いたのですが、「馬吉」の高速性には驚かされました。 このソフトは高速に動作させるために、相当最適化されております。
同じコードで記載した場合には、確かに MySQL などのデータベースの高速性は実感できますが、致命的な欠陥では無いと思います。

ファイルの容量が1ファイルで2GB に制限されている点については、現在の多くのデータベースと比較すると欠陥と言わなければなりません。
2GB の容量は、数万点程度のデータのデータベースならデータが溢れる事はありませんが、競馬予想のデータベースのように数十万から数百万程度のデータを保管するようになると2GB 以下に抑えるのは無理となります。 私が作成した「エクセル競馬予想 馬ちゃん」の場合は、データベースに保管するデータは過去7年間のみにする事や、保管するデータを予想に必要なデータだけにする事で、この問題を避けております。 単なる競馬予想ソフトとしては、それでも問題は無いと思いますが、競馬のデータベースの構築を目的とするソフトや分析ソフトでは、全てのデータを蓄積しなければなりません。

マイクロソフトアクセス(Access)を使用しているソフトの多くは、この問題点を解消するためにデータの分割を行っております。 JRA-VAN から提供されているソフトの「馬吉」はアクセスをデータベースとして使用しておりますので、ファイル容量の限界を避けるためにデータを約50のファイルに分割してデータベースを構築しています。 特に馬毎レースデータ(UMA_RACE)は1つのデータを2つに分解して記録させると言う方法をとっています。 プログラムのテクニックと言うよりは、芸術的と呼べるのではないかと私には感じられました。 このようにする事で問題点は解消できるように思えますが、データベースとの連携を取るためにソフトの作成が大変になるだけでなく、データベースの処理を平行して行うために処理速度の低下が発生する事になりそうです。  同時に多くのデータベースにアクセスしなければならないために、多くのメモリーも消費することになります。  事実、「馬吉」の説明書にはソフトはリソースを大量に消費するので、不要なウィンドウは閉じてから使用してください等と記載してあります。 マイクロソフトアクセス(Access)は競馬のデータベースを構築する用途としては適していないかも知れません。

競馬データベースを構築するには問題がありそうですが、アクセスは単独で使用するデータベースとしては秀作だと思います。 何と言っても使い易いです。
私が以前に勤めていた会社でも私が作成したアクセスのデータベースを使用したソフトを現在でも使用しております。 データベースのメンテナンスの出来る人がいないためほったらかしの状態で使用されておりますが、10年近くの運用でも落ちたと言う話(連絡)はありません。 ただ、サイトの評価では、ネットワークを使用して多くの人がアクセスを行ったりした場合には落ちる事の多いデータベースだと言われております。  何よりも心配な点は、マイクロソフト自体が、アクセスを使用したデータベースを推奨していない点です。 一時代を築いたアクセスでしたが、現在は時代遅れのデータベースになってしまったと考えるべきなのでしょう。

そこで私は次の競馬予想ソフトに使用するデータベースはアクセス以外にするべきだろうと考えました。 当初は、評判の良いMySQLを使用したデータベースにするつもりでテストを行っておりました。
同じプログラムを作成してデータベースをMySQLにした場合は、体感できる程のスピード感を得る事ができました。  MySQLは無償で使える点や資料が多い点も良かったのですが、若干の問題点も感じておりました。 一つには導入や使い方が初心者には難しい点がある事です。 MySQLは多くのバージョンがあって、動作が微妙に事なる点がまず心配です。 特に文字コードに関しては問題が多いようで、文字化け対策の質問がサイト上でも数多く見られるようです。  MySQLはセキュリティ機能も充実してきましたが、逆にこれが設定を難しくしております。  データベースのバックアップも簡単とは言えないでしょう。

最近、数多くのデータベースを調べている内にSQLiteが目に止まりました。
データ構造が単純な簡易的なデータベースと思っておりましたが、競馬予想のデータベースとしての提供も多いので試して見た所スピード的にはMySQLと同等かそれ以上であり、データ数が数百万での使用例もある事が判明いたしました。 SQLiteは数多くのレンタルサーバーで使用が可能なのも心強いです。 早速、このデータベースで競馬のデータベースを作成して動作の確認をしてみる事にしました。

データベースの構築はなんとかなりましたが、問題はデータベースの中身を見る方法です。 アクセスの場合には、マイクロソフトのアクセス(Access)を使用する事で自由にデータベースの中身も確認も出来ましたし、内容の変更も楽に行う事ができました。 SQLiteの場合は、そのようなソフトが全く無いのです。 GUIを使用したSQLiteのデータベースの中身を見る事ができるソフトも数種類試して見ましたが、表示が極端に遅かったり、やたら固まったり、直ぐに落ちてしまうソフトが多くて使用に耐えませんでした。
私のパソコンはメモリーは使用限界(32bitXpでは約3.5GB)まで入れておりますが、数百万のデータを一瞬で表示するソフトなどは簡単には作成出来ないのでしょう。

データベースの中身も十分に確認できないで、いきなり競馬予想ソフトを作成(供給)する事はいくらなんでも無謀です。
そこで、SQLiteを使用したデータベースの表示ソフトを作成する事にしました。
一から作成するのは大変なので、JRA-VANからソースの公開されている馬吉を変更してSQLiteのデータベースを使用したものに改造して見ました。
これならば、アクセスと比較してデータ内容が異なっているかどうかの判断や動作スピードの違いも体感できて好都合だと思ったからです。
考えた頭初は、まさかこれほど馬吉のオープンソース版へ移植する事が面倒だとは夢にも思っていなかったのです。

JRA-VANの馬吉はプロのプログラマーが作成した(推定)だけに良く出来ていると思います。
プログラムが細かく分割されておりますので、動作しない場合に不具合点を見つけるのも楽で多くの人がプログラム開発に参加する場合は便利だと思います。
しかし、プログラムの設計仕様書が公開されていない現状では、「馬吉」のプログラムを改造する事を大変難しくしております。
どこに何が書いてあるか判りませんし、プログラムの流れも全く不明ですのでその理解から始めなければなりません。
それに私から見るとこのプログラムは凝っていると言うべきか、マニアライクと言うべきか表面上では見えない動作を行わせている部分が多いのも特徴です。
とても私みたいな素人が簡単に解析できるようなプログラムではありません。

それと、私は今回初めて「馬吉」を競馬データベースのソフトとして本格的に動かしてみましたが、画面のデザインや使い勝手などに、もう少しなんとかならないだろうかと感じる点が多くありました。
酷な言い方をさせていただければ、競馬をやらないプログラマーが仕様書に基づいて強引に創り上げたのではないのだろうかと言うような事です。
ただ、「馬吉」にはこのソースの公開版の他に機能がより充実しているJRA-VANの提供版もあります。 こちらのソフトも私は全く使用した事がありませんが、常に人気ソフトの上位に位置しているようです。 ソースの公開版と実際の提供版は画面構成は似ているようですが、実際の機能や動作は異なるのかも知れません。
そうであれば、公開版の動作もできるだけ見直して実際の提供版に近づけるようにプログラムを書き換えたいと思います。

プログラムはVB6で作成されておりますので、今では時代遅れ(開発ソフトの入手が困難)の感もあります。
ただそれにも増して、ソフト作成のためのノウハウは数多く詰め込まれておりますので、プログラム作成技術の向上には役立つと思います。
これから少しずつ、私がSQLiteのデータベースへ変更するために行った私が知りえた馬吉の解析を記載したいと思います。
「馬吉」を改造してみたいと考えておられる方や、プログラムの作成技術の向上を目指したい有志の方々の参考になれば幸いです。

2009年11月10日  作成 岩浪


【注記】
1.「馬吉」とは、JRA-VAN が無償提供している競馬データのビューアソフトです。
2.マイクロソフトアクセスの仕様 (Access 2003)の主要な部分は以下の通りです。
 ★テーブル内のフィールドの最大数は、 255
 ★開いているテーブルの最大数は、2048 (Access 内部でテーブルを開いているため、実際の数値はこれよりも小さくなります。)
 ★テーブルサイズの最大数は、 2 GB からシステム オブジェクトに必要な領域のサイズを引いた値
 ★メモ型フィールドの最大文字数は、ユーザー インターフェイスを使用してデータを入力するときには 65,535
 ★データをプログラムで入力するときには文字格納領域最大は、 1 GB
 ★インデックスのフィールド最大数は、 10

【HP変更履歴】
1.2010年4月22日 HPに記載の内容を開発ソフトのヘルプファイルと共用させるために、スタイルシートを一部変更しました。

[ Home ]