【じょうたいせんいず】

状態遷移図 とは?

最終更新:
💡 今の状態から、何が起きたらどこへ移る?

状態遷移図は、対象がどの状態にあり、どのイベントや条件で別の状態へ移るかを表す図。処理の順序とは区別し、できる操作・できない操作を設計やテストで確認するために使います。

📌 このページのポイント
状態遷移図:きっかけと条件で移る未発送発送済み取消済み出荷取消要求[取消可能]発送後の返品などは、この例の範囲外
説明用の限定した注文ルールです。矢印は状態の変化、文字はイベントや条件を表します。実サービスの共通仕様ではなく、矢印がない操作への応答や返品の手続きも別途決めます。
ひよこ ひよこ
状態遷移図って何を描くの?
ペンギン先生 ペンギン先生
対象が持つ状態と、状態を変えるきっかけを描くよ。例えば注文なら「未発送」「発送済み」「取消済み」など。線を引くだけでなく、出荷や取消要求というイベントと、遷移できる条件を表すんだ。
ひよこ ひよこ
注文は全部の状態を順番に通る?
ペンギン先生 ペンギン先生
必ず一列に進むわけではないよ。このページの例では未発送から出荷で発送済みへ、取消要求が受け付けられれば取消済みへ分かれる。発送後の返品などは別に設計する。実際のサービスのルールを、そのままこの例から決めてはいけないんだ。
ひよこ ひよこ
フローチャートとは何が違うの?
ペンギン先生 ペンギン先生
フローチャートは処理の手順や分岐を中心に表すけれど、状態遷移図は今の状態とイベントへの反応を中心に考えるよ。同じ取消要求でも、未発送か発送済みかで扱いが違う、といったルールを整理できるんだ。
ひよこ ひよこ
状態遷移表も作るの?
ペンギン先生 ペンギン先生
現在の状態とイベントの組合せを表にし、次の状態や条件、遷移しない場合の扱いを書くと確認しやすいよ。例えば発送済みの注文に取消要求が来たら、エラーにするのか別手続きへ案内するのかを決める。図と表でルールが食い違っていないかも見よう。
ひよこ ひよこ
矢印を全部通るテストなら十分?
ペンギン先生 ペンギン先生
すべての遷移を通ることは確認の一つだけど、誤りがすべて見つかる保証ではないよ。禁止した操作、条件の境界、イベントの順番や繰返しも考えよう。図に抜けたルールは図からだけでは見つけにくいから、要求や実装と照合することも大切だね。
ひよこ ひよこ
状態が多いときはどう整理する?
ペンギン先生 ペンギン先生
関連する状態を大きな状態の中へまとめる階層化などが使えるよ。W3CのSCXMLも、状態・遷移・イベントに加え、入れ子の状態や並行状態を扱う仕様だね。ただし表記の細かいルールは記法によるので、何を省略した図かを共有しよう。
もっと詳しく知りたい人へ

イベントと条件は同じ?

イベントは操作や通知などのきっかけ、条件は遷移できるかを判定する内容です。例えば「取消要求」がイベント、「未出荷なら取消可能」が条件になります。W3CのSCXMLもeventとcondを分けて扱います。図では条件を省略し過ぎず、条件を満たさない場合の扱いも決めましょう。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「状態遷移図」って出てきたら「状態の移り変わりを矢印でつないだ設計図」と思えればだいたいOK!
📖 おまけ:英語の意味
「State Transition Diagram」 = 状態遷移図
💬 state(状態)が transition(遷移・移り変わり)する様子を diagram(図)で表すという、そのままの名前だよ

参考資料

← 用語集にもどる