本文へ移動

ホーム / EM / 第4部 開発の生産性

第4部 開発の生産性・第8章

生産性の指標

★★★ 必須8トピック・面接 5問

チームの生産性を数字と声の両方でつかみ、ボトルネックを見つけて直すための指標の使い方を押さえる。

8.1Four Keys(DORA の指標)

用語★★★ 必須
ひとことで

デプロイ頻度・変更のリードタイム・変更失敗率・復旧時間(Four Keys)で、チームの状態を見る。

開発の生産性を「書いたコードの行数」や「コミット数」で測るのは誤りです。よく使われるのは、DORA(DevOps Research and Assessment)の調査から生まれた Four Keys です。速さ(2つ)と安定性(2つ)を組にして見るのが特徴で、片方だけを上げる無理な改善に気づけます。

Four Keys を時間の流れで見る時間コミット変更のリードタイム失敗復旧時間● の数 = デプロイ頻度(期間あたり)変更失敗率 = 失敗したデプロイ ÷ 全デプロイ(この例では 1/5 = 20%)
頻度とリードタイムは速さ、変更失敗率と復旧時間は安定性。片方だけを見ないように組にして見る
指標意味測り方の例
デプロイ頻度どれだけの頻度で本番に出しているかCI/CD の本番デプロイの記録を数える
変更のリードタイムコミットから本番に出るまでの時間コミット時刻とデプロイ時刻の差(中央値)
変更失敗率デプロイのうち障害・切り戻し・緊急修正になった割合切り戻しやホットフィックスを障害チケットと結びつける
復旧時間(以前は MTTR と呼ばれた)デプロイが原因で起きた障害から直るまでの時間インシデントの開始と解消の時刻の差

小さな変更をこまめに出すチームほど、速さと安定性の両方がよい傾向がある、というのが DORA の調査の大きな結論です。大きな変更をまとめて出すと、1回の失敗の影響も原因の切り分けも大きくなるからです。

なお DORA は指標の定義を調査のたびに見直しています。近年は5つ目の指標としてデプロイのやり直し率(本番の障害に対応するための、予定外のデプロイの割合)を加え、「スループット(速さ)」と「不安定さ」の2つのまとまりで整理しています。まずは Four Keys の4つを測れるようにし、慣れてきたら追加を考えるとよいでしょう。

指標の使い方と、使ってはいけない使い方

面接ではこう答える

Four Keys は DORA の調査から生まれた4つの指標で、デプロイ頻度と変更のリードタイムが速さ、変更失敗率と復旧時間が安定性を表します。速さと安定性を組にして見るので、片方だけを無理に上げる改善に気づけます。調査の大きな結論は、小さな変更をこまめに出すチームほど両方がよい傾向にあるということです。近年は定義が見直され、デプロイのやり直し率を加えた5つで整理されていますが、まずは4つを測れるようにするところから始めます。

ひとことで

「指標が目標になると、よい指標ではなくなる」。指標はチームの変化を見て対話するために使い、個人の評価や目標にしない。

指標は対話のきっかけにする変化を見るトレンドなぜかを話すチームで仕組みを直すボトルネックまた見る効いたか
数字そのものを目標にせず、話し合いと改善のきっかけに使う
よい使い方使ってはいけない使い方
チーム自身が、自分たちの変化(トレンド)を見る個人の評価や順位づけに使う
「なぜリードタイムが伸びた?」と対話のきっかけにする数字そのものを目標にする(数字だけが改善され中身は変わらない)
速さと安定性を組にして見る性質の違うチーム同士で比べる
ボトルネックを探して、仕組みを直す行数・コミット数・PR 数で人を比べる

「指標が目標になると、よい指標ではなくなる」(グッドハートの法則)を覚えておきます。たとえばデプロイ頻度を目標にすると、意味のない小さなデプロイが増えるだけです。

面接ではこう答える

グッドハートの法則は、指標が目標になると、その指標はよい指標ではなくなる、という考え方です。たとえばデプロイ頻度を目標にすると、意味のない小さなデプロイが増えるだけです。そのため私は、指標をチーム自身が自分たちの変化を見るために使い、「なぜリードタイムが伸びたのか」と話し合うきっかけにしています。個人の評価や順位づけ、性質の違うチーム同士の比較には使いません。

ひとことで

開発者が日々どれだけ気持ちよく仕事ができるか。フィードバックの速さ・認知負荷・集中できる時間で見る。

DevEx(開発者体験)の3つの見方フィードバックの速さテスト・ビルド・レビューの返り認知負荷覚えること・手順の複雑さ集中できる時間会議・割り込みに邪魔されない時間アンケートの声と、Four Keys などの数字を並べて見る
3つのどれかが悪いと、数字に表れる前に「仕事がしにくい」と感じられる

数字だけでは「なぜ遅いか」は分かりません。開発者が日々どれだけ気持ちよく仕事ができるか(DevEx:Developer Experience)も合わせて見ます。よく使われる見方は次の3つです。

  • フィードバックの速さ:テスト・ビルド・レビューの結果がどれだけ早く返ってくるか。
  • 認知負荷:仕事に必要な知識の量。手順が複雑・ドキュメントがないと重くなる。
  • 集中できる時間:会議や割り込みに邪魔されず作業できる時間がまとまってとれるか。

四半期ごとなどに短いアンケート(「CI の待ち時間に困っていますか」「まとまった作業時間がとれていますか」など5段階)をとり、Four Keys の数字と並べて見ると、手を打つべき場所が見えてきます。満足度・成果・活動・コミュニケーションと協力・効率とフローの5つの観点で見る SPACE という枠組みも知られています。どの枠組みでも、1つの数字で生産性を決めつけないのが共通の考え方です。

面接ではこう答える

DevEx は Developer Experience の略で、開発者が日々どれだけ気持ちよく、つまずかずに仕事ができるかを表します。よく使われる見方は、テストやレビューの結果が返ってくるまでの速さ、仕事に必要な知識や手順の多さである認知負荷、会議や割り込みに邪魔されずに集中できる時間の3つです。数字だけでは「なぜ遅いか」が分からないので、短いアンケートで声を集め、Four Keys などの数字と並べて見ます。満足度や効率など5つの観点で見る SPACE という枠組みもあり、どれでも1つの数字で生産性を決めつけないことが共通しています。

8.4CI/CD とボトルネック

用語★★★ 必須
ひとことで

テストと配信の自動化、プレビュー環境、速いビルドが生産性の土台。

テストと配信の自動化(CI/CD)、PR ごとに動作を確かめられるプレビュー環境、速いビルドは、チームの生産性の土台です。CI が20分かかれば、1日に何度も待たされ、その間に集中が切れます。

ボトルネックの見つけ方

「PR を作ってから本番に出るまで」を区間に分けて、それぞれの時間を測ります。どこで一番待っているかが分かれば、打ち手が決まります。

PR から本番までの時間を分ける(例)最初のレビュー待ちレビューCI再実行デプロイ待ちPR 作成本番ここが一番長い区間ごとに中央値と p90 を測り、一番長いところから手を打つ
待ち時間は CI よりも「人を待つ時間」に隠れていることが多い
区間よくある原因打ち手の例
PR 作成 → 最初のレビューレビューする人が決まっていない・忙しいレビュー担当の自動割り当て、「最初の反応は半日以内」などの目安
レビュー中PR が大きすぎるPR を小さく分ける(目安:数百行まで)
CI の実行テストが遅い・並列化していない・キャッシュがない依存のキャッシュ、テストの並列化、変更部分だけテスト
CI の再実行たまに落ちる不安定なテスト(フレーキーテスト)不安定なテストを一覧にし、隔離して直す
マージ → 本番手作業の承認・決まった曜日だけのリリース自動デプロイ、段階的リリース

GitHub などのデータから、区間ごとの時間の中央値と、遅いほうの1割(p90)を見ます。平均だけだと、一部の極端に遅い PR に引っぱられます。メンバーへの「一番待たされているのはどこ?」という質問も、数字と同じくらい役に立ちます。

高速化の具体的な方法は SRE の「ビルド・CIの高速化」で。

面接ではこう答える

CI/CD はテストとデプロイの自動化のことで、プレビュー環境や速いビルドと合わせて、チームの生産性の土台になります。改善するときは、PR を作ってから本番に出るまでを、最初のレビュー・レビュー中・CI の実行・再実行・マージから本番、と区間に分けて時間を測ります。待ち時間は CI そのものより、レビューの人を待つ時間に隠れていることが多いです。中央値と遅いほうの1割を見て、一番待っている区間から手を打ちます。

ひとことで

同時に進める量(WIP)、着手から完了まで(リードタイム)、期間あたりの完了数(スループット)で仕事の流れを見る。

リトルの法則リードタイム着手から完了まで=WIP同時に進めている量÷スループット期間あたりの完了数例:WIP 10件・週5件終わるなら、平均リードタイムは約2週間。WIP を減らすと短くなる
同時に抱える量を減らすほど、1つあたりは早く終わる

Four Keys とあわせて、チームの中の仕事の流れを見る指標もよく使います。

指標意味見方
WIP(仕掛かり)同時に進めている作業の数人数より大きく多いなら、抱えすぎ
リードタイム着手から完了までの時間中央値と遅いほうの1割を見る
スループット期間あたりに終わった作業の数計画の予測に使う
滞留時間作業が「待ち」の状態だった時間レビュー待ち・確認待ちで長くなる

この3つには、平均でリードタイム = WIP ÷ スループットという関係があります(リトルの法則)。人を増やさなくても、同時に抱える量を減らすだけでリードタイムは短くなります。「みんな忙しいのに、なかなか終わらない」ときは、まず WIP を数えてみます。

面接ではこう答える

チームの仕事の流れは、同時に進めている作業の数である WIP、着手から完了までのリードタイム、期間あたりに終わる数のスループットで見ます。平均ではリードタイムは WIP をスループットで割ったものになる、というリトルの法則があり、人を増やさなくても同時に抱える量を減らせばリードタイムは短くなります。みんな忙しいのに終わらないチームでは、まず WIP を数え、着手を減らして終わらせることを優先します。

数字では分からない「なぜ」は、短いアンケートで聞きます。続けて比べられるよう、同じ質問を定期的にとります。

設計のポイント中身
短く5〜10問、5分で答えられる長さ。長いと回答が減る
定期的に四半期ごとなど。同じ質問で変化を見る
具体的に「CI の待ち時間に困っていますか」「まとまった作業時間がとれていますか」のように聞く
自由記述を1つ「一番困っていることは何ですか」
匿名に個人が特定されないよう、少人数のチームの結果はまとめて出す
結果を返す何が分かり、何をするかを全員に共有する

一番大事なのは結果を返して、何か1つは変えることです。答えても何も変わらないアンケートは、回を重ねるごとに回答が減り、本音が書かれなくなります。

指標は、チームが毎週見る場所にまとめておくと使われます。見るたびに全部を細かく読む必要はなく、変化に気づけることが大事です。

並べるもの例
速さデプロイ頻度、変更のリードタイム(中央値・遅いほうの1割)
安定性変更失敗率、復旧時間、SLO の達成状況
流れWIP、レビュー待ちの時間、CI の時間
負担オンコールの呼び出し回数、割り込みの時間
声最新のアンケートの結果と、そこから決めた打ち手
  • 週1回、チームの定例で5分ほど見る。大きく動いた数字だけ話す。
  • 1つの週の上下より、数週間の傾向を見る。
  • 数字が悪くなったら「誰のせいか」ではなく「何が変わったか」を聞く。

最初から全部をそろえようとせず、すぐ取れる2〜3個から始めて、使われるものだけ残します。

経営や事業側への報告では、エンジニアの言葉の指標をそのまま見せても伝わりにくいです。事業の成果と結びつけて説明します。

エンジニアの指標事業の言葉にすると
リードタイムが5日 → 2日要望から利用者に届くまでが半分以下になった
変更失敗率が下がったリリースによる障害が減り、問い合わせが減った
CI の時間が半分開発者1人あたり毎日〇分の待ちが減った(チーム全体で月〇時間)
SLO の達成利用者が使えなかった時間が、目標の範囲に収まった
  • 成果と投資をセットで:「何に時間を使い、何がよくなったか」を並べる。
  • 悪い数字も出す:隠すと、あとで信頼を失う。理由と打ち手を添える。
  • 個人の数字は出さない:チーム単位の傾向だけを報告する。

「エンジニアの生産性を上げてほしい」と言われたら、まず何に困っているのか(機能が届くのが遅い・障害が多い・費用が高いなど)を聞き、それに合う指標を選んで合意します。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • Four Keys で速さと安定性を組にして見る
  • 指標はチームの変化を見て対話するためのもの。個人の評価や目標にしない
  • WIP・リードタイム・スループットで流れの詰まりを見つける
  • 数字とアンケート(DevEx)を並べて、手を打つ場所を決める

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1チームの生産性をどう測り、改善しましたか?

模範回答

例えば、次のように答えます。前のチームでは Four Keys を使いました。デプロイの記録と GitHub のデータから、デプロイ頻度と変更のリードタイムなどを測ったところ、リードタイムの中央値が約5日あり、内訳を見ると半分以上が「最初のレビューを待つ時間」と「不安定なテストによる CI のやり直し」でした。メンバーへのアンケートでも、待ち時間が一番の不満でした。

施策は3つです。レビュー担当の自動割り当てと「最初の反応は半日以内」という目安、PR を小さく分けるルール、不安定なテストの一覧化と修正です。3か月後、リードタイムは約2日になり、デプロイ頻度は週2回からほぼ毎日になりました。変更失敗率は悪化していないことも確かめました。

注意したのは、指標を個人の評価に使わないことです。チームが自分たちの変化を見て、改善の話し合いをするための数字として扱いました。

深掘りされたら

  • 指標を目標にしてしまうと、どんな問題が起きますか?
  • 数字では見えない生産性の問題はどう見つけますか?

見られているポイント指標・課題・施策・結果

Q2Four Keys とは何ですか? 個人の評価に使ってはいけないのはなぜですか?

模範回答

Four Keys は、DORA の調査から生まれた開発チームの4つの指標です。デプロイ頻度と変更のリードタイム(コミットから本番までの時間)が速さ、変更失敗率と復旧時間が安定性を表します。速さと安定性を組にして見ることで、片方だけを無理に上げる改善に気づけます。

個人の評価に使ってはいけない理由は2つあります。1つは、これらはチームの仕組みの状態を表す数字で、個人の働きでは決まらないことです。リードタイムはレビューの待ちや CI の速さで決まります。もう1つは、評価に使うと数字そのものを良くしようとして、意味のない小さなデプロイを増やすなど中身が変わらないまま数字だけが変わるからです(グッドハートの法則)。

チーム自身が変化を見て「なぜ伸びたのか」を話し合うきっかけとして使うのが、正しい使い方だと考えています。

深掘りされたら

  • 数字には出ない生産性の問題はどう見つけますか?
  • チーム同士を Four Keys で比べてもよいですか?

見られているポイント4つの指標の意味と、使い方の注意

Q3変更のリードタイムが長いとき、何から調べますか?

模範回答

「PR を作ってから本番に出るまで」を区間に分けて、どこで一番時間がかかっているかを調べます。最初のレビューまでの待ち、レビュー中、CI の実行、不安定なテストによる再実行、マージから本番までの待ち、などです。GitHub などのデータから区間ごとの中央値と遅いほうの1割(p90)を出します。

よくあるのは、CI よりも人を待つ時間が長いケースです。最初のレビューが遅いなら、レビュー担当の自動割り当てや「最初の反応は半日以内」といった目安を決めます。PR が大きすぎてレビューが進まないなら、小さく分けるルールにします。CI が遅いならキャッシュや並列化、不安定なテストは一覧にして直します。マージ後に手作業の承認や決まった曜日だけのリリースがあるなら、自動デプロイを検討します。

数字と合わせて、メンバーに「一番待たされているのはどこか」を聞くと、見落としが減ります。

深掘りされたら

  • 不安定なテストはどう扱いますか?
  • レビューの速さと質はどう両立しますか?

見られているポイント区間に分けて測る・ボトルネックに合わせた手

Q4メンバーはみんな忙しそうなのに、なかなか仕事が終わりません。どう考え、何をしますか?

模範回答

まず、チームが同時に進めている作業の数、つまり WIP を数えます。人数より大きく多いなら、抱えすぎて切り替えや待ちが増えている可能性が高いです。平均のリードタイムは WIP をスループットで割ったものになるので、同時に抱える量を減らすだけでも1つあたりは早く終わります。

具体的には、新しい着手を止めて、終わりかけのものから片づける「止めて、終わらせる」を合言葉にし、カンバンで WIP の上限を決めます。あわせて、作業が待ちになっている場所、たとえばレビュー待ちや他チームの確認待ちを見て、そこを直します。数週間後にリードタイムとスループットを比べて、効いたかを確かめます。

深掘りされたら

  • WIP の上限はどう決めますか?
  • 上限を守れないときはどうしますか?

見られているポイントWIP とリードタイムの関係を理解し、流れの詰まりを直せるか

Q5経営から「エンジニアの生産性を数字で示してほしい」と言われたら、どうしますか?

模範回答

まず、何に困っているのかを聞きます。機能が届くのが遅い、障害が多い、費用が高いなど、困りごとによって見るべき指標が違うからです。そのうえで、チーム単位で、速さと安定性を組にした Four Keys のような指標を提案します。

コミット数や行数のような、個人の活動量の数字は出さないと伝えます。数字が目標になると中身が伴わない改善が起きるからです。報告では、リードタイムが何日から何日になり、要望が何日早く届くようになった、のように事業の言葉に直し、悪い数字も理由と打ち手を添えて出します。

深掘りされたら

  • 個人ごとの数字を求められたら、どう答えますか?

見られているポイント困りごとから指標を選び、害のない使い方を説明できるか