Androidアプリのインストール数をGCPに自動収集させる

# はじめに
Androidアプリのインストール数をGCPのBigQueryに自動収集するようにしました。

これまで、Androidアプリのインストール数を確認するときは、Google Play Consoleを開き、アプリを選択し、レポートをcsv形式でダウンロードし、、、といった作業が必要でそれが面倒でした。:tired_face: 

この面倒な作業をなくすために、Google Play から取得できるアプリのインストール数をGCPのBigQueryに毎日自動転送するよう設定した流れが以下の通りです。

# GCPのBigQueryにデータを格納する
1. Google Cloud PlatformのメニューからBigQueryを開く
<img width="1037" alt="スクリーンショット 2019-12-20 11.08.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266675/c2270f9b-9c65-3dd2-43ce-0b37e8bc67ad.png">

2. 転送を選択して、+転送を作成ボタンを選択する
ソースタイプを選ぶところがあるので、「Google Play」 を選択します。
<img width="755" alt="スクリーンショット 2019-12-20 11.11.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266675/81c6d709-e3b9-6014-9e1f-64f126e3ef30.png">

3. 設定画面が表示されるので、項目を埋めていく
 - 「転送項目名」と「スケジュールオプション」は、任意でokです。今回は、毎日繰り返すように設定しました。
 - 「転送データの宛先」は、**転送したいデータセットのID**を選択します。新しいデータセットに転送したい場合は、GCPのBigQueryのトップ画面に戻って、データセットの作成ボタンをタップして、作成してください。
 - 「Cloud Storage bucket」 は、IDに基づく Google Cloud Storage のバケットパスを入れる必要があります。
このIDは、**Google Play Console に接続して、「レポートをダウンロード」から対象アプリを選択するとレポートの最下部に "gs://pubsite_prod_rev_[ID]/reviews/" の記載があるのでこれを利用**します。
![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_266675_0f8ca271-7fbb-2732-6100-dba23bd1263c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266675/2ca412ab-5e8d-dbe3-6980-1941ae866096.png)


以上で指定したデータセットにレポートのデータが格納されます！簡単だ！:smile:

# 格納されたデータを確認する
BigQueyの転送を選択した画面をみると、先ほど作成した転送項目名が表示されています。
<img width="1507" alt="スクリーンショット 2019-12-20 11.29.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266675/fcaca030-2b2d-2d9d-9861-1e1ab3f1f4ea.png">

転送項目名を選択すると、転送の詳細画面に遷移して、転送がスケジュール通りに実行されていることを確認できます。
<img width="1673" alt="スクリーンショット 2019-12-20 11.28.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266675/c701c402-92aa-bf37-ebb6-12a7d55f9487.png">

BigQueryのトップ画面に戻り、先ほど選択した転送データの宛先を選択します。

すると、Installs_app_versionやInstalls_carrierなどたくさんデータが取得できていることが見てわかると思います。実は、今回転送設定したGoogle Play のレポートには、インストール数だけでなく、アンインストール数、クラッシュ、ANR、レビュー、などなど色々なデータも含まれているんです。今回のやり方で一緒に取得できているものは、こちらにまとまっています。
:point_right:[Google Play report transformation](https://cloud.google.com/bigquery-transfer/docs/play-transformation?hl=ja)
<img width="531" alt="スクリーンショット 2019-12-20 11.32.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266675/1c57f735-dc9a-1927-728e-a887e5c09117.png">

それでは、クエリエディタで、今日のキャリアとアクティブデバイスインストールの数字を取得する以下のようなクエリを試しにたたいてみます。

```sql
SELECT Carrier, Active_Device_Installs, DATE ('2019-12-16') AS _LATEST_DATE, DATE (_PARTITIONTIME) AS _DATA_DATE FROM `449658023734.firebase_download.p_Installs_carrier_MT`
```

そうすると、クエリ結果欄で結果が出ます。
無事にデータがBigQueryに転送されていることが確認できました:ok_hand:
（SoftBankユーザー多いな～。とかわかります）

これで、アプリのバージョンやOSによるインストール数、クラッシュ数など非常に色々な数字を毎日BigQueryに取得できるようになりました。
設定はたったこれだけで完了です。

# おわりに
以上で、Androidアプリのインストール数の収集を、GCPのBigQueryに自動収集できるようになりました。

収集したデータの中から必要なインストール数とアンインストール数のみをスプレッドシートに出力したり、視覚的にもわかりやすいデータポータルにグラフとして出力したりすれば、常に自動更新された形いつでも見ることができるようになります。

スプレッドシートに出力するのも、データポータルに出力するのもとても簡単だったので、ぜひ試してみてください。:ok_hand:

読んでいただきありがとうございました:bow_tone2:

# 参考
- [Google Play Transfer](https://cloud.google.com/bigquery-transfer/docs/play-transfer?hl=ja)
- [Google Play report transformation](https://cloud.google.com/bigquery-transfer/docs/play-transformation?hl=ja)