📝

shift left

📁 パターン 👁 -- 閲覧

シフトレフト(品質の早期確保)

定義

シフトレフト(Shift Left)とは、品質確保活動をソフトウェア開発ライフサイクルの早い工程(「左」)に移動させるアプローチ。従来の「実装後にテストで品質を確保する」モデルから、「要件・設計段階から品質を作り込む」モデルへの転換。

なぜ重要か

手戻りコストの法則 1:10:40:100

欠陥を発見する工程修正コスト比
要件定義1
設計10
実装・コーディング40
リリース後(本番)100

欠陥の発見が遅れるほど修正コストが指数的に増大する。要件段階で1の工数で修正できる欠陥が、本番後では100倍のコストになる。したがって、欠陥を「早く」発見することが最もコスト効率が高い。

具体的な実践

テストファースト(Test First Development): 実装前にテストを書くことで、要件・設計の曖昧さを早期に発見する。テストを書く行為自体が「動く仕様の検討」になる。

レビューファースト: 実装前に設計をレビューし、要件との整合性・設計の問題点を早期検出する(→レビュー戦略)。

静的解析・Lintの自動化: コミット・PRの段階でコーディング規約違反・潜在バグを自動検出し、人手のレビューより早い段階で欠陥を除去する。

要件レビュー: 「設計を開始する前に要件の欠陥をなくす」—設計フェーズへ進む前に要件のレビューを実施し、要件の欠陥(矛盾・曖昧さ・抜け漏れ)を修正する。

シフトレフトの適用イメージ

従来型:
要件 → 設計 → 実装 → テスト(ここで大量の欠陥を発見)→ 修正地獄

シフトレフト後:
要件[レビュー] → 設計[レビュー+静的解析] → 実装[TDD+コードレビュー] → テスト(少ない欠陥)

適用場面

  • プロセス設計時:各工程の品質ゲート(入口・出口基準)を定義し、欠陥を次工程に持ち越さない仕組みを作る
  • CI/CDパイプライン設計時:自動テスト・静的解析をコミット段階で実行し、フィードバックループを最小化する
  • 要件定義フェーズ:「真の要求は顧客要求の先の業務にある」—顧客の言葉を鵜呑みにせず、業務目的まで掘り下げることで要件の欠陥を早期に防ぐ

関連概念

出典

ソフトウェア品質保証の極意 — Column「手戻りコストの1:10:40:100の法則」、Column「ソフトウェア検査部門でのシフトレフトの事例」、第4章 4.4「実装のマネジメント」(極意32)