シフトレフト(品質の早期確保)
定義
シフトレフト(Shift Left)とは、品質確保活動をソフトウェア開発ライフサイクルの早い工程(「左」)に移動させるアプローチ。従来の「実装後にテストで品質を確保する」モデルから、「要件・設計段階から品質を作り込む」モデルへの転換。
なぜ重要か
手戻りコストの法則 1:10:40:100:
| 欠陥を発見する工程 | 修正コスト比 |
|---|---|
| 要件定義 | 1 |
| 設計 | 10 |
| 実装・コーディング | 40 |
| リリース後(本番) | 100 |
欠陥の発見が遅れるほど修正コストが指数的に増大する。要件段階で1の工数で修正できる欠陥が、本番後では100倍のコストになる。したがって、欠陥を「早く」発見することが最もコスト効率が高い。
具体的な実践
テストファースト(Test First Development): 実装前にテストを書くことで、要件・設計の曖昧さを早期に発見する。テストを書く行為自体が「動く仕様の検討」になる。
レビューファースト: 実装前に設計をレビューし、要件との整合性・設計の問題点を早期検出する(→レビュー戦略)。
静的解析・Lintの自動化: コミット・PRの段階でコーディング規約違反・潜在バグを自動検出し、人手のレビューより早い段階で欠陥を除去する。
要件レビュー: 「設計を開始する前に要件の欠陥をなくす」—設計フェーズへ進む前に要件のレビューを実施し、要件の欠陥(矛盾・曖昧さ・抜け漏れ)を修正する。
シフトレフトの適用イメージ
従来型:
要件 → 設計 → 実装 → テスト(ここで大量の欠陥を発見)→ 修正地獄
シフトレフト後:
要件[レビュー] → 設計[レビュー+静的解析] → 実装[TDD+コードレビュー] → テスト(少ない欠陥)
適用場面
- プロセス設計時:各工程の品質ゲート(入口・出口基準)を定義し、欠陥を次工程に持ち越さない仕組みを作る
- CI/CDパイプライン設計時:自動テスト・静的解析をコミット段階で実行し、フィードバックループを最小化する
- 要件定義フェーズ:「真の要求は顧客要求の先の業務にある」—顧客の言葉を鵜呑みにせず、業務目的まで掘り下げることで要件の欠陥を早期に防ぐ
関連概念
- ソフトウェアプロセスモデル — V字モデル・アジャイルとの位置づけ
- レビュー戦略 — シフトレフトの主要手段
- 欠陥予防 — 真因分析による再発防止
出典
ソフトウェア品質保証の極意 — Column「手戻りコストの1:10:40:100の法則」、Column「ソフトウェア検査部門でのシフトレフトの事例」、第4章 4.4「実装のマネジメント」(極意32)