極私的視点(再)

思いついた時に、思いつきの文章とそれっぽい写真を大公開です。

もうすぐ2021年シーズン開幕です(Pythonでプレーを記録する仕組みを作ってみた)

今年のシーズンは

ことしは無観客とはいえ例年通りの開催になりそうな日本のアメフト界隈です。

で、アメフトっていうのは様々な情報を収集・分析して戦略を立てる「準備が非常に重要」だと言われてはいるものの、現在そのデータは各チームの担当者がそれぞれ集計しているだけで、リーグからプレー単位の詳細なデータは(少なくとも一般には)提供されていないのが現状ですね。試合後にはスタッツが発表され、各シーズンのチーム成績、選手成績などが発表されるってことは、試合ごとに細かいデータを収集されていることは確かなことでしょう。そいつ(生データ)を公開してくれれば、ちょっと前にチャレンジしてみたPDFからデータを抽出してCSVを作成するなどという苦労をしなくて済むわけで、リーグ関係者各位にはそのデータを公開していただきたく、伏してお願いいたします。

 

tonytani37.hatenablog.com

 文句ばかり言ってても埒が明かない

ということで、 コロナ禍で外出自粛だし、他県との往来も自粛だし、せっかくの夏休みでもやることないから、自分で自分に「スタッツを登録して、集計する仕組みを作ってみる」を夏休みの自由研究としてみました。(実際には夏休み前から、大枠の仕組みはポチポチつくってましたが)

大雑把な仕組みはPython+djangoです。こいつで簡単なWEBシステムを作ってみましたが、とりあえず思いつくことから作っていたから、つぎはぎだらけになってしまいましたがなんとか動きました。ただしキックオフとかパントとかファンブルとかインターセプトとかのゲインヤードや、各チームのプレー時間などの計算はまだまだ勉強が必要な状況です。でもとりあえずそれっぽい数字をまとめて表示することはできるようになりました。

f:id:tonytani37:20210807182051p:plain

python+djangoの環境をVSCを使って開発です。テスト用DBはとりあえずSQlite3

テスト用でつかったのはYoutubeにアップされてた神戸大レイブンズとアズワンブラックイーグルスの試合(7/3開催)の様子です。

 

youtu.be

とりあえず思いついて作ってみたこと

キックオフでリターンTDだったけど反則があって蹴り直しで云々というような、いろいろな要素が絡んだ状況を記録するのは大変だしパターンを洗い出しきれてないので、基本は攻撃チームとクォーターとダウンとゲインヤード、プレイ内容と得点を記録することです。今のままでもレシーバーやボールキャリア、タックルした選手なども登録はできるけど、それをうまく利用できてないので、それはこれからの課題ですね。

それから色々とググってみたけれど、野球のスコアブックみたいに業界標準的なデータ・フォーマットがなさっぽく、それが原因で各チームバラバラになることで広くデータを共用できないことは問題です。もしそれがあるならば一般に公開していただければありがたいと思いますね。

ということで、とりあえず登録画面です。現場で簡単に使えることを前提に、画面はスマホで使うことを想定してます。

これが登録画面です

f:id:tonytani37:20210807175940p:plain

登録画面 とりあえず項目を並べただけのデザインは今後の課題

太文字は入力必須で、未入力のまま登録しようとすると怒られます

  • 対戦情報などは事前に登録しとくと自動的に表示します。
  • クォーターとQBは前のやつをそのままセットします(手で変更は可)
  • 残りヤード数はなんとなく自動計算します。
  • ゲインヤード数もロングゲインのときにいちいち暗算するのもイヤなので、プレピアススポットとボールデッドになった位置を入力すると、自動的に計算します(なんとなく)
  • ヤード数を登録する場所がないので、反則とかが発生したときのゲインヤード数が正確ではなかったりする気がしますが、今のところは気にしないことにしました。
  • そのほかダウン数は順番に進みますが、反則時の対応は今のところできてません。攻撃チームも4thダウンには自動的に設定します。ただし4thギャンブル成功やターンオーバーなどの攻撃権が移動する場合の対応はできてません。

まあそんなふうに作ってみたんですが、実際にYoutube見ながら登録してみたら、色々と不具合もみつかって、その都度直したりしてたのでソースの中身がぐちゃぐちゃになってしまいました。

これが集計画面です

f:id:tonytani37:20210807204402p:plain

集計画面 こちらはどちらかといえばPC画面用

これを見ると神戸大はターンオーバー1回分多くて負けたカンジですね

ある程度必要な情報は集計され表示していると思いますが、プレー時間等の集計は現在のデータベース構造ではその集計が難しいところもあります。

そんなわけで、データ登録を間違っているとか、自動計算が違うとか色々とバグが存在しているはずな(放置しているのもある)ので、上記の画像で表示されている内容は、試合の公式記録と異なることがあります(たぶん違います)

とはいうもの、夏休みの自由研究としてはこんなカンジの大雑把さでもよいのかな、と。

まだクラウド環境で動かしてないので、実際のスマホでどんな使い勝手かが不明ですが、PCよりは多少使いやすいのではないかと。

それからもしこいつを使う場合は、プレーを見て選手の番号やプレー種類、ボールデッドの位置などを確認する係の人と、データを登録する係の人の二人がかりでやるほうがスムースな気がしました。

こんな仕組みがあれば、紙から手入力その他で行うデータ化の手間が省けるし、データが蓄積されれば、そいつをCSVで抽出すればあとはエクセルでも何でも自由自在に集計・分類ができるので、どこかの誰かの何かの役に立つのではないかと思ったりします。

それから、今回夏休みの自由研究でとりあえずツギハギながらも作ってみましたが、これをどこかで知って一念発起してスラバシイ仕組みを作り上げる人が出てくれば、それが一番良いことではないかと考えたりします。それ以上にリーグから公式データとして生データが提供されることが一番だと思いますね。

まあそんなわけで、現場からは以上です。