状態遷移図、別名ステートマシン図とは、統一モデリング言語 (UML) の行動図の一種で、さまざまなオブジェクト間の遷移を示すものです。共同作業が可能な Lucidchart の UML 作図ソフトウェアを使って、今すぐ状態遷移図の設計を始めましょう。
この記事を読むのに必要な時間 : 2 分
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
状態遷移図とは?
ステートマシン図とは、ある時点におけるオブジェクトのステータスを格納する任意のデバイスで、ステータスの変更や受信する入力データに基づき他のアクションを引き起こすことのできるものを指します。状態 (ステート) とは、あるオブジェクトが保持しうるさまざまな情報の組み合わせを指します。オブジェクトの振る舞い方を指すものではありません。オブジェクトの多様な状態を理解するためには、想定しうるすべての状態を視覚化し、それぞれの状態にオブジェクトがどう到達するかを示すことが有用です。これには、UML 状態図が役立ちます。
一般に、どの状態図も初期状態を示す塗りつぶしの円で始まり、最終状態を示す二重の円で終わります。ただし、明確な入口点と出口点はあるものの、状態図が事象の全体的な進行を表す上で常に最適の図であるとはいえません。むしろ、特定の種類の行動、とりわけある状態から別の状態への移行の図示に適した図です。
状態図は主に、状態と遷移を描出します。状態は、状態の名称ラベルの付いた角丸の長方形で示されます。遷移は1つの状態から別の状態へと流れる矢印で示され、状態の変化を表します。以下では、学生生活を示す簡単な図でこれらの要素の働きを紹介しています。Lucidchart の UMLツールを使えば、あらゆるステートマシン図を設計することができます。
状態遷移図とフローチャートはどう違う?
状態遷移図とフローチャートの主な違いは、焦点と適用範囲にあります。状態遷移図は主にオブジェクトの状態とその間の遷移を表現し、システムの動的な振る舞いを理解するのに適しています。一方、フローチャートはプロセスや手順の流れを表現し、アルゴリズムやプロセスの概要を理解するのに適しています。状態遷移図とフローチャートは、それぞれ異なる側面を強調していますが、両者を組み合わせて使用することで、システムやプロセスの全体像をより包括的に理解することが可能です。
状態遷移図の用途
UML 図の大半と同様に、状態図にもさまざまな用途があります。主な用途は以下のようなものです。
-
反応系におけるイベント駆動型のオブジェクトを示す 。
-
ビジネスのコンテキストでユースケースのシナリオを図示する。
-
あるオブジェクトがそのライフタイム内でさまざまな状態を経由して移動する様を示す。
-
単独のステートマシンの全体的な動作や一連のステートマシンの動作を示す。
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
UML図 を作成状態遷移図の記号と構成要素
状態図にはさまざまに異なる図形を使用することができます。他の図と組み合わせる場合であれば特にその傾向が強くなるでしょう。以下では、最も一般に使われる図形を紹介しています。
合成状態
ネストされた下位状態を持つ状態です。以下の大学の状態図の例を参照してください。この例の「Enrollment (登録)」は、登録プロセスにおけるさまざまな下位状態を含むため、複合状態となります。
選択擬似状態
潜在的な結果の分岐をもつ動的条件を示すひし形の記号。
事象 (Event)
遷移のトリガーとなるインスタンスで、該当する遷移の矢印の上に記されます。この例では、「classes end (授業の終了)」が、状態「Being taught (受講)」を終了させ、状態「Final exams (期末試験)」を開始させるトリガー事象となります。
出口点
オブジェクトが合成状態またはステートマシンを脱する点で、内部に X のある円で示されます。出口点は通常、プロセスが完了していないものの、エラーやその他の問題によりエスケープが必要となる場合に用いられます。
初期状態
プロセスの初期状態のマーカーで、黒塗りの円に遷移を示す矢印で表されます。
ガード
遷移を許可または停止するブール条件で、遷移を示す矢印の上に表示されます。
状態
オブジェクトの現在の性質を示す角丸の長方形。
下位状態
複合状態の領域内に含まれる状態を指します。以下の大学の状態図では、「Open for enrollment (登録可能)」はより大きな複合状態「Enrollment (登録)」の下位状態となります。
端子
中に塗りつぶしの丸のある円で、プロセスが終了したことを示します。
連絡管
1つの状態から他の状態へ向かう矢印で、状態の変化を示します。
遷移挙動
状態の遷移の結果として生じる挙動で、遷移を示す矢印の上に表示されます。
トリガー
オブジェクトを状態から状態へと能動的に移動させるメッセージの一種で、遷移の矢印の上に記されます。この例では、「Issue with reservation (予約における問題)」が、この人物をプロセスの次の段階ではなく、空港内の旅行代理店へと向かわせるトリガーとなります。
状態遷移図の事例
カレンダーの空き状況を示す状態図の例
このステートマシン図の例では、ある人がカレンダーに予定を入れるプロセスを示しています。複合状態「Check date (日付を確認)」では、システムがいくつかの異なる下位状態においてカレンダーの空き状況を確認します。カレンダー上の時間枠にすでに予定が入っている場合には、そのプロセスは中断します。カレンダーに空きがある場合には、カレンダーに予定が追加されます。