ご無沙汰しております、LDLです。
前回投稿した記事から実に約4か月ぶりの更新になります。開設当初は結構な頻度(当社比)で更新していましたが、やはり飽きっぽい性格が災いして三日坊主状態に。にもかかわらず、履歴を見るといまだに毎日何人かは訪れていただいているようで、恐悦至極です。
さて今回は、書く書く詐欺をしていた「打者にフォーカスしたコンテンツ」についてご紹介します。能書きはいいからコンテンツの中身だけ読ませろ、という方は下の目次から4章までスキップしちゃってください。
- 0.はじめに
- 1.既存の公式サービスでは得にくい情報
- 2.そもそも打撃の内容ってなんだ?
- 3.打撃内容を可視化するコンテンツ
- 4.具体的なコンテンツの内容
- 5.アップデート予定と今後の課題
- 5.今後に向けて
0.はじめに
これまではTwitter上で主に先発投手のデイリーデータをご紹介してきましたが、打者に関するデータはあまりご紹介できておらず、履歴を見ても似たような画像が並んでいてマンネリ感がハンパなかったので「何か作ってみよう」とずっと考えてはいました。
過去に何度かやったように投球データを裏返して打撃データにしてしまえば簡単なのですが、打者のデイリーデータとなると、たった4打席程度の少ない球数で空振り率がどうとか打球方向がどうという評価になってしまい、サンプル=球数の多い先発投手と比べるとあまり意味がなくなってしまうんですよね。私がリリーバーのデイリーデータを滅多に投稿しないのもそのためです。10球投げてうち3球で空振りを奪ったとして、「空振り率30%!すごい!」なんて言えないじゃないですか。打者でも1週間分とかまとめてしまえばサンプルが増えるのでまだよいのですが、ビジュアル的に変わり映えしないのは同じです。
先発投手の投球データのまとめはスポナビさん等の正規サービスが提供されていないので一定の存在意義がありますが、打者だと同じようにまとめたところでサンプルが少なすぎて、意義が薄れてしまいます。各打席の経過であれば、スポナビさんの方がはるかにキレイかつ詳細にまとめてくださってますので、そちらをご覧になった方が有益です。単に要約するだけでは、コンテンツとはいえないと思ってます。
だから、せっかく打者のコンテンツを作るなら、ただのまとめではなく過去の記事でご紹介した「奪三振力」「リード力」のように、是非はともかくとして独自性はなるべく出していきたいと思っています。こちら、後述する通り非常に難しいテーマで、まだまだ詰め切れていないところが多すぎて生煮え状態なのですが、うだうだ悩んでいるうちに一冬越えてしまったので、β版みたいな形で公開し、シーズンを通してブラッシュアップしていきたいと考えております。実はプロトタイプは昨年の初夏頃にはできていましたが、あーでもないこーでもないと頭を抱えて試行錯誤しているうちにここまできてしまいました…。
さて、そろそろ本題に移りましょう。
1.既存の公式サービスでは得にくい情報
最初にことわっておくと、スポナビさんの一球速報といった既存の有名サービスで得られない情報はほぼないと思います。誰と誰が対戦し、何球目に何の球種をどこに投げて、どういうアクションをしたのかはもちろん、最近じゃ「打者悔しがる」「投手ガッツポーズ」なんていう「それほんとにいる!?」とツッコんでしまうデータまで網羅されてます。あんなものを無料でいくらでも閲覧できるのだから、感謝しかありませんね。
MLBなんかはさらに細かいデータまで提供していて、まさに振り込めない詐欺状態です。試合映像を有料サービスを使って事細かに追わずとも、掲載されているデータを読み解いていけばだいたい何が起きたかはわかるようになっています。
しかし、残念ながら多忙な現代人にそんな時間はなかなかとれません。この野球大好き人間の私とて、最近は在宅勤務が多いのになぜか仕事が忙しく、リアルタイムで観戦できる機会が激減してしまいました。私は「データはリアルの射影・サマリにすぎない」というスタンスで、試合を観ずにデータだけ出力してさもすべてわかったかのような口ぶりで語ることに抵抗のある性分ゆえ、他の試合のことをあまりつぶやかなかったり、デイリーデータのツイートも疎かになりがちです。最近はData Labとは名ばかりのただのお気持ち表明アカウントに成り下がりつつありますね。平日は試合が終わってから帰宅し、勝敗と成績一覧をチェックして、パリーグTVのハイライトを見る程度が関の山。
「お、今日は勝ってる!」
「○○、4安打3打点とはやるやんけ!」
「ただ勝ったはいいけど、△△は今日も4-0で3三振かー。そろそろ厳しいな」
「さて、明日の予告先発は…と。この顔合わせなら、勝ったなガハハ」
…といった具合です。誰が何打数何安打で、誰が活躍して、先発投手は何回何失点で…くらいの粒度で見て終わってしまう方も多いのではないでしょうか。
ただ、実際に試合を観た場合と、成績一覧をざっと見た場合の印象って結構違うと思うんですよね。例えばこんなケース。
こちらは4/10(日)の、記念すべき連敗ストップを達成した日における、ホークスの2回の攻撃をスポナビさんから抜粋したものです。(https://baseball.yahoo.co.jp/npb/game/2021005507/stats)
この二人、文字だけで見るとただの内野ゴロですが、その内容は大きく異なります。
参照元;
https://baseball.yahoo.co.jp/npb/game/2021005507/score?index=0210100
https://baseball.yahoo.co.jp/npb/game/2021005507/score?index=0210200
先頭打者の中村晃さんには、実に9球も粘られて、嫌な印象を持った方も多かったのではないでしょうか。一方、その後の松田さんはわずか2球で凡退しており、あまり印象に残らなかったと思います(その後に良い当たりもありましたけどね)。このような情報は、細かく読み解いていかないとなかなか掴めないんですよね。この日の成績だけを見れば、中村晃さんは3打数無安打1四球2三振と特筆すべきものはありませんでしたが、やはりそこに現れない存在感はあったように思います。
私が主にツイートしている先発投手のデイリーデータは、「投球の内容を簡潔に伝えること」を目的の一つにしています。どんな配球になったとか、どこらへんに投げたのかといった内容の良し悪しは既存サービスの成績一覧ではわかりませんし、それを追うには配信サービスのアーカイブで試合をイチから追うか、一球速報を何ページも見て整理しないといけませんから、そこを見通しよくまとめ、補完してお伝えできればと考えて作っています。
では、同様に打者の打撃内容を簡潔に伝えるには、どうすればいいのか。それを考えていきます。
2.そもそも打撃の内容ってなんだ?
まずこちらの成績をご覧ください。上記の例と同じ4/10(日)における、ライオンズ選手の打撃成績一覧です。
(https://baseball.yahoo.co.jp/npb/game/2021005507/stats)
ここをご覧になってる皆さんの中では記憶に新しいと思います。オグレディ選手の先制となる来日初HRや牧野選手の51イニングぶりのタイムリーはシビれましたね。
さて、前章でも例示したように、これを見て、「誰が打ったか、打てなかったか」は一目でわかると思いますが、「誰の打撃が良かったか、良くなかったか」はわかるでしょうか?お時間のある方は、今一度思い返した後に読み進めていただければと思います。
プロ野球を観戦する際、私も含め世のめんどくさい野球オタク達は、単に打った抑えただけでなく、自分なりの尺度で内容の良し悪しを評価していると思います。わかりやすいところだと、例えばこんな感じ。
【プラス評価】
・ストライクからボールになる変化球を見送る
・きわどいボールを見送る
・追い込まれてからきわどいボールをカットする
・粘って球数を放らせる
・強い打球を打つ
【マイナス評価】
・甘いボールを見逃したり打ち損じる
・ストライクからボールになる変化球を空振り
・ボール球を空振り
・初球ポップフライ等、少ない球数であっさり凡退
・若いカウントで厳しい球に手を出して凡退
さらに細分化もできますが、やればやるほど意見の個人差もでてくるでしょうから、とりあえず普遍的と思われるこのへんで止めておきます。
観戦しているコアなファンは、1試合を通してこういった評価を累積していき、「あの選手は結果はイマイチだけど内容は良かった」「ヒットこそ出たけど内容はまだまだかな」といった評価を下していると思います。例えば同じ右打者の併殺でも、バッテリーの罠にかかって外の変化球をひっかけての6-4-3と、右打ちで芯でとらえたもののセカンドの正面を突く4-6-3ではまるで印象が異なるはずです。そういった「内容の良し悪し」は、たとえ天下のスポナビさんであっても地道に打席ごとのページを探っていかないと見えてきません。
今回は、コンピュータの力を借りて、そのあたりを自動で簡潔に可視化すること目指します。
3.打撃内容を可視化するコンテンツ
野手の打撃内容の良否をまとめて可視化する、という目的を達成するには、やはり数値を用いるのが一番です。前章でご紹介したようなプラス評価になることをすれば、その内容に応じて加点し、逆は減点する。発想自体は非常にシンプルです。例えばこんな感じ。
【例】
・空振り;-1
・ボール球の見送り;+1
ただ、空振りにしろ見送りにしろ、甘いゾーンかかきわどいか、クソボールかで話はまるで違います。すっぽ抜けたクソボールの見送りに加点するのは違和感がありますし、それを空振りしてたら話になりませんよね。だから、ゾーンを区分けして、重み付けしてやります。
【例】
・クソボールの空振り;-2
・クソボールの見送り;0
さらに、カウントによって打撃のアプローチも変わりますから、カウントも考慮します。例えば同じど真ん中のファウルでも、バッティングカウントで打ち損じるのと、あらゆるボールを待たないといけない2ストライクでのファウルでは意味合いが異なります。きわどいボールのファウルも、追い込まれてるかどうかで印象はまるで違いますよね。そのあたりも場合分けします。
【例】
・追い込まれていない かつ きわどいゾーンのファウル;0
・追い込まれている かつ きわどいゾーンのファウル ;+1
・追い込まれている かつ きわどいゾーンのボール ;+2
続いて、ランナーの状況も考えます。例えばセカンドゴロは、ランナーがいなければただの凡退ですが、一塁や二塁にランナーがいれば進塁打になることもありますね。そういったケースでは、例え左に打ちやすい球であっても、強引に右に打ち返すこともあります。それを凡退と一括りにして同じスコアとするのはイマイチですよね。そのあたりも考慮します。
【例】
・ランナーなしでセカンドゴロ;-1
・ランナー二塁でセカンドゴロ; 0
さらに、アウトカウントも重要です。無死/一死二塁でのセカンドゴロやライトフライには進塁打という価値がありますが、二死でそれを打ってもチェンジになるだけです。そこも踏まえて細分化します。
【例】
・二死 かつ ランナーなしでセカンドゴロ/ライトフライ;-1
・無死 かつ ランナー二塁でセカンドゴロ/ライトフライ; 0
このように、同じアクションや結果であっても、各カウントや投げ込まれるゾーン、ランナーの状況によって都度それが持つ意味合いや価値が変わります。それは、既存コンテンツの成績一覧はもちろん、一球速報であってもぱっと見ではわかりません。それを、私が独自にまとめているデータベースのデータを元に、各打者の打撃内容に応じて全て自動でスコア化してみよう、というのが今回のコンテンツになります。
4.具体的なコンテンツの内容
前置きが長くなりましたが、そろそろ具体的なコンテンツの中身をご紹介します。文字を読むのも疲れてきた頃かと思いますし、絵で見ていただいた方がわかりやすいので、下記の絵をご覧ください。これは、4/10の試合における、鈴木将平選手の第二打席のサマリになります。
「初」が初球で、そこから線でつなげられた順に投球が推移し、最後の大きめのマーカーが結果になります。投球順序はマーカーに番号が振られているのが一般的ですが、この方が直感的にわかりやすいかなと思ってやってみました。マーカーの色・形の見方はこれまで通りですが、ご存じない方はこの後に掲載してますのでそちらをご参照ください。
①は、アウトカウントとランナーの状況です。見ての通りです。
②は、後述するプロセススコアの合計値とリザルトスコアになります。
③はリザルト(打席の結果)と、そのスコアを併記したものです。リザルトについては特に補足はいらないと思いますので、キモになるスコアのご説明をします。
こちらは、無死ランナーなしの状況をベーススコアとして、下記の通り設定しています。
ここを基本点として、前述の通りアウトカウントやランナーの状況に応じてスコアが変動します。例えば、無死二塁でセカンドゴロの場合は、進塁打ということで-1ではなく0となります。また、三振や四球についてはプロセスの延長なので、後述します。
ちなみに、このスコアはどうやって決めたのかというと、「えいやー」です。最低限の根拠としてあるのは、打率.250でだいたい±0になる、くらいです。このあたりは正直突き詰めていくと永久に正解はないと思うので、今季データを取りながら適宜調整していくつもりです。最初からパーフェクトは求めない、リーンスタートアップというやつですかね。
なお、打点が直接絡むランナーの有無は打者に制御できないため、「打撃内容のスコア化」というコンセプト上、安打のスコアは全て同じにしています。「塁上の状況に応じた凡退」はありえますし加味すべきですが、「ランナーがいるから普段以上に打てる」ということは基本的にないと考えているためです。得点圏で回ってくるかどうかは、打者には制御できませんからね。ただし、安打に対するゾーンの甘い厳しいによる補正はあり、厳しくなるにつれスコアは増えます。
④は、リザルトに至るまでのプロセスを評価するスコアになります。何も付いていない場合は0です。先にいくつか例示しましたが、際どいボール球を見送ったり、追い込まれた後にきわどい球をカットしたりして球数を投げさせたりすると加点されます。すっぽ抜けたり叩きつけたクソボールを見送っても加点にはなりません。逆に、クソボールを空振りしたり、甘いボールを見送ったりすると減点になります。このあたり、もちろん、甘いコースであっても狙い球ではない場合など、一概に減点すべきでないケースもあるのは承知してますが、そこは一般論として割り切ってます。
ゾーンのイメージと、各プロセスのスコアは下記の通り設定しています。
上記の例では
・2球目の際どいボール球を見送り⇒+1
・追い込まれてからの際どいボールのスライダーを見送り⇒+2
・5球目の普通のゾーンのスライダーでセカンドゴロ⇒-1
となり、プロセスは1+2=3、リザルトは-1という採点結果になります。もしこのケースで、凡退した球がど真ん中だったり、3球以内の早打ちの凡退だとさらに-1、-2といった具合に減点になります。逆に、もし一死であれば進塁打だったり得点できたりするのでリザルトは0になります。また、球数を稼げれば、結果的に凡退したとしてもプロセススコアが加算されていきます。
概要としては以上です。他にも膨大なケースの場合分けをしていますが、アルゴリズムを書き出すとキリがないですし、前述の通り「えいやー」で決めているスコアなので、「ふーん」くらいに思って見ていただければと思います。要点は以下のような感じです。
打者コンテンツ概要
・1試合における各選手の打撃内容を打者ごとにまとめて出力
・打者、打席ごとにプロセスとリザルトのスコアをそれぞれ算出
・プロセスは、きわどい球を見送ったりカットすると加点、甘いところやクソボールを空振りすると減点
・リザルトは、安打や犠打/犠飛で加点し、凡退で減点
・ベーススコアをもとに、ランナーやアウトカウントに応じて補正してスコアを算出
例として、4/10vsホークスにおける鈴木将平選手の打撃内容を出力したものは下記の画像になります。
今季はこれを試合の都度出力して定量的な打撃内容の評価をしつつ、実際に試合を観た印象、すなわち定性的な評価と比較しすり合わせて、「えいやー」で決めてしまっているパラメータを定期的に調整していきたいと思ってます。
Twitterのアカウントでも投手データと併せてご紹介していきたいと思ってますので、ぜひご覧ください。プロ野球って推し活みたいなところもありますので、贔屓の選手だけ追っていただくのも良いかもしれません。
参考までに、4/10の試合の全員分のデータを掲出しますので、冒頭で振り返った試合のイメージと照らし合わせてみると面白いかもしれません。なお、各画像のタイトルのProcはプロセスで、Rsltはリザルトになります。
また、対戦カード1巡時点での西武の野手の各スコアは下記の通りです。
これを見た限りでは、今季まだ思うような結果を出せていない栗山さんや外崎さんのリザルトスコアは当然マイナスになってしまっているものの、プロセススコアは主要メンバーの中でも高い方で、1・2番にほぼ固定されている鈴木さんやオグレディさんよりも良い数値なので、これから調子を上げていくかもしれませんね。期待しましょう。
一方でプロセス・リザルトともに振るわないのがおかわりさんと愛斗さんで、少々心配です。個人的にはこんなデータ検証よりも彼らの活躍の方がはるかに重要なので、この数値を覆す巻き返しを期待したいですね。
5.アップデート予定と今後の課題
ここまで作るのもだいぶ大変だったのですが、真に意義のあるコンテンツにしていくには、まだまだ課題が山積しております。アップデート予定と併せてお伝えします。
アップデート予定
結果の明示
その日の打撃結果のサマリ(○○打数○○安打○○盗塁○○打点)を併記する予定です。むしろなぜ入ってないんだって話ですが…。
採点項目の明示
今回ご提示したインターフェースだけだと、何をもって加点減点されたのかわかりづらいところもあるので、「きわどいボールの見逃し×2=+2」のようなサマリを追加する予定です。
その他微修正
一部文字が隠れてしまったりしているので、その辺の細かい部分も修正していきます。また、ボールが青で空振りが緑というこのカラーパターンも正直どうなんだろうと思っているところはあるので、そのうちご意見伺うことになろうかと思います。
上記以外でも「緩い球の後の速球に対応した」とか「散々内角を突かれた後に外角の変化球に対応した」といった加点要素も考えてはおります。私の技術力で対応できれば、ですが…。
今後の課題
重み付けの妥当性
今回は「えいやー」でスコアを設定してしまいましたが、これの妥当性は今のところ私も含め誰にもわかりません。例えばベーススコアでは犠打を+2、安打を+4としていますが、安打には犠打の2倍の価値があるかと言われると、正しいとも言えないし間違ってるとも言えません。
これに近い発想として、先発投手の投球をスコア化するGame Score ver.2という指標があり、そこでアウト数×2と奪三振数が同列に扱われていますが、奪三振数にアウトの2倍の価値があるかどうかは、同じく誰にもわかりません。そのあたりは、前述の通りシーズンを通して微調整したいと思っています。
ケースの細分化
野球は非常に奥の深いスポーツであり、本来ならこの程度の粒度で評価など到底できません(だからこそ面白いのですが)。今回はゾーンの座標で「打ちづらさ」の重み付けをしましたが、同じ「きわどいボール」でも、ボール球のストレートとストライクからボールになる変化球、クソボールから入ってくる変化球では見極めの難易度が違いますし、落ち球と横の変化も同列には語るべきではないかもしれません。例えば千賀さんのお化けフォークなんかは、例えプロットの位置がクソボールだとしても振ってしまいますもんね。そこを明後日の方向にすっぽ抜けたストレートと同列にして「振るのは論外」とガッツリマイナスするのも違うかなとは思っております。
また、エンドラン等の作戦や、打球の強弱もまだ反映できていません。このあたりは取得できるソースの粒度にも依存するので簡単ではないのですが、ゆくゆくは採り入れていきたいと思います。
プロセスとリザルトの境界線
ここが最も悩ましいポイントで、プロセスとリザルトを合算すべきかどうかが正直わかりません。例えば初球打ちの内野フライという場合、結果が悪いのは言うまでもないのですが、今回のやり方だとプロセスは0になってしまうわけです。
今季のカード1巡のデータはすでに算出していて、プロセスは基本的にトータルでマイナスになることはないことを確認できているので相対的にはそれでよいのかもしれませんが、そこの在り方も運用しながら追究していきたいと思ってます。
今のところ、「リザルトが悪くてもプロセスが良い選手はそのうちリザルトも良化する」という仮説を検証しているところですが、もしそれが実態と合わなければ、またスコアの在り方も変わってくるかもしれません。
5.今後に向けて
以上です。長文にお付き合いいただき、ありがとうございました。
今回のコンテンツは、野球を深く知っている方であればあるほど「自動採点なんてとんでもない!」と怒られそうな内容かなと覚悟はしています。それは百も承知です。
設定するスコアの大小なんてモロにその人の野球観に引っ張られてしまいますから、一概に決められるものではないでしょう。でもだからこそ、大手のサービスもなかなか手を出せないブルーオーシャンだと思っていて、自分みたいに趣味でやっている、お叱りを受けてもたかが知れてる一般ピーポーがやれそうな分野だと考えています。
今後も普遍的かつ信頼できるデータの提供はデルタさんなどの大手にお任せして、私は独自性を第一に掲げ玉石混交覚悟で独自路線を突き進んでいきたいと思いますので、お付き合いいただけますと幸いです。
普段なかなか観る機会のないファームや他球団のゲームのデータもパッと出力できるので、需要があればそのへんもおいおい公開していこうかなと思います。このデータを活用して、通算成績だけではわからない有望な選手を見つけたら目をつけて、応援し、「ワシが育てた」していただければプロ野球ファンライフがより豊かなものになるかもしれません。お楽しみに。
それではまた。