バス係数

チームの何人が離脱したらプロジェクトが停止するかを示す指標

チーム運用

バス係数とは

バス係数 (Bus Factor) は、「チームの何人がバスに轢かれたら (= 突然離脱したら) プロジェクトが停止するか」を示す指標である。バス係数が 1 なら、1 人の離脱でプロジェクトが止まる危険な状態だ。

バス係数の目安

バス係数 リスク 状態
1 致命的 1 人に知識が集中 (属人化)
2 高い 最低限のバックアップ
3+ 中程度 知識が分散されている
チーム全体 低い 全員が全体を理解

属人化の兆候

「○○さんに聞かないと分からない」(特定の人だけがデプロイ手順を知っている)、コードレビューが 1 人に集中 (特定のモジュールは 1 人しかレビューできない)、ドキュメントがない (手順が個人の頭の中にしかない)、休暇中に問題が解決できない (担当者不在で障害対応が遅延) といった兆候がある。

バス係数を上げる方法

ペアプログラミング / モブプログラミング

1 人が実装 → 1 人だけが理解
✅ 2 人で実装 → 2 人が理解 (バス係数 +1)
✅ チームで実装 → 全員が理解

コードレビュー

PR レビューで知識を共有する。レビュアーをローテーションし、特定の人に偏らないようにする。

ドキュメント化

アーキテクチャは ADR (Architecture Decision Records)、デプロイ手順は README や runbook、障害対応はインシデント対応手順書、ビジネスロジックは設計ドキュメントで記録する。

コードの可読性

書いた本人しか理解できないコードは、その人が離脱した瞬間にメンテナンス不能になる。変数名や関数名を明確にし、トリッキーなワンライナーを避けるだけで、チーム全員がコードを読める状態を維持できる。

Git で属人化を検出

# ファイルごとのコミット者数を確認
git log --format='%an' -- src/critical-module.ts | sort -u | wc -l
# 1 → バス係数 1 (危険)

# 特定ディレクトリの貢献者
git shortlog -sn -- src/payments/
#  45  Alice    ← Alice に集中
#   2  Bob

AWS での属人化リスク

1 人だけが IAM を管理している場合は複数人に管理権限を付与する。デプロイ手順が口伝なら CI/CD で自動化する。インフラが手動構築なら IaC (SAM/CloudFormation) で管理する。

バス係数の理解を深めるには関連書籍が参考になる。

関連用語