情報処理試験を勉強していると、「状態マシン図って状態遷移図と何が違うの?」「アクティビティ図やシーケンス図とどう使い分けるの?」と戸惑う場面が出てきます。この記事では、状態マシン図の定義から構成要素、試験での出題パターンまでを一気に整理します。
対象試験と出題頻度
状態マシン図は、基本情報技術者・応用情報技術者で出題されるテーマです。
UMLのダイアグラム比較問題で選択肢の一つとして登場するケースが多く、単独で「状態マシン図を説明せよ」と問われるよりも、他の図との区別が求められます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクC(応用)余裕があれば覚える
用語の定義
状態マシン図(State Machine Diagram)とは、一言で言うと
「あるオブジェクトが取り得る状態と、イベントをきっかけに状態がどう変わるかを表現するUMLの振る舞い図」
のことです。
イメージとしては、「信号機の色の切り替わりルール表」です。
信号機は「青→黄→赤→青…」と、決まったきっかけ(タイマー)で状態が切り替わります。今どの色で、何が起きたら次にどの色になるかを一枚の図に書き出したもの――それが状態マシン図の考え方です。
📊 状態マシン図の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | State Machine Diagram |
| 旧称 | ステートチャート図(UML 1.x時代の呼称) |
| UMLでの分類 | 振る舞い図(Behavior Diagram) |
| 理論的背景 | 有限オートマトン(有限状態機械) |
| 主な用途 | イベント駆動型システムの設計・組込みソフトウェアの振る舞い記述 |
解説
ソフトウェア開発では、ある対象(注文、タスク、画面など)が時間やイベントに応じて振る舞いを変える場面が多く存在します。たとえば「注文」というオブジェクトは、「未確定→確定済→発送済→完了」のように状態が切り替わります。
こうした振る舞いをテキストだけで仕様書に書くと、条件の抜け漏れや矛盾が生まれやすくなります。
状態マシン図は、「今どの状態にいるか」「何が起きたら次にどの状態へ移るか」を一枚の図で網羅的に整理し、抜け漏れを防ぐために使われます。
構成要素
状態マシン図を読み書きする上で押さえるべき要素は以下の5つです。
| 要素 | 記号 | 意味 |
|---|---|---|
| 状態(State) | 角丸四角形 | オブジェクトがある条件を満たしている期間。「待機中」「処理中」などの名前をつける |
| 遷移(Transition) | 矢印(実線) | ある状態から別の状態への移動。矢印の上にトリガ(イベント)やガード条件を記述する |
| イベント(トリガ) | 矢印上のラベル | 遷移を引き起こすきっかけ。「ボタン押下」「タイムアウト」など |
| 開始疑似状態 | 黒丸(●) | 図の開始点。ここから最初の状態へ矢印を引く |
| 終了疑似状態 | 二重丸(◉) | オブジェクトのライフサイクルが終わる点 |
図解:ECサイトの「注文」の状態遷移
具体例として、ECサイトの「注文オブジェクト」がたどる状態遷移を図にします。
注文オブジェクトの状態マシン図
▲ 角丸四角形が「状態」、矢印が「遷移」、矢印上のラベルが「トリガ(イベント)」
ガード条件とアクション
遷移の矢印には、トリガのほかに「ガード条件」と「アクション」を書き添える場合があります。
ガード条件:遷移が発生するための追加条件を角括弧 [ ] で示します。たとえば「注文確定 [在庫あり]」と書くと、在庫がある場合のみ遷移が起きます。
アクション:遷移時に実行される処理をスラッシュ(/)の後に記述します。「注文確定 [在庫あり] / 在庫数を減算」のように書きます。
遷移ラベルの書式
イベント名 [ガード条件] / アクション
例:注文確定 [在庫あり] / 在庫数を減算
他のUML図との違い
状態マシン図を正しく位置づけるには、「何に着目して描くか」で他の図と整理するのが近道です。
| 図の名称 | 着目点 | 見分けキーワード |
|---|---|---|
| 状態マシン図 | 1つのオブジェクトの状態変化 | 状態遷移、トリガ、イベント駆動 |
| アクティビティ図 | 処理の流れ(制御フロー) | 分岐、並行処理、フォーク・ジョイン |
| シーケンス図 | オブジェクト間のメッセージの時系列 | ライフライン、メッセージ、時系列 |
| ユースケース図 | 利用者とシステム機能の対応 | アクタ、相互作用、要求機能 |
| クラス図 | クラスの属性・操作と静的な関連 | 属性、操作、汎化、集約 |
ポイントは、状態マシン図が「1つのオブジェクトの内部状態の変化」にフォーカスしている点です。アクティビティ図は「処理の流れ」、シーケンス図は「オブジェクト間のやり取り」に着目しており、見ている対象がそもそも異なります。
では、この図が試験でどのように出題されるか見ていきましょう。
💡 状態マシン図の核心を3行で
・オブジェクトが取り得る「状態」と、イベントによる「遷移」を表すUMLの振る舞い図
・構成要素は「状態(角丸四角形)」「遷移(矢印)」「トリガ」「開始疑似状態(●)」「終了疑似状態(◉)」
・遷移ラベルの書式は「イベント [ガード条件] / アクション」
試験ではこう出る!
状態マシン図は、FE・APの午前問題で「UML図法の比較問題」の選択肢として頻繁に登場します。単独で問われることは少なく、他の図との区別ができるかがカギです。
📊 過去問での出題実績
| 試験回 | 出題内容 | 状態マシン図の扱い |
|---|---|---|
| AP R6秋 午前 問66 |
業務フローを記述できるUML図を選ぶ問題(正解はアクティビティ図) | 不正解選択肢として「状態マシン図」が登場 |
| AP H28春 午前 問66 |
UMLの図法と用途を対応付ける問題(正解はユースケース図) | 「ステートチャート図」として選択肢に登場し、「オブジェクト内の状態の移り変わり」の記述と対応 |
| AP H28春 午前 問48 |
イベントドリブンの処理仕様を表現する方法を選ぶ問題(正解は状態遷移図) | 「状態遷移図」として出題。状態マシン図の基礎概念と同一の考え方 |
| FE R3免除 問45 |
ユースケース図の説明を選ぶ問題 | 「外部からのトリガに応じてオブジェクトの状態がどのように遷移するかを表現する」がステートチャート図の説明としてひっかけ選択肢に使われた |
| AP H24秋 午後 問8 |
ディジタルオーディオプレーヤの設計問題 | 再生機能のステートマシン図を読み取り、状態遷移の空欄を埋める記述問題 |
📝 IPA試験での出題パターン
パターン1:「この説明に合うUML図はどれか」
4つのUML図の説明文が並び、正しい組み合わせを選ぶ形式。状態マシン図は「オブジェクトの状態遷移」「イベント駆動」がキーワード。「処理の流れ・並行処理」はアクティビティ図、「アクタとの相互作用」はユースケース図なので混同しないこと。
パターン2:状態マシン図の読み取り(AP午後)
AP午後「情報システム開発」では、状態マシン図が与えられ、空欄の遷移先や遷移条件を記述させる問題が出る。構成要素の意味を理解していれば対応できる。
午前対策としては、「状態マシン図 = 1つのオブジェクトの状態遷移」と即答できれば十分です。ガード条件やアクションの書式まで深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. UMLの状態マシン図の説明として、最も適切なものはどれでしょうか?
- A. システムに対する要求機能を、利用者や外部システム(アクター)との相互作用として表現する。
- B. 処理の分岐や並行処理、同期などを含む一連の制御フローを表現する。
- C. 外部からのトリガに応じて、オブジェクトの状態がどのように遷移するかを表現する。
正解と解説を見る
正解:C
解説:
状態マシン図は、イベント(トリガ)をきっかけにオブジェクトの状態がどう変化するかを表現するUMLの振る舞い図です。FE R3免除 問45でも、まさにこの文言がステートチャート図の説明として出題されました。
選択肢Aはユースケース図の説明です。ユースケース図はアクターとシステム機能の対応関係を表す図であり、オブジェクト内部の状態変化は扱いません。選択肢Bはアクティビティ図の説明です。アクティビティ図は処理の制御フローを可視化する図であり、フローチャートのUML版と位置づけられます。
よくある質問(FAQ)
Q. 「状態マシン図」と「ステートチャート図」は別物ですか?
同じものです。UML 1.x時代の名称が「ステートチャート図」で、UML 2.0以降「状態マシン図(State Machine Diagram)」に改称されました。IPA試験では両方の名称が使われるため、どちらが出ても同じ図を指すと判断してください。AP H28春 問66では「ステートチャート図」、AP R6秋 問66では「状態マシン図」の表記で出題されています。
Q. 状態遷移図と状態マシン図は同じですか?
広義では同じ概念ですが、厳密には異なります。「状態遷移図」は特定のモデリング言語に依存しない一般的な図式化手法で、有限オートマトンの理論に基づきます。「状態マシン図」はUMLの仕様に準拠した振る舞い図であり、ガード条件やアクション、サブ状態(複合状態)などUML固有の拡張が含まれます。試験では文脈に応じてどちらの用語も登場しますが、午前問題の四肢択一レベルでは同一視して問題ありません。
Q. 実務ではどのような場面で状態マシン図を使いますか?
組込みソフトウェアの設計でとくに多用されます。家電製品のリモコン操作やエレベーターの動作制御など、「今の状態」と「発生したイベント」で次の動作が決まるシステムでは、状態マシン図で振る舞いを網羅的に定義してからコーディングに入るのが定石です。Webアプリケーションでも、注文ステータスや承認ワークフローのように状態が段階的に進む業務ロジックの設計に利用されます。
Q. 状態マシン図の「複合状態(サブ状態)」とは何ですか?
ある状態の内部にさらに細かい状態遷移を入れ子で記述する仕組みです。たとえば「再生中」という状態の中に「通常再生」「早送り」「巻き戻し」というサブ状態を持たせるケースが該当します。AP H24秋 午後問8のオーディオプレーヤの題材がまさにこの構造です。ただし、FE午前レベルではサブ状態まで問われることはほぼないため、APの午後対策として把握しておけば十分です。