KPI・メトリクス設計
概要
プロジェクトおよび委託者のパフォーマンスを定量的に測定し、予算超過・進捗遅延・ボトルネックを早期に検知するためのKPI・メトリクス定義。
KPI一覧
1. 平均Issue完了時間
アサインから完了(MRマージ)までの平均所要時間。見積工数との比較で効率を測定する。
| 項目 | 定義 |
|---|---|
| 計測開始 | Issue がアサインされた日時 |
| 計測終了 | MR がマージされた日時 |
| 算出式 | Σ(完了日時 - アサイン日時) / 完了Issue数 |
| 表示単位 | 時間(h)または日(d) |
| 比較対象 | 見積工数(Issue に設定された estimated_hours) |
表示形式
平均完了時間: 18.5h
見積平均: 16.0h
効率比: 86.5% (見積 / 実績)
[棒グラフ: 見積 vs 実績 を Issue ごとに表示]効率比の判定
| 効率比 | 評価 | 色 |
|---|---|---|
| >= 90% | 優良 | 緑 |
| 70% - 89% | 標準 | 青 |
| 50% - 69% | 要改善 | オレンジ |
| < 50% | 問題あり | 赤 |
2. レビュー通過率(一発OK率)
MR提出後、修正なしで一発マージされた割合。
| 項目 | 定義 |
|---|---|
| 一発OK | MR提出後、変更要求(Changes Requested)なしでマージ |
| 算出式 | 一発OKのMR数 / 全MR数 × 100 |
| 表示単位 | パーセント(%) |
表示形式
一発OK率: 68.0%
全MR数: 25件
一発OK: 17件
要修正: 8件
[円グラフ: 一発OK / 1回修正 / 2回以上修正]3. 委託者別パフォーマンス
各委託者の生産性・品質を横断的に比較する。
| メトリクス | 算出方法 | 表示 |
|---|---|---|
| 完了Issue数 | 期間内に完了したIssue件数 | 件数 |
| 平均完了時間 | 上記「平均Issue完了時間」を委託者別に算出 | 時間 |
| 一発OK率 | 上記「レビュー通過率」を委託者別に算出 | % |
| 獲得報酬額 | 完了Issue の報酬合計 | 円 |
| 難易度加重スコア | Easy:1pt + Medium:2pt + Hard:3pt の合計 | ポイント |
表示形式
+----------+----------+----------+----------+----------+----------+
| 委託者 | 完了数 | 平均時間 | 一発OK率 | 獲得報酬 | スコア |
+----------+----------+----------+----------+----------+----------+
| 佐藤太郎 | 12件 | 14.2h | 75.0% | ¥480,000 | 28pt |
| 鈴木一郎 | 8件 | 20.1h | 62.5% | ¥320,000 | 18pt |
| 田中花子 | 10件 | 16.8h | 80.0% | ¥360,000 | 22pt |
+----------+----------+----------+----------+----------+----------+※ ランキング目的ではなく、適切なアサイン判断の参考データとして活用。
4. 週次/月次トレンドグラフ
時系列でKPIの変動を可視化する。
グラフ仕様
| グラフ | X軸 | Y軸 | 表示内容 |
|---|---|---|---|
| Issue完了推移 | 週(or 月) | 件数 | 完了Issue数の推移(積み上げ棒グラフ) |
| 予算消化推移 | 週(or 月) | 金額(円) | 消化額の累積推移(折れ線) + 予算上限ライン |
| 効率比推移 | 週(or 月) | パーセント | 平均効率比の推移(折れ線) |
| レビュー通過率推移 | 週(or 月) | パーセント | 一発OK率の推移(折れ線) |
Issue完了推移グラフ(イメージ)
件数
10 |
8 | ██
6 | ██ ██ ██
4 | ██ ██ ██ ██
2 | ██ ██ ██ ██ ██
0 +----+-----+-----+-----+-----+---→ 週
W1 W2 W3 W4 W5予算消化推移グラフ(イメージ)
金額(万円)
120 |- - - - - - - - - - - - - - - 予算上限
100 | /
80 | / /
60 | / /
40 | / /
20 | / /
0 +----+-----+-----+-----+-----+---→ 週
W1 W2 W3 W4 W5グラフ表示切替
- 期間: 直近4週間 / 直近3ヶ月 / カスタム範囲
- 粒度: 週次 / 月次
- プロジェクト: 全体 / 個別プロジェクト選択
アラートルール定義
自動検知してダッシュボード通知 + Slack/Discord通知を行うルール。
アラート一覧
| ID | アラート名 | 条件 | 重要度 | 通知先 |
|---|---|---|---|---|
| A-001 | 予算超過警告 | 予算消化率 > Issue消化率 + 20% | 🔴 高 | Slack + ダッシュボード |
| A-002 | 進捗遅延警告 | Issue消化率 < 期間経過率 - 15% | 🟡 中 | Slack + ダッシュボード |
| A-003 | ボトルネック警告 | レビュー待ち滞留 > 3日 | 🟡 中 | Slack + ダッシュボード |
| A-004 | 予算枯渇危険 | 残予算 < 未完了Issue報酬合計の20% | 🔴 高 | Slack + ダッシュボード |
| A-005 | ETA超過警告 | ETA予測日 > プロジェクト期限 | 🔴 高 | Slack + ダッシュボード |
| A-006 | 委託者過負荷 | 特定委託者の担当Issue数 > 5件 | 🟡 中 | ダッシュボードのみ |
アラート詳細
A-001: 予算超過警告
条件:
予算消化率 - Issue消化率 > 20%
例:
予算消化率 = 65%
Issue消化率 = 25%
乖離 = 40% → 🔴 アラート発火
意味:
予算の消化ペースに対してIssueの完了が追いついていない。
報酬設定が高すぎるか、未完了Issueが多い可能性がある。
対応アクション:
- 未着手Issueの報酬額を見直す
- 低優先度Issueをスコープアウトする
- 委託者の追加アサインを検討するA-002: 進捗遅延警告
条件:
期間経過率 - Issue消化率 > 15%
期間経過率 = (現在日 - 開始日) / (期限日 - 開始日) × 100
例:
期間経過率 = 60%(プロジェクト期間の60%が経過)
Issue消化率 = 40%
遅延度 = 20% → 🟡 アラート発火
意味:
時間経過に対してIssue消化が遅れている。
このペースでは期限内に完了しない見込み。
対応アクション:
- ボトルネックの特定と解消
- 委託者の追加投入
- スコープの見直しA-003: ボトルネック警告
条件:
レビュー待ちステータスのIssueが3日以上滞留
算出:
現在日時 - レビュー待ちステータスに遷移した日時 > 72時間
意味:
レビューが停滞しており、委託者の次タスク着手を阻害している。
対応アクション:
- レビュアーにリマインド通知を送信
- 別のレビュアーをアサインするA-004: 予算枯渇危険
条件:
残予算 < 未完了Issue報酬合計 × 20%
例:
残予算 = ¥48,000
未完了Issue報酬合計 = ¥360,000
比率 = 13.3% → 🔴 アラート発火
意味:
残予算で未完了Issueの報酬を賄えない。
プロジェクト予算の追加か、Issueの優先度見直しが必要。
対応アクション:
- 予算の追加申請
- 低優先度Issueのスコープアウト
- Issue報酬額の見直しA-005: ETA超過警告
条件:
ETA予測日 > プロジェクト期限日
算出:
ETA予測日 = 現在日 + (残Issue数 / 週間完了ペース) × 7
意味:
現在のペースではプロジェクト期限に間に合わない。
対応アクション:
- 委託者の追加投入
- 並行作業の推進
- スコープの縮小A-006: 委託者過負荷
条件:
特定委託者の進行中 + レビュー待ち + FB対応中のIssue数 > 5件
意味:
1人の委託者に過度にタスクが集中している。
品質低下やバーンアウトのリスク。
対応アクション:
- タスクの再分配
- 新規アサインの一時停止通知形式
Slack通知テンプレート
🔴 予算超過警告
プロジェクト: ECサイトリニューアル
予算消化率: 65% | Issue消化率: 25% | 乖離: +40%
→ ダッシュボードで確認: https://app.example.com/projects/1🟡 ボトルネック警告
プロジェクト: ECサイトリニューアル
Issue: #108 決済画面UI
レビュー待ち: 5日経過
担当レビュアー: 山田太郎
→ レビューする: https://gitlab.example.com/mr/108通知頻度制御
| ルール | 制御 |
|---|---|
| 同一アラートの再通知 | 24時間に1回まで |
| アラート解消時 | 解消通知を1回送信 |
| 通知チャンネル | プロジェクトごとに設定可能 |
API連携
| エンドポイント | メソッド | 説明 |
|---|---|---|
GET /api/v1/metrics/overview | GET | KPIサマリー |
GET /api/v1/metrics/contractors | GET | 委託者別パフォーマンス |
GET /api/v1/metrics/trends?period=weekly&range=4w | GET | トレンドデータ |
GET /api/v1/alerts | GET | アクティブアラート一覧 |
GET /api/v1/alerts/history | GET | アラート履歴 |
レスポンス例: GET /api/v1/metrics/overview
json
{
"avg_completion_time_hours": 18.5,
"avg_estimated_hours": 16.0,
"efficiency_ratio": 86.5,
"first_pass_rate": 68.0,
"total_completed_issues": 25,
"total_mrs": 25,
"first_pass_count": 17
}レスポンス例: GET /api/v1/alerts
json
{
"alerts": [
{
"id": "a-001-proj-3",
"rule_id": "A-001",
"severity": "high",
"project_id": 3,
"project_name": "API基盤構築",
"message": "予算消化率(92%)がIssue消化率(20%)を大幅に超過しています(乖離: +72%)",
"triggered_at": "2026-03-27T10:00:00Z",
"is_acknowledged": false
}
]
}