読者です 読者をやめる 読者になる 読者になる

Lean Baseball

Pythonで野球の人です.日ハムとアスレチックス,UK Rockが大好物.

3回目のPyCon参加と3年目のコミュニティ参加と4回目の野球Python〜 #PyConJP 2016レポート

PyCon JP Python Baseball

こんばんは、野球Pythonの人こと@shinyorke(なかがわ)です.

盛会なまま、無事(いや、一部色々あったけれども)終了しましたね、PyCon JP 2016カンファレンスDay.

自分はSprintに参加する予定が無い(理由は後述)ので、一足先にPyCon JPをDone.しました.

トークセッションやポスターを聴いたりご覧になったりしてくださった皆さま、スタッフの皆さま、親愛なるPythonistaな皆さま、本当にお疲れ様でした&ありがとうございました!

今年のレポートは、33+4歳に掛けて、

  1. 3回目のPyCon参加で自分にもたらされた変化
  2. コミュニティ参加3年目を振りかえる
  3. (PyCon JPでの)4回目の野球トーク「ビックデータとPythonを用いた野球の統計分析」

この3つのテーマで自分語りをしたいと思います.

最初二つ(3回目のPyConと3年目のコミュニティJoin)はポエム、4回目の野球トークは純粋なレポートです.

1. 3回目のPyCon参加で自分にもたらされた変化

PyCon JP 2016は自分にとって、3回目のPyCon JP参加かつ、3回目の登壇になりました.*1

場所が変わり(プラザ平成→早稲田大学西早稲田キャンパス)、人数が増え、発表トラックも増えetc...沢山の変化がありましたが、今年は自分の中で大きな変化が二つほどありました.

変化①「他の参加者・スピーカーの手助けと背中押し」

トークのプロポーザルがはじまった4?5月あたりから、

  • 過去のPyConやPythonコミュニティで得た経験や知見を、コミュニティや会社、社会に還元したい
  • 「トーク、自分も応募していいのかな?」「参加するかどうか迷う」という方に対して、「いやいやそんなこと無いよ」「自信持って!」と背中を押すには?

という思いが強くなり、「助ける」「背中を押す」「押し付けにならないように、必要な知見・知識を継承する」という観点で意識を強く持つようになりました.

具体的には、トークセッションのレビューに参加してコメントやブログを通じて還元をしたり、ちょっとしたプログラミングやPythonをはじめるための勉強のお手伝いをしたり.

「自分が学び続ける」のと並行して、「アウトプットを出したり教えたりしたりを通じて他の人の学びを早め、自分も学ぶ」という方向に振り切るようになりました.

特にトークレビューの件はホントここを頑張りました.

shinyorke.hatenablog.com

自分がプロポーザルを書く側に回ってコメント頂いたり、フィードバックから学びを得た事を思い出しながら、自分が素直に思ったことを返すことによって物事が先に進んだり、自分のトークが準候補に落ちる程度にプロポーザル・発表のレベルが上ったりなど.

手助けや背中押しを通して違った目線でPyConにJOIN出来たのが自分にとって大きな変化だったと思っています.

変化②「余裕」

三回目の参加、(LT含めて)四回目のトーク.

流石に空気感や雰囲気も読めてくるし、会場は変わったといえ、個人的にはXP祭りで2013年から来ている早稲田大学西早稲田キャンパスだったので、気持ち的には余裕がありすごい楽でした.

トーク前緊張してお腹が痛くなるのは変わりませんでしたが(笑)、余裕のお陰で人には優しくできたんじゃないか?と思っています.

変化③「いろいろな人に声を掛けられる」

「去年の発表見ました!」 「野球の話が面白くてPyConに参加しました!!」

とかとか、大変ありがたくも野球キッカケで来た方が増えたりして、声がかかる機会が去年・一昨年と比べ多くなりました.

この辺も余裕につながっていたかも、と思うと同時にもっとちゃんとしないとな!と背筋が伸びる思いも出ました.

2. コミュニティ参加3年目を振りかえる

自分がPythonのコミュニティにJOINしたのがだいたい3年前で...という振り返りは「Python入門者の集い #2」というイベントで話をさせてもらいました.

www.slideshare.net

喋ろうかな?と思った理由・モチベーションはおおよそ最初に書いた理由(手助けと背中押しとかとか)なのですが、流石にもう3年以上いるし「初心者です!」「野球です!」だけじゃあかんやろ...という思いもあり、そろそろ新しい事をはじめよう!という気持ちになってきたのは良い変化なのかな?と思っています.*2

また、念願の「Python mini hack-a-thon 夏山合宿」に参加できたのも3年目の大きなイベントでした.*3

3. 4回目の野球トーク「ビックデータとPythonを用いた野球の統計分析」

と、まあここまできてようやっとレポートです笑

前回のエントリーにも書きました&ここでもちょこっと触れたとおり、「準候補」それも一番最後の準候補だったのにも関わらず、突然のトーク登壇決定となり、(トーク落選前提で応募していた)ポスターセッションと中30分の連投で登壇させていただきました!

資料、ビデオ、盛り上がりなどはこの辺をご覧頂ければと思います.

youtu.be

www.slideshare.net

@amacbeeのLTはこちら 日本人投手の2016年振り返り // Speaker Deck

togetter.com

2014年のトークとLT、2015年のトークから数えて4作目となる今作は、一球速報をテーマに遊ぶ!というネタでやらせてもらいました.

どれぐらい盛り上がったか?そして発表はせいこうしたのか!?について上記YouTubeなりトゥギャッターを見て頂ければと思いますが、個人的な感想としては、

334%の成功

でした!発表は当初プラン通り、盛り上がりは想定以上と良い結果でした.

...って書いてしまうとあんまりおもしろくないので、「何故@amacbeeが出てきたのか」「なかじまさん」の件についてちょろっと触れたいと思います.

何故、@amacbeeが出てきたのか

PyDataの人、PyLadies Tokyoの中の人でお馴染み@amacbeeさんですが、野球も大好きらしく、過去に(柳田悠岐のトリプルスリー無いわ!とDisった日ハムファンの野球Pythonの人に対してマサカリを投げる意味で)幾つかのエントリーを残してくれていました.

amacbee.hatenablog.com

amacbee.hatenablog.com

どのネタも野球的にもセイバーメトリクス的にも(&もちろんエンジニアリング・分析的にも)レベルが高く、野球でこのレベルで面白いこと出来る人は日本で4,5人しかいない(適当)の内の一人、ということで、(何かの飲み会で)やりませんか?と打診→二つ返事でOKという感じで決まりました.

なお、発表についての取り決めは、

  • pitchpxのデータセットを使う(MLB限定、データセットは予め取得済みの物を提供)
  • 発表は5分LTという形式をとる
  • 「正装」で発表する

たったこれだけでした.

結果うまく行ったしおもしろ内容だったしホント@amacbeeすげーなー、任せてよかった!と思いました(ホントに感謝)

「なかじまさん」事件

自己紹介で、

野球Pythonの人だけど、「shinyorkeさん」「なかがわさん」という名前も覚えてもらえると嬉しいな

と話した結果、質疑応答終了後のClosingで、ついつい背中の「9番Nakashima」を見てしまったのか、

なかじまさん発表ありがとうございました!

と会場担当が締めちゃういう事案が発生、発表終わってホッとしてた自分もそのまま「ありがとうございました!」と流して二重ボケという、

ユニフォーム正装化が招いた不幸な事件が発生しました(爆笑)

終わった後に会場担当の方から平謝りを受け、自分も「???」マークが沢山浮かんでいましたが、どうやら「正装」の「9番・中島卓也」が目に入っちゃったらしく、思わずなかじまさんと言ってしまったそうです.

まあ、正式には「なかしま」なのでそっちも間違ってるのですが...w

あとで気がついて個人的には大笑い、Well Doneパーティーでもその話題で小さく盛り上がりましたとさメデタシメデタシ.

おわりに

色々あったPyCon JP 2016、個人的には一足先に終わりました.

明日(24)にはスプリントの二日目がありますが、毎年恒例XP祭りと、初参加のABProにお邪魔して何か一発面白いことをしようと思っています!*4

スプリント行く人は楽しんで&野球やりたい人は是非スプリントリーダーになってください!(ってもう遅いかw)

と、いうわけでレポートはここでお開き.

最後にこれだけ言わせてください.

なんでや阪神関係ないやろ!*5

*1:2014,2015の二回、いずれもスピーカー参加.なお2013年のAPACはスプリントDayのみ参加しました(本編はチケット買ってない).

*2:あとは現実的な理由として、現在所属している会社・チームの若手に教えたり、全員に思想とかアプローチを継承して一緒に考える、みたいな事があるのでそういった事情も強く効いてるかもしれません(真顔)

*3:ここでのエモい話とかHackとかマウンテン・パパの美味しいご飯と空気は涙が出るくらい感動モノでした.あとはサプライズ誕生祝いもw

*4:会いたい人たちいるし、たまには違う視点で色々行きたいじゃん?

*5:この件は説明不要と信じたい.前回エントリーもしくは「野球 334」でググれ.

川崎Ruby会議で野球のLTをやってきました&PyCon JPで緊急登板することになりました! #kwsk01 #pyconjp

間に合った...

本日334...もとい、33+4歳になった私です.*1

ちょっと前の話になりますが、川崎のRubyコミュニティー「Kawasaki.rb」主催のイベント、「川崎Ruby会議01」に参加して、「いつもどおり」野球のLTをしてきました.

川崎Ruby会議01(2016/8/20)

スライドと動画

www.slideshare.net

(大変恐ろしいことに)LTの動画が残っていたので晒しておきます.*2

youtu.be

何を話したかったのか

川崎Ruby会議のちょっと前に、イチロー選手がメジャー通算3,000安打を達成、ここで個人的に気になった疑問、

  • 2015年はキャリア最低だった成績がなぜ復調したのか
  • やたらと四球が増えて三振が減少傾向になってる(凄くいい傾向)が、一体何があったのか

を、一球速報データを元に分析できないか?をテーマに実験した結果を話させてもらいました.

本当はキャリアハイの2004年(262安打&首位打者)と比較できたら面白かったのですが間に合わず...

ですが、既存の野球データと一球速報データの違い、重箱の隅をつつくような野球ハックで結構良かったんじゃないか?と思っています.

他の発表とか川崎Ruby会議の雰囲気

主催者メンバーの@chezouさん、@nk_ngzmさん、@Peranikovさん他、沢山の方がレポートを書いてくださっているのでリンクを転載しときます(手抜きじゃないよ)

chezou.hatenablog.com

ngzm.hateblo.jp

norizabuton.hateblo.jp

私の感想ですが、

  • 技術やテーマに対する、入り口の広さと、奥の深さを感じる、内容・雰囲気ともに十分に濃いイベントだった!
  • RubyScala、そしてPythonと言語やFW関係なく取り扱っているだけでなく、初心者・上級者両方楽しめるいい感じのレベル感だった
  • ポケストップにルアーを挿してあったのは助かった

あとは紹興酒を瓶で飲みきったとか、雨にあたって辛かったとか色々ありましたがトータルで凄く良い一日だったと思います!!!

【告知】PyCon JP 2016、トークセッションで「緊急登板」することになりました!(2016/9/22(予))

さて...例年Kawasaki.rbで発表練習して望んでいるPyConJP、今年はトークが「準候補」となりほぼ落選確実...でしたが、

この度急遽登壇することになりました!

pycon.jp

元々決まっていたスピーカーさんが急遽キャンセル、ということで、メジャーリーグ・オールスターの「32人目の男*3っぽく、スクランブル登板の順番が回ってきました.

ネタは川崎Ruby会議01でやったイチローさんに加え、

といったネタを予定しています.

二日目(9/22)13:30、Room202(去年より確実に広い場所)でハナシますので、お時間ある方は是非足を運んで頂けると幸いです!

また、前の時間にはポスターセッションもあるので、個別に野球やPythonの濃い話をしたい方はランチ後にお立ち寄りいただければと思います.

最後になりましたが、(結果的に)PyCon JPの壁打ち機会を下さったKawasaki.rbの皆さま、ありがとうございました!!!*4

pycon.jp

P.S. 誕生日なので恒例のアレ、一応貼っておきます.

www.amazon.co.jp

*1:このブログを読んでる人は意味がわかっていると信じたい(なんでや阪神関係ないやろ!). なお、37歳と言いたくないという意味ではありません.

*2:動画を取ってることに気がついてなくて...なんというか気がちょこっと抜けてるのがバレバレ&いつもにましてgdgdなLTで笑いましたw

*3:ベンチ入り最後の選手を投票で決めるやつです、メジャーでのやつをパクった形で日本でもあったハズ

*4:本当はLT自体ポスターのネタの壁打ちだったのですが、8月最後の日、北海道から帰京した夜に緊急連絡が入り急遽トークに昇格しましたとさメデタシメデタシ

「独習Python入門」は一生付き合える入門本だと334回言いたい

書評 Python 書評 野球

私がリスペクトするエンジニアの一人であり、ITエンジニア界隈の三大野球バカの一人*1であるござ先輩が本を出版されました.

gothedistance.hatenadiary.jp

大変ありがたい事に、献本を頂いたので久々に書評など書いてみようかなと思います.

f:id:shinyorke:20160805220626j:plain

[書評]「独習Python入門」

どんな本なのか

私の感想も含めて.

  • Pythonを元にしたプログラミングの入門本
  • 一人で学ぶ(独習)するときにハマりがちなポイントや、ステップアップするときに必ず覚えたほうがいい事を言葉の緩急を駆使していい感じに解説している!
  • 本を一冊やり切った(写経)した後も自宅の本棚に置いておきたい&必要に応じて再び読みたくなる本

私は読者層に当てはまらないのですが(汗)、初心者の気持ちになって思い出しながら読んで、 「ああ、最初にプログラミングを学ぶ本がこの本みたいなスタンスだと凄くいいな」 と素直に思いました.

こんな方にオススメ

本の冒頭にはこのように書かれていました.

  • これから、プログラミングを始められる方
  • プログラミングについて、どんなものだか興味を持っている方
  • プログラミングに挑戦したけれども挫折してしまった方
  • プログラマーが何を考えているか知りたい方

「一冊読みきって写経して動かしてうぇーい!」っていう入門本であれば、始められる方や興味を持ってる方が対象になりますが、この本のコンセプトの一つである(と思われる)、

途中から再開しても問題ないように工夫しました

という一文を読んで&実際読み通してみて、

「確かに、挫折経験ある人や、思想を知りたい人にも合ってる!」

と思いました.

いい意味でつまみ食いしやすい入門本、というのは結構素晴らしい価値なんじゃないかと思いました.

どこが素晴らしいのか

章立てがシンプル(=つまみ食いしやすい!)

上記に書いたとおり、途中からの再開を意識している構成で大変シンプルで読みやすい構成になってるなと思いました.

具体的には、

  • 11コの章が独立しつつもちゃんと文脈を保持している.「オブジェクトとクラス(7章)だけ読むわー」ってなっても前の章を探しまくる、的な事が少なくなるように出来てる
  • サンプルコードがシンプルかつ短め.クラス丸ごと一個とかそういうコードが少ない(もしかするとそもそも無いかも)おかげで、真似する上でのリスクが少ない.*2
  • 字の大きさ、色合い、イラストの工夫が良いのか1から10まで真面目に読まなくても直感で伝わる.

入門本として安心して読める(オススメできる)出来で素晴らしいです.

環境構築が優しい

この本で使われている環境は、

と実にわかりやすい、失敗するリスクも少ない良いチョイスだと思いました.

特に自分みたいなエンジニアになると、

  • エディタはやっぱvim(Emacs)やろ!(≒IDEって...w)
  • いやいや、やっぱPyCharmがナンバーワンや!!
  • Pythonは仮想化して入れたいンゴ

...となりがちなので、ある意味初心者に教えるときに危険だったりするのですが、方式として枯れているモノを駆使したシンプルな構成はやっぱいいなと思いました.

あと、個人的にはエディタではなくてIDEをベースにしたのはホントいいことだと思っていて、ちゃんとコード補完したり誤りを教えてくれる文明の利器は、初学者に限らず環境が許せばIDEを積極的に使うべき!と思ってるワタシ的には心のなかでガッツポーズをした程度にいい方向性だなと思いました.

ちなみに自分はIDE派でPyCharmを愛用していますが、最近Atomも軽くなったみたいだし再び浮気しようかな...と思いました.

学んだ後の事もフォローしている(≒一生付き合える!)

どんなプログラミング言語でも書いたものを動かす「だけ」ならせいぜい型まで教えればOKだと思うのですが、

を網羅しつつ、

  • Pythonにまつわるtips(文字コードとかインデントとか)
  • プログラミング全般にわたる学習テーマ(HTMLやデータベースなど)
  • 次のステップに向けてのアドバイ

を一冊の中で要所を締めて示唆してるのは凄くいいと思いました.

プログラミングを学ぶだけでなく、書き続けることを意識しているこの本は、

一生付き合える入門本

だと言い切れると思います!

Python的な部分でのいいところ

これは主にPythonista向けの感想.

  • 完全にPython 3の本!!!*3
  • 何気にbeautifulsoupでスクレイピングなんかもしちゃってる.
  • 参考書籍の一覧が鼻血モノ.

時折口語が混ざる文章

ござ先輩節といえばいいのか...口語がいい感じに混ざって読みやすかったです.

あと、思ったより野球ネタが少ないのにはあっ(察し

総評

1エンジニア&そこそこPythonを使って仕事したりプライベートで発表したりしているPythonistaとして、

自信を持って推薦できる素晴らしい入門本です!!!

もう一度いいますが、

自信を持って推薦できる素晴らしい入門本です!!!

です!334回ぐらいまで言い切ってもいいです*4

独習Python入門――1日でプログラミングに強くなる!

独習Python入門――1日でプログラミングに強くなる!

友達の誰か、特に野球でプログラミングをしたい方に半月ほど渡してみて、実際プログラミングが覚えられるのか、アダム・ダン率をPythonで書けるようになるのか?的な検証をしてみたいと思います.

最後になりましたが、ござ先輩、献本ありがとうございました!!!

*1:もう一人はビープラウドの佐藤治夫さん、あと一人はなんとなく察してください←

*2:リスク=動かない、写経しくじったとか.

*3:Python 2でプロダクト動いている会社のエンジニア的には羨ましい(小声)

*4:334の意味はググれ.野球のアレです

投手大谷翔平のパフォーマンスをPythonでサクッと分析してみる

Python 野球 SABR

日ハム14連勝&レアードサヨナラ弾(通称🍣弾)で気分が最高すぎますこんばんは.

こちらの続編となる分析ネタやりましたので軽く紹介します.*1

shinyorke.hatenablog.com

おしながき

  • 大谷翔平投手の2016年
  • さくっと分析してみる
  • MLBの二刀流投手と比較してみる

なお、今回も、

  • 気軽にできるネタです.
  • 機械学習とかそんな難しいテクニックは使ってません.
  • ちょっと興味持った方はぜひ好きな選手で試してみて.

という感じですので気楽に読んでいただければと〜.

大谷翔平投手の2016年

個人年度別成績 【大谷翔平 (北海道日本ハムファイターズ)】 | NPB.jp 日本野球機構より引用.

※7/9現在の成績となります.

開幕して4月は1勝もできず、今年大丈夫かな?と思ったこともありましたが、初勝利から8連勝中(たしか、間違ってたらすいません)、唸るストレートを軸としてリーグ一位の132奪三振をキメるなど、投手としても無双しています.

サクッと分析してみる

前回同様、個人成績から出せる範囲の数字で大谷翔平を分析してみたいと思います.

観点

セイバーメトリクス(野球統計学)の分野では投手を、

  • 三振を沢山取れる
  • 四球を出さない
  • ホームランを浴びない
  • フライよりゴロを打たせる ※ただしシチュエーションによる

上記の軸で評価を行うのが基本です.

ちなみにこれは野球統計学の分野では「DIPS (野球) - Wikipedia」と呼ばれています.

今回の分析では、太字の部分「奪三振」「与四球」「ホームラン」について触れたいと思います.

なお、

  • フライかゴロか
  • 球速やボールのキレ
  • 捕手との相性(大野と組むのがいいのかそれとも市川サイコーなのか、なお近藤(ry、的な奴)

はデータが取れないので今回はやりません.*2

分析テーマ

奪三振と与四球をテーマに、大谷翔平が2013年のプロデビューから、投手としてどのように変わっていったのかを見てみます.

一試合あたりの奪三振・与四球

  • 一試合あたりの奪三振(K/9)
  • 一試合あたりの与四球(BB/9)
  • 一試合あたりの被本塁打(HR/9)
  • 一個フォアボールを出す度に何個三振を奪っているのか(K/BB)
  • 参考値としてWHIP(投球回あたりの走者数平均)も合わせて出して比べてみる.

コードを書いてみる

これも前回と同じ環境・手順でやってみます.

ポイントは、

  • 日本プロ野球機構の成績表から投手成績のみを抽出する
  • 前処理として、欠損値のゼロ埋めとデータ型の変換(object to float)、イニング数が何故か別れて出ちゃうのでくっつける
  • 計算してプロットしてみる.

やったことはこれだけです.

gist4d5bd01353f02f0493a4ffa5ebeb55c1

結果と考察

グラフに書きだした後、ちょこっと考察してみます.

結果

グラフ少し見にくいかもスイマセン.

グラフ

上からK/9, BB/9, HR/9, K/BB, WHIPのグラフです.

BB/9とWHIPは右肩下がりになるとBest.

f:id:shinyorke:20160709164134p:plain

データ

pandasのデータフレームの中身です.

f:id:shinyorke:20160709164304p:plain

考察

総評!!!

  • 奪三振能力はさほど変わらず、去年の高水準をキープ.
  • 四球が増えている事により去年より少しだけパフォーマンスが悪化.
  • 本塁打がいい感じに減少.
  • どの数字もエースたる水準をキープ、野手としてのパフォーマンスを含め日ハムの大型連勝を支えているのもよくわかる.
  • 大谷翔平すげーわ.

一試合あたりの奪三振(K/9)

  • キャリアハイだった去年(2015)とほぼ同水準.
  • 去年の11という数字はかなりの高水準(9回投げる度に11個の三振を奪える計算)だが、今年もほぼそのペースを維持.
  • なお現役人類最強左腕クレイトン・カーショウドジャース)のK/9が10.8でこのレベルと同等というのは純粋にほめていいレベル.

一試合あたりの与四球(BB/9)

  • (ほんの少しだけ)悪化.
  • 去年が2.5、今年が3.
  • そういえば負けが続いてた春先は四球をちょいちょい出してたような&本日(7/10)先頭打者へのストレート四球で崩れた辺りにストライクゾーンを支配できてない苦労が伺える.

一試合あたりの被本塁打(HR/9)

  • 本塁打が減少傾向、大変素晴らしい!!!
  • 0.58→0.4→0.39→0.33と順調に減ってる.三試合投げて一発打たれる程度.
  • 余談ですが今シーズンの成瀬(ヤクルト)のHR/9は1.52でした(一試合当たり1.5発被弾、二試合で3発).

一個四球を出す度に何回三振を奪うか(K/BB)

  • 若干悪くなっている.
  • 三振が微減、四球増で少しだけ悪くなっている.
  • 人類最強左腕カーショウのK/BBは16.11、これは変態レベル.*3

WHIP(1イニングあたりの走者数)

  • 毎回1人は出してる、ぐらいの認識.
  • 先発投手のWHIPとしては十分エースといえる水準.
  • ただし、この数字自体は投手の実力だけでは測れないので参考程度.*4

【おまけ】MLBの二刀流投手と比較してみる

ちょっと前の記事になりますが、メジャーリーグでもリアル二刀流が実現しました.

www.nikkansports.com

サンフランシスコ・ジャイアンツのエース左腕でシルバースラッガー賞(打撃部門のベストナイン)で投手部門で二度獲得しているマディソン・バムガーナーが、チーム事情と日本の大谷翔平に刺激されて(?)、交流戦のアスレチックス戦(DH制あり)の試合で「9番投手」で先発しました.

そんなバムガーナー投手も大谷と同じ軸で見てみました.

なお、打撃に関しては流石に差がありすぎ(バムガーナーは野手として先発出場はしていない)、比較そのものに意味が無いので割愛しました.

コード

ほとんど同じコードなので割愛、データ元がESPNに変わった程度です.

Madison Bumgarner Stats - San Francisco Giants - ESPN

気になる方はこちらのGistを参照ください.

madison-bumgarner.ipynb · GitHub

結果(グラフとデータフレーム)

f:id:shinyorke:20160709171443p:plainf:id:shinyorke:20160709171456p:plain

総評

  • 大谷とほとんど似ていない、左右の違い、投球スタイルの違いが出ているような結果に.
  • 全般的に与四球をださない、三振やや多めで被本塁打がちょっと多い.
  • 自慢のコントロールに陰りが見えているのか、BB/9の数字が悪化してるのが気になる.

感想など

  • 大谷はやっぱ凄い.
  • 投手として最高のパフォーマンス見せつつ野手でも平均以上って事がデータだけでわかる.
  • 野手編として、他の選手(ヤクルト山田や広島鈴木など)もちょこっと見てみたい.
  • とはいえやりたい野球Hack(主にメジャー)があるので続きはどなたかよろしくお願いします!

*1:思ったよりはてブ集まったりGoogleのニューストピックスに乗ってびっくりました(゜o゜;ありがとうございますありがとうございます

*2:この3つ、MLBのデータでは分析可能でPyCon JPのProposalも出していたのですが残念ながら準候補に落ち着いたため、別の機会に発表します.

*3:7/9現在、121回を投げて、145個の三振を奪っておきながら四球がたったの9つ.もう意味がわからない...w

*4:インプレーの打球を捌くのは野手のミッションで、野手が下手糞だとWHIPも悪化する(逆もしかり)類の数字なので、「今年の日ハム守備いいな」ぐらいの認識が本来あるべき姿かも.

たった数行のPythonコードで打者大谷翔平がどれだけ凄いのかを見てみる

Python Baseball SABR

先に言っておくと、

  • あくまでもネタです
  • 機械学習とか高度なネタは出てきません.
  • あくまで参考程度に、ただし世の中のスポーツ系サイトや新聞よりまっとうにデータで見ている(と思われる)

そんな感じで気楽に見てもらえればと.

打者「大谷翔平」の2016年

打撃成績

前日(2016/7/2)までの成績.

本日(2016/7/3)は「1番(投)」で二刀流スタメン起用、プレイボール弾(初回初球先頭打者本塁打)を決めるなどして、打撃成績は向上しています.

ここでクエスチョン

  • 大谷翔平の何が変わったのか?
    • 三振が減った
    • 四球が増えた
    • パワーがついた
  • キャリアハイな成績を残す(と思われる)打者大谷の強みはナンだ!?

なお、

  • 二刀流した結果打撃に良い効果が?
  • 相手が弱くなったor自分(大谷)が強くなった

等の仮説は手に入るデータ(と時間)で検証するのは無理なので断念しました.

早速データを出した&検証してみました

検証方法

  • NPB(日本プロ野球機構)の公式データを元に、野球統計学で用いる指標を算出.
  • デビューした2013年〜今年(途中)までの数字を見比べる.
  • シンプルに「パワー(どれだけ長打を打つか)」と「我慢強さ(ボールの見極めができているか、簡単にバットを振っていないか)」に着目して見てみる.

使ったモノ

Python 3前提ですが、Python 2でも動くはず(試していません&保証しません).

環境はMac OS Xを想定していますがLinux/Windowsでも十分行けると思います.

不安な方はAnacondaなどを使ってください.

  • Python 3.5.2
  • pandas
  • Beautifulsoup
  • jupyter notebook

環境を作る

venvもしくはpyenvなどでPython 3.5.2の実行環境を作った後、pipで以下のライブラリをインストールする

$ pip install jupyter pandas lxml html5lib BeautifulSoup4 matplotlib seaborn

インストールが終わったらjupyter notebookを起動.

$ jupyter notebook

コードを書く&実行

PandasでHTMLから直接読めるよ!的な便利機能を初めて使いました.

大したコードになりませんでしたよと(所要時間:30分).

gistad401e1e8b0aba94b2d983aa96b81c1b

考察!

計算結果

ざっとこんな感じになりました.

f:id:shinyorke:20160704002923p:plain

数値の傾向

一般的な指標値からの想像

  • 出塁率長打率ともにヤバい!キャリアハイ待ったなし.
  • 44試合で22四球、「2試合に一回」程度四球を奪うようになってる.元々四球が少ない選手(70試合出て20個オーバーがやっと)な選手なのに、これは大きい.
  • 一方三振のペースは例年通り?このペースだと50個行かないぐらいで着地しそう.
  • (見ての通り)打率も高く、こちらもキャリアハイを十分狙える.

セイバーメトリクス指標からの想像

  • パワー・我慢強さ共に兼ね揃えたいい打者に!
  • 出塁・長打が多くOPSはリーグ屈指のクラスに.
  • 我慢強さを表すisoD(出塁率-打率)は前年の倍近く改善. 打率上がってisoD下がりそうなところが、ボールを選ぶ粘り強さで更に価値を出している.
  • 純粋なパワーを表すisoP(長打率-打率)も0.302と異常な数字に.そりゃ初回初球先頭打者プレイボール弾もキメるよね.
  • BB/Kが劇的ビフォーアフターな数字に! 四球1個取るのに5,6回の三振が必要だった去年とくらべ、今年は「三振1.4個あたり四球1個」となかなかの改善ぶりを見せている.

結論

  • 打者大谷翔平は我慢強さとパワーを兼ね揃えた化物に変貌していた!!!
  • 四球が増加したことによりStats(成績)全体が改善).
  • オフのトレーニング(ビルドアップ)の効果は長打という実にわかりやすい形で吉と出ている.

検証できなかったこと

いずれもデータの関係で出来なかった.

MLBならいくつか検証可能なのに...くやしい.

四球数の増加要因

  • 相手が警戒している
  • 大谷の選球眼がよくなった
  • ペイシェント(我慢強さ)を表す数字が手に入れば...!(ボールの数、スイング率など)

DH専任VS二刀流

  • いわゆる、「投手大谷としてのリズムが打者大谷に大して好影響を...」的な奴
  • 真面目な野球統計学の分野では割と否定される仮説なのだが、実際どうなんだろう?

周りの打者の影響

  • 中島卓也(ショート)が去年以上にカットしまくってるとか、レアードが打ちまくってるからとかとか.
  • 打線が大谷という「点」ではなく、中田や陽岱鋼ほかスタメンを含めた「線」で機能している→大谷勝負のみに集中できない?とか.
  • この辺は機械学習なアプローチで検証できるかも.

以上、久々の野球Hackでした.

【雑感】PyCon JP 2016トークの外部審査員をしました&その学び

Python PyCon JP Conference

こんばんは!

最近週末は野球hackとデータを眺める時間に幸せを感じている人です.

2014年、2015年の二年間参加者&スピーカーとして楽しませてもらったPyCon JPですが、「新しいチャンジをしてみよう!」という事で、セッショントークを採択する「外部審査員」なるものを先日やってみました.

PyCon JP Blog: トークのレビュワー(外部審査員)の募集開始しました

その時のレポートと学びを自分向けメモ&「私もカンファレンスに登壇したいな!(※言語限らず)」という方に向けての学びをここに共有しようと思います.

外部審査員のお仕事

上記のエントリーからのおもいっきり引用ですが、外部審査員のお仕事は以下の2つです.

レビュアーはリンクに記載の通り、一般公募していました.*1

プロポーザルに対するレビュー

トーク一覧 | PyCon JP 2016 in TOKYOに応募されたトークの内容(タイトル・目的・概要etc...)に目を通し、+1〜-1の間で投票を行い、コメントを入れます.

また、必要に応じてプロポーザルを提出した方にフィードバック(質問や修正の提案など)を行います.

投票はすべてのプロポーザルに対して以下の点数で投票を行います.

+1 - Good proposal and I will argue for it to be accepted. (良い、採用されるべき)

+0 - OK proposal, but I will not argue for it to be accepted. (まあまあ、採用されてもいい)

−0 - Weak proposal, but I will not argue strongly against acceptance. (ちょっと弱い、採用されても文句は言わない)

−1 - Serious issues and I will argue to reject this proposal. (問題があるので、採用されるべきではない)

今年は108件のプロポーザルがあり*2、私は自分のプロポーザルを除く107件に対して投票*3を行い、いくつかのフィードバックをさせてもらいました.*4

トークを採択する

レビューおよびフィードバックを6/25(土)いっぱいまで行い、トークの採択を先日の日曜日(6/26)に行いました.

pyconjp-staff.connpass.com

今年のPyCon JPでプログラムを担当されている@shimizukawaさんを始めとしたPyCon JPスタッフ、私のような外部審査員を含め10人ちょっと(リモート参加含める)で4時間もの議論を重ね、108件のトークから採用(と予備)を決めました.*5

トークはどのように決まったのか

結果

約30人のレビュアーのレビューと採択MTGで決まったトークの一覧は以下のとおりとなります.

pycon.jp

採択された皆様、本当にホントにおめでとうございます!!!

一方で不採択(&予備)のトークも大接戦で選ぶのが本当に難しかったです.

つぶやいていないレビュアーも含め、口々に「難しい」「レベルが滅茶苦茶高い」「判断難しい」と異口同音に感想を述べていました.*6

トークを採択した基準(ただし言える範囲で)

そんな「レベルが高い」「判断難しい」トークはおおよそ以下の観点・ルールで採択されました.

ここでは「おそらく言っていいだろう」という部分のみ言及します.*7

というより、PyCon JPのブログに書かれた観点そのものとなります.

要点をまとめると、

  • 多様性重視
  • (多様性の観点で)投票数が多い「だけ」で決めているわけではない

というのが基準となりました.

トーク・レベル・分野の多様性(Everyone's different, all are wonderful)

今年のPyCon JPのテーマである、

Everyone's different, all are wonderful (みんなちがって、みんないい)

の価値観を大切にした上でトークを採択しました.

最近Pythonでデータ分析(AIとか機械学習とか)が流行ってるからといって、データ系のトークだらけになったり、初心者向けのトークが多くなったり...という隔たりが無いよう、

  • 分野(データ・ウェブ・組み込み・コミュニティ・etc...)
  • 難易度(上級・中級・初級)
  • 言語(日本語・英語、英語の発表は30%程度)
  • ニーズ(マジョリティーなモノもマイノリティーなモノもバランスよく)

といったあたりをまんべんなく網羅できるように採択しました.

評価得点

枠が競っていたり、悩んだりしたものについては、レビューの投票数、コメント(ポジティブ・ネガティブ)を参考にしました.

ここの議論で4時間の半分以上を使っていたと思います.

ここではプロポーザルの内容を深掘りしたり、Pythonやその周辺の技術や環境、その他の観点での熱い議論があり、採択MTGは大変盛り上がりました.

学び

雑感めいた内容ですが残します.

レビュアー(私個人)として

100件ちょいのプロポーザル査読は隙間時間で頑張ればなんとか出来る

  • 移動時間
  • 食事中
  • 寝る前

この辺の時間でなんとか片付いた

フィードバックのコメントは発表者・レビュアー双方共に大切

  • 適切なフィードバックとコメント欄の議論でプロポーザルが見違えるように良くなった事例があった
  • レビュアーとしても嬉しい&発表者的にも嬉しかった(と思われる)
  • ちなみに発表者の個人(私)はフィードバックコメントがもらえず少し悲しかった

多様性大切!

  • 分野・難易度・言語・ニーズすべてで満遍なくいい感じの採択ができた
  • (結果論になりますが)常連のPythonistaから初登壇の方まで、発表者の多様性も担保されているような気がした

疲れた

  • この一週間寝不足に
  • 来年どうしよ...

「私もカンファレンスでしゃべりたい!」という方へ

PyCon JPの話ではありますが、これは他の言語のカンファレンスにも通じると思います.

ご参考にどうぞ.

フィードバックを一言でいうと

プロポーザルはちゃんと書け

  • 必須項目のみ、最低限入れられてます!的なプロポーザルはどうしても訴求力が足りないし弱い. 「コード読めばわかる」的なエンジニア気質はここでは捨てたほうが良策.*8
  • 訴求力足りない&弱いと、フィードバックのコメントも「アウトライン書いて」「もう少しkwsk」と弱くなってしまう.
  • 私個人の感想ですが、2,3個の「薄いプロポーザル」を書くぐらいなら、1個の「濃いプロポーザル」を書いたほうが採択の確率は高くなると思う.
  • とはいえ書きすぎる、文量多すぎると読むのも大変だし論理が破綻してると読み手も書き手も涙目になるのでバランスは考えましょう.
  • 参考資料や実績、絵図が入ってるプロポーザルは個人的に大変ありがたかったです.*9

Pythonの何かを発表」するのか、「Pythonを使って何かを成し遂げた発表」をするのかを明確に書こう.

  • Pythonが目的(前者)でも、Pythonを手段に目的が別(後者)でもどちらでもOKだが、「どっちを軸にしたプロポーザル」なのか明確に書こう.
  • 一見良さ気なプロポーザルでも読み進めると「え、これPythonでやる必要あるの?」「ホントにPython使うのこれ?」みたいな勿体無い内容のものがいくつかあった.
  • また、目的・手段どっちも取ろうとしている or どっちも曖昧で振り切る方向がわからないモノもあった.
  • これらもレビューのコメントに困ったなあ...
  • Pythonの例で書いていますが、これは他の言語やFWでも一緒と思われる(RubyでもGolangでもAndroidでもあるだろうきっと)

で、@shinyorkeさんのトークはどうなったの?

野球トークの行く末ですが、

お後がよろしいようで.

*1:これは自分の所感&想像ですが、レビュアー自体がPythonのプロな必要がある&レビュー開始からトーク決定まで半月も無かった関係上、PyCon JPスタッフやPythonista達のつながりを介して集められた印象があります.私もそんな中@shimizukawaさんに声をかけられました&面白そうと思い二つ返事でOKしました.

*2:PyCon JP Blog: トークの応募数をPandasで集計してみた

*3:(当然だが)自分のプロポーザルに対して投票・コメントはできない

*4:土日の隙間時間、平日の帰りの電車・晩ごはんの最中・寝る前に数十件ずつ片付けてなんとか全部読みました.

*5:採用+予備の件数はここでの公表は控えさせてもらいます.そのうちPyCon JPのサイトもしくはブログに載ると思う(例年通りであれば)

*6:14:00に始まったMTGが18:00過ぎに終わり、普通なら飲みに行く流れなのですが疲れすぎて無理でした.個人的には地元で飲みましたがw

*7:他の論点・観点も当然ありますがこれは秘密です.が、ここに書いた2つの観点、特に多様性を大切にしていたのは紛れも無い事実です.

*8:文章をちゃんと書くのもエンジニアの素養の一つだったり

*9:発表慣れしていたり、ガチの研究者だったりするんだろうなあ...

ふりかえりを分類してみた〜自分のチームに合うのはどれだ!? #Agile

Agile チームビルディング

先日、Facebookにて、

【教えてアジャイルに詳しい人】

KPT以外の振り返り手法

とつぶやいてみたところ、大変ありがたいことに、1日で10件以上のフィードバックを頂きました(嬉し涙).

たくさんコメントを頂いたので、せっかくなので分類&「そもそも自分のチームで何をふりかえりたかったんだろう?」をちゃんと振り返ろうと思います.

なお、あらかじめ言っておくと、

「分類」しただけで、「効果」に関してはノーコメントです!*1

ふりかえりを分類してみました

いきなりですが、このエントリーの言いたいことを絵にした結果こうなりました.

「ここに書いてる手法全部知ってるぜ!」という方はこの四象限を見てそっとブクマしていいと思います.

私はここに書いた手法の2/3は知りませんでした.

(そもそもKPTとワールドカフェ、5なぜ以外知らなかったので聞いてみた)

f:id:shinyorke:20160616002902p:plain

分類の軸

【縦軸】パッション重視か、プロダクト・サービス重視か?

チームメンバーの人たちや、個人といった「人・チーム」フォーカスして改善を回していくか、

それともプロダクトやサービスのKPI/KGIなどをベースにフォーカスして改善を回していくか.

この時点で結構カラーが出ちゃってる感ありますね.

【横軸】楽に導入できるVS学習が必要

ポストイットとサインペン、ホワイトボードがあれば即興で出来るのか、

あらかじめ道具や事前知識、「ガチ」なアジャイルコーチを雇って引っ張らないと回らないのか.

私自身はスタートアップの開発チームのエンジニア兼スクラムマスター*2なので、

  • あり物の道具、手に入る範囲の知識でイケる(専用のツールが...カンファレンスで出た論文に...的な奴はアウト)
  • チームメンバーへの学習コストが低い(ちょっと教えれば真似が出来る&事前の学習が不要)

という目で分類してみました.

分類後のふりかえり手法を数行で解説してみる

上記分類に基づき、適当にクラスタリングした結果を1行で解説します.

とは言っても、ここに書いた手法の2/3は知らない(大切なので二回言いました)ので、ググッてまとめた&自分の主観メインであることはご了承ください.

仕事忘れる系

週次のふりかえりでやるのは辛いがたまにはやるといいかも...的な.

サービスやプロダクトを一旦置いておいてチームの結束を...な意味が強い.

ゲームをする

TVゲーム、卓球...ではなく、アジャイルでよくやるようなゲームを導入してみる.

外のワークショップや勉強会でよくやる奴ですね、自分ではなかなかできませんが.*3

チーム全員で絵を書く

マインドマップとかビジネスモデルキャンバスとか色々ある絵を下敷きにみんなで絵を描くとか?

ふりかえり文脈ではやったことないですが、企画の文脈で何回かワークショップをファシったのでこれは検討の余地あるかも.

オフィスの外にでる

合宿とか日帰り開発合宿とかパワーランチとか.

現実逃避系かな?

リフレクション

実践家の情報共有は最高の勉強になる:リフレクション実践研究会Vol.2

経験(ふりかえり)→内省(気づき)→行動(アクション)をいい感じに回す方法らしい.

未体験かつ初めて聞いた手法ですが、なるほど!という感じなのでちょっとこれは機会あればやってみたい.

チームビルディング系

週次〜月次くらいで定期的に回した方が良さそうなもの.

ワールドカフェ

ワールドカフェ - Wikipedia

与えられたテーマについて各テーブル数人で議論、一人(テーブルホスト)を除いて各人が移動してまた議論してフィードバックをもらって...を数回繰り返してブラッシュアップする振り返り手法.

アジャイル系のワークショップ(POStudy)とかではお馴染みの手法.

絵文字でKPT

KPT(Keep/Try/Problem)の変形で、KPTの3文字を使わず、

みたいな感じで絵文字やアイコンで置き換える方法.

殺伐としたKPTになりにくそうなのでチームビルディングとかにいいかもしれない.

カフェでお茶とお菓子

3時のおやつ、ティータイムでふりかえりで良かったことや気付きを促すのはいいかもしれない.

ビジネスふりかえり系

人やチームも扱うけど、主役がサービスやプロダクト(に行きがち)な手法.

世の中の事例やノウハウ、ビジネスマンの好みでいうとココが一番のボリュームゾーンかも.

KPT

Keep/Problem/Try、以上.変形系でKPTAとかもある.

個人的な感想としては、一番使われていそうだけど「うまくやってるよ!」という話を一番聞かない手法.

フレームワークとして完成度が高すぎて回すのが難しい感ある.

タイムライン

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引きで紹介されている?手法.

本を読んでいないし、タイムラインも初めて知ったのですがどうやら割と昔からある手法らしい.

最終的には年表みたいなモノを作る感じ?

YWT/YWMT

YWTという振り返り手法について | ナカシマガジン

やった(Y)、わかった(W)、次にやる(T)を元に学習していく振り返り手法.

変形系でこれにメリット(M)を加える方法もあるらしい.

個人の経験にフォーカス...とあるけどこれ仕事のチームでやるとホントに個人にフォーカスできるんだろうか?と思いました.*4

Five Whys(5つのなぜ)

いわゆる「トヨタの5なぜ」ですね.

効果はメッチャあると思っているのですが、5回繰り返すためには思考方法(ダブルループ的な?)と自分なりのFrameworkが無いと相当つらいんじゃないかと思う.

個人的には初めて参加するMTGとかで「5なぜやろう!」と言われると震える.*5

ガチ勢系

コーチ業でご飯を食べているアジャイルコーチやその道のエバンジェリスト、ガチガチのビジネスマンが大好きであろう手法.

私も個人としては好きな奴もありますが、実践となると二の足を踏むやつです.

AAR(After Action Review)

PDCAを確実に実践し、組織が学びを蓄積して、成長するために。米国陸軍生まれのAAR(アフター・アクション・レビュー):永井孝尚の写真ブログ:オルタナティブ・ブログ

  1. やろうとしたことは何か?
  2. 実際何が起こったのか?
  3. 何故そうなったのか?
  4. 次回何をやるのか?

を軸に議論をしてアクションを決める、ポイントは「学びと改善」

PDCAと何が違うんだろう、と思いましたが、上記ブログに「任務の成否より学びと改善にフォーカス」とあったので、その辺成否を問うPDCAと違うんだなと解釈しました.

Conferenceや論文で出てきそうな考え方や手法

まだ書籍になってない、なっていても洋書や論文しかない系のネタ.

Agile 2016とかそんなイベントで聞く奴がそう.

人がやってない手法を試すとかその領域になるとR&Dっぽくなるので今回はスコープ外かな...

結論

自分がやりたい振り返りは、

人・チームが主役となるふりかえり

とわかったので、

  • ワールドカフェ(+ちょっとしたYWT)
  • お絵かきをする

あたりを軸に何かやろうと思います!

アドバイスをくださった皆様誠にありがとうございました!!!

【余談①】チームビルディングの理想形?「未来指向」

ふりかえりのアドバイスの中で、これ読んどけ!と言われたブログが最高でした!

techblog.recruitjobs.net

最後の「チームビルディングの今後」にある「未来指向」という言葉がいいなと.

過去を振り返るだけでなく、未来をイメージしてチームを作るという視点はいいなと思いました.*6

【余談②】シレッと本、出てました.

Agile Japan 2016にて配布されたフリーペーパー「EM ZERO Vol.9」にて、私もシレッと文章(ポエム)を書かせていただきました.

EM ZERO Vol.9 | ManasLink ONLINE

インセプションデッキ」と「MVP開発」を用いたモダンアジャイル開発 というタイトルで、昨年PyCon JP 2015でやったネタ(野球Python)の開発過程をアジャイル文脈で解説しています.

ちなみに元ネタは昨年PyLadies Tokyo一周年記念パーティーのLTです.*7

www.slideshare.net

お時間ある方は是非ダウンロードするなりなんなりして読んでみてください!(ちなみに電子版は無料です)

お後がよろしいようで.

*1:効果が出る・出ないはチームの作り方や特性、メンバーのモチベーションやその時の状況で変わると思うので触れません.というより効果だして良いチームにしたりプロダクト作ったりするためにふりかえりをやる訳で(ry

*2:最近「いい意味で」スクラムマスターを廃業しつつありますが、ちょいちょいやることはあります、ある意味健全なのかも

*3:ファシリテートの負荷と準備を考えるとつらい

*4:前職の評価面談(WCM)とかもそうだったけど、「さあ経験を語れ!」と言われても案外うまく語れないよね

*5:大抵の場合うまく回らないから(小声)

*6:これはスタートアップのチームはみんなそうあるべきなんじゃないかと思ってる.

*7:PyCon JP 2015のLT応募して落選→PyLadiesでリベンジ→アジャイル魂2016公募で落選→EM ZEROで復活という山あり谷ありの作品になりました(しみじみ)