スパイク

技術的な不確実性を解消するために、短期間で調査・検証を行うタイムボックス付きのタスク

アジャイル

スパイクとは

スパイク (Spike) は、技術的な不確実性を解消するために、短期間 (通常 1〜2 日) で調査・検証を行うタイムボックス付きのタスクである。エクストリームプログラミング (XP) で定義された概念で、「この技術は使えるか?」「この設計で性能は出るか?」を実装前に検証する。

スパイクが必要なケース

ケース
未知の技術 「Bedrock の応答速度は要件を満たすか?」
設計の検証 「DynamoDB のシングルテーブル設計でこのクエリは可能か?」
見積もりの不確実性 「この機能は 1 週間で実装できるか?」
サードパーティ連携 「この API のレート制限は問題にならないか?」

スパイクの進め方

1. 質問を明確にする
   「DynamoDB で全文検索は実現可能か?」

2. タイムボックスを設定
   「2 日間で調査する」

3. 最小限のプロトタイプを作成
   → DynamoDB + OpenSearch の連携を検証

4. 結果を報告
   「DynamoDB 単体では不可。OpenSearch との連携が必要。
    実装に追加で 3 日かかる見込み」

5. 本実装の見積もりを更新

スパイクの成果物

成果物 内容
調査結果 技術的な可否、制約、パフォーマンス
プロトタイプ 動作する最小限のコード (本番品質は不要)
見積もりの更新 不確実性が解消された見積もり
代替案 不可の場合の代替アプローチ

スパイク vs ストーリー

観点 スパイク ストーリー
目的 不確実性の解消 機能の実装
成果物 知識、プロトタイプ 動作するソフトウェア
見積もり タイムボックス (固定時間) ストーリーポイント
完了条件 質問に回答できた Acceptance Criteria を満たした

タイムボックスの重要性

スパイクにはタイムボックスを必ず設定する。期限がないと調査が際限なく続く。

❌ 「DynamoDB の設計を調査する」(期限なし)
✅ 「2 日間で DynamoDB のシングルテーブル設計を検証し、
    アクセスパターン 5 つが実現可能か報告する」

スパイクの結果が「不可」の場合

不可という結果も価値がある。間違った技術選択を本実装前に防げる。代替案を提示し、チームで方針を決定する。

より深く学ぶには関連書籍が役立つ。

関連用語