DORA 指標 (Deployment Frequency / Lead Time / MTTR / Change Failure Rate)
DORA (DevOps Research and Assessment) の 4 指標は、開発組織のデリバリ性能を測定する
業界標準の KPI セット。Parky では 毎週月曜 09:00 JST に過去 7 日分を
GitHub API から自動収集し、#p2-deploys へ Discord embed で通知している。
実装:
scripts/dora/collect-metrics.mjs (Node.js / 依存ゼロ) +
.github/workflows/dora-weekly.yml (cron + workflow_dispatch)。
手動実行で since / until を渡すと月次・四半期にも流用可能。
4 指標の定義 (Parky 実装)
| 指標 | 計算式 | データソース |
|---|---|---|
| Deployment Frequency | deploy-api-prod の successful run 数 ÷ 期間日数 |
GitHub Actions workflow_runs |
| Lead Time for Changes | PR created_at → 該当 prod deploy success までの中央値 (h) |
Pull Requests + workflow_runs (head_sha マッチ) |
| MTTR | incident label 付き Issue の open → close 中央値 (h) | Issues (labels=incident) |
| Change Failure Rate | (rollback / hotfix 扱いの prod deploy) ÷ (prod success deploy 総数) | workflow_runs (キーワード判定 + 30 分以内再 deploy) |
レベル閾値 (DORA "State of DevOps" 標準)
| 指標 | Elite | High | Medium | Low |
|---|---|---|---|---|
| Deployment Frequency | 1 日 1 回以上 | 1 週 1 回以上 | 1 ヶ月 1 回以上 | それ以下 |
| Lead Time for Changes | < 1 day | < 1 week | < 1 month | それ以上 |
| MTTR | < 1 hour | < 1 day | < 1 week | それ以上 |
| Change Failure Rate | < 15% | 15-30% | 30-45% | > 45% |
Parky 現状フェーズの解釈
Parky は 2026-04 から 1 ヶ月 / 1 人開発、リリース前 (web/admin/owner/marketing は本番投入済、Mobile Flutter は移植中) のフェーズにある。DORA 指標を 絶対水準 で Elite/High/Medium/Low と判断するのではなく、以下の補正を加えて読む:
-
Deployment Frequency:
devブランチ直接 commit 運用 (feedback_parky_dev_direct) のため毎日 1+ 回が常態。 Elite 基準を満たすのが当然で、逆に 1/日を割ったら何かが詰まっているサイン。 -
Lead Time for Changes:
PR レビュー文化が無く dev への直 push なのでサンプル数が少ない。本番 (main) リリース前は
n=0 〜 数件が普通。Flutter リリース後 (2026-06〜) に再評価。 -
MTTR:
現状 incident label 運用が未確立。
placeholder表示が出るのは 既知の挙動。incident label を付けた Issue 運用を始める or Sentry incident 連携が入ったタイミングで 本指標が意味を持つ。 - Change Failure Rate: "rollback" / "revert" キーワードまたは 30 分以内再 deploy をヒューリスティクスに使用。 Sentry の error spike 連動など、より定量的な判定は Phase 2 (ARR 1 億時) で精緻化する想定。
運用
週次レポート
- 毎週月曜 09:00 JST、自動で
#p2-deploysに投稿 - JSON 成果物は
.work/output/parky/dora/{YYYY-MM-DD}.jsonに Actions artifact として 90 日保管
手動実行
# Actions UI から (since / until 指定可)
gh workflow run dora-weekly.yml -f since=2026-04-01 -f until=2026-04-30
# ローカル CLI から (GITHUB_TOKEN 必要)
GITHUB_TOKEN=ghp_xxx GITHUB_REPOSITORY=high-field/parky \
node scripts/dora/collect-metrics.mjs --since 2026-04-24 --until 2026-05-01
# Discord にも飛ばす場合
DISCORD_WEBHOOK_OPS=https://... GITHUB_TOKEN=... \
node scripts/dora/collect-metrics.mjs --since ... --until ... --out discord
追加が必要な GitHub Secret
DISCORD_WEBHOOK_OPS—#p2-deployswebhook (synthetic-healthcheck と同じものを再利用)GITHUB_TOKEN— Actions が自動付与 (read-only で OK)