「垂直スライス」とは
垂直スライスとは、一度に一つの層をまるごと作るのではなく、アプリ全体を貫いて通る機能の薄い断片 — 少しのUI、少しのロジック、少しのデータ — のことです。
魅力的だが間違ったアプローチ(水平):
- データベーススキーマを丸ごと作る。
- 次にバックエンドのロジックをすべて作る。
- それからUIを丸ごと作る。
3つすべてが終わるまで何も実行できないので、問題を早期に捕まえられません。
より良いアプローチ(垂直):
- ステップ1: そのことの、考えられる限り最も単純なバージョンを、偽のデータでやるボタン。
- ステップ2: それを本物のデータを使うようにする。
- ステップ3: エッジケースを処理する。
違いは、並べて見ると一番よく分かります。水平は一度に一つの層をまるごと作り、最後まで何も実行しません。垂直は各ステップで、すべての層を貫く薄い実行可能な帯を作ります:
水平 (危険) 垂直 (安全)
実行? ▼
┌──────────────────────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐
│ UI │ │ UI │ │ UI │ │ UI │ │ UI │
├──────────────────────┤ ├────┤ ├────┤ ├────┤ ├────┤
│ LOGIC │ │logic││logic││logic││logic│
├──────────────────────┤ ├────┤ ├────┤ ├────┤ ├────┤
│ DATA │ │data│ │data│ │data│ │data│
└──────────────────────┘ └────┘ └────┘ └────┘ └────┘
3つ全部作ってから実行 各ステップを個別に実行
(最後まで実行できない) 各ステップが単独で動く
各スライスは実行可能です。それがアプリを常に動く状態に保つのです。
良いスライスを見極める便利なテスト: デモできますか? 画面を指さして「これを見て」と言えるなら、それは本物の垂直スライスです。正直なデモが「まあ、スキーマは整いました」だけなら、あなたは水平な層を作ったのであり、それが正しいかどうかはずっと後 — たいていは最悪のタイミング — でしか分かりません。