PlanetScale + trocco + Looker Studio で GitHub issues の可視性を向上させる。後編

# 前書き
## 対象読者
* GitHub issues / projects でタスク／プロジェクト管理をおこなっている
* GitHub 上の UI だけでは十分に issues / projects のヴィジュアライズが満足できない
* 以下の前編記事を読まれた方

https://qiita.com/Hi_Noguchi/items/a3466d98db814d9df0b6

## 自己紹介
* 株式会社きみよりで代表をしています 野口啓之 / Hiroyuki Noguchi / Hi-Noguchi です
* プロジェクト管理に GitHub issues / projects を使うのが好きです

https://kimi-yori.co.jp/

## what ?
## PlanetScale
* MySQL 互換のサーバーレスなクラウドデータベース
* フリーでかなり使えるのがありがたい

https://planetscale.com/

### trocco
* 日本のサービス！
* データのパイプラインツール
* 要は、あっちのサービス内にあるデータを、こっちのサービスへ移動させるために用いられる

https://trocco.io/lp/index.html

### Looker Studio
* 旧称 Google データポータル
* いわゆる BI ツール
* データソースを元にグラフ化したり集計したりすることができる

https://cloud.google.com/looker-studio?hl=ja

# 準備
## PlanetScale
* PlanetScale の準備は前編記事の以下のあたりをご参照

https://qiita.com/Hi_Noguchi/items/a3466d98db814d9df0b6#planetscale-1

## trocco
* trocco の準備は前編記事の以下のあたりをご参照

https://qiita.com/Hi_Noguchi/items/a3466d98db814d9df0b6#trocco-1

## Looker Studio
### 前提
* Google アカウントが必須になりますので、まず Google アカウントを用意してきましょう

### 利用開始
* 以下へアクセスします

https://lookerstudio.google.com/navigation/reporting

* 以下のような画面が表示されるので、ここでは `空のレポート` を選びます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/43d0117e-6888-ae6a-2e25-98b5d2d2eb19.png)

### データソースの選択
* `mysql` を選びます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/7b951c36-ce35-8ef3-174f-ff9701779ccc.png)

* アクセス権を承認します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/80eea01c-f967-2e66-1b19-8f2305f068da.png)

* 以下のように接続先の入力を求められるので PlanetScale への接続情報を入力しましょう
  * データベース名は PlanetScale で設定したものなので、管理画面にデカデカと表示されているものです
  * あるいは console で `show databases;` として確認しても構いません

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/67b7593f-e523-f785-292e-ab35e121f2bb.png)

* 重要なポイントは `SSL を有効にする` ことですが、証明書をどうしたらよいでしょう。これについては以下の discussion で回答が提供されていました

https://github.com/planetscale/discussion/discussions/186

* とりわけ以下のコメントです。こちらに添付されている `isrgx1.txt` ファイルをダウンロードし `isrgx1.pem` に拡張子を変更して、これを利用します
  * コメント投稿者は PlanetScale の Maintainer なので怪しいファイルではないことも担保されます

https://github.com/planetscale/discussion/discussions/186#discussioncomment-5583073

* これにより、接続が成功してテーブルを表示させることができましたので、このテーブルを選択して追加します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a205b6ad-d3a1-83d3-1d7e-6bd567373243.png)

* これで準備は完了です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/df82c8b3-306c-4197-45b5-01fddd76ffee.png)


# 可視性の向上
## レポートの名前を設定
* 何はともあれ `無題のレポート` では示しがつかないのでレポート名を設定しておきましょう。ひとまず `GitHub issues` とかで……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/cc2e57c8-a5d7-053f-9839-f1101636b5b2.png)

## 円グラフを置いてみる
### state
* まず分かりやすいところから `OPEN` `CLOSED` の issue の割合を円グラフで表示してみましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/bfbfbc39-bfe2-3162-e51c-79907c4736ae.png)

* `期間のディメンション` は、ここでは最近に動きがあったものとして `updated_at` としておきますが、作成日ベースで見たい場合などは `created_at` とするのもよいでしょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/26445435-864a-0bcc-3ee6-e94c873cd093.png)

* `コントロールを追加` から `期間設定` を選んで置くことで `期間のディメンション`をベースとした絞り込みがされるようになります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/ba721a00-d44e-e312-43af-10a1666d4f0b.png)

* 以下のような感じで、期間を変更すると割合が変わり、設定が効いているのが分かりますね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/e24b1068-9caa-20f0-48da-e622363e5b25.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/ce5acf8d-af24-6355-fb94-6f919124fcdb.png)

### author, assignees
* 上記で設置した円グラフをコピペして `ディメンション` を `author` `assignees` などに変更してあげれば、割合を次々に表示することができます
  * 本当はもっと `author` や `assignees` が豊富なところでサンプル出せたら、華々しくて良かったのですが……！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/1653f933-f11c-d875-8b9b-0d629717ccd5.png)

* ただ、グラフの名前がないと、何のグラフなんだか分からなくなりますね😂　テキストは自由に配置できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/6778f703-99cd-645c-5f31-24f78000e85b.png)

### ドリルダウンで深掘り
* 円グラフでもう少し応用してみます。ディメンションのところでドリルダウンがオフになってますが、これをオンにします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/ba66b8ed-5ed9-853f-b8df-56bd264170e0.png)

* ドリルダウンのレベルは `state` にしておき、ディメンションにはもう一つ `project_title` を追加します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/29fd413c-0e1a-0787-ab26-a054747b498f.png)

* ドリルダウンはグラフのヘッダにある `↓` で実行できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/980292f5-f07f-b6f8-2330-03c999711361.png)

* `OPEN` `CLOSE` 両方を対象にした状態でドリルダウンすると、以下のようになります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/ec1082cd-c325-5852-1753-c273dc269d03.png)

* `↑` で上に戻ってから `OPEN` のみを選んで……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/4c896f2d-e572-165d-37cf-609dce1a76c1.png)

* またドリルダウンすると `OPEN` 状態のプロジェクトの割合が確認できるようになりました
  * ちなみにここで使われている元データはサンプルデータなので、特に気にされず……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/3cb223e6-8605-dbaa-6cbe-5dd815c00e9f.png)


## ページを分ける
* 円グラフ以外のグラフを設置する前に、ページを分けてみます
* メニューから `ページを追加` を押します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/74dbfbbb-eb34-119d-5daf-632e06968dc5.png)

* すると以下のようになるので `無題のページ` となっているところに適切な名前をつけてあげます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/7a0f4985-9046-d8db-565a-2da2cf571b8a.png)

* やっつけ感満載ですがこんな感じで……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/cab1ea8d-11f7-84d0-e577-b067cc8412c7.png)

## 線グラフを置いてみる
* ということで次は線グラフを置いてみます。線グラフは推移を表現するのに役立ちますね
* ディメンションは `created_at` にして issue の作成ベースで推移を見てみることができました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/5825b22d-41ae-79d6-53bb-74088890cbb8.png)

* 今回ここで内訳ディメンションを設定してみましょう。ここを `closed_at` に設定すると……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/18c2ec9f-0a09-dc06-f578-0230fac39576.png)

* 各日で作成された issue の内訳として、いつ `CLOSED` になったかが確認できるようになりました
  * `null` はつまり `OPEN` の issue ということですね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/e8fc72c3-abb7-fb9a-b5c7-39dcde3f18b2.png)

* 内訳を他のディメンションに設定することで、たとえば誰に何件 assign されたかということもわかります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/1e76a1ee-2d6a-30c3-a6e0-55b6a183908f.png)

## 表形式で集計を見る
* 最後に表形式で集計を見てみましょう。まずはページを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/f611f021-c35d-d4d2-e509-88032034d9f9.png)

* シンプルにプロジェクト内の issue 件数を見てみます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/44f0b451-7b37-7ba9-4e30-ec66ff078d14.png)

* ディメンションに `assignees` を追加してみるとこんな感じになります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/90f4617b-0076-5c09-19f9-33261434f365.png)

* さらに `milestone_title` や `state` も追加すると……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/d042aa2b-2e0f-a93d-1ee1-05cd0e17f623.png)

* ……とまあ、こんな感じで GitHub issues や projects のデフォルト機能だけではなかなか確認しづらい／手の届かないようなところについても、自由自在に見ることができるようになります
* あとは Looker Studio 力が問われるだけということですね。どうぞ煮るなり焼くなりお好きなように……！
* Looker Studio の使い方は、他に素晴らしい記事がたくさんあります。あるはずです。なのでこれ以上は、それらをご参照ください🙏


# 定期的なデータ更新と運用
## trocco での設定
### 実行スケジュール
* さて、最後に、定期的に MySQL データを更新するための設定を見ておきましょう
* trocco の管理画面で、設定した転送をもう一度開きます。右側のほうに `実行スケジュール` があるので、そこのペン 🖊 マークを押します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/98e6a0c1-50b9-284c-69f1-fcae035758e6.png)

* スケジュールの設定画面に入るので `スケジュールを追加` ボタンを押します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/6c203490-8bbe-9cf0-1423-bb7427f6438e.png)

* あとは更新頻度を選びましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/fc1d97ba-0e63-4999-7d72-949c9faa1329.png)

* たとえば……
  * 毎週
  * 月曜
  * 00:00

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a6af69af-eb63-0ae1-8c01-f7d6a9537d8a.png)

* 保存するとこんな感じになりました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/bd55d673-1197-cb71-af61-6dc20faa7366.png)

* さらにスケジュールは複合的に設定することもできます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a3f8ff83-75c4-f233-10bd-b01ac0f29fe1.png)

### 実行スケジュールの動作確認
* これで、スケジューリングした結果がどうなるか見てみましょう
* 無事に `転送ジョブ` メニューで実行されたことがわかりました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/dfd3f142-8db9-c220-a159-bf726c6a47b3.png)

### 実行スケジュールの一覧
* 転送設定が複数ある場合でも、スケジュールの一覧は確認できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/e56fb360-2979-927e-7789-ad9804a8d93a.png)

## 運用にあたって
* シンプルな `実行スケジュール` の他にも trocco には `ワークフロー` 機能なども用意されています
* 本記事ではシンプルに GitHub issues のデータを MySQL へ転送するだけでしたので `ワークフロー` は使いませんでしたが、活用することで複数サービスを連携させて、かなり柔軟なデータ処理もできそうですね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/9c59e9c4-5d97-2401-6b5b-83d3300a5e9f.png)

https://documents.trocco.io/docs/about-workflow

* なお trocco のフリープランでは 2023/04 時点で転送時間無料枠が `10 時間` と定められているので、ここを超過しそうなほど使う用になった場合には有料プランへの切り替えを検討するのがよいでしょう

https://trocco.io/lp/plan.html

* そうなるとおそらく PlanetScale も有料プランへの切り替えを検討し始めることになりそうですが……

https://planetscale.com/pricing

# 後書き
## 雑感
* 後半はもう Looker Studio の使い方って感じになりましたが GitHub issue だけでも十分にプロジェクト管理できるし、現時点 ( 2023/04 ) では弱みである可視性やら集計やらも Looker Studio を使うことで十分に補完できるということが伝わったのではないかと思います
* 有料のプロジェクト管理ツールにケンカ売りたいわけではないですが、IT エンジニアに限らず万民にGitHub issues オススメしたい勢なので、これを機に触ってみようかなって方が少しでも増えたら嬉しいです
  * 何か便利そうなのは分かったけれど、いまひとつ自分じゃどうしたらいいかわからん！　って方はお声がけいただいたら力になれるかもしれません
* どうせなら `labels` にストーリーポイント設定して、それを集計してみせるとかそういうのもやれたらよかったですね
  * ニーズがあれば、応用編として、続編記事を書くのもやぶさかではない