野球リーグスコア管理システムとキャップ野球情報局に関する進捗です。
旧システムについてはこちらの記事をご覧ください。
直近2年間継続して参加している参加者の成績一覧を表示します。
基本的には1試合ごとの打席の内訳を1レコードとしてDBに保存しているので、選手IDと試合に参加した 年(試合日付をyear関数でまとめたもの) でGROUPBYします。
そうすると、参加年数分レコードが取れるので、2レコード以上ある選手を取得すればokです。
UI側はチームページが似たような実装なのでそれを使います。
なるべくコンポーネントを共通化するようにはしていますがなかなか難しいですね。
-トップメニュー
- サイドメニュー
- ルーティング
- API問い合わせ
割と修正箇所多かったです..。
普段和暦はあまり使いませんが令和(こういうときだけ)最初のコミット、キメました。
「全期間通算成績」ページで打者の最終出場日を表示するように実装しました。
例として、「通算打率20位の中で最近出場していたのは誰かな?」
という使い方ができます。
時間がなくて1か月ぐらい作りかけで放置していましたが、
チームごとの投手通算成績を見ることができるようになりました。
配色をcoolorsを元に見直しました。
投手部門の成績の指標にWHIP・奪三振率・K/BBを表示してソートできるようにしました。
WHIP = ( 与四球 + 被安打 ) / 投球回
投手がどれぐらい走者を出しているかという指標。
数値が小さい方が優秀です。打高投低のリーグでは1点台で優秀だと思います。
だいたい防御率の順位と相関があることがわかります。
奪三振率(5イニング換算)=奪三振数 ÷ 投球回 * 5
5回投げた場合、投手がどれぐらい三振を奪えるかという指標。
やはり速球派が上位に名を連ねます。7点台はバケモン(笑)
K/BB=奪三振÷与四球
投手の制球力を示す指標。これまで指標として取り入れていなかったのですが、iotasさんに勧められたので取り入れてみました。
与四球が少なくて三振を取れる投手が上位にきますね。
奪三振率、WHIPと比べてみてみるとなるほど…と思えます。
現在、野球リーグでは2005年からの打撃・投球成績をExcelで保存しており、そのうちシステムには2010年度から現在までの成績の入力が終わっています。
約10年分の通算成績を見る際に、誰がアクティブなプレーヤーかという判別をできるようにするために、最終出場日を表示する機能を実装しました。
先週、選手間の「類似度」を実装しました。
その際x軸に長打率(SLG)、y軸にAB/K(三振のしにくさ)を採用しましたが、正確さを向上させるため、K/BB(選球眼)をz軸に採用して3次元でのユークリッド距離を求めるよう修正しました。
URL: https://jcblscore-react.netlify.com/
各シーズン(半年ごと)の試合結果がアコーディオンメニュー形式で配置されています。
(3)最新のスタッツとレイアウトがほぼ同じなので説明を割愛します。
まだしっくり来てはいないのですが、横スクロールバーを目立たせるよう実装を変えました。スマホだと自己主張に乏しすぎて困る。
タブを入れ子構造にしていたころの名残がCSSの修正によって出てきていました。
チーム名をdiv
で括ってブロックの中で改行するようにしました。
スコアにチームアイコンを表示するようにしました。
スクロールバーをCSSでカスタマイズして、スクロール中以外でも表示するようにしました。
あまり目立たないのでセレクタ(プルダウン)を装飾してみました。
プルダウンしたときの失敗感。。。
長らく試合結果一覧をデフォルトのトップページにしていましたが、
メニューの内容をトップページのコンテンツにしました。
AB/K:打席数を三振数で割った数値。何打席に1回三振するかという指標。
援護率は一部バグがあるので保留にしました。
作ったサービスのレビュー依頼掲示板でご指摘いただいている箇所を部分的に修正しました。ありがとうございます。
#before
padding: 8px 1px 8px 1px;
#after
padding: 10px 5px 10px 5px;
docker-composeのvolumesはコンテナが起動したときにマウントされるのでdockerイメージ作成時にホスト側のpackage.jsonを参照した状態でnpm installができない。
DockerfileのADDはdockerイメージ作成時にマウントされる。
volumesを使わずにDockerfile内でADDしてnpm installするのが吉。
参考リンク:
docker-composeのvolumesで指定したホストのディレクトリがマウントされずハマった
How to mount a single file in a volume
#
旧システムでも最後の方に作ったチームページを作り始めました。
現在の導線は右上メニュー>選手一覧>チーム名から。
とりあえず直近の試合結果20件を表示できるところまで。
現在右上メニューバー内から遷移できます。
チームの一覧と所属選手一覧を実装しました。materializeのchipsを使用しています。それから、チーム名・選手名検索ができるフォームの実装をしました。今回は所属チームごとの表示の振り分けをクライアント側で行うようにしました。チームの一覧を最近試合を行った順に並び替えできていないのが課題です。
フォームに何も入力されていないときは選手一覧を返すようにして、
入力された場合はAPIに検索結果を取りに行く方式にしています。
フォームがクリアされるとまた選手一覧を取得します。