TOC駆動型アジャイルスプリント・フレームワーク

2025/11/11
Panda

前置き

TOC(制約理論)は、「静的な分析ツール」としてではないです。

アジャイルの「スプリント」という短いイテレーションの中で「動的に実践する」ための、非常に洗練された運用サイクルに応用できます。

TOCをアジャイルに組み込むということは、
「スプリントという短い期間内なら、ボトルネックは(近似的に)動かない」
という近似的仮定(メンタルモデル)を置き、その仮定が正しかったかをスプリントレビューで検証する、という科学的な実験のサイクルを回すことです。


もしも1週間という単位でスプリントを区切って、前提が変わってしまうようなら、
スプリントの区間をさらに短く調整する必要があります。

(逆に1週間という単位でスプリントを区切って、前提が変わるような要求が利害関係者から来なければ、もう少しスプリント期間を延ばすなりのチューニングを適時行ってもいいでしょう。)

この「TOC駆動型アジャイルスプリント」のフレームワークを、ステップとサブステップに分解して、説明していきたいと思います。

このフレームワークは、TOCの5ステップをScrumのイベント(特に計画、レビュー、レトロスペクティブ)にマッピングすることで、継続的な改善ループを形成します。

フェーズ1:スプリント計画 (Sprint Planning)

目的

今スプリントで集中すべき「単一の制約」を定義し、それに対する改善計画を立てる。

ステップ1.1: 制約の特定 (TOC Step 1)

サブステップ

前回のスプリントレビュー(フェーズ3)で特定された「今、組織のデリバリーにおける最大のボトルネックは何か?」 という事実データ(例:E2Eテストの実行時間)を、チーム全員で再確認します。

成果物

「今スプリントで我々が倒すべき制約は、E2Eテストである」という共通認識。

ステップ1.2:制約の徹底活用(改善計画の立案)(TOC Step 2)

サブステップ

特定されたボトルネック(E2Eテスト)に対し、ECRS原則を用いて、「コストをかけずにスループットを最大化する」 ための具体的な改善タスクをブレインストーミングします。

具体的には、以下のようなことを考えます。


・(E) 排除:不要なテストケースを排除するタスク。
・(C) 結合:複数のテスト環境構築ステップを結合し、時間を短縮するタスク。
・(R) 順序変更:直列なテストを並列に実行できるよう順序変更するタスク。
・(S) 単純化:テストロジックやアサーションを単純化するタスク。

成果物

ECRSに基づいた、具体的な改善ストーリー(PBI)群。

ステップ1.3:他のプロセスの従属(スプリントバックログの構築)(TOC Step 3)

サブステップ

スプリントのWIP(仕掛品) を、ボトルネックの改善にのみ集中させます。

この選択と集中が、非常にこのフェーズで大事になってきます。

活動

チームは
「今スプリントは、ボトルネック解消(E2Eテスト改善)に全力を注ぐ。 したがって、新しい機能開発(非ボトルネック)のPBIは、今スプリントでは原則として受け入れない」という合意を形成します。

成果物

ボトルネック改善タスクを中心としたスプリントバックログと、それを反映したスプリントゴール(例:「E2Eテストの実行時間を50%削減する」)。

フェーズ2:スプリント実行 (Sprint Execution)

目的

ボトルネックの改善計画(TOCのステップ2とステップ3)を実行する。

ステップ2.1:改善計画の実行

チームはスプリントバックログに従い、ECRSで定義された改善タスク(パイプラインのリファクタリングなど)を実行します。

ステップ2.2:前提の維持

このフェーズでは、前提条件は意図的に固定します。

スクラムマスターやチームは、スプリントの前提(「ボトルネックはE2Eテストである」)が崩れるような、突発的な仕様変更や、非ボトルネック作業の割り込み(TOCステップ3の違反)からスプリントゴールを守らなくてはいけません。
※ここで前提がコロコロ変わるようなものを受け入れてしまうから、プロジェクトが炎上しやすくなるんです。

フェーズ3:スプリントレビュー & レトロスペクティブ (Sprint Review / Retrospective)

目的

実行結果を検証し、仮説(前提)の正しさを評価し、次の制約を特定します。

ステップ3.1:[検証] 改善プロセスの有効性レビュー

「このスプリント期間中のプロセス自体に問題はなかったか?」
をメトリクスを定量的にみて精査するレビューを行います。
この時に、一度に一気にいろいろなものをレビューするのは、関心がごちゃ混ぜになっているので、絶対にやめましょう。

サブステップ

まず、スプリントゴール(例:「E2Eテストの実行時間を50%削減する」)が達成できたか否かに関わらず、計画したECRSのプロセス自体が有効だったか?を振り返ります。

定量データ

・(E)不要なテストを10件排除しようとしたが、依存関係のせいで5件しか排除できなかった。
・(R)順序変更(並列化)は成功し、リードタイムが20%短縮した。

といった アジャイルメトリクス(仕様変更時のコード行数、タスクの消化状況など) を元にしながら精査します。

ステップ3.2:[検証] ボトルネック解消の検証 (TOC Step 4)

改善の結果、ボトルネック(E2Eテスト)自体は解消されたか?を 事実データ(Four Keysなど) で判定します。

判定A (解消失敗の場合)

「LTは依然としてE2Eテストで律速(ボトルネック)のままだ」。→ TOCステップ4 (強化) へ進みます。
「ECRSだけでは不十分だった。よって、次のスプリントでは、より高価な解決策(例:テスト用インフラの増強、アーキテクチャの変更)を計画(ステップ1.2)する必要がある」と判断します。

判定B (解消成功の場合)

「LTが劇的に改善し、E2Eテストはもはやボトルネックではない!」→ 下記のステップ3.3に進みます。

ステップ3.3:[検証] 前提(制約)の移動を検証 (TOC Step 5)

「そもそもの前提は変わっていないだろうか?」 という、前提が動いていないか?という検証をここで行います。(※批判的&水平思考がここではマストになります。)

サブステップ

ボトルネックが解消された場合、必ず「次」のボトルネックがシステム上のどこかに出現します。

活動

全体のプロセス(VSDM – バリューストリームマップ)を再度見渡し、新しいボトルネックを特定します。

分析結果

E2Eテスト(旧ボトルネック)は2時間になった。しかし、その後のStaging環境への手動デプロイ(新ボトルネック)が今や8時間かかっている」という前提の変化を発見します。

ステップ3.4:[結論] 次のスプリント計画へのインプット

上記の新しい前提をもとに、次のスプリント計画で、
「どの部分が制約なのか? そこへの解消方法は?」をチームで議論し合います。

ステップ3.3の分析結果(新しい制約は手動デプロイである)を、次のスプリント計画(フェーズ1)へのインプットとして確定させます。

まとめ

このループ(フェーズ1〜3)こそが、TOCをアジャイルに実践し、継続的に改善し続けるための具体的なメカニズムです。