VB.NETでJVLinkからデータ取得 2 概要
JVLink入手
https://jra-van.jp/dlb/#tab5
DataLab.(データラボ) 会員サービス ソフト開発サポート
https://jra-van.jp/dlb/sdv/sdk.html
JRA-VAN Data Lab.開発ガイド(Ver.4.2.2)
https://jra-van.jp/dlb/sdv/sdk/DataLab422.pdf
JV-Data 仕様書PDF版(Ver.4.9.0)
https://jra-van.jp/dlb/sdv/sdk/JV-Data490.pdf
Microsoft Visual Studio Community 2019
https://visualstudio.microsoft.com/ja/vs/older-downloads/
JV-Dataとは
いわゆる中央競馬の公式データという位置付けです。
様々なデータベースソフトや、競馬情報を扱うサイト様が根拠にしているソースとなります。
元々我々のようなエンドユーザー向けに用意されたものではなく、開発者がエンドユーザー向けのソフト開発をする為に使用するデータを、DataLabが用意してくれているという理解でいいと思います。
JVLink
JV-Dataは直接読み込むものではありません。
JVLinkというプログラム(API)にコードで指示をし、望みのデータを取得させます。
次に取得させたデータを別の指示で読み取ります。
更に読み取ったデータを表示させ、コードで整形、表示、保存といった処理をしていきます。
※APIとは、サービス提供者がそのサービスを外部に簡単な指示で便利に扱えるような仕組みを実装する為に用意してくれたプログラムです。
JVLinkの場合、固定長バイナリデータを使っているので、その部分の理解が必要です。
Microsoft Visual Studio2019
統合開発環境(IDE)と呼ばれ、開発者がアプリを開発する為に必要な物が全て揃ったソフトです。
開発から製造ラッピングまで全てを自社で行う工場のようなものです。
似た名前でVisual Studio Code というのがありますが、そちらはその工場内の開発部門が研究所として独立し、開発のみに特化させた感じです。
(今回はVSCodeは使わないので忘れてもらって構いません)
ちなみにJVLinkは32bitプログラムであり、ネイティブな64bitプログラムで呼び出すのは厄介この上ないので、32bit版の2019を使います。
JRA-VAN Data Lab.開発ガイド(Ver.4.2.2)
こちらを初見で理解して後述する仕様書を参考にコードに落とせる方は、このシリーズ記事は不要です。
ですが、私のような「やってみたい!」だけでとりあえず飛び込むタイプの方で、VBAなど何かプログラミング言語に触れたことがある方であれば参考になりますが、出てくる言葉は少々理解し辛く、私はすぐには理解できませんでした。
更に、罠と言ったら怒られるかもしれませんが、ガイド内には様々な便利機能や、一見大事そうに見えるJVLinkとのやり取りが書かれていますが、実はその大部分は実際には必要ないです。
誤解を恐れずに言えば、究極的に望みのデータを得るだけならば、ガイドにある記述通りに書く必要はないという事です。
JV-Data 仕様書PDF版(Ver.4.9.0)
開発ガイドとは違い、欲しいデータに辿り着く為にはこいつの理解が絶対に必要です。
何処に何のデータがどの様に収まっているかが全て書いてあります。
今回進めていくデータ取得方法では、まさにその
「何処に何のデータがどの様に収まっているか」
の理解が全てです。
逆にそのパターンを理解できれば、望みのデータを単純に引数を変えるだけで得られるようになります。
まとめ
繰り返しになりますが、そもそもJVLinkを使ったJV-Data取得は開発者向けのものであり、エンドユーザーが気軽にJV-Dataを取得する為に用意されたわけではありません。
なので、IT用語辞典片手にガチで100%理解しながらコーディングするのは正直シンドイです。
まずは最低限の学習コストでデータ取得を実装してから、御自身が必要なデータを必要な形に変換してみてください。
今回はVB.NETでやりましたが、同じ.NETのC#でも可能です。
Pythonでやろうとすると、32bitの仮想環境を用意しないといけないですが、どうしてもPythonがいいという方は頑張ってみてください。
今後提示するコードは全てにコメントを付けてありますが、もっと詳しい解説が必要という方は、まずは生成AIに丸ごとコードを読ませて聞いてみてください。
恐らく私の書いたコードを私以上の解像度で解説してくれるはずです。
それでは次からコーディングに入ります。
次の記事