🦉

GitHubでの頑張りを可視化するGitHub CLIのExtensionを作った

2022/05/16に公開

作ったもの

GitHubでの自分のIssueの起票数やPullRequest作成数、PullRequestのレビュー数などの頑張りを表示するツールを作った。

https://github.com/x-color/gh-act

このツールはGitHub CLIのExtensionとして作成しているので、簡単に利用可能。詳しくは後述する。

作ったきっかけ

業務でGitHubを利用しているのだが、その際に「自分はコードを書く以外でどの程度チームに貢献できているのだろうか?」と気になっていた。
最初は、GitHubのAPIを直接実行して集計していたのだが、毎回パラメータを調整して実行するのが面倒くさく、やるのが億劫になっていた。
そんなときに、そういえばGitHub CLIのExtensionを作成したことなかったなと思い、よい機会なのでExtensionで上記を実現するツールを作ってみようと思い作成した。

使い方

インストール方法

GitHub Extensionとして公開しているので、下記公式ドキュメントに記載の方法でインストール可能。

https://docs.github.com/ja/github-cli/github-cli/using-github-cli-extensions

具体的には下記。

$ gh extension install x-color/gh-act

実行方法

Extensionとしてインストールしたあとは、下記のようにGitHub CLIのサブコマンドとして実行可能。

$ gh act
Issue      	 6 (-1)
PullRequest	 5 (0)
Reviews    	10 (+4)

オプションなしで実行した場合、直近1週間のGitHubでの活動量が表示される。

上記実行結果が意味しているのは下記。

  • Issue 6 (-1): Issue起票数が6件。もう1週間前の起票数よりも1件少ない
  • PullRequest 5 (0): PullRequestの作成数が5件。もう1週間前の作成数と同じ件数
  • Reviews 10 (+4): PullRequestのレビュー数が10件。もう1週間前のレビュー数よりも4件多い

オプションは下記が利用できる。

  • -week: 直近1週間の活動を集計し表示する。デフォルト。
  • -month: 直近1ヵ月の活動を集計し表示する。
  • -year: 直近1年の活動を集計し表示する。
  • -ratio: 集計結果を割合表示にする。

-ratioオプションを指定した場合は、下記のような表示に切り替わる。

$ gh act -ratio
Issue      	28% (+2%)
PullRequest	24% (+5%)
Reviews   	48% (-6%)

Issueの起票数やPullRequest作成数、PullRequestのレビュー数の合計を100%として時に、各活動がどの程度の割合を占めているかを表示できる。
この結果の場合、直近1週間は特にレビューに力を入れていたことがわかる。
なお()の中は、上記と同様もう1週間前と比較した際の増減値を示している。

内部挙動について

このツールは下記流れによって実行されている。

  1. オプション指定を読み込み、集計期間を計算
  2. GitHub APIを利用して活動を集計
  3. 指定された表示形式に合わせて、標準出力に集計結果を出力

ここでは、実際に実行しているクエリについてのみ説明する。

GitHub APIでのクエリ

手順2で利用しているGitHub APIはv4(GraphQL)を利用している。
実行されているクエリは下記。(日付は実行時のオプションなどで変更されている)

下記コードで実際に上記クエリを実行している。
https://github.com/x-color/gh-act/blob/194f8fb0fcaa60670951dc6b791b72a1cb9a3c36/main.go#L188-L218

終わりに

gh-actを作成したおかげで、気になるときすぐに自分の頑張りを確認できてとても楽。
1週間や1ヵ月の振り返りの際に実行すると、この期間どれだけ自分が頑張ったかが可視化され、今回も自分頑張ったなと思えるのがとてもよい。

自分の頑張りを可視化してみたいと思った際にはぜひ利用してみてください。

参考

Discussion