第5章 · 組込みソフトウェア開発·v1.0.0·更新 2026/7/10·読了目安 約14分
変更要約: 初版
5.3状態遷移設計とイベント駆動
この節の要点
組込み機器のふるまいを整理する状態遷移図/表、外部からの入力に応じて処理するイベント駆動方式と一定周期で状態を確認するポーリング方式の使い分け、そして未定義の遷移を残さない網羅性・例外遷移の設計を学びます。
組込み機器は「電源オフ」「起動中」「待機」「動作中」「異常」のように、限られた数の状態を行き来しながらふるまいます。この「今どの状態にいて、何が起きたら次にどの状態へ移るか」を明確に整理しないまま実装すると、想定外の入力の組み合わせで機器が固まったり誤動作したりします。この節では、状態を体系立てて設計する手法と、外部イベントへの反応方式の選び方を学びます。
5.3.1状態遷移図と状態遷移表
- 状態遷移図=機器が取りうる状態を円(ノード)で、状態間の移動をイベントに応じた矢印(エッジ)で図示したもの。全体のふるまいを視覚的に俯瞰しやすいが、状態数・イベント数が増えると図が煩雑になりモレ(未定義の遷移)の見落としが起きやすい。
- 状態遷移表=縦軸に「現在の状態」、横軸に「発生しうるイベント」を並べたマトリクスで、各セルに「次状態(と実行するアクション)」を記入する形式。全ての状態×全てのイベントの組み合わせを機械的に埋めるため、状態遷移図では見落としやすい「その状態でそのイベントが来たらどうなるか未定義」という抜けを体系的に検出できる。レベル4の組込み設計では、複雑な機器ほど遷移表での網羅的な洗い出しが重視される。
5.3.2イベント駆動とポーリングの使い分け
- イベント駆動=外部からの入力(割込み・メッセージ受信等)が発生した時点で対応する処理を呼び出す方式。入力が発生していない間はCPUを他の処理や省電力状態に回せるため、消費電力・CPU効率が良い。一方、想定していないイベントの組み合わせや順序(例:初期化未完了の状態で通信要求イベントが来る)への対応漏れがあると誤動作しやすい。
- ポーリング=一定周期で状態やフラグを能動的に確認する方式。実装がシンプルで、確認周期内であれば状態変化を確実に捉えられるが、周期の間は他の処理ができない(CPUを占有する)ため消費電力・応答性の面で不利になりやすく、周期より短い時間で発生し消えるイベントは見逃しうる。バッテリ駆動機器ではイベント駆動が有利な場面が多いが、確実な周期監視が必要な場面(センサの安全監視等)ではポーリングを併用することもある。

