ログイン

状態遷移図(ステートマシン図)とは?書き方と記号

状態遷移図とは、統一モデリング言語 (UML) の振る舞い図の一種であり、システムやオブジェクトがイベントに応じてどのように状態を変化させるかを視覚化する図です。複雑なシステムの動作仕様やロジックを整理するのに役立ちます。Lucidchart の UML 専用シェイプライブラリとテンプレートを活用して、クラウド上でスムーズに作図を始めましょう。

状態遷移図とは?

状態遷移図(ステートマシン図)とは、システムやオブジェクトがイベントや入力データに応じてどのように状態を変化(遷移)させるかを視覚的に整理した図です。「状態」とは、オブジェクトが特定の条件を満たしている状況や待機フェーズを指します。システムが取りうるすべての状態と、それらがどのようなきっかけで次の状態へ移るのかを1枚の図にまとめることで、複雑な動作仕様を可視化し、設計の抜け漏れや不具合を防ぐことができます。

状態遷移図は一般的に、初期状態を表す黒丸(塗りつぶされた円)から始まり、終了状態を表す二重丸で完結します。明確な開始と終了が定義されているものの、一連の処理手順や業務フロー全体の進行を表す用途には向いていません。時系列の作業手順を描くのではなく、特定のオブジェクトやシステムがイベントに応じて「どのように状態を遷移させるか」という振る舞いを正確に図解するのに適した図です。

状態遷移図は、主に「状態」と「遷移」という2つの基本要素で構成されます。「状態」は状態名を記載した角丸四角形で表し、「遷移」は状態から状態へと向かう矢印で表します。矢印はイベントによって引き起こされる状態の変化を示します。以下は、学生生活を例にした状態遷移図のサンプルです。各要素がどのように組み合わさるかを確認してみましょう。Lucidchart の UMLツール, 新しいタブで開きます を使えば、ブラウザ上で直感的に状態遷移図を作成・カスタマイズできます。

さらに、Lucidchart のコードからの作図(Diagram as Code)機能を活用すれば、より効率的に作図を進められます。Mermaid コードを入力, 新しいタブで開きますするだけで状態遷移図をすばやく自動生成し、Lucidchart のドキュメントに取り込んでそのまま編集や共有が可能です。

State Diagram Basic Example 500x281.png

状態遷移図の主な用途

状態遷移図は、ソフトウェア設計やシステム開発において幅広く活用されています。主な用途は以下のとおりです。

  • イベント駆動型システムやリアクティブシステムにおけるオブジェクトの振る舞いの可視化

  • オブジェクトの生成から破棄に至るライフサイクル全体の追跡と整理

  • 業務ロジックやユースケースシナリオにおける進行条件の図解

  • 単一コンポーネントからシステム全体にわたる動作仕様の定義と例外処理の検証

状態遷移図の記号と構成要素

状態遷移図は、UMLで定義された標準的な記号を組み合わせて作成します。単純な状態や遷移だけでなく、条件分岐や並行処理など、表現したいシステムの挙動に応じて適切な記号を使い分けることが正確な設計の鍵となります。ここでは、実務でよく使われる代表的な記号とその意味を解説します。

合成状態

ネストされた下位状態を持つ状態です。以下の大学の状態図の例を参照してください。この例の「Enrollment (登録)」は、登録プロセスにおけるさまざまな下位状態を含むため、複合状態となります。

選択擬似状態

潜在的な結果の分岐をもつ動的条件を示すひし形の記号。

Choice Pseudostate.png

イベント

遷移のトリガーとなるインスタンスで、該当する遷移の矢印の上に記されます。この例では、「classes end (授業の終了)」が、状態「Being taught (受講)」を終了させ、状態「Final exams (期末試験)」を開始させるトリガー事象となります。

Event Shape.png

出口点

オブジェクトが合成状態またはステートマシンを脱する点で、内部に X のある円で示されます。出口点は通常、プロセスが完了していないものの、エラーやその他の問題によりエスケープが必要となる場合に用いられます。

Flow Final 35x26@2x.jpeg

初期状態

プロセスの初期状態のマーカーで、黒塗りの円に遷移を示す矢印で表されます。

Final State Shape.png

ガード

遷移を許可または停止するブール条件で、遷移を示す矢印の上に表示されます。

状態

オブジェクトの現在の性質を示す角丸の長方形。

State Shape.png

下位状態

複合状態の領域内に含まれる状態を指します。以下の大学の状態図では、「Open for enrollment (登録可能)」はより大きな複合状態「Enrollment (登録)」の下位状態となります。

端子

中に塗りつぶしの丸のある円で、プロセスが終了したことを示します。

End 35x35@2x.jpeg

移行

1つの状態から他の状態へ向かう矢印で、状態の変化を示します。

Transition Arrow.png

遷移挙動

状態の遷移の結果として生じる挙動で、遷移を示す矢印の上に表示されます。

トリガー

オブジェクトを状態から状態へと能動的に移動させるメッセージの一種で、遷移の矢印の上に記されます。この例では、「Issue with reservation (予約における問題)」が、この人物をプロセスの次の段階ではなく、空港内の旅行代理店へと向かわせるトリガーとなります。

Trigger.png

 

状態遷移図(ステートマシン図)の書き方・作成手順

状態遷移図(ステートマシン図)を正しく作成することで、システムやオブジェクトが取りうる状態を漏れなく定義し、仕様の矛盾や設計上のバグを未然に防ぐことができます。複雑な動作ロジックを視覚的に整理し、開発チーム全体で共通認識を持つための基本的な作成手順を順を追って解説します。

1. 新規ドキュメントを作成し、UML図形ライブラリを有効化する

まずは Lucidchart の無料アカウントに登録し、新規の空白ドキュメントを開きます。画面左上の [図形](または [+ 図形ライブラリ])をクリックし、[UML] にチェックを入れてライブラリを有効にします。追加された UML ライブラリ一覧から、初期状態を表す黒丸(塗りつぶされた円)をキャンバスへドラッグ&ドロップして配置し、状態遷移図の作図を開始します。

2. 状態と遷移の洗い出し

状態遷移図の目的を定め、必要な構成要素を特定します。主な着眼点は以下のとおりです。

  • オブジェクトの状態変化プロセスの図解

  • リアクティブシステムにおけるイベント処理の整理

  • ユースケースシナリオの動作検証

  • システム全体のステート管理の把握

目的が定まったら、ダイアグラムに必要な「状態」をすべてリストアップします。続いて、各状態の間を結ぶ「イベント」や「遷移条件」を洗い出していきましょう。例えばカレンダーシステムの場合、「予定の追加」というイベントを契機に、システムは「予定追加済み」の状態へと遷移します。

State Diagram Transitions Example Snippet 319x346.png

 

3. 遷移線の追加と状態図形の配置

初期状態の円にカーソルを合わせ、表示される赤い点から矢印をドラッグして遷移線を作成します。表示された図形選択メニューから「状態」を表す角丸四角形を選択しましょう。この矢印によって、システムやオブジェクトの状態が遷移する流れを定義できます。

State Diagram Step 1 277x147.png

ラベル図形

次に、状態をクリックして名前を入力し、ラベルを付けます。遷移矢印にメッセージを作成するには、テキストを追加したい線をダブルクリックします。イベントやトリガーについては、遷移矢印のすぐ上にテキストボックスをドラッグして配置することもできます。

選択肢の追加

遷移に複数のオプションを表現する必要がある場合は、疑似状態を示すために菱形の図形を選択してください。この図形から複数の遷移矢印を描くことができます。

Choice Pseudostate.png

図の完成

状態図 (より複雑なダイアグラムでは、ステートマシンのいずれか) が完成したら、最終状態を示す枠付きの円を選択してください。

State Diagram Step 2 400x239.png

図の書式設定

Lucidchart では、ダイアグラムの細部までカスタマイズできるため、統一感のあるプロフェッショナルな仕上がりを実現できます。基本構造を作成した後は、線や図形の色、サイズ、方向を簡単に変更できます。

State Diagram Scheduling System 740x860.png

 

4.エクスポート、外部連携、チームでの共有

状態遷移図の作成後は、開発チームやステークホルダーと共有して設計レビューや仕様確認に役立てましょう。ファイルをダウンロードする場合は、メニューの [ファイル] > [形式を指定してダウンロード] を選択し、必要な形式で保存します。

また、Lucidchart の外部連携機能, 新しいタブで開きますを使えば、完成した図を Confluence、Microsoft, 新しいタブで開きます、Google Workspace, 新しいタブで開きます などの社内ツールに直接埋め込むことも簡単です。

チームで共同編集を行うには、画面右上の [共有] ボタンをクリックします。アクセス権限(閲覧のみ・編集可能など)を柔軟に設定でき、アカウント登録のない外部関係者にも安全にダイアグラムを共有できます。

状態図の例

このステートマシン図の例では、ある人がカレンダーに予定を入れるプロセスを示しています。複合状態「Check date (日付を確認)」では、システムがいくつかの異なる下位状態においてカレンダーの空き状況を確認します。カレンダー上の時間枠にすでに予定が入っている場合には、そのプロセスは中断します。カレンダーに空きがある場合には、カレンダーに予定が追加されます。

State Diagram 525x626@2x.jpeg

大学の状態図の例

この状態図では、大学の登録プロセスと授業を示しています。複合状態「Enrollment (登録)」は、学生が登録プロセスで体験するさまざまな下位状態で構成されます。登録が完了した学生は、「Being taught (受講)」へ進み、最終的には「Final exams (期末試験)」へと進みます。

Enrollment Example.png

空港でのチェックインの状態図の例

以下の例では、空港でのチェックインに必要な手順を簡略化して表しています。航空会社がプロセスを効率化し、不要なステップを除外する上で役立つ状態図です。

Airport Check in Example.png

図の作成に必要なすべて

Lucidchart を使えば、洗練された美しい図を無料で作成できます。どんな図にも対応できる機能を完備したツールで、今すぐアカウントを作成して図の作成を始められます。

無料ではじめる

状態遷移図のテンプレート

UML ステートマシン図

料金:

無料

UML ステートマシン図, 料金: 無料

UML 表記を使用したクラス図

料金:

有料アカウント

UML 表記を使用したクラス図, 料金: 有料アカウント

状態遷移図の例

料金:

有料アカウント

状態遷移図の例, 料金: 有料アカウント

よくあるご質問

UML 図の作成に必要なすべての機能

オンライン UML 作図ツールに加え、 Lucidchart はサポートやトレーニングリソースも提供しており、あらゆる図に挑戦できるよう支援しています。

作図を開始する