6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

kintoneAdvent Calendar 2015

Day 11

kintone でセイバーメトリクスアプリを作ってみる

Last updated at Posted at 2015-12-10

kintone Advent Calendar 2015の11日目です。
kintoneも好きだけれど、野球も大好きな自分がなにか面白いアプリを作れないかなーと思い、今回セイバーメトリクスアプリを思いつきました。

***なにそれ美味しいの?ってかたは、まず映画マネーボールらへんをみてからここに戻ってきてください。**
#セイバーメトリクス
とはいえ、今回作ったkintoneアプリを紹介する前に「セイバーメトリクス」についてざっくり紹介したいと思います。
セイバーメトリクスとは、野球には打率や出塁率や長打率などといった様々な指標があります。
こういった指標を用いて分析することで、野球における采配に統計学的根拠を与えられる手法のことです。
例えば統計学をもちいるとこんなことが言えます。
「1点差の9回裏ノーアウト1塁でバントをすべきか?」
普通に考えれば、ここは送って得点圏にランナーを進めたいところですよね。しかし統計学的に見ると、2アウトランナー2塁よりも、1アウトランナー1塁の勝利確率の方が4パーセントほど高いということがわかるらしいです。つまりは、バントするよりもヒッティングという戦略をとった方が勝率が上がるということが言えます。
このように、統計学を用いることで感覚的にとってしまう戦略に根拠を与えたり、目に見えている指標だけでは表せない選手固有の能力を発掘したりするイケてる理論なわけです。
実際、プロの球団でもとりいれられているとかられないとか。

……と完全に野球の話しかしていないですが、そんなセイバーメトリクスの指標(簡単め)なものをkintoneで計算できるようなアプリをつくって行きたいと思います!
(そして球団に使われたい!(・ω・))
#計算する指標
まだkintoneの話がでてこないの?と思ったあなた。安心してください。
この章の後に出てきます。
今回は、打者の指標に絞って計算していきたいと思います。以下3つの指標をkintoneアプリで計算したいと思います。
##IsoP(Isolated power)
純粋に打った安打の中の長打の比率の指標。つまり、これが高いほどパワーヒッターということです。

IsoP計算式

長打率-打率
※長打率 = 塁打数÷打数
##OPS(On-base plus slugging)
これはコアな野球ファンであれば目にしたことはある指標かと思います。
出塁率と長打率を足し合わせた指標で、この指標をみることで打者の得点への期待値が分かります。

OPS計算式

OPS=出塁率+長打率
※出塁率=(安打+四球+死球)÷(打数+四球+死球+犠飛)
※長打率 = 塁打数÷打数
##IsoD(Isolated Discipline)
安打以外の四死球での出塁率です。選球眼の良さが分かります。

IsoD計算式

IsoD=出塁率-打率
※出塁率=(安打+四球+死球)÷(打数+四球+死球+犠飛)
※打率=安打÷打数
#kintoneアプリの作成
はい。やっと出てきました我らがkintone。
実際に、上に挙げた指標を計算するアプリを作っていきたいと思います。アプリのフィールドは以下を用意します。

capture1.JPG

フィールド名 フィールドタイプ フィールドコード 備考
打数 数値 at_bats
安打数 数値 hit_num
単打 数値 hit_single
二塁打 数値 hit_2B
三塁打 数値 hit_3B
本塁打 数値 hit_homuran
四球 数値 walk_num
死球 数値 dead_ball
犠飛 数値 sacrifice_fly
打率 計算 batting_average 計算式:hit_num / at_bats
長打率 計算 SLD 計算式:TB / at_bats
出塁率 計算 OBP 計算式:(hit_num + walk_num + dead_ball) / (at_bats + walk_num + dead_ball + sacrifice_fly)
塁打数 計算 TB 計算式:hit_single + 2hit_2B + 3hit_3B + 4* hit_homuran
IsoP 計算 IsoP 計算式:SLD - batting_average
OPS 計算 OPS 計算式:OBP + SLD
IsoD 計算 IsoD 計算式:OBP - batting_average
#実際のデータを入れてみる
本当は巨人ファンですが、今期トリプルスリーを達成した東京ヤクルトスワローズ山田 哲人選手のデータを入れてみたいと思います。

打者成績にそれぞれ数値を入れ保存ボタンを押すと…
capture2.JPG

見事に、各指標が計算できました!さすがに、各指標ともトップレベルです。
capture3.JPG

ついでに家にスコアブックがあったので、2015年の草野球の自分の成績もいれてみました。
キャプチャ.JPG
打席数が少ないもののまずまずです。
kintoneと同じでfast(早打ち)なので、四死球が一つもないということが分りました。

#最後に
ここまで読んでくれた方は薄々気づいているかもしれませんが、今回まったくカスタマイズしないでアプリをつくれてしまいました。
(最初は、計算が少々複雑なのでJavaScriptいるかなーと思ってたのですが、計算フィールドだけでいけてしまいました。)
次回は、もうちょっと複雑ななにかを計算してみたいと思います。
今回作ったテンプレートは下記に公開しますので、草野球等でご活用いただければと思います。

#アプリテンプレート

#参考URL

6
5
0

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
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?