📸 組込みシステムの「状態遷移図」と「バッファ管理」の仕組み
〜応用情報技術者レベル徹底解説〜
組込みシステム開発の核心に迫る「ワイヤレス防犯カメラ」の設計問題をベースに、状態遷移、例外処理、そしてデータ構造の最適化を網羅的に解説します。試験対策だけでなく、実務的な設計思考を身につけましょう!
📝 ケーススタディ:ワイヤレス防犯カメラの設計不具合
あるメーカーが、人感センサを搭載した太陽電池駆動のワイヤレス防犯カメラを設計しました。しかし、テスト段階で「自動撮影中に新たな動体を検知すると、サーバに送られる動画データが壊れる」という重大な不具合が発生。この原因と対策を紐解きます。
組込みシステムの挙動を整理する際、以下の4つの状態を定義します。
- 待機: センサのみ稼働(省エネモード)
- 自動撮影: 検知により $Ta$ 秒間録画中
- 遠隔撮影: スマホからの要求で視聴中
- マルチ撮影: 上記が同時に発生している複雑な状態
スマホ視聴中に20秒間の通信障害が発生したとします。その最中に「撮影開始」を再要求してもカメラには届きませんが、カメラ内部のタイマは止まりません。
💡 結果: 障害復旧後も撮影は継続され、開始から計60秒で自動終了します。
不具合の原因は、送信中のデータ領域を「先頭から」上書きしてしまったこと。これを解決するのがリングバッファです。
1. 🧩 システム構成とハードウェアの要件
ワイヤレスカメラは「限られた資源(電力・メモリ)」を効率的に使うことが求められます。
- 省電力化: 太陽電池駆動のため、撮影時以外はカメラ部への給電を遮断します(表3-② カメラ終了)。
- 動体検知: 赤外線量の変化を捉え、「動体検知通知イベント」として制御部に伝えます。
- リアルタイム通信: Wi-Fi経由でスマホへ通知。遅延や通信障害を想定した設計が不可欠です。
2. ⏱️ 撮影時間の計算(設問1:論理的思考)
問題:時刻 $t_1$ に検知し、時刻 $t_2$ まで継続して検知。その後は検知なし。撮影時間は?
解説:
- 開始時刻:$t_1$
- 継続検知期間:$t_2 - t_1$
- 最後の検知後の撮影延長:仕様により $Ta$ 秒間
💡 答え:(t_2 - t_1) + Ta
3. 🔄 状態遷移図の設計(設問3:モデリング)
組込みソフトの挙動を整理する「状態遷移図」は試験の最頻出項目です。
| 状態名 | 内容 |
|---|---|
| 待機状態 | 電力を抑え、センサのみが稼働しているベース状態。 |
| 自動撮影状態 | 動体検知をトリガに、サーバへ動画を保存する状態。 |
| 遠隔撮影状態 | スマホからの要求で、リアルタイム視聴を可能にする状態。 |
| マルチ撮影状態 | 上記2つが重なった、最も複雑な制御が必要な状態。 |
待機から自動撮影へ移行する際は、以下の3ステップがセットで必要です:
- ① カメラ初期化(ハードウェアの起動)
- ③ 撮影開始(バッファ初期化・スマホ通知)
- ⑦ 自動撮影タイマ設定(終了時間の管理開始)
4. 📡 通信障害への耐性(設問2:例外処理)
- ユーザーが外からスマホで自宅の様子を確認開始。
- 10秒後にトンネルに入り、通信が20秒間遮断。
- ユーザーは焦って「開始」を連打(15秒時点)。
5. 🛠️ バッファ不具合の解消(設問4:データ構造)
❌ 発生した不具合
「送信中に次のデータがバッファ先頭に書き込まれ、送信データが上書きされた」
これは、読込みポインタを書込みポインタが追い越してしまったことによるデータ破損です。
✅ 解決策:リングバッファ(循環バッファ)
メモリを円環状に使い、終端に達したら始端へ戻る仕組みです。
- [d] 終端 まで書いたら
- [e] 始端 に戻って書込みを続ける
- 名称:[f] リングバッファ(循環バッファ)
🎯 まとめ:ここが試験のポイント!
- ✅ 組込みの基本: 物理デバイスの制御(①初期化など)を忘れない。
- ✅ 状態遷移: 各状態から「どのイベント」で「どの処理」をして次へ行くかを紐解く。
- ✅ 例外設計: 通信障害時もカメラ側のタイマは止まらない。
- ✅ メモリ管理: 重複書き込みを防ぐには「リングバッファ」が有効。
🌟 合格に向けて、仕様書を「時間軸」で追う癖をつけましょう!
試験対策のその先へ:周辺知識と出題傾向
今回の「ワイヤレス防犯カメラ」の問題、いかがでしたか?単なるパズル解きではなく、背後には「リアルタイムシステム設計」の基本原則が詰まっています。ここで、応用情報レベルで押さえておくべき周辺知識を整理しておきましょう。
本問では「タイマ通知イベント」が登場しましたが、組込み実務ではウォッチドッグタイマも必須知識です。システムが無限ループ等でフリーズした際、自動的にリセットをかけるこの仕組みは、メンテナンスが困難な屋外設置カメラ等で命綱となります。
近年のAP試験(組込み分野)では、今回のような「クラウド・サーバ連携」を前提としたIoT機器の出題が目立ちます。デバイス単体の制御だけでなく、ネットワークの遅延や切断(設問2のケース)を考慮した「エッジ側での自律動作」が問われる傾向にあります。
メモリが高騰していた時代から続く手法ですが、現代の動画配信やセンサデータのストリーミングでも、「オーバーヘッドの少なさ」から現役の手法です。特に、書込みと読出しの速度差を吸収する「プロデューサー・コンシューマー問題」の解決策として理解しておくと、実務でも重宝します。
あとがき:
組込み分野は一見難解ですが、仕様を「状態遷移図」という地図に落とし込めば、必ず正解に辿り着けます。この一問をきっかけに、身の回りのスマート家電が「どんなイベントで、どの状態に移っているのか」を想像してみると、合格への道がより楽しくなるはずです。応援しています!
🎯試験に出る!記述解答の定型文リスト
午後試験の「あと5点」を勝ち取るためのキーワード集
「データの移動を伴わずに、限られたメモリ領域を効率的に再利用できる」
「複数のタスクによる同時アクセスを防ぎ、データの整合性を確保するため」
「システムがハングアップ(無限ループ)した際、自動的にリセットをかけて正常状態に復帰させる」
「未検知状態が一定時間続いた場合に、未使用デバイスへの給電を停止して消費電力を削減する」
「標本化定理に基づき、対象となるアナログ信号の最大周波数の2倍以上の周期で計測を行う」
⚠️ 凡ミス・ひっかけを撃退!一問一答チェック
午後試験で「正解に見える罠」を回避するトレーニング
Q1. 通信障害で開始要求が届かなかった場合、カメラの撮影処理は即座に停止する?
正解とひっかけポイントを見る
正解:停止しない(撮影は続く)
【ひっかけ注意】 今回の問題文にもありましたが、「通信障害でデータは消滅するが、撮影は続ける」という仕様が一般的。通信の成否とデバイス内部のタイマ動作を混同しないようにしましょう。
Q2. リングバッファは、データが満杯になったら古いデータを消去して停止させる必要がある?
正解とひっかけポイントを見る
正解:不要(自動的に始端に戻って上書きする)
【ひっかけ注意】 「停止させる」のではなく、処理済みの領域を「再利用する」のがメリット。ただし、読出しが追いつかないと未送信データが上書きされるリスクがある点も記述問題の狙い目です。
Q3. 撮影延長時間が Ta 秒のとき、開始から終了までの時間は常に Ta 秒となる?
正解とひっかけポイントを見る
正解:NO(検知期間 + Ta 秒になる)
【ひっかけ注意】 設問1の罠です。Taはあくまで「最後の検知からの延長分」。検知が続いている間(t2-t1)を足し忘れる計算ミスが多発します。
Q4. リアルタイムOSの「リアルタイム性」とは、処理速度が非常に速いことである?
正解とひっかけポイントを見る
正解:NO(「定められた時間内に必ず終わる」こと)
【ひっかけ注意】 速度の速さではなく、応答の「確実性(時間的制約の遵守)」が正解。午前試験の用語問題で最も狙われるひっかけの一つです。
📘 登場用語・完全網羅マスターリスト
問題文の全要素から周辺知識までを網羅した最強の辞書
【1】システム構成・ハードウェア関連
- ● 制御部(マイクロコントローラ/MCU)
- カメラの「脳」にあたる部分。動体センサの信号を検知し、カメラ部や通信部の電源供給やデータの流れをソフトウェア(ファームウェア)で制御します。
- ● カメラ部(カメラ・マイク・エンコーダ)
- 映像と音声をキャプチャし、デジタルデータ化するユニット。エンコーダは、膨大な映像データをWi-Fiで送れるサイズに圧縮(符号化)する重要な役割を担います。
- ● 動体センサ(PIRセンサ)
- 赤外線の変化で「熱を持つものの動き」を検知。組込み設計では、この検知を外部割込み信号として使い、省エネ状態のCPUを起動させるのが定石です。
- ● Wi-Fiルータ & サーバ
- カメラからのデータをインターネット経由でスマホや保存先へ中継するインフラ。本問では、これらを介した通信の「遅延」や「障害」を考慮した設計が問われています。
【2】状態遷移・イベント制御関連
- ● 状態遷移図(ステートマシン)
- 「待機」「自動撮影」などの状態が、どんなイベントで切り替わるかを示した図。複雑な並列動作(マルチ撮影)をバグなく設計するための必須ツールです。
- ● 動体検知通知イベント
- センサが反応した際に制御部へ送られる信号。これがトリガとなり、カメラの給電開始やタイマ設定などの一連の処理が走り出します。
- ● 遠隔撮影開始/終了イベント
- ユーザーのスマホ操作を起点とするイベント。ネットワーク経由のため、パケットロス(通信障害)によりイベントが消失する可能性を常に考慮する必要があります。
- ● 各種タイマ通知イベント(Ta秒 / 60秒)
- ソフトウェアタイマが満了した際に発生するイベント。組込みOSにおいて、特定の時間経過後に処理を自動停止させるために使われます。
【3】メモリ管理・不具合対策関連
- ● バッファ(一時記憶領域)
- カメラで生成された動画をサーバへ送る前に一時的に溜めておくメモリ領域。速度差のある処理(撮影と通信)を同期させるために必須です。
- ● リングバッファ(循環バッファ)
- 終端まで書いたら始端に戻る構造。「メモリを物理的に増やさず、古い処理済み領域を再利用する」ことで、長時間の連続撮影を可能にします。
- ● 上書き(オーバーライト)不具合
- サーバへの送信が追いつかないうちに、新しい映像データがバッファの同じ場所に書き込まれてしまう現象。これが今回の「異常な動画データ」の正体です。
- ● 排他制御 / 共有資源
- バッファのような一つの資源を「書込み」と「読出し」で同時に使う際、データの整合性を守るための制御。AP試験ではセマフォやミューテックスといった用語と共に頻出します。
【4】実務・試験に役立つ周辺用語
- ● パラメータ(Ta / タイムアウト値)
- プログラム自体を書き換えずに挙動を変更できる設定値。本問では自動撮影の「延長時間」を指します。
- ● 再送制御なし(UDP/リアルタイム性)
- 「古いデータを送り直すより、最新の映像を届ける」ことを優先する設計思想。通信障害時にデータが消滅しても、システム全体を停止させない柔軟さが求められます。
- ● 初期化(カメラ部初期化)
- デバイスに電源を入れ、撮影可能な状態にする準備処理。省電力設計のシステムでは、この「起動までの待ち時間」がユーザー体験に影響するため重要視されます。
この記事へのコメント