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

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

**＊なにそれ美味しいの？ってかたは、まず映画[マネーボール](http://movies.yahoo.co.jp/movie/%E3%83%9E%E3%83%8D%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%AB/340151/)らへんをみてからここに戻ってきてください。**
#セイバーメトリクス
とはいえ、今回作ったkintoneアプリを紹介する前に「セイバーメトリクス」についてざっくり紹介したいと思います。
セイバーメトリクスとは、野球には打率や出塁率や長打率などといった様々な指標があります。
こういった指標を用いて分析することで、野球における采配に統計学的根拠を与えられる手法のことです。
例えば統計学をもちいるとこんなことが言えます。
「１点差の９回裏ノーアウト１塁でバントをすべきか？」
普通に考えれば、ここは送って得点圏にランナーを進めたいところですよね。しかし統計学的に見ると、**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](https://qiita-image-store.s3.amazonaws.com/0/83679/d84dce12-b298-23b3-6c1d-6e4ca6a0894b.jpeg)


| フィールド名|フィールドタイプ|フィールドコード| 備考 |
|:-----------:|:--------------:|:-------------:|:------------|
| 打数      |数値 |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 + 2*hit_2B + 3*hit_3B + 4* hit_homuran|
| IsoP    |計算|IsoP|計算式：SLD - batting_average|
| OPS    |計算|OPS|計算式：OBP + SLD|
| IsoD    |計算|IsoD|計算式：OBP - batting_average|
#実際のデータを入れてみる
本当は巨人ファンですが、今期トリプルスリーを達成した東京ヤクルトスワローズ山田 哲人選手のデータを入れてみたいと思います。

打者成績にそれぞれ数値を入れ保存ボタンを押すと…
![capture2.JPG](https://qiita-image-store.s3.amazonaws.com/0/83679/d7ba7a87-61c4-56e6-2ee7-e340ec40a1b4.jpeg)


見事に、各指標が計算できました！さすがに、各指標ともトップレベルです。
![capture3.JPG](https://qiita-image-store.s3.amazonaws.com/0/83679/af36c0b4-e7a0-f7bc-e293-b83d08c5a3e6.jpeg)

ついでに家にスコアブックがあったので、2015年の草野球の自分の成績もいれてみました。
![キャプチャ.JPG](https://qiita-image-store.s3.amazonaws.com/0/83679/987152ad-8b6c-78d0-33d6-d2e192a7b2b7.jpeg)
打席数が少ないもののまずまずです。
kintoneと同じでfast(早打ち)なので、四死球が一つもないということが分りました。


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

#アプリテンプレート
- [セイバーメトリクスアプリテンプレート](https://www.dropbox.com/s/0a3qzoplskgqgue/%E3%82%BB%E3%82%A4%E3%83%90%E3%83%BC%E3%83%A1%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88.zip?dl=1)


#参考URL
- [セイバーメトリクス(wikipedia)](https://ja.wikipedia.org/wiki/%E3%82%BB%E3%82%A4%E3%83%90%E3%83%BC%E3%83%A1%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9)
- [データで楽しむ野球講座](http://www.softbankhawks.co.jp/farm/metrics/)
- [東京ヤクルトスワローズ (1軍打撃成績)](https://www.yakult-swallows.co.jp/players/stats/batter)