MLB(メジャーリーグ)の公開データを使って最高の球を調べてみた

## 最高の球とは？
投手の投げる球には多種多様な目的がある。カウントを取りに行く球、見逃しを取る球、見せ球、ゴロやフライを打たせる球等々、色々とあるが、今回は最も華がある **最も空振りが取れる球** と定義した。
予想としては、大谷翔平選手がMLB打者をきりきり舞いにしている、速いフォークボールあたりがランクインするのかなと思いました。

※なお、筆者は高校までピッチャーをやった経験上、長距離砲に思いっきり振られるのはやはり怖いため、<INS>コーナースレスレで見逃しを奪うストレートが一番好きなのは断っておきます。</INS>


## 使用するデータ
BigQueryの公開データセットで[2016年のMLBのデータ「baseball.games_wide」](https://cloud.google.com/bigquery/public-data)を用いた。「games_post_wide」はポストシーズンのデータに思われる。

![スクリーンショット 2022-09-25 18.24.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233689/7ac7a988-a149-a5aa-57c8-8fc09994daac.png)


## 抽出条件
1. シーズン内に該当球種を200球以上投げていること
1. 当然ながらMLBの結果であり、マイナーの投球は含まない
1. 投手のチーム名はそのシーズンで最後に所属していたチームとする


## クエリ
```sql
WITH mst_pitch_log AS (
    SELECT
        CONCAT(pitcherLastName, ' ', pitcherFirstName) AS pitcher_name
        , pitchTypeDescription --球種
        , pitchSpeed --球速
        , outcomeDescription --投球結果
    FROM `bigquery-public-data.baseball.games_wide`
)
, mst_pitch_ball AS (
    SELECT
        pitcher_name
        , pitchTypeDescription
        , COUNT(*) AS num_pitches
        , MAX(pitchSpeed) AS max_pitch_speed
        , AVG(pitchSpeed) AS avg_pitch_speed
    FROM mst_pitch_log
    GROUP BY 1, 2
)
, mst_num_strike_swing AS (
    SELECT
        pitcher_name
        , pitchTypeDescription
        , COUNT(*) AS num_strike_swing
    FROM mst_pitch_log
    WHERE outcomeDescription = 'Strike Swinging'
    GROUP BY 1, 2
)
, mst_pitcher AS (
    SELECT DISTINCT
        pitcher_name
        , LAST_VALUE(team_name) OVER (
            PARTITION BY pitcher_name
            ORDER BY game_date
            ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
        ) AS last_team_name
    FROM (
        SELECT DISTINCT
            DATE(startTime) AS game_date
            , CONCAT(pitcherLastName, ' ', pitcherFirstName) AS pitcher_name
            , CASE 
                WHEN pitcherId = homeFielder1 THEN homeTeamName
                WHEN pitcherId = awayFielder1 THEN awayTeamName
                END AS team_name
        FROM `bigquery-public-data.baseball.games_wide` 
    )
    WHERE team_name IS NOT NULL
)
SELECT
    RANK() OVER (
        ORDER BY b.num_strike_swing / a.num_pitches DESC
    ) AS rank
    , c.last_team_name AS team_name
    , a.pitcher_name
    , a.pitchTypeDescription --球種
    , a.max_pitch_speed --MAXスピード
    , a.avg_pitch_speed --平均球速
    , a.num_pitches --球数
    , b.num_strike_swing --空振り数
    , b.num_strike_swing / a.num_pitches AS strike_swing_ratio --空振り率
FROM mst_pitch_ball AS a
LEFT JOIN mst_num_strike_swing AS b
    ON a.pitcher_name = b.pitcher_name
    AND a.pitchTypeDescription = b.pitchTypeDescription
LEFT JOIN mst_pitcher AS c
    ON a.pitcher_name = c.pitcher_name
WHERE a.num_pitches >= 200
AND a.pitcher_name IS NOT NULL
ORDER BY 1
```


## 結果

1位にはアストロズのリリーフ Kenneth Giles（現サンフランシスコ・ジャイアンツ）、マリナーズのクローザーDiaz Edwin（現ニューヨーク・メッツ）のスライダーが同率で並んだ。
予想に反して、スライダーやチェンジアップが上位にランクインした。やはりMLBにはフォークを投げる投手が少ない＝フォークを決め球とする日本人投手が活躍できる環境ということが分かった。
ちなみに最上位のフォークにはレッドソックスの田澤純一投手（今月社会人野球ENEOSに復帰したらしい）が21位でランクインしていた。

![スクリーンショット 2022-09-25 18.33.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233689/4f6c59b2-4257-ce9b-4da6-288fc3a5f89c.png)


## おまけ
この流れで最高のストレート（Fastball）も算出してみた。
ストレートになるとトップでも空振り率が17.7%で、全体ランクも155位となり、空振りの取りづらい球種であることが分かった。

![スクリーンショット 2022-09-25 18.46.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233689/e1c5549e-5af0-251d-2934-a3eb1943b224.png)


また、全体で球種別に平均空振り率を出してみると、
フォークボール、スプリットと日本人投手が得意な落ちる球が空振りを取れる球ということが改めて分かる。
![スクリーンショット 2022-09-25 18.51.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233689/a5709db9-0175-34f1-12b8-266a7e1edd5e.png)


## 追記
上位に来ているピッチャーのスライダーをYouTubeで漁ったが、ほぼ縦スラという感じで、空振り狙いの球でした。
※メジャーリーガーは基本的に手が長いので、横スラには強いらしい。