Lookerを使用したスポーツ成績のダッシュボードを作る

# Lookerを使用したスポーツ成績のダッシュボードを作る

日本情報通信の中根です。
本記事は遅刻しましたが[弊社のアドベントカレンダー](https://qiita.com/advent-calendar/2021/niandc_teamgcp)13日目の記事になります。  

今回は以前Lookerの学習で作成した個人的な趣味マシマシダッシュボードの紹介をしたいと思います。

## なにをつくったのか

Lookerの基本的な機能でどこまで作れるかをベースにNFLのStatsを見られるダッシュボードを作成しました。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/f8a95c56-46cc-20d3-f266-2c96be7c6ab7.png">

このダッシュボードはLookerの研修に参加したときにハッカソンとして作成したものです。
BIダッシュボードというと売上データやとかになるのですが学ぶのであれば自分が好きなものを、ということでチャレンジしました。
大体半日ほどで作成しましたがどちらかというとデータの準備や理解の方が大変だったくらいかんたんに作成ができました。
完成イメージはES◯NやC◯Sのスタッツのページです。

## 利用データ

アメリカンスポーツはデータジャンキーにやさしく、データソースが豊富です。
今回はRのパッケージである[nflfastR](https://www.nflfastr.com/)や[NFLGameData.com](https://nflgamedata.com/schedule.php)からデータを利用しています。

## Standing

NFLではAFC／NFCの2カンファレンス(地区)、東西南北の4ディビジョンに分かれています。
今回画像としてはリーグ全体の順位表となっています。
ピボットを使うことで(ここではできていないですが)任意の分割をすることができます。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/45e4cf47-267e-2135-a34f-6fb39ba93299.png">

またチームロゴやチームカラーの情報はnflfastRにて持っていますのでLookerの[html](https://docs.looker.com/ja/reference/field-params/html)を利用しています。

## Play by Play ＆ Win Probability

NFLではプレー毎の記録とその時の勝率が計算されます。
選択したプレーと成功可否において勝率がどのように変化するかが可視化することが可能です。
ホームチームとアウェイチームの勝率を表していますのでクロスしているところが所謂ターニングポイントとなリます。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/b4100841-9021-ab11-b39c-5d78df5ce85d.png">

上の例では第2クォーターの残り1分弱でタッチダウンを取ったプレイがターニングポイントであることがわかります。

## Stats Leaders

様々なプレー毎の順位を見ることができます。
なんてことはない一覧ですが私が作成したときに一番欲しい画面でした。  

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/d0115f78-74f2-0879-252e-533a78f1e732.png">

というのもよくあるサイトではドリルダウンができないのです。
この選手のラッシングヤード(走った距離)は試合毎ではどう変わるのか、ビッグランが飛び出したときはどういった試合状況なのか、といったことがドリルダウンできます。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/c6e30030-7ca4-1c00-3c5b-f252cebe3810.gif">

## Lookerを使うメリット

ここまでつらつらと書きましたが、Lookerを使用したメリットをいくつか上げたいと思います。

### データの説明をLook MLで定義できる

なにを当たり前な、と思うかもしれないですがこれは非常に重要です。
今回利用した[Play by Playのデータですが３７２カラム](https://www.nflfastr.com/articles/field_descriptions.html)あります。
例えば冒頭のWin Probabilityだけでも２７種類ありここからデータを探索しようとしたときに、何だっけこれ？と毎回ならないようにすることができます。
とくにデータを理解している人が操作するならまだしも、データをあまり理解していない人に利用してもらおうとおもったらこの機能は非常に重要になります。

そしてこれらの定義はLook MLとしてコードとしてGitで管理できることも重要です。
データは得てして変化していくものです。重要なKPIの定義が変わってしまっては大変です
そういったものをトラッキングできる、つまりデータの質を担保する意味でも非常に役に立ちます。

データの民主化というワードは流行りましたが、民主化するためには一定の教養が必要となります。
データ定義書とデータの定義を一箇所で管理できることは不要な混乱を防ぐことができます。

### ガバナンス機能

このダッシュボードは研修の一環で作成したため利用者は私1人を想定しています。
しかしLookerのガバナンスを利用するとどんな便利なことがあるでしょうか。

今回はスポーツがテーマですがガバナンス機能があることで例えば単一のダッシュボードをロジックに基づいてチームごとに提供できることが考えられます。
団体が各チームにデータを提供する場合は公平であることが求められます。
その際にデータを出し分けるロジックを持ちLook MLという形で明確に定義できるLookerの機能は非常に強力です。

これはスポーツに限らずたとえばECショップに出店しているテナントであったり、複数のメーカーに対して情報を出し分ける、といったことでも同じです。
重要なのはロジックがLook MLという形でGit管理できるためブラックボックスになりにくいことです。

## まとめ

Lookerだけで所謂スタッツページはほぼほぼ作れるな、という感想です。
また最近のアップデートであった[Looker Extension  Framework](https://docs.looker.com/ja/data-modeling/extension-framework/extension-framework-intro)を使うことでより凝ったページをLookerだけで実現することができます。
Lookerは以前からデータプラットフォームと称していましたがまさにそのとおりの機能アップデートがされておりこれからのLookerのアップデートは非常に楽しみです。