thinking-theory-of-constraints について
プロセスのスループット制約を特定し、改善するための思考スキルです。測定データからボトルネックを一つ見つけ、活用、他工程の調整、必要に応じた能力増強へと導きます。
主な機能
- 01フローと目標指標の定義
- 02稼働率・待ち行列・処理率による制約特定
- 03既存の制約能力の活用
- 04他工程を制約の速度に調整
- 05能力増強の検討と再測定
活用シーン
- 01リクエスト遅延の原因工程を特定
- 02制約前にたまる作業を削減
- 03人員やツールの追加を判断
- 04ボトルネック移動後に改善対象を変更
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tjboudreaux/ cc-thinking-skills --skill thinking-theory-of-constraintsインストール後、Claude Code で/thinking-theory-of-constraintsを入力して読み込まれたか確認します。
詳細
制約理論
スループットが制限されたシステムには、全体を左右する制約が1つあります。その制約だけを改善してください。制約ではない部分を局所的に最適化しても、労力が無駄になり、仕掛かり品(WIP)が増えることがよくあります。
使用する場面
- 1つの工程が時間または処理速度の大半を占めるレイテンシやスループットの目標がある。
- ある工程の手前に作業が滞留し、下流の工程がアイドル状態になる。
- ほかの場所で能力や作業者を増やしても、エンドツーエンドの出力が増えない。
- 投資して能力を高める前に、低コストで活用するための順序立った計画が必要である。
使用しない場面
- 負荷が分散していて、支配的な工程がない。相互作用を扱うシステムの手法を使ってください。
- 問題が流量ではなく正確性や障害に関するものである。障害をデバッグしてください。
- 結合や競合のためにボトルネックが実行のたびに移動し、安定した工程がない。5つの集中ステップではなく、システム思考や並行処理の設計を使ってください。
- 制約がすでに特定され、低コストの対策がすぐに実施できる。形式にこだわらず、その対策を適用してください。
手順
- フローと目標を定義します。 作業単位(リクエスト、ジョブ、PR、レコード)と、重要な指標(エンドツーエンドの処理速度またはレイテンシ)を明確にします。
- 根拠に基づいて制約を特定します。 稼働率、キュー/待ち時間、スループットを工程ごとに比較します。制約の兆候は、稼働率がほぼ100%、最長のキュー、最も低い工程の処理速度、ここに作業が滞留していること、入力を増やしてもシステムの出力が増えないことです。意見よりも測定した処理速度を優先します。候補が2つ並んだ場合は、改善によってシステムのスループットが先に上がる方を選びます。
- 活用します(大きな投資はしません)。 制約の出力を最大化します。アイドル時間を減らし、制約部分で不要な作業を省き、手戻りや段取りを減らし、その時間を確保します。また、制約部分の品質を向上させて、出力を無駄にしないようにします。投資する前に効果を見積もります。
- 制約ではない部分を制約に従わせます。 上流工程を制約の処理速度に合わせ、WIPを増やさないようにします。ほかの工程が制約に貢献するようにします(準備、明確さ、即時のプル)。制約の手前にキューを増やすような局所的な稼働率目標は退けます。
- 不足している場合に限り、能力を高めます。 活用を最大限に進めた後、制約の処理能力を高めるために投資します(人員、ツール、シャーディング、並列経路)。必要十分な能力向上策のうち、最も低コストのものを選びます。
- 再確認します(惰性を防ぎます)。 能力向上または大規模な活用の後、すべての工程を再測定します。制約は移動することがよくあります。ステップ2に戻ってください。以前の制約を最適化し続けないでください。
終了条件は、 制約、根拠、活用計画、従属ルール、能力向上を行うかどうかの判断が明確になったときです。または、単一の工程が全体を制約していない場合は、システム思考へ移行します。
出力
system_goal: <throughput/latency objective>
flow: <stage sequence>
constraint: <stage or resource>
evidence: <utilization / queue / rate facts>
exploit: <actions, expected gain>
subordinate:
- stage: <name>
change: <how it serves the constraint>
elevate: <none | option + cost/gain>
next_constraint_watch: <what to remeasure after change>
検証
- 反証: 指定した工程の能力を上げてもシステムのスループットが増えない場合(すでに別の工程が上限を決めている場合)、特定が誤っています。制約ではない部分の最適化によってエンドツーエンドの処理速度が変わる場合は、制約を特定し直してください。
- 停止: 活用をやり尽くす前に能力を高めないでください。「念のため」に複数の工程を最適化しないでください。
- 過剰適用の防止: 一度に扱う制約は1つです。上流の余剰能力は、埋めるべき問題ではありません。制約となる工程がない純粋な多重ループの創発現象には、TOCの用語を使わないでください。
コメント
Markdown 対応