エンベデッドシステムスペシャリスト暗記無料で始める

Stateパターンとは?すてーとぱたーん

Stateパターンとは、状態ごとの振舞いを一つのクラスへまとめ、状態が変わったら参照するオブジェクトを差し替えることで、同じ事象への応答を切り替える設計様式。状態と事象の二重の分岐がクラスの分割に置き換わるので、状態遷移図の構造がそのままコードの構造として現れる。

最終更新:2026-10-06

試験情報

エンベデッドシステムスペシャリスト試験の頻出用語/午前II

エンベデッドSPを最短で暗記・合格する →

背景

GoF(Gang of Four)が整理したデザインパターンの一つ。組込みの制御は本質的に状態機械で、状態と事象の組合せの数だけ振舞いがある。これをswitchの入れ子で書くと、状態を1つ足すたびに全事象の分岐へ手を入れることになり、既存状態の回帰試験までやり直しになる。状態を単位に分けておけば、追加はクラスを1つ増やすだけで済み、変更の影響範囲が状態遷移図と一致する。

具体例

自動販売機を待機・投入済み・販売中・釣銭返却の4つに分け、それぞれが硬貨投入とボタン押下への応答を実装する。状態を1つ増やすときはクラスを1つ足すだけで、既存状態のコードには触らずに済む。C言語でも、状態ごとの関数ポインタ表として同じ構造が組める。

試験での引っ掛け

状態数が少ないうちは、列挙型とswitch、あるいは状態遷移表のほうが小さく速い。クラスと動的な参照差替えが増えるぶんROM/RAMと間接呼出しのコストを払うので、資源の限られた機器で必ず有利とは限らない。外から差し替えるStrategyとは、切替えを誰が決めるかで分かれる。

関連用語

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

エンベデッドSPを最短で暗記・合格する →

試験での特徴
  • 分野:午前II
  • 状態数が少ないうちは、列挙型とswitch、あるいは状態遷移表のほうが小さく速い。