やること
C# .NetCoreで、ボートレース結果の解析の前調査
https://qiita.com/TamanegiTarao/items/02a634c36131ca85837e
をもとに、取得データ構造の検討を行う。
前回の記事では読みこみ迄やりたかったけど、長くなりそうだから
今回はここまでにする。
データ構造
前回の内容より、取得データの内容の検討する。
データ量が多くなることが想定されるため、
いくつかデータを以下の通り分ける。
節間タイトル
- 名前
- グレード情報
- 開催期間
節間のタイトルに関する情報、グレード情報が解析時必要となるため。
グレード情報は手作業にならざるを得ない。
public enum Internode1
{
General = 0,
G3,
G2,
G1,
SG,
}
public enum Internode2
{
Masters = 0,
Wemen,
}
public class InternodeTitle
{
public string Title;
public Internode1 Internode1;
public Internode2 Internode2;
public DateTime Start;
public DateTime End;
}
レース名
- 名前
- 特徴
レースの名前と特徴をまとめる。
特徴とは、進入固定や準優、優勝戦、シード番組など。
特徴をまとめるには手作業現状、手作業にならざるを得ない。
public class RaceTitle
{
public string Title;
public bool FixedApproach;
public bool SemiFinal;
public bool Final;
public bool Seed;
}
レース
- 開催場
- 開催日
- 節間日
- レース番号
レース内容の基本的な情報。レース結果と、レース情報の紐づけに使用する。
public class Race
{
public int Place;
public DateTime Date;
public int InDay;
public int RaceNum;
}
レース結果
- 単勝
- 複勝
- 2連単
- 2連複
- 3連単
- 3連複
- 各連複
配当情報。レース、選手に紐づけるのが目的。
組み合わせ、人気、配当が対象。
public class ResultOne
{
public int Popler;
public int Yen;
public int First;
}
public class ResultTwo : ResultOne
{
public int Second;
}
public class ResultThree: ResultTwo
{
public int Thired;
}
public class RaceResult
{
public Race Race;
public ResultOne Tansho;
public ResultOne Fukusho1;
public ResultOne Fukusho2;
public ResultTwo NirenTan;
public ResultTwo NirenFuku;
public ResultThree SanrenTan;
public ResultThree SanrenFuku;
public ResultTwo Kakuren1;
public ResultTwo Kakuren2;
public ResultTwo Kakuren3;
}
レース情報
- 節間タイトル
- レース名
- レース結果
- レース
- 決まり手
- 風向
- 風速
レースのセンス情報以外の内容。
上記の、節間タイトル、レース名、レース結果を含む。
public enum WindDirection { None, N, NE, E, ES, S, SW, W, WN };
public enum Kimarite { Nige, Makuri, Sashi, Makurisashi, Megumare, Nuki, Huseiritsu }
public class RaceInfo
{
public InternodeTitle InternodeTitle;
public RaceTitle RaceTitle;
public Race Race;
public RaceResult RaceResult;
public Kimarite Kimarite;
public WindDirection WindDirection;
public int WindMetor;
}
選手成績
- レース情報
- 着順
- 枠番
- 進入
- 登録番号
- モーター
- ボート
- 展示
- スタート
選手成績は選手に限定する情報のみにして、他の内容は、レース情報に紐づけておく。
レースタイムはあまり意味がない気がしているので除外する。
public class PlayerResult
{
public RaceInfo RaceInfo;
public int Number;
public int Result;
public int Wakuban;
public int Cource;
public int Motor;
public int Boat;
public double Tenji;
public double Start;
}
レース結果まとめ
- 節間タイトルリスト
- レース名リスト
- レース結果リスト
- 選手結果リスト
選手結果リストは、必要に応じてメンバリストの内容を紐づけることが前提。
public class RaceResults
{
public List<InternodeTitle> InternodeTitles;
public List<RaceTitle> RaceTitles;
public List<RaceResult> Results;
public List<PlayerResult> PlayerResults;
}
まとめ
今回はレースのデータ構造について検討を行った。
構造の是非はともかくこれで、要素ごとに分割した内容ができそうな予感はしている。
前置きが長くなってきているのが反省点。
次回は、実際にファイルを読んでみたいと思う。
だがしかし、すべてを読み込もうとするとボリュームが増えそうなので、
絞って記載しようかと考えている。
次回
C# .NetCoreで、ボートレース結果の解析 読み込みその1
https://qiita.com/TamanegiTarao/items/33284c3111a547b0ee8d