はじめに
ランサーズ AdventCalendar 23日目担当の @sayanet です。
※ 投稿遅れてしまってすみません!!
今回は、以前記事にした ランサーズ創業時から今まで12年分のコミットをビジュアライズしてみた を年末振り返りバージョンとして公開します。
この記事でできること
年間で誰がどれくらいコミットしたかのビジュアライズが簡単に作成できます。
できあがりのイメージ↓
つくりかた
1. コミットログの取得
git shortlog
を利用してユーザーごとのコミット数を取得します。
例えば今月のコミットをユーザーごとにリストアップしたい場合はこんなかんじです。
git shortlog -sn --no-merges --since='date +%Y/%m/01' --until='date +%Y/%m/%d'
オプション説明
-s
: ユーザー毎にサマライズ
-n
: コミット数多い順にソート
--no-merges
: マージコミットは除外
--since
: 対象期間いつから
--until
: 対象期間いつまで
今回は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);
}
2. データを整形する
ここからはスプレッドシートでデータを加工していきます。
(前回のやり方より今回のピボットテーブル使う方が簡単)
1で取得したユーザーごとのコミット数をスプレッドシートに貼り付けます。
そして、あとで加工しやすいよう、先頭列に年月を追加します。
続いて、A~C列を選択した状態で「挿入 > ピボットテーブル」をクリックし、ピボットテーブルを作成します。
行に「名前」、列に「年月」、値に「コミット数」を指定すると、ユーザーの月ごとのコミット数が整形されます。
ただ、これだと月ごとの合計になってしまいますね。今回は延べ数が欲しいので、もうひと手間。
ピボットテーブルの結果をコピペしたものから青枠のように前月までの値と当月の値を合算(単純に関数で足し算)した表を作成します。
最後に、空のセルがあるとビジュアライズのときに見づらいので0にしておきます。
ここまでできればデータ整形は完了です。
3. ビジュアライズする
ビジュアライズには引き続きFlourishのBar chart raceを使いました。
https://app.flourish.studio/@flourish/bar-chart-race/9
Dataにスプレッドシートの内容をそのまま貼って画面右側にある設定項目をいじればOKです。
Previewモードで動きを確認しながら表示まわりの設定もできます。
デキアガリ\(^o^)/
さいごに
年末にウェーイするために遊びで作って社内メンバーに公開していますが、今年はメインのリポジトリだけでも前年より2000以上コミット数が多く、メンバーも増えかなり活発な一年だったと思います。
もちろん、コミット多いから良いとは一概にはいえませんが、純粋にこれだけコミットしたのすごいな〜おつかれさま!という意味合いで作っています。(コミット数だけで評価されることはないです)
開発チームの生産性や健全性の可視化・改善観点で取り組んでみるのも面白そう。
2021年もおつかれさまでした!!!
24日目のアドベントカレンダーは @sazanami5 さんの 初心者が語るフレームワークの違いと魅力 ~CakePHPとLaravel~です!