LoginSignup
17
19

More than 5 years have passed since last update.

JRA-VANから公式の競馬データを取得するサンプル作った

Last updated at Posted at 2018-02-27

SDKあるじゃん

競馬予測を機械学習やDLで扱いたいと思ってデータを集め始めたときに、比較的に信頼できるデータが得られるのはJRAだと思います。

そんな時に、JRA-VAN Datalab.では、JV-Linkという、JRAのサーバーからデータを取得するSDKがあります!...が、かなり酷い仕様です。

あまり開発ソフトも作られていないのか、オープンソースのコードを全く見かけないので、サンプルコードをC#で書いてGithubにアップしました。

こちらをどーぞ

visualStudio2015を利用しています。.Netの環境が必要です。

地雷ポイント

上手くいったときはバッファーのサイズ返して、次のファイル読み込む切り替え時には-1を返して、読み込み終了時には0を返して、-1未満だとエラーの返り値

こういうのがザラにあります。
今回はJVReadResultというクラスを作り結果をラップして、switchで分岐できるようにしました。

可読性重視にしたら、do whileで、switch finishedでフラグ立てとかのほうが良いかな...?

ReadData.cs
// JVReadのreturnCodeでJVReadResultを初期化。状態が終了でない限り読み込みを続ける。
while((result = new JVReadResult(m_jvlink1.JVRead(out buffer, out bufferSize, out fileName))).state != JVReadResult.State.finished)
{
    switch (result.state)
    {
        case JVReadResult.State.normal:
            m_strOut.AppendText(buffer);
            break;

        case JVReadResult.State.error:
            m_strOut.AppendText("JVReadエラー:" + result.returnCode + Environment.NewLine);
            break;

        default:
            break;
     }
}

不具合が共有されない

仕様書に書いていない仕様がけっこうあります。
なので、問題が起こった時にとりあえずググってJRA-VAN Datalab.の掲示板を見つけて、その時初めて仕様を知る。
みたいな感じです。

今後

開発ソフト体験教室というのがあるので、これを一通り試したらJRA-Data to SQLをOSSで開発したいなーと思っております。

問題は、暗黙の仕様やエラーをいかに集約してプログラム中でルールとして表現できるか。という点で、まぁこれはリリース後にエラーログ収集やissue管理などでなんとかなるかもしれません。

CIもきっちり回していきたいです。

17
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19