LoginSignup
13
4

More than 1 year has passed since last update.

今年1年の開発チームのコミットをビジュアライズする方法

Posted at

はじめに

ランサーズ AdventCalendar 23日目担当の @sayanet です。
※ 投稿遅れてしまってすみません!!

今回は、以前記事にした ランサーズ創業時から今まで12年分のコミットをビジュアライズしてみた を年末振り返りバージョンとして公開します。

この記事でできること

年間で誰がどれくらいコミットしたかのビジュアライズが簡単に作成できます。
できあがりのイメージ↓
commit_2021.gif

つくりかた

1. コミットログの取得

git shortlogを利用してユーザーごとのコミット数を取得します。
例えば今月のコミットをユーザーごとにリストアップしたい場合はこんなかんじです。

git shortlog -sn --no-merges --since='date +%Y/%m/01' --until='date +%Y/%m/%d'

オプション説明
-s: ユーザー毎にサマライズ
-n: コミット数多い順にソート
--no-merges: マージコミットは除外
--since: 対象期間いつから
--until: 対象期間いつまで

出力結果
コミット数合計とユーザー名が表示されます
image.png

今回は2021年の振り返りで、月ごとにサマったコミット数がほしいので、月単位で2021年1月〜12月までループをまわします。

$year=2021;
for ($month=1; $month<=12; $month++) {
    echo $month . "月\n";
    $command = sprintf("git shortlog -ns --no-merges --since='%d/%02d/01' --until='%d/%02d/31'", $year, $month, $year, $month);
    system($command);
}

結果
image.png

2. データを整形する

ここからはスプレッドシートでデータを加工していきます。
(前回のやり方より今回のピボットテーブル使う方が簡単:point_up:

1で取得したユーザーごとのコミット数をスプレッドシートに貼り付けます。
そして、あとで加工しやすいよう、先頭列に年月を追加します。
image.png

続いて、A~C列を選択した状態で「挿入 > ピボットテーブル」をクリックし、ピボットテーブルを作成します。
行に「名前」、列に「年月」、値に「コミット数」を指定すると、ユーザーの月ごとのコミット数が整形されます。
image.png

ただ、これだと月ごとの合計になってしまいますね。今回は延べ数が欲しいので、もうひと手間。
ピボットテーブルの結果をコピペしたものから青枠のように前月までの値と当月の値を合算(単純に関数で足し算)した表を作成します。
image.png
最後に、空のセルがあるとビジュアライズのときに見づらいので0にしておきます。
ここまでできればデータ整形は完了です。

3. ビジュアライズする

ビジュアライズには引き続きFlourishのBar chart raceを使いました。
https://app.flourish.studio/@flourish/bar-chart-race/9

Dataにスプレッドシートの内容をそのまま貼って画面右側にある設定項目をいじればOKです。
image.png

Previewモードで動きを確認しながら表示まわりの設定もできます。
デキアガリ\(^o^)/

commit_2021.gif

さいごに

年末にウェーイするために遊びで作って社内メンバーに公開していますが、今年はメインのリポジトリだけでも前年より2000以上コミット数が多く、メンバーも増えかなり活発な一年だったと思います。

もちろん、コミット多いから良いとは一概にはいえませんが、純粋にこれだけコミットしたのすごいな〜おつかれさま!という意味合いで作っています。(コミット数だけで評価されることはないです)
開発チームの生産性や健全性の可視化・改善観点で取り組んでみるのも面白そう。

2021年もおつかれさまでした!!!

24日目のアドベントカレンダーは @sazanami5 さんの 初心者が語るフレームワークの違いと魅力 ~CakePHPとLaravel~です!

13
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
4