YouTubeAPIを使ってスマブラSPのファイター人気を可視化してみた【YouTube API v3 + Metabase】

## はじめに
こんにちは。エンジニアのTKKと申します。
本記事は[All About Group（株式会社オールアバウト） Advent Calendar 2018](https://qiita.com/advent-calendar/2018/allabout) 17日目になります。

ついに任天堂のビッグタイトル「スマブラSP」発売されましたね🎉🎉
[公式HP：大乱闘スマッシュブラザーズ SPECIAL](https://www.smashbros.com/ja_JP/)

最近自分は暇な時間があれば対戦動画をひたすら見ちゃいます。
YouTubeに投稿されているスマブラ動画は全体的に、各ファイター(プレイアブルキャラ)を主軸にして動画が作られている傾向があるようです。（title:「ピカチュウの最強コンボ　まとめ」のように）

そこで、今回は**YouTube API + Metabaseを使って各動画の閲覧数別にざっくり可視化を試みました。**

これで、**YouTube界で最も盛り上がっているファイターがわかるはず！**
それでは行きましょう！


(結果だけ知りたい方は[可視化結果](#可視化結果)へドウゾ👉)

## 改めて概要整理
今回の概要は下記2点です。

**1. 最近最も盛り上がっているスマブラファイターを可視化する**
**2. 各ファイターをテーマにした動画の閲覧数で判断する**

## 使用技術
+ YouTube API v3：動画検索、動画詳細データ返却
+ Metabase：結果を可視化
+ PHP：APIを叩く、DBに結果を格納する
+ MySQL：結果を格納

## 処理フロー
基本的に**APIで動画情報/再生数取得→DBに保存→可視化　の流れです。**

1. (php)　　　　YouTubeAPI(検索)を用いて各ファイターごとに検索を実施。閲覧数上位50件(API上限)を取得
2. (php)　　　　[1]結果をDBにinsert
3. (php)　　　　YouTubeAPI(動画詳細)を用いて、各取得した動画の閲覧数を取得
4. (php)　　　　[3]結果をDBにupdate
5. (Metabase)　取得した各動画情報を可視化

## YouTubeAPIについて
APIキーをGETパラメータに付与するだけで使えます。
APIキーの発行方法は公式が丁寧でしたので、割愛します。
下記を参考にしてください！
公式ドキュメント：https://developers.google.com/youtube/v3/getting-started?hl=ja

今回使用したAPIは下記二種です
### ①検索
リクエストの検索キーワードに対し、検索結果を返却します。

```
https://www.googleapis.com/youtube/v3/search?type=video&part=snippet&order=viewCount&q={検索キーワード}&maxResults=50&key={APIキー}
```
#### 公式ドキュメント
https://developers.google.com/youtube/v3/docs/search/list?hl=ja
#### 各GETパラメーター解説
■ type=video
検索対象をプレイリスト、チャンネル、動画から選びます。
今回は「動画」のみを対象にしたいので```video```を選択しています

■ part=snippet
取得する情報をid,　snippetから選びます。
今回はid情報だけでなく、タイトルなどの付加情報もほしいので、```snippet```を選択しています

■ order=viewCount
動画の検索結果順を選択します。
一番見られている動画が知りたいので、閲覧数順```viewCount```を選択しました

■ q={検索キーワード}
検索キーワードです。
今回は下記のように検索ワードを指定しました。
```intitle:スマブラSP+intitle:{ファイター名}```
```intitle:```検索を用い、必ず「ファイター名」、「スマブラSP」という文字が入っている動画に絞っています。

■ maxResults=50
取得上限数です。
APIの最大取得数である50を指定しています。

■ key={APIキー}
APIキーの設定項目です。

### ②動画詳細取得
リクエストの動画IDに対する、動画詳細情報を返却します

```
https://www.googleapis.com/youtube/v3/videos?part=statistics&id={動画ID}&key={APIキー}
```
#### 公式ドキュメント
https://developers.google.com/youtube/v3/docs/videos/list?hl=ja
#### 各GETパラメーター解説
■ part=statistics
取得したい情報を選択します
今回は動画閲覧数がほしいので、```statistics```を指定しています

■ id={動画ID}
動画をvideo_idで指定します。
今回は、①検索 で取得した動画IDを設定してAPI実行しています。

■ key={APIキー}
APIキーの設定項目です。

## 動画情報取得処理
今回はPHPを用い、curlでAPI実行/動画情報の取得 → MySQL DBへのinsert/updateを行いました。

## 可視化
Metabaseを用いてデータの可視化を行います。
Macのクライアントアプリを利用しました。
https://metabase.com/start/mac.html

### ダッシュボードの作成まで
初期設定と、バックエンドのDB設定を終えるとホーム画面に遷移します。

グラフを作っていきたいので、```Ask a Question```を選択
![スクリーンショット 2018-12-17 15.53.40.png](https://qiita-image-store.s3.amazonaws.com/0/120970/13654ded-fd5e-4d3e-7823-bf25cd64bb6a.png)

SQLを投下してグラフを作りたいので```Naitive Query```を選択
<img width="1680" alt="スクリーンショット 2018-12-17 15.54.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/120970/32e91820-0bda-5639-b30e-8d3fe1e1742a.png">

各フォームにて、DBの指定、実行したいSQLを入力し実行。
左下部```visualizatiuon```タブにて、リスト形式や円グラフなど、選択を行うことができます。
期待した返却を確認したら```SAVE```してください。
![スクリーンショット 2018-12-17 15.55.50.png](https://qiita-image-store.s3.amazonaws.com/0/120970/b07f80ab-29c9-f271-f33e-b1ceaa6434e4.png)

作成したグラフ(Question)に名前をつけのち、```Saved! Add this to a dashboard?```のウインドウが開くので
```YES```を押下、ダッシュボードを作成して、先程作成したグラフを追加してください。

以上でMetabaseを利用した情報可視化を行いました。
## 可視化結果
可視化結果を下記に記載します。

![test.png](https://qiita-image-store.s3.amazonaws.com/0/120970/16b27e79-41e3-e4d7-0c82-c9b94019ad38.png)


## 考察
+ 「キングクルール」、「リドリー」など新規参戦ファイター勢が上位を独占する結果となりました。

+ それらを抑えて一位はなんと「ヨッシー」でした。右下部 動画個別ランキングを見ると、
ヨッシー動画を投稿したヒカキ○さんの動画が爆発的な閲覧数を稼いでいるようです。
やはりYouTuber界の親分はすごい。。。😎

+ 他にも、動きが変わって強くなった(らしい？)リンクやゼルダ等が上位に見られます。

+ 2位「スネーク」
はステージギミック関連(無線集 など)の影響がありそうです。

## まとめ
今回YoutubeAPI、Metabaseを初めて使いましたがその手軽さに驚きました。
特にMetabase。必要最低限の設定で、期待している可視化を簡単に行うことができました。
便利です。

YouTubeAPIの検索に依存していることや、API取得上限(50件)などから
データの信頼性は完全とは言い難く、あくまでも"ざっくり"の結果になっています。要改修点です。

## 2018/12/21追記
検索対象を**投稿時間が発売後の動画に絞って**再計測してみました。
さてさて結果に変化はあるでしょうか？
### 可視化結果(動画公開日：発売日(2018/12/07)以降)

![test2_1.png](https://qiita-image-store.s3.amazonaws.com/0/120970/06621af7-e308-2fc4-6418-c993d13aac61.png)

### 考察②
+ ヒカキ○さん😎影響の「ヨッシー」、ステージギミック関連動画の影響であろう「スネーク」「ピット」が上位を占めています。この3件の再生数は他と比べて飛び抜けてますねーー。顕著です。

+ 「ガオガエン」「インクリング」「しずえ」「パルテナ」等が上位に残りました。
順当に話題になっていそうです。

+ 「キングクルール」「リドリー」が順位下落。発売前の話題性と比べると、
発売以後は他の新参キャラに押されてそこまで話題になっていない？？

+ 「パックンフラワー」は大幅下落。まだ配信されていないファイターですから、それは落ちますね😅😂