nomurabbitのブログ

【AWS】LambdaでOPS求めてみた【C#】

こんにちは!nomurabbitです。
今回はOPSC#のLambdaで求めてみます。

OPS
野球で使うセイバーメトリクスの指標だね。

テンプレートの準備

まず、Lambdaのテンプレートを準備します。

.NET Core3.1のテンプレートは、
この記事この記事を参考にしてください。

ソースコード

今回は単純な数値の演算です。
ソースコードのポイントは下記の通りです。

public GlbResponseBody GetAction(GlbRequestBody glbRequestBody)
{
    try
    {
        int argAtBat        = int.Parse(glbRequestBody.AtBat);
        int argSacrificeFly = int.Parse(glbRequestBody.SacrificeFly);
        int argWalks        = int.Parse(glbRequestBody.Walks);
        int argDeadBall     = int.Parse(glbRequestBody.DeadBall);
        int argSingle       = int.Parse(glbRequestBody.Single);
        int argDouble       = int.Parse(glbRequestBody.Double);
        int argTriple       = int.Parse(glbRequestBody.Triple);
        int argHomeRun      = int.Parse(glbRequestBody.HomeRun);

        int hits       = argSingle + argDouble + argTriple + argHomeRun;
        int totalBases = argSingle * 1 + argDouble * 2 + argTriple * 3 + argHomeRun * 4;

        double obp = 1.0 * (hits + argWalks + argDeadBall) / (argAtBat + argWalks + argDeadBall + argSacrificeFly);
        double slg = 1.0 * totalBases / argAtBat;

        GlbResponseBody glbResponseBody = new GlbResponseBody();

        // calc ops
        glbResponseBody.Ops = (obp + slg).ToString("F3");

        return glbResponseBody;
    }
    catch (System.Exception e)
    {
        throw e;
    }
}

GitHubソースコードを載せていますので、
よろしければ参考にしてください。

github.com

演算に必要なパラメータは

です。

リクエストに入れて渡すと、
レスポンスとしてOPSが返ってきます。

以上でセイバーメトリクスの指標である
OPSを求めるLambdaをC#で書くことができました。

よかったら試してみてください。
では!