OKRとは、めざす状態を言葉で書いた Objective(目標)1つに、その到達度を数値で測る Key Result(主要な成果)を3つほど組み合わせて書く目標設定の方法です。 エンジニアのOKRでは、Key Result に「リリースする」「導入する」といった作業ではなく、応答時間・エラー率・リードタイムのような測れる成果を書くことが要点になります。

この記事では、バックエンド・フロントエンド・SRE・QA・開発基盤の5つの役割ごとに記入例を20組用意し、作業を書いてしまった Key Result の書き直し例、スコアの計算式(Pythonと表計算の数式)、OKR・KPI・MBOの比較表、四半期の運用カレンダー、貼り付けて使えるOKRシートのテンプレートまでをまとめました。

確認環境:スコア計算は Python 3.11.15 で実行し、表計算の数式は LibreOffice Calc 24.2.7 のヘッドレス実行で同じ値になることを確かめています。

OKRの書き方の早見表

項目 書き方 例(社内の備品予約システム)
Objective めざす状態を1文で。数値は入れず、読んだ人が向かう方向をつかめる言葉にする 予約APIを速く安定させる
Key Result 指標・開始値・目標値・期限をそろえる。1つの Objective に3つ前後 検索APIのp95応答時間を800msから300msにする
個数 Objective は3〜5個、Key Result は Objective ごとに3つ前後 四半期にO2つ、KR6つ
期間 四半期(3か月)が基本。年間のOKRを四半期に分ける形も多い 10月〜12月
スコア 0.0〜1.0。式は(期末の値 − 開始値)÷(目標値 − 開始値) (450−800)÷(300−800)=0.70
スコアの目安 背伸びした目標では0.6〜0.7が狙いどころ 平均0.58なら「あと一歩」
Objective のスコア 配下の Key Result のスコアの平均 (0.70+0.70+1.00)÷3=0.80
KPIとの違い KPIは維持・監視する指標、OKRは期間を区切って大きく動かす目標 稼働率の監視はKPI、p95の大幅短縮はOKR
避けたい書き方 作業の完了だけを Key Result にする 「キャッシュを導入する」→「p95を300msにする」

個数とスコアの目安は、Google の re:Work「Set goals with OKRs」に記載されている内容です(3〜5個の Objective、Objective ごとに3つ前後の Key Result、0.0〜1.0 の採点、狙いどころは60〜70%)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「OKRの書き方とエンジニア向けの例|KPIとの違いとスコア計算」

OKRの構成:ObjectiveとKey Resultの役割

OKRは2つの部品でできています。

部品 役割 書くときの問い 形式
Objective どこへ向かうかを示す 3か月後、何がどう良くなっていたいか 言葉(定性的)
Key Result 着いたかどうかを判定する それが良くなったと、何の数値でわかるか 数値(定量的)

Objective は「向かう方向」、Key Result は「到達の証拠」 と分けて考えると書きやすくなります。Key Result の下に、そのために行う作業(施策・タスク)を並べますが、これはOKR本体とは別の欄に書きます。

Objective  : 予約APIを速く安定させる
  KR1      : 検索APIのp95応答時間を 800ms → 300ms
  KR2      : 5xxエラー率を 1.2% → 0.2%
  KR3      : 主要APIの自動テスト網羅率を 55% → 80%
    施策   : 検索結果のキャッシュ、N+1クエリの解消、結合テストの追加

Key Resultに入れる4つの要素

要素 内容 記入例
指標 何を測るか。測り方も決める 検索APIのp95応答時間(直近7日、APMの値)
開始値 期初の値。測れていなければ最初の2週間で測る 800ms
目標値 期末にめざす値 300ms
期限 いつの値で判定するか 12月最終週の7日間

開始値を書いておくと、期末にスコアを式で出せます。 「300ms以下にする」だけだと、どこから出発したかがわからず、450msまで縮めた前進を数値で表せません。

作業を書いてしまったKey Resultの書き直し対比表

エンジニアのOKRでいちばん多いのが、Key Result に作業の完了を書く形です。作業は終わっても、利用者や運用にとっての成果が出たかどうかはわかりません。「それをやると、何の数値がどう変わるのか」を1段掘り下げると成果の形になります。

No 作業を書いた形(直す前) 成果を書いた形(直した後) 掘り下げた問い
1 検索APIにキャッシュを導入する 検索APIのp95応答時間を800msから300msにする 導入すると何が速くなるか
2 監視ダッシュボードを作る 障害の検知から対応開始までの時間を30分から5分にする 作ると何が早くなるか
3 E2Eテストを100本書く リリース後1週間以内に見つかる不具合を月8件から2件にする 書くと何が減るか
4 CIを新しい基盤に移行する CIの所要時間を25分から8分にする 移行すると何が短くなるか
5 デザインシステムを整備する 新しい画面1枚の作成工数を5日から2日にする 整備すると何が楽になるか
6 コードレビューのルールを決める プルリクエストの初回レビューまでの時間を中央値20時間から4時間にする 決めると何が変わるか
7 ドキュメントを書く 新しく加わった人が最初の変更を出すまでの日数を10日から3日にする 書くと誰が何をできるか
8 ライブラリを最新版に上げる 重大度が高い既知の脆弱性の件数を14件から0件にする 上げると何が解消するか
9 画像を遅延読み込みにする 一覧画面のLCP(最大の要素が表示されるまでの時間)を4.2秒から2.5秒にする 対応すると何が改善するか
10 障害の振り返り会を開く 同じ原因の障害の再発を四半期3件から0件にする 開くと何が起きなくなるか

作業の完了しか書けない場合(たとえば新しい基盤の立ち上げ)は、段階ごとの配点を先に決めておく方法があります。「設計レビュー完了=0.3、検証環境で稼働=0.6、本番で稼働=1.0」のように決めておけば、期末の採点で迷いません。

書いた後の確認表

確認すること はい の場合 いいえ の場合の直し方
Key Result に数値と単位があるか そのまま 指標を1つ決めて開始値を測る
開始値と目標値の両方があるか そのまま 期初の値を追記する
チームの外の人が読んで達成を判定できるか そのまま 測定方法(どの画面のどの値か)を書く
チームの力で動かせる数値か そのまま 自分たちが動かせる手前の指標に置き換える
達成の見込みが5〜7割ほどか そのまま 確実に届くなら目標値を上げ、届く見込みが薄ければ期間を分ける
1つの Objective の Key Result が同じ指標に偏っていないか そのまま 速さ・品質・量など別の面の指標を1つ入れる

役割別のOKR記入例20組

題材は架空の「社内の備品予約システム」とその開発チームです。Objective 1つと Key Result 3つを1組として、役割ごとに4組ずつ、合計20組を載せます。数値は書き方を示すための例なので、自分のチームの開始値に置き換えて使ってください。

バックエンドのOKR例(4組)

No Objective Key Result(開始値 → 目標値)
1 予約APIを速く安定させる 検索APIのp95応答時間 800ms → 300ms / 5xxエラー率 1.2% → 0.2% / 主要APIの自動テスト網羅率 55% → 80%
2 データベースの負荷に余裕をつくる 1秒を超えるクエリの件数 1日120件 → 10件 / ピーク時のCPU使用率 85% → 60% / インデックスを使わない検索の種類 18 → 3
3 APIの仕様と実装を一致させる 仕様書と応答が食い違うエンドポイント 22件 → 0件 / 仕様からの自動テスト生成の対象 0本 → 40本 / 連携先からの仕様の問い合わせ 月15件 → 5件
4 夜間バッチを朝までに確実に終える 日次集計の所要時間 95分 → 30分 / 異常終了の回数 月6回 → 1回 / 手作業での再実行 月4回 → 0回

フロントエンドのOKR例(4組)

No Objective Key Result(開始値 → 目標値)
5 予約画面をすぐ使える速さにする 一覧画面のLCP 4.2秒 → 2.5秒 / 初回に読み込むJavaScriptのサイズ 1.8MB → 0.7MB / INP(操作への応答時間) 380ms → 200ms
6 だれでも操作できる画面にする 自動検査で見つかるアクセシビリティの指摘 64件 → 5件 / キーボードだけで完了できる主要操作 3/10 → 10/10 / 文字と背景のコントラスト不足 28か所 → 0か所
7 画面づくりを部品の組み合わせにする 共通部品を使っている画面の割合 30% → 80% / 新しい画面1枚の作成工数 5日 → 2日 / 見た目の差分の指摘 月12件 → 3件
8 入力のつまずきを減らす 予約フォームの途中離脱率 35% → 15% / 入力エラーの発生率 22% → 8% / 予約完了までの時間(中央値) 140秒 → 70秒

SREのOKR例(4組)

No Objective Key Result(開始値 → 目標値)
9 障害に早く気づき早く戻す 検知から対応開始までの時間 30分 → 5分 / 復旧までの時間(平均) 120分 → 30分 / 利用者からの連絡で気づいた障害の割合 40% → 10%
10 信頼性を数値で語れるようにする SLOを定義したサービス 2/9 → 9/9 / エラーバジェットの残量を見られるサービス 0 → 9 / SLOを下回った月 3か月中2回 → 0回
11 呼び出しの負担を軽くする 夜間の呼び出し 月18回 → 6回 / 対応が不要だったアラートの割合 55% → 15% / 手順書があるアラート 40% → 100%
12 同じ障害を繰り返さない 同じ原因の再発 四半期3件 → 0件 / 再発防止策の期限内完了率 50% → 90% / 復旧訓練を行ったサービス 1/9 → 6/9

QAのOKR例(4組)

No Objective Key Result(開始値 → 目標値)
13 リリース後の不具合を減らす リリース後1週間以内の不具合 月8件 → 2件 / 重大度が高い不具合の流出 四半期4件 → 0件 / テスト工程での検出率 70% → 90%
14 回帰テストを短い時間で回す 回帰テストの所要時間 3日 → 4時間 / 自動化した回帰テストケース 120/600 → 480/600 / 結果が安定しないテスト 9% → 1%
15 仕様の段階で不具合を見つける 設計レビューでの指摘 月5件 → 20件 / 仕様の抜けが原因の不具合 月6件 → 1件 / 受け入れ条件が書かれたチケットの割合 45% → 95%
16 テストの状況をだれでも見られるようにする テスト結果を自動集計できる機能 3/12 → 12/12 / 進み具合の集計にかける時間 週4時間 → 30分 / 不具合票の必須項目の記入率 60% → 98%

開発基盤のOKR例(4組)

No Objective Key Result(開始値 → 目標値)
17 リリースを日常の作業にする 週あたりの本番リリース 1回 → 5回 / 変更のリードタイム 72時間 → 24時間 / リリース手順の自動化率 40% → 100%
18 待ち時間の少ない開発環境にする CIの所要時間 25分 → 8分 / 開発環境の構築時間 半日 → 15分 / CIが環境の要因で止まる割合 12% → 2%
19 新しく加わった人が早く動けるようにする 最初の変更を出すまでの日数 10日 → 3日 / 手順書どおりに環境構築できた割合 50% → 100% / 環境に関する質問 月40件 → 10件
20 依存ライブラリを安心な状態に保つ 重大度が高い既知の脆弱性 14件 → 0件 / 更新が1年以上止まっている依存 23個 → 5個 / 更新の取り込みまでの日数(中央値) 45日 → 7日

役割別によく使う指標の一覧

Key Result の指標選びに迷ったら、次の表から自分のチームで測れるものを選ぶと書き出しやすくなります。

役割 速さ 品質・安定 量・効率
バックエンド p95/p99応答時間、バッチ所要時間 エラー率、テスト網羅率、遅いクエリ件数 処理できる件数、リソース使用率
フロントエンド LCP、INP、読み込みサイズ アクセシビリティの指摘数、表示崩れの件数 離脱率、操作完了までの時間、作成工数
SRE 検知までの時間、復旧までの時間 SLO達成率、再発件数 呼び出し回数、不要なアラートの割合
QA 回帰テストの所要時間 流出した不具合数、検出率 自動化率、集計にかける時間
開発基盤 CI所要時間、リードタイム、環境構築時間 脆弱性の件数、CIの安定度 リリース回数、質問の件数

OKR・KPI・MBOの比較早見表

3つは競合するものではなく、役割が違うので併用できます。

観点 OKR KPI MBO
正式な名前 Objectives and Key Results Key Performance Indicator(重要業績評価指標) Management by Objectives(目標による管理)
主な目的 力を入れる方向をそろえ、大きく前進する 状態を継続して測り、異常に気づく 個人の目標を決め、達成度を確かめる
目標の高さ 背伸びした高さ(0.6〜0.7で狙いどおり) 届くべき水準(100%が前提) 合意した水準(100%が前提)
期間 四半期が基本 継続(週次・月次で確認) 半期〜1年が多い
見える範囲 組織全体に公開 関係者に共有 本人と上長が中心
人事評価との関係 直接は結び付けない運用が基本 組織の成績として使うことがある 評価に使うことが多い
数 Objective 3〜5個に絞る 必要な数だけ 個人ごとに数個
振り返りの頻度 週次で確認、四半期末に採点 週次・月次 期中面談と期末

re:Work でも、OKRは人事評価と同じものではなく、個人を評価する包括的な手段ではないと説明されています。評価に直結させると届く目標ばかりが並びやすくなるため、OKRは挑戦の方向づけ、評価は別のしくみと分ける運用が一般的です。

KPIとOKRの使い分け

同じ指標でも、置かれた状況でどちらに書くかが変わります。

状況 書く先 例
いまの水準を保ちたい KPI 月間の稼働率 99.9% を保つ
いまの水準から大きく動かしたい OKR の Key Result 稼働率を 99.5% から 99.9% にする
OKRで到達した水準を保ちたい 次の期からKPI p95 300ms を上限として監視する
KPIが目安を下回り続けている 次の期のOKRに昇格 エラー率の改善を Objective にする

OKRで動かし、KPIで保つという流れで考えると整理できます。KPIが健全な範囲から外れたらOKRの候補にし、OKRで届いた値は次の期からKPIとして見守ります。

OKRのスコア計算:開始値・目標値・期末の値から求める

計算式

KRのスコア = (期末の値 − 開始値) ÷ (目標値 − 開始値)
             ※ 0.0 より小さければ 0.0、1.0 より大きければ 1.0 にする

Objectiveのスコア = 配下のKRのスコアの平均

この式は、増やしたい指標にも減らしたい指標にもそのまま使えます。応答時間のように減らす指標では分子も分母もマイナスになり、割った結果はプラスになります。

指標の向き 開始値 目標値 期末の値 計算 スコア
減らす(応答時間ms) 800 300 450 (450−800)÷(300−800)=−350÷−500 0.70
増やす(網羅率%) 55 80 85 (85−55)÷(80−55)=30÷25=1.2 → 上限 1.00
減らす(リードタイム時間) 72 24 80 (80−72)÷(24−72)=8÷−48=−0.17 → 下限 0.00

Pythonで計算する(実行結果つき)

タブ区切りのOKRシートを読み、Key Result のスコアと Objective の平均を出すスクリプトです。標準ライブラリだけで動きます。

"""OKRのスコア計算: 開始値・目標値・期末の値から 0.0〜1.0 を求める"""
import csv
import io
from collections import defaultdict

TSV = """objective\tkr\tstart\ttarget\tactual
O1 予約APIを速く安定させる\tKR1 検索APIのp95応答時間(ms)\t800\t300\t450
O1 予約APIを速く安定させる\tKR2 5xxエラー率(%)\t1.2\t0.2\t0.5
O1 予約APIを速く安定させる\tKR3 主要APIの自動テスト網羅率(%)\t55\t80\t85
O2 リリースを日常の作業にする\tKR1 週あたりの本番リリース回数\t1\t5\t3
O2 リリースを日常の作業にする\tKR2 変更のリードタイム(時間)\t72\t24\t80
O2 リリースを日常の作業にする\tKR3 リリース手順書の自動化率(%)\t40\t100\t76
"""


def kr_score(start: float, target: float, actual: float) -> float:
    """(期末の値 - 開始値) / (目標値 - 開始値) を 0.0〜1.0 に収める"""
    if target == start:
        raise ValueError("開始値と目標値が同じです")
    raw = (actual - start) / (target - start)
    return max(0.0, min(1.0, raw))


def label(score: float) -> str:
    if score >= 0.7:
        return "達成圏"
    if score >= 0.4:
        return "前進"
    return "見直し"


rows = list(csv.DictReader(io.StringIO(TSV), delimiter="\t"))
by_objective = defaultdict(list)

print(f"{'KR':<34}{'開始':>7}{'目標':>7}{'期末':>7}{'スコア':>6}")
for r in rows:
    s = kr_score(float(r["start"]), float(r["target"]), float(r["actual"]))
    by_objective[r["objective"]].append(s)
    print(f"{r['kr']:<34}{r['start']:>8}{r['target']:>8}{r['actual']:>8}{s:>8.2f}")

print()
total = []
for obj, scores in by_objective.items():
    avg = sum(scores) / len(scores)
    total.append(avg)
    print(f"{obj}: {avg:.2f} ({label(avg)})  KR={[round(s, 2) for s in scores]}")
print(f"全体の平均: {sum(total) / len(total):.2f}")

実行結果です(python3 okr_score.py)。

KR                                     開始     目標     期末   スコア
KR1 検索APIのp95応答時間(ms)                  800     300     450    0.70
KR2 5xxエラー率(%)                         1.2     0.2     0.5    0.70
KR3 主要APIの自動テスト網羅率(%)                   55      80      85    1.00
KR1 週あたりの本番リリース回数                        1       5       3    0.50
KR2 変更のリードタイム(時間)                       72      24      80    0.00
KR3 リリース手順書の自動化率(%)                     40     100      76    0.60

O1 予約APIを速く安定させる: 0.80 (達成圏)  KR=[0.7, 0.7, 1.0]
O2 リリースを日常の作業にする: 0.37 (見直し)  KR=[0.5, 0.0, 0.6]
全体の平均: 0.58

読み取れることは3つあります。

  • 網羅率は目標の80%を超えて85%でも、スコアは1.00で止まります。 上限を設けないと1.2になり、ほかの Key Result の遅れを平均で打ち消してしまいます。
  • リードタイムは開始値より後退したので0.00です。 下限を設けないとマイナスになり、平均が実態より低く出ます。
  • 全体の平均0.58は、狙いどころの0.6〜0.7にあと一歩の位置です。O2のリードタイムが伸びた原因を振り返りの題材にできます。

判定の区切り(0.7以上・0.4以上)はこのスクリプトでの例です。チームで区切りを決めておくと、期末の会話がそろいます。

重みを付ける場合と、数値で測りにくいKRの場合

Key Result の重要度に差があるときは重み付き平均を使います。作業の完了で判定する Key Result は、段階ごとの配点を先に決めます。

# 重み付き平均と、段階を決めておくKR
def kr_score(start, target, actual):
    return max(0.0, min(1.0, (actual - start) / (target - start)))

krs = [
    ("p95応答時間", kr_score(800, 300, 450), 0.5),
    ("5xxエラー率", kr_score(1.2, 0.2, 0.5), 0.3),
    ("テスト網羅率", kr_score(55, 80, 85), 0.2),
]
simple = sum(s for _, s, _ in krs) / len(krs)
weighted = sum(s * w for _, s, w in krs) / sum(w for _, _, w in krs)
print(f"単純平均 : {simple:.2f}")
print(f"重み付き : {weighted:.2f}")

# 段階を決めておくKR(期初に配点を合意しておく)
milestones = {"設計レビュー完了": 0.3, "検証環境で稼働": 0.6, "本番で稼働": 1.0}
print("段階KR   :", milestones["検証環境で稼働"])
単純平均 : 0.80
重み付き : 0.76
段階KR   : 0.6

重みは期初に決めて、期中に変えないのが原則です。期末に重みを動かすと、スコアを後から調整できてしまいます。

表計算ソフトの数式

同じ計算を表計算ソフトで行う数式です。A列に Key Result、B列に開始値、C列に目標値、D列に期末の値を入れます。

セル 内容 数式
E2 KRのスコア =ROUND(MAX(0,MIN(1,(D2-B2)/(C2-B2))),2)
E6 Objective のスコア(E2〜E4の平均) =ROUND(AVERAGE(E2:E4),2)
E7 重み付き平均(重み 0.5・0.3・0.2) =ROUND(SUMPRODUCT(E2:E4,{0.5;0.3;0.2})/SUM({0.5;0.3;0.2}),2)
E8 判定 =IF(E6>=0.7,"達成圏",IF(E6>=0.4,"前進","見直し"))

LibreOffice Calc で計算した結果です。Python の結果と一致しています。

KR 開始値 目標値 期末の値 スコア
p95応答時間 800 300 450 0.7
5xxエラー率 1.2 0.2 0.5 0.7
テスト網羅率 55 80 85 1
リードタイム 72 24 80 0
Objective平均(上の3行) 0.8
重み付き 0.76
判定 達成圏

重みを別の列(F列)に置く場合は =SUMPRODUCT(E2:E4,F2:F4)/SUM(F2:F4) と書くと、行を増やしても数式を直さずに済みます。

スコアの読み方

Objective のスコア 読み方 次の期に向けて
0.7〜1.0 狙いどおり、またはそれ以上に届いた 1.0が続くなら目標値をもう一段高く置く
0.4〜0.6 前進した。届かなかった分に学びがある 続けるか、やり方を変えるかを決める
0.0〜0.3 ほとんど動かなかった 優先度・前提・指標の選び方を見直す

スコアは成績ではなく、次の期の計画を決めるための材料です。0.0〜0.3の Objective があったら、「着手できなかった」「着手したが指標が動かなかった」「指標の選び方が合っていなかった」のどれかを切り分けると、次の一手が決まります。

四半期の運用カレンダー

10月〜12月の四半期を例にした、13週間の流れです。

時期 行うこと 所要時間の例 成果物
前の期の最終週 上位の Objective を確認し、チームのOKR案を出す 60〜90分 OKR案(Objective 5個まで)
第1週 開始値を測る。関係チームと依存を確認し、OKRを確定して公開する 60分 確定したOKRシート
第2〜6週 週次チェック(期末の値の見込み、自信度、妨げ) 週15分 更新したシート
第7週 中間レビュー。動かない Key Result の施策を入れ替える 45分 中間スコア、施策の入れ替え
第8〜12週 週次チェックを続ける 週15分 更新したシート
第13週 期末の値を記録して採点し、振り返る。次の期の案に反映する 60分 最終スコア、振り返りメモ

週次チェックで見る3点

見ること 記入例 使い道
現在の値 p95:620ms(先週680ms) 進み具合を数値で見る
自信度(期末に0.7以上へ届く見込み) 5/10 → 6/10 下がったら施策を見直す合図にする
妨げになっていること 検証環境の負荷試験の枠が空かない その場で頼み先を決める

週次チェックは報告会にせず、数値の更新と妨げの解消だけに絞ると15分で終わります。期中に Key Result の目標値を書き換えるのは、前提が変わったとき(対象の機能が中止になった など)に限り、変更の理由をシートに残します。

OKRシートのテンプレート(タブ区切り)

表計算ソフトのA1セルに貼り付けると、そのまま列に分かれます。スコアの列には上の数式を入れてください。

期間  チーム Objective   KR番号    Key Result  指標と測り方  開始値 目標値 現在の値    期末の値    スコア 重み  自信度 担当  主な施策    メモ
2026Q4      O1  KR1                                                 
2026Q4      O1  KR2                                                 
2026Q4      O1  KR3                                                 
2026Q4      O2  KR1                                                 
2026Q4      O2  KR2                                                 
2026Q4      O2  KR3                                                 

記入例です。

期間  チーム Objective   KR番号    Key Result  指標と測り方  開始値 目標値 現在の値    期末の値    スコア 重み  自信度 担当  主な施策    メモ
2026Q4  予約API   O1 予約APIを速く安定させる    KR1 検索APIのp95応答時間を800msから300msにする   APMの直近7日のp95(ms)    800 300 620 450 0.70    0.5 6   佐藤  検索結果のキャッシュ、N+1クエリの解消    負荷試験は第5週
2026Q4  予約API   O1 予約APIを速く安定させる    KR2 5xxエラー率を1.2%から0.2%にする   ログ集計の週次の値(%)    1.2 0.2 0.8 0.5 0.70    0.3 6   鈴木  タイムアウト設定の見直し、再試行の追加 
2026Q4  予約API   O1 予約APIを速く安定させる    KR3 主要APIの自動テスト網羅率を55%から80%にする  CIのカバレッジレポート(%) 55  80  70  85  1.00    0.2 8   高橋  結合テストの追加    対象は主要12API

Markdown で管理する場合のひな形です。

## 2026Q4 予約APIチームのOKR

### O1 予約APIを速く安定させる(スコア: 0.80)

| KR | 指標と測り方 | 開始値 | 目標値 | 期末の値 | スコア |
|---|---|---|---|---|---|
| KR1 検索APIのp95応答時間 | APMの直近7日のp95(ms) | 800 | 300 | 450 | 0.70 |
| KR2 5xxエラー率 | ログ集計の週次の値(%) | 1.2 | 0.2 | 0.5 | 0.70 |
| KR3 主要APIの自動テスト網羅率 | CIのカバレッジレポート(%) | 55 | 80 | 85 | 1.00 |

- 施策: 検索結果のキャッシュ、N+1クエリの解消、結合テストの追加
- 振り返り: キャッシュの効果が大きかった。エラー率は再試行の追加で残りを詰める

つまずきやすい点と整え方

つまずきやすい点 起きること 整え方
Objective が6個以上ある 力が分散し、どれも0.3前後で終わる 3〜5個に絞り、残りは次の期の候補に置く
Key Result が作業の一覧になっている 全部終えても成果が見えない 書き直し対比表の問いで成果の指標に変える
開始値がない 期末にスコアを式で出せない 第1週を測定に使い、測れたら確定する
全部が1.0で終わる 目標が手堅く、伸びしろが見えない 目標値を上げ、届く見込みを5〜7割に置く
日々の運用の数値をすべてOKRに入れる シートが長くなり、力点が伝わらない 保つ指標はKPIに置き、OKRは動かすものだけにする
期末にだけ開く 期中の軌道修正ができない 週次15分のチェックを予定に入れる
他チームに依存する Key Result 自分たちの努力でスコアが動かない 第1週に依存を確認し、共同の Key Result にするか指標を変える

よくある質問

Q. エンジニアの仕事は数値にしにくいのですが、どう書けばよいですか? A. 速さ(応答時間・リードタイム・所要時間)、品質(エラー率・不具合数・再発件数)、量と効率(回数・割合・工数)の3つの面から、測れる指標を1つずつ探すと見つかりやすくなります。どうしても数値にならない場合は、段階ごとの配点(0.3/0.6/1.0)を期初に決めておきます。

Q. 保守や運用が中心のチームでもOKRは使えますか? A. 使えます。日々の水準を保つ数値はKPIとして見守り、「呼び出しの回数を減らす」「手作業の再実行をなくす」のように、いまの状態から動かしたいものだけをOKRに書きます。Objective は1〜2個でも成り立ちます。

Q. スコアが0.6〜0.7で良いとされるのはなぜですか? A. OKRは背伸びした高さの目標を置く前提だからです。re:Work では、0.0〜1.0 で採点し、全体の平均で0.6〜0.7を見込むと説明されています。毎回1.0になる場合は、目標値をもう一段高く置く余地があります。

Q. 個人のOKRも作るべきですか? A. まずチームのOKRだけで始めると運用が軽くなります。個人のOKRを作る場合も、チームの Key Result のどれに寄与するかを1行で書ける範囲にとどめると、週次チェックの負担が増えません。

まとめ

  • Objective は向かう方向を言葉で、Key Result は到達の証拠を数値で書く。 Key Result には指標・開始値・目標値・期限をそろえる
  • Key Result に作業を書いたら、「それで何の数値がどう変わるか」を掘り下げて成果の形に直す
  • スコアは(期末の値 − 開始値)÷(目標値 − 開始値)を0.0〜1.0に収めた値。 増やす指標にも減らす指標にも同じ式が使える
  • Objective のスコアは Key Result の平均。 重みを付けるなら期初に決める
  • OKRで動かし、KPIで保つ。 MBOを含めた3つは役割が違うので併用できる
  • 四半期は「第1週に開始値を測って確定 → 週次15分 → 第7週に中間レビュー → 第13週に採点」 の流れで回す
  • スコアは成績ではなく、次の期の計画を決める材料として使う

参考・出典

  • Google re:Work「Guide: Set goals with OKRs」 https://rework.withgoogle.com/intl/en/guides/set-goals-with-okrs (Objective と Key Result の個数、0.0〜1.0 の採点、60〜70% の狙いどころ、人事評価との関係)

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「OKRの書き方とエンジニア向けの例|KPIとの違いとスコア計算」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?