
エンティティの振る舞いは、入力の直接的な結果だけでなく、その前の状態にも依存する。エンティティの過去の履歴は、最も適切に 有限状態機械図または伝統的に呼ばれる オートマトン. UML 状態機械図(時折、状態図、状態機械、または状態チャートとも呼ばれる)は、エンティティの異なる状態を示す。状態機械図は、エンティティが一つの状態から別の状態に移行することで、さまざまなイベントに対してどのように反応するかを示すこともできる。状態機械図は、システムの動的性質をモデル化するために使用されるUML図である。

🚀 UMLをより速く、より良く、より簡単に学ぶ
UMLをより速く、より簡単に、より迅速に学ぶための無料のUMLツールをお探しなら? Visual Paradigm Community Edition は、すべてのUML図タイプをサポートするUMLソフトウェアである。国際的な賞を受賞したUMLモデラーでありながら、使いやすく、直感的で、完全に無料である。
なぜ状態機械図なのか?
状態機械図は通常、 オブジェクトの状態依存性の振る舞い. オブジェクトは、同じイベントに対して、その状態によって異なる反応を示す。状態機械図は通常、オブジェクトに適用されるが、アクター、ユースケース、メソッド、サブシステム、システムなど、他のエンティティに対して振る舞いを持つ任意の要素に適用可能である。また、通常は相互作用図(主にシーケンス図)と併用される。
実践例:銀行口座からの出金
銀行口座に10万ドルがあると仮定する。出金関数の振る舞いは次の通りである:
残高 := 残高 - 出金額;
ただし、 出金後の残高が0ドル未満にならないこと; これは、銀行からいくら出金しても常に成り立つ。このような状況では、出金は属性値の抽象化に影響を与えず、結果としてオブジェクトの全体的な振る舞いは変化しない。
しかし、もし 出金後に口座残高が負になる場合、出金関数の振る舞いはまったく異なるものになる。これは、銀行口座の状態が正から負に変わったためである。専門用語では、 正の状態から負の状態への遷移が発火する.
💡 注記: 属性値の抽象化は、グローバルに適用可能なルールではなく、システムの特性である。たとえば、銀行がビジネスルールを変更して、口座残高を2,000ドルまで引き出し可能にする場合、口座の状態は、引き出し後の残高が2,000ドルの赤字を超えてはならないという条件で再定義される。
重要な違い
| 図の種類 | 範囲 |
|---|---|
| 状態機械図 | 1つの対象についてのすべてのイベント、状態、遷移を記述する単一のオブジェクト |
| シーケンス図 | すべてのオブジェクト間で行われる1つの相互作用についてのイベントを記述するすべてのオブジェクト間の単一の相互作用関与する |
状態機械図の基本概念
状態とは何か?
「状態とは、オブジェクトの属性値およびリンクの抽象化である。属性値の集合は、オブジェクトの全体的な振る舞いに影響を与える性質に基づいて、状態にグループ化される。」 — ランバウ
状態の表記法

状態機械表記法の特徴
-
状態は時間の区間を占める
-
状態は、ある条件を満たすエンティティの属性値の抽象としばしば関連付けられる
-
エンティティは現在の入力の直接的な結果として状態を変えるだけでなく、過去の入力の履歴にも依存して状態を変える
状態の定義
ある状態は、オブジェクトのライフサイクルにおける制約または状況であり、その制約が成立し、オブジェクトが活動を実行するか、イベントを待機している状態である。
状態機械図は、以下の要素から構成されるグラフである:
-
状態(単純状態または複合状態)
-
状態遷移状態をつなぐ
例:

状態の特徴
-
状態は、特定の時点におけるオブジェクトの状態を表す
-
オブジェクト(またはシステム)は、状態から状態へと移動していると見なせる
-
モデル要素のライフサイクルにおける、ある条件を満たす点であり、特定のアクションが実行中であるか、または特定のイベントを待機している状態
初期状態と最終状態
| 状態の種類 | 記号 | 説明 |
|---|---|---|
| 初期状態 | ● 実線の円 | 初期擬似状態と呼ばれる。この状態からの遷移は、最初の実際の状態を示す |
| 最終状態 | ◎ 同心円 | 終了を表す。オープンループの状態機械は、システムが終了する前に終了する可能性のあるオブジェクトを表す |
例:

📌 注記:クローズドループの状態機械図には最終状態が存在しない。その場合、オブジェクトはシステム全体が終了するまで生存し続ける。
イベント
イベントシグネチャは次のように記述されるイベント名(カンマ区切りのパラメータリスト)。イベントは、状態の内部遷移コンパートメント内または状態間の遷移上に表示される。
イベントの4つの種類
-
シグナルイベント – 非同期メッセージまたはシグナルの到着に対応する
-
コールイベント – 操作への手続き呼び出しの到着に対応する
-
時間イベント – 指定された時間が経過した後に発生する
-
変化イベント – 指定された条件が満たされたときに発生する
イベントの特徴
-
オブジェクトが一つの状態から別の状態へ移行する原因となる出来事を表す
-
内部または外部のイベントは、システムおよびその一部の状態を変化させる活動を引き起こす
-
イベントは情報を伝達し、その情報はオブジェクトの操作によって処理される。オブジェクトがイベントを実現する
-
設計は、状態機械図におけるイベントを検討し、それらのイベントがシステムオブジェクトによってどのようにサポートされるかを検討することを含む
遷移
遷移線は、一つの状態から別の状態への移動を表す。各遷移線には、イベント が遷移を引き起こすものとしてラベル付けされている
重要な原則
-
システムを状態の集合および状態間の遷移として捉えることは、複雑な振る舞いを記述するのに非常に有用である
-
状態遷移を理解することは、システム分析と設計の一部である
-
ある遷移 は、一つの状態から別の状態への移動である
遷移の順序
-
要素は、元の状態
-
あるイベント が発生する
-
あるアクション が実行される
-
要素は、目的の状態
追加の注意事項
-
複数の遷移は、異なるイベントが状態の終了を引き起こす場合、または以下の状況にある場合に発生するガード条件遷移に付随する
-
イベントとアクションのない遷移は、次と呼ばれる自動遷移
アクションとアクティビティ
| 特徴 | アクション | アクティビティ |
|---|---|---|
| 性質 | 実行可能な原子的計算 | 非原子的または継続的な計算 |
| 例 | 操作呼び出し、オブジェクトの作成/破棄、信号の送信 | 長期間にわたって実行される可能性のある複雑な動作 |
| 中断可能性 | 中断不可 – 中断せずに完了する | イベントによって中断される可能性がある;完了するか、無期限に継続する可能性がある |
| 関連 | 関連する遷移 | 関連する状態 |
アクションとアクティビティの特徴
-
状態はアクションを発動できる
-
状態は、エンティティが特定の状態にある間に実行されるアクションやアクティビティを含む第2のコンパートメントを持つことができる
-
アクションは原子的な実行であり、したがって中断せずに完了する
-
アクションの5つのトリガー:エントリ時、実行、イベント時、エグジット時、含む
-
アクティビティは、長期間にわたって実行される可能性のある複雑な振る舞いを記録するものである。イベントによって中断される場合、アクティビティは完了しない。オブジェクトが状態に到達したときに発生する。
シンプルな状態機械図の表記法

エントリおよびエグジットアクション
状態内で指定されたエントリおよびエグジットアクション。すべてのエントリ/エグジット発生に対して真でなければならない。そうでない場合は、個々の遷移弧にアクションを使用しなければならない。
| アクションの種類 | 表記法 | 実行時 |
|---|---|---|
| エントリアクション | エントリ / アクション |
状態へのエントリ時に実行される |
| エグジットアクション | エグジット / アクション |
状態からのエグジット時に実行される |
例 – エントリ/エグジットアクション(書籍ステータスの確認)
この例は、クラス「BookCopy」から導出された状態機械図を示している。

重要なポイント:
-
この状態機械図は、オブジェクトの状態を示している
myBkCopyからBookCopyクラス -
エントリアクション:エントリアクションに関連付けられているとマークされた任意のアクションは、指定された状態が遷移によって入力されたときに実行される
-
エグジットアクション:エグジットアクションに関連付けられているとマークされた任意のアクションは、状態が遷移によって離脱されたときに実行される
🤖 AIで複雑なオブジェクトライフサイクルをマスターする
状態機械はイベント駆動型の振る舞いをモデル化するために不可欠だが、ネストされたサブステートや並行領域は手動で設計する際に難しくなることがある。Visual ParadigmのAIツール あなたの振る舞い論理を正確なUML状態チャートに変換することで、これを簡素化する—完全に トリガー, ガード、およびエントリ/エグジットアクション.
AI対応プラットフォーム
| プラットフォーム | 機能 |
|---|---|
| VP Desktop | 統合されたAIアシスタントを使用して、UMLモデラー内ですべての状態依存論理を生成・最適化できます |
| AIチャットボット | オブジェクトの状態と遷移を AIチャット即時で編集可能な図の生成に |
スマートな行動設計機能
🔄 遷移の発見:AIがシステム要件から自動的に状態と遷移を特定します
🛡️ 時間の節約:ワンクリックで図を生成、数秒で完了
部分状態と複合状態
A シンプルな状態 は、部分構造を持たない状態を指します。部分状態(ネストされた状態)を持つ状態は、複合状態.
サブステートの基本ルール
-
サブステートは任意のレベルまでネスト可能である
-
ネストされたステートマシンは、最大で1つの初期状態と1つの最終状態しか持てない
-
サブステートは、ある状態が特定の文脈(囲まれたステート)内でのみ可能であることを示すことで、複雑なフラットなステートマシンを簡素化するために使用される
サブステートの例 – ヒーター

ステートマシン図から導き出されたテストアイデア
ステートマシン図は、テストケースを導出するためによく使用される。以下は、ヒーターの例に対する可能なテストアイデアのリストである:
-
アイドル状態が「高温」イベントを受け取る
-
アイドル状態が「低温」イベントを受け取る
-
冷却/起動状態が「コンプレッサー稼働」イベントを受け取る
-
冷却/準備完了状態が「ファン稼働」イベントを受け取る
-
冷却/稼働中状態が「OK」イベントを受け取る
-
冷却/稼働中状態が「障害」イベントを受け取る
-
障害状態が「障害解除」イベントを受け取る
-
加熱状態が「OK」イベントを受け取る
-
加熱状態が「障害」イベントを受け取る
履歴状態
別段の指定がない限り、遷移が複合状態に入ると、ネストされたステートマシンの動作は初期状態から再び開始されるネストされたステートマシンの動作は初期状態から再び開始される(ただし、遷移がサブステートを直接ターゲットとする場合は除く)
履歴状態ステートマシンが複合状態を離れる前にアクティブだった最後のサブステートに再び入ることを可能にする複合状態を離れる前にアクティブだった最後のサブステートに再び入ることを可能にする。
履歴状態の例

💡 使用例履歴状態は、ユーザーが複雑な状態から離れて戻っても進捗を失わない、ユーザーインターフェースやワークフローをモデル化する際に特に有用である。
並行状態
上記したように、状態図における状態はネスト可能である。関連する状態は、単一の複合状態にグループ化できる。活動に並行するサブアクティビティが含まれる場合には、状態を他の状態の中にネストすることが必要となる。.
並行状態機械図の例 – オークションプロセス
この例では、オークションに入り始める状態機械は、開始時に2つの別々のスタートスレッドに分岐するフォークが必要である。各サブ状態にはスレッドの終了を示す終了状態がある。異常終了(キャンセルまたは却下)がない限り、複合状態からの退出は、両方のサブ状態が退出したときに行われる。

並行状態の主な特徴
-
複合状態内の並行実行パスを表す
-
フォーク/ジョイン記法を使用して、並行フローを分割および同期する
-
各並行領域は独立して動作するが、全体の状態動作に貢献する
-
複合状態からの退出は、次の条件が満たされたときのみ発生するすべての並行サブ状態がすべて完了したとき
✏️ 今すぐUML状態機械図を描いてみよう
あなたは状態機械図とは何か、そしてどのように描くかを学びました。今こそ、自分だけの状態機械図を描く時です。
Visual Paradigm Community Editionを入手する、無料のUMLソフトウェアであり、無料の状態機械図ツールを使って自分だけの状態機械図を作成できます。使いやすく、直感的です。
Visual Paradigm Community Editionをダウンロード
AI搭載の状態図生成
Visual ParadigmのAIは、自然言語の記述を数秒で標準準拠のUMLモデルに変換することで、状態図の生成を簡素化します。オンライン注文やサポートチケットなどのオブジェクトのライフサイクルを記述すると、AIは自動的に必要な状態、遷移、トリガー、ガード条件を特定します。
状態図の主な機能
✨ 自然言語から図へ:簡単なテキストプロンプトから、完全なUML状態機械図を即座に生成
💬 対話型の最適化:チャットボットインターフェースを使って、サブ状態の追加、要素の名前変更、遷移の最適化などを簡単なコマンドで段階的に図を修正
🧠 インテリジェントなモデリング支援:AIには、エントリ/エグジットアクション、イベントトリガー、ガード条件などの高度な行動モデリング機能を備えている
🗂️ 論理的な組織化: スマートなクラスタリング機能により関連する状態が自動的にグループ化され、自動レイアウトエンジンが図の見やすさと清潔さを保証します
✅ 設計検証: AIに、図の論理的な欠陥(例:「死胡同」状態や特定状態での未処理イベントなど)を分析してもらうことができます
AIエコシステム
Visual Paradigmは、複数のプラットフォームにAIを統合し、一貫したモデリング体験を提供しています:
統合されたプラットフォームと機能
| プラットフォーム | 主な利点 |
|---|---|
| 統合型デスクトップおよびオンラインプラットフォーム | 以下の AIチャットボット またはオンラインエディタで図を開始し、スムーズに Visual Paradigm デスクトップ アプリにインポートして、高度なコード工学とチーム協働を実現 |
| オンデマンドでのドキュメント作成 | 視覚モデルに基づいて、詳細なプロジェクトレポート、要約、技術文書を自動生成 |
| 広範な記法サポート | 状態図に加えて、AIは40種類以上の図形式をサポートしており、以下を含みますUML、BPMN、SysML、ArchiMate |
| モデル間トレーサビリティ | 状態図をユースケースやユーザーストーリーなどの他のプロジェクトアーティファクトとリンクすることで、システムアーキテクチャ全体で一貫した単一の真実のソースを維持 |
💬 特定の種類の状態機械を生成するための例のプロンプトを見たいですか? ただ聞いてください!
- 📚 参考文献
- 状態機械図とは何か?: UML状態機械図の理解に役立つ包括的なガイド。記法、構成要素、システムモデリングにおける実用的な使い方を網羅
- AI駆動のビジュアルモデリングでUMLステートマシン図をマスターする: AIツールがステートマシン図の作成、モデリングの効率性、および動作設計の正確性をどのように向上させるかを学びます。
- AIで数秒でUMLステート図を作成する: 自然言語の記述を正式なモデルに変換するAI駆動のツールを使って、UMLステート図を素早く生成する方法を発見します。
- AI図生成: 複数のUML表記タイプにおいて、自然言語のプロンプトから自動的に図を生成するVisual ParadigmのAI駆動機能。
- 図作成用AIチャットボット: 話し合いのコマンドと反復的なフィードバックを通じて、UML図の生成と最適化を支援するインタラクティブなAIアシスタント。
- AIチャットボットのドキュメント: AIチャットボットを活用してUML図を作成・修正・検証するための公式ドキュメントと使用ガイドライン。
- 強化されたAIステートマシン図生成: ステート図作成におけるAI機能の向上を詳述したリリースノート。遷移の検出精度の向上やガード条件の処理が含まれます。
- AIステート図の強化: AI駆動のステートマシンモデリング機能の更新とパフォーマンス向上に関する技術的概要。
- UMLステートマシン図:AIを活用したオブジェクト動作のモデリングの決定版ガイド: ステートマシンを通じてAIを活用してオブジェクトの動作をモデリングする方法について、ベストプラクティスや例を含めた包括的なドキュメント。
- AI複合構造図ジェネレーター: AIの支援を活用して、デスクトップ、チャット、OpenDocsの各プラットフォームでUML複合構造図を即座に生成できます。
- Visual ParadigmのAIチャットボットが他と異なる点: 図作成におけるVisual ParadigmのAIチャットボットの独自の利点を説明するブログ記事。文脈認識や技術的正確性を含む。
- AI駆動UML図生成ガイド: AI駆動のUML図生成機能とワークフローについてのベトナム語ガイド。
- 包括的レビュー:Visual ParadigmのAI図生成機能: 第三者によるレビュー。Visual ParadigmのAI図作成機能、使いやすさ、統合機能を評価。
- Visual ParadigmのAI駆動エコシステムがUML開発をどのように変革するか: AIの統合がUML開発ワークフロー、コラボレーション、モデル駆動型エンジニアリングの実践をどのように変革するかを考察する記事。
-
🎯 始めましょうか?今日、Visual Paradigm Community Editionをダウンロードして、直感的なデザインと知能的なAI支援により、プロフェッショナルレベルのステートマシン図を使って動的システムの動作をモデリングを始めましょう。











