Contenu connexe
Similaire à Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session (20)
Plus de Shinichi Nakagawa (15)
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
- 2. 自己紹介
• 名前:Shinichi Nakagawa(中川伸一)
• 別名:野生の野球アナリスト
• Twitter: @shinyorke
• 所属:リクルート住まいカンパニー
• 仕事:Engineer, Lean Startup/Agile Coach(仮)
- 3. 本日のスタメン
• きっかけ
• データはどこにある?
• 野球データベースをつくろう
• Djangoでアプリをつくろう
• セイバーメトリクスを可視化
• まとめ
- 6. データはどこにある?
Web上で公開されている主要な野球データ(MLBのみ)
メディア形式使い勝手備考
MLB.com 公開データなし- ライセンス+αの理由で使え
ない(察し)
Baseball
Reference
Web Site
(html) ☓ スクレイピング前提、ライ
センス的に使えない
Yahoo Social
APIs
REST
△ アプリから使いやすいが、
(json or XML) 取得可能な情報が少ない
Sean
Lahman CSV,SQL他◯ CC3.0ライセンス、情報が
充実、コレなら使える!
- 7. Sean Lahman Database
・1871~2013までのMLB選手・球団のデータ
・CSV/SQL/Microsoft Access Database
・Creative Commons 3.0 License
http://www.seanlahman.com/baseball-archive/statistics/
- 9. • Serverをコードで管理
• DB Serverの構築に活用
• Virtual Box上にUbuntu
14.04 LTSのイメージを立て
るコードを実装
• ついでにChef soloの起動も
• vm.boxを変えればそのまま
Production環境も作れる
- 10. Chef solo
• ミドルウェアをコードで管理
• インフラ作業をrecipe化
• MySQLをインストール
• Pythonをインストール
• Scheme作成のシェル実行
• コードでインフラを書く喜び
(^o^)
- 13. sqlacodegen
• DB SchemeからSQLAlchemy
のModelコードを自動生成
• pipでインストール可能
• MySQL/PostgreSQL/
SQLite3などに対応
• https://pypi.python.org/
pypi/sqlacodegen
• 全テーブル(約20個!)の
Modelが瞬殺で完成\(^o^)/
- 15. • O/R Mapper Python代表
• なんやかんやで使いやすい
• Webアプリは勿論、他のプロ
ダクトでも普通に使える
• http://www.sqlalchemy.org/
• 選手および球団データを
MySQLに投入するコードの中
で使用しました
- 16. Djangoでアプリをつくろう
• Python3.4 + Django 1.7でアプリ構築
• MySQLの接続にハマる
• Bootstrapで楽ちんデザイン
• morris.jsで折れ線グラフを描く
• HIGHCHARTSで散布図を描く
PyMySQL
morris.js
HIGHCHARTS
- 17. Django
• Web Applicationフレームワーク
• 競合:Ruby On Railsなど
• MTV(Model Template View)と呼ば
れるアーキテクチャで実装されてい
る
• https://www.djangoproject.com/
• アプリ本体は全部Djangoで実装
• でも本当はFlaskの方が好み(小声)
- 19. Start Bootstrap
• http://startbootstrap.com/
• Bootstrapのtemplate集
• ランディングページ、Admin
(管理)など、種類が抱負
• フリーと有料の両方アリ
• 野球アプリのtemplateとして
Adminのイメージを使用
- 25. BABIP
• 正式名「Batting Average on Balls In Play」
• 本塁打を除くグラウンド内に飛んだ打球が安打になっ
た割合を指標化したもの。別名「インプレー打率」
• .300前後が平均値。平均値を外れた場合は何らか
の外的要因があると考える(運、守備の巧拙etc…)
• 式:(安打-本塁打)÷(打数-三振-本塁打+犠飛)
- 31. 学びとTips
• Python + オープンデータでDIYな可視化とデータ
解析ができる!
• 改めて知った「野球データの奥深さ」
• 【提案】好きなデータを好きな言語でHackすると
楽しいよ\(^o^)/
• ソースコードは後日Githubで公開しますので、真
似するなりforkしてやってみてください!