なぜ git log 以上のツールが必要なのか?
プロジェクトが実際にどれほど「健全」か、疑問に思ったことはありませんか?通常、私たちは「最近みんな頑張っているな」といった主観的な感覚で生産性を判断しがちです。しかし、上司への説得力のあるレポートを作成したり、単にワークフローを最適化したりするためには、客観的な数値が必要です。
以前、私はコミット数を数えるために git log –author=”Name” –oneline | wc -l というコマンドを使っていました。しかし、この方法はあまりにも原始的です。追加・削除されたコード量や、時間帯ごとの貢献度といった全体像を把握することはできません。ある時、新しいメンバーが誤ってブランチをフォースプッシュ(force push)し、チーム全員のコードが午後のひとときで消えてしまったことがありました。もしその時、リポジトリの履歴を綿密に監視し、削除したコミットの復元方法を熟知していれば、結果は違っていたかもしれません。それ以来、私はより視覚的な分析ツールを探し始めました。
git-quick-stats は、Grafanaのような複雑なダッシュボード設定を必要としない、コマンドラインの効率を向上させる軽量なツール(CLI)です。わずか数秒で、Gitリポジトリのあらゆる指標を詳細に調査できます。
git-quick-stats を一瞬でインストールする
このツールは、実際には最適化されたシェルスクリプトです。使用しているOSに合わせて、以下の方法で素早くインストールできます:
1. macOSの場合
Homebrewがインストールされていれば、以下のコマンドを入力するだけです:
brew install git-quick-stats
2. Linux (Ubuntu/Debian) の場合
Debian系のディストリビューションでは、aptコマンドを使用します:
sudo apt update && sudo apt install git-quick-stats
Arch LinuxユーザーはAURから見つけることができます:
yay -S git-quick-stats
3. ソースからインストール
最新バージョンを体験したい場合は、GitHubから直接クローンしてください:
git clone https://github.com/arzzen/git-quick-stats.git
cd git-quick-stats
sudo make install
インストールが完了したら、git-quick-stats -v を入力して準備が整ったか確認しましょう。
データの活用:対話モードから自動化まで
git-quick-stats の最大の利点は、直感的なメニューモードと柔軟なコマンドラインフラグの両方をサポートしていることです。
メニューモード(対話型)
プロジェクトのディレクトリに移動し、引数なしでコマンドを入力するだけです:
git-quick-stats
20以上のオプションが含まれるメニューが表示されます。以下の項目を簡単に確認できます:
- Author stats: 誰が最も貢献しているか?
- Daily stats: チームが最も活発に活動している曜日はいつか?
- Language stats: プロジェクト内のプログラミング言語の比率。
コマンドラインモード(自動化用)
Slackに送信したりログファイルに保存したりするためにデータを素早く取得する必要がある場合は、直接フラグを使用します。私がよく使うコマンドは以下の通りです:
全メンバーの貢献の概要を表示する:
git-quick-stats -a
期間でデータをフィルタリングする(スプリントレビューなどに便利):
環境変数 _GIT_SINCE を使用して統計範囲を制限します。
export _GIT_SINCE="2024-01-01"
git-quick-stats -u
ちょっとしたヒント:コミット数だけを見ないでください。insertions(挿入)と deletions(削除)の比率に注目しましょう。優れたプログラマーは、新しいコードを書くよりも, 不要なコードを削除することの方が多いものです。
数値を実際のアクションに変える
データは、その読み方を知って初めて価値を持ちます。プロジェクトの質を向上させるために、私がこのツールをどのように活用しているか、3つの方法を紹介します:
1. リスクのある「ホットスポット」を追跡する
git-quick-stats -f コマンドを使用して、最も頻繁に変更されているファイルをリストアップします。もし UserService.java が500回変更されている一方で、他のファイルが50回未満であれば、それは 密結合(Tight Coupling) の兆候です。そのファイルは多くのロジックを抱え込みすぎている可能性があり、すぐにリファクタリングが必要です。
2. バーンアウト(燃え尽き症候群)の兆候を察知する
git-quick-stats -T コマンドは、時間帯別の貢献グラフを表示します。もしグラフが午前1時や2時に集中したコミットを示していれば、チームが過負荷状態にある可能性があります。リーダーとして、単にその勤勉さを褒めるのではなく、業務量を調整すべきでしょう。
3. リポジトリ内の「ゴミ」を掃除する
ファイル統計機能のおかげで、2年間誰も触れていない古いモジュールを発見したことがあります。思い切って削除したところ、ソースコードのサイズが15%削減され、CI/CDのビルド速度が大幅に向上しました。また、全員の git fetch も軽くなりました。
要するに、git-quick-stats は従業員を「監視」するためのツールではありません。プロジェクトの健全性を理解するための「聴診器」なのです。チームメイトにプレッシャーを与えるのではなく、ワークフローを改善するために活用してください。

