【要約】Claude Code のログでブランチ運用を数えたら、git_branch の "HEAD" が2つの意味を持っていた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
著者はClaude Codeのログからブランチ運用を集計した。しかし、定義不足により誤った統計を導くリスクに直面した。
- ・
git_branchの "HEAD" が、detached HEADとGitリポジトリ外の両方を指しており、区別不能である。 - ・セッションが存在しても対話(turn)が0件のデータが混入し、統計の母数が不一致になる。
- ・1セッション内で作業ディレクトリ(cwd)が移動するため、どの場所を基準にするか不明確である。
// Approach
著者はログの欠陥を補完するため、物理的な状態と多数決を組み合わせた解析手法を採用した。
- ・
turnsテーブルを参照し、実際にターンが発生したセッションのみを母数として定義した。 - ・
Pathlibを用い、cwdから親ディレクトリへ.gitを探索し、リポジトリの有無を判定した。 - ・セッション内の
cwdの出現回数をカウントし、最も頻度の高いディレクトリを代表値とした。 - ・探索の無限ループを防ぐため、ホームディレクトリ等の特定のパスで探索を打ち切る処理を実装した。
// Result
解析の結果、ログの表面的な集計による誤認を防ぎ、実態を正確に明らかにした。
- ・「HEAD」と記録されたセッションのうち、約3分の2(132件)はそもそもGitリポジトリ外であった。
- ・リポジトリ内での名前付きブランチ利用率は、リポジトリ内セッションに限定すると3.9%であった。
- ・これにより、ログの仕様に起因する統計的なバイアスを排除した、精緻な運用分析が可能となった。
Senior Engineer Insight
> ログに基づく統計分析において、データの「定義」と「物理的な実態」の乖離を突いた良質な事例だ。特に、ログ上の文字列が複数の状態を内包している点を見抜いた洞察は、監視設計においても極めて重要だ。ただし、本手法は集計時点のファイルシステムに依存するため、過去の履歴を完全に再現するものではない。運用統計を出す際は、データの「鮮度」と「不変性」に留意すべきだ。