ケイバハック

競馬ソフトは自分で作ろう!

オッズを計算するアプリ

有馬記念の過去3年分の単勝の発売票数を表示するコンソールアプリ

有馬記念の過去3年分の単勝の発売票数を表示するコンソールアプリ

今回は、競馬ソフトを開発してみたいプログラミング未経験者のうち、.NET Core環境での開発手順の基本が分かっている人に向けての情報です。

「.NET Core環境での開発手順って何?」という方は、まずは、次の記事から読み進め、.NET Core環境での開発手順の基本を学んでください。

.NET Core環境でのコンソールアプリを作るときの基本手順

では、本題に入ります。今回は、2014年から2016年までの有馬記念の過去3年分の単勝の発売票数を表示するコンソールアプリを作ります。まずは、次の動画を見て、アプリのイメージをつかんでください。

この動画をご覧いただくとわかる通り、今回のアプリは、とても簡単なアプリです。シンプルに、有馬記念の過去のデータを表示するだけのものとなっています。

ただ、そのアプリの作りにおいて、これまでの記事でご紹介していない「クラス」と呼ばれる概念を利用しています。つまり、今回のアプリは、「クラス」の使い方を解説するのが、狙いです。

データの取得先

今回のアプリでは、この記事を書いている2017年3月現在から、過去3年分、つまり2014年、2015年、2016年の有馬記念のデータを利用しています。そのデータの取得先は、JRAの次のページに掲載されているものを利用しました。

その結果をまとめたのが、次の表です。

勝馬(票) 全体(票)
2014年 1946714 21338682
2015年 1114668 23783595
2016年 8055932 27140062

つまり、今回のアプリは、「この表のデータをただ表示しているだけ」という、凄く簡単なものです。

ソースコード

では、今回のアプリのソースコードを以下に示します。次の通りです。

Program.cs

using System;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //有馬記念2014
            ArimaKinen arima2014 = new ArimaKinen()
                {Year=2014, HatsubaiHyosu=21338682, KachiumaHyousu=1946714 };
            //有馬記念2015
            ArimaKinen arima2015 = new ArimaKinen()
                {Year=2015, HatsubaiHyosu=23783595, KachiumaHyousu=1114668 };
            //有馬記念2016
            ArimaKinen arima2016 = new ArimaKinen()
                {Year=2016, HatsubaiHyosu=27140062, KachiumaHyousu=8055932 };

            //結果の出力
            Console.WriteLine(arima2014);
            Console.WriteLine(arima2015);
            Console.WriteLine(arima2016);
        }
    }

    //有馬記念の単勝の発売票数を表現するためのクラス
    public class ArimaKinen
    {
        //開催年
        public int Year { get; set; }

        //単勝の発売票数
        public long HatsubaiHyosu { get; set; }

        //単勝の勝馬の発売票数
        public long KachiumaHyousu { get; set; }

        //自分のデータを文字列として出力するメソッド
        public override string ToString()
        {
            return $"[{Year}]発売票数(勝馬/全体): {KachiumaHyousu}/{HatsubaiHyosu}";
        }
    }
}

では、このソースコードを解説します。

クラスを使うと複数のデータをひと塊りに定義できる

今回のソースコードでは、「クラス」と呼ばれる概念を利用しています。その「クラス」を使うと、複数のデータをひと塊りにして定義できるメリットがあります。

今回のアプリでいうと、有馬記念の単勝の発売票数を定義するために、クラスを利用しています。具体的には、「ArimaKinen」という名前のクラスを定義し、そのクラスの中で、開催年、単勝の発売票数、単勝の勝馬の発売票数という変数を定義しています。

そして、このようにクラスを定義することで、「開催年、単勝の発売票数、単勝の勝馬の発売票数」をひと塊りのものとして、扱えるようになります。

例えば、このソースコードでは、有馬記念2014の情報を、次のように定義しています。

ArimaKinen arima2014 = new ArimaKinen()
                {Year=2014, HatsubaiHyosu=21338682, KachiumaHyousu=1946714 };

で、「ArimaKinen arima2014」のところがポイントで、クラスは、このように変数の型として利用します。こうすることで、「開催年、単勝の発売票数、単勝の勝馬の発売票数」をひと塊りに持った、「arima2014」というクラスの変数が定義できます。

クラスを使わなかった場合

一方、試しに、「開催年、単勝の発売票数、単勝の勝馬の発売票数」の定義にクラスを使わず、変数を使ったらどうなるでしょうか。その場合は、次のように変数を定義することになり大変です。

int arima2014Year = 2014;
int arima2014HatsubaiHyosu = 21338682;
int arima2014KachiumaHyousu = 1946714;
...以下同様に2015年、2016年分の変数を定義

クラスを使うと、「有馬記念のレース」のような複数の値を持ちうる概念を、1つの塊として表現できます。それが、プログラムを作るのに便利なんですね。

次に読むべき記事:有馬記念の過去3年分の単勝オッズを計算するコンソールアプリ

Return Top