令和4年度 春期 応用情報技術者試験 午後 問7 ワイヤレス防犯カメラの状態遷移設計とリングバッファによるデータ不具合対策

学習ガイド

バッテリーと太陽電池で稼働するワイヤレス防犯カメラの制御仕様を検討する問題です。自動撮影・遠隔撮影の継続時間の算出、イベント駆動による状態遷移とタイマ処理、共有バッファの競合によるデータ異常の解決策が問われます。機能仕様から撮影条件を整理して経過時間を計算し、表1から表3の定義を状態遷移図へ当てはめます。テスト時の不具合は、データ送信中の書込み位置に注目してリングバッファの必要性を導きましょう。

この記事で押さえる論点

  • 動体検知による自動撮影とスマホからの遠隔撮影における撮影時間の計算式を導出できる
  • イベント発生時の状態遷移およびタイマ設定を含むアクション処理の対応を説明できる
  • 自動撮影中に動体を再検知した際に生じるバッファの上書き競合の原因を述べられる
  • リングバッファの構造を理解し終端から始端へ循環させるデータ保持の仕組みを説明できる

問題本文

問7 ワイヤレス防犯カメラの設計に関する次の記述を読んで,設問1〜4に答えよ。

I社は,有線の防犯カメラを製造している。有線の防犯カメラの設置には通信ケーブルの配線,電源の電気工事などが必要である。そこで,充電可能な電池を内蔵して,太陽電池と接続することで,外部からの電力の供給が不要なワイヤレス防犯カメラ(以下,ワイヤレスカメラという)を設計することになった。

ワイヤレスカメラは,人などの動体を検知したときだけ,一定時間動画を撮影する。撮影の開始時にスマートフォン(以下,スマホという)に通知する。また,スマホから要求することで,現在の状況をスマホで視聴することができる。

〔ワイヤレスカメラのシステム構成〕

ワイヤレスカメラのシステム構成を図1に示す。ワイヤレスカメラはWi-Fiルータを介してインターネットと接続し,サーバ及びスマホと通信を行う。

図1 ワイヤレスカメラのシステム構成
図の説明テキスト

ワイヤレスカメラのシステム構成図。
図の左側に「ワイヤレスカメラ」という大きな枠があり、その内部に「カメラ部」「制御部」「通信部」「動体センサ」の各ブロックが配置されている。「カメラ部」から「制御部」、「動体センサ」から「制御部」、「制御部」から「通信部」へそれぞれ実線が引かれている。「通信部」からは無線通信を示すジグザグの線で「Wi-Fiルータ」に繋がり、「Wi-Fiルータ」は楕円で示された「インターネット」に実線で繋がっている。「インターネット」は、上方の「サーバ」ブロック、下方の「スマホ」ブロックとそれぞれ実線で接続されている。

  • カメラ部はカメラ及びマイクから構成される。動画用のエンコーダを内蔵しており,音声付きの動画データを生成する。
  • 動体センサは人体などが発する赤外線を計測して,赤外線の量の変化で人などの動体を検知する。
  • 通信部はWi-FiでWi-Fiルータを介してサーバ及びスマホと通信する。
  • 制御部は,カメラ部,動体センサ及び通信部を制御する。

〔ワイヤレスカメラの機能〕

ワイヤレスカメラには,自動撮影及び遠隔撮影の機能がある。

(1) 自動撮影

  • 動体を検知すると撮影を開始する。撮影を開始したとき,スマホに撮影を開始したことを通知する。
  • 撮影を開始してから TaTa 秒間撮影する。ここで,TaTa はパラメタである。
  • 撮影した動画データは,一時的に制御部のバッファに書き込まれる。このとき,動画データはバッファの先頭から書き込まれる。TaTa 秒間の撮影が終わるとバッファの動画データはサーバに送信される。
  • 撮影中に新たに動体を検知すると,バッファにあるその時点までの動画データをサーバに送信し始めると同時に,更に TaTa 秒間撮影を行う。このとき,動画データはバッファの先頭から書き込まれる。

(2) 遠隔撮影

  • スマホから遠隔撮影開始が要求されると撮影を開始する。
  • 撮影した動画データはスマホに送信され,そのままスマホで視聴することができる。
  • スマホから遠隔撮影終了が要求される,又は撮影を開始してから 60 秒経過すると撮影を終了する。
  • 撮影中に再度,遠隔撮影開始が要求されると,その時点から 60 秒間又は遠隔撮影終了が要求されるまで,撮影を続ける。
  • ワイヤレスカメラとスマホが通信するときに通信障害が発生すると,データの再送は行わず,障害発生中の送受信データは消滅するが,撮影は続ける。

〔ワイヤレスカメラの状態遷移〕

(1) 状態
ワイヤレスカメラの状態を表1に示す。

表1 ワイヤレスカメラの状態
図の説明テキスト
状態名 説明
待機状態 カメラ部には電力が供給されておらず,撮影していない状態
自動撮影状態 自動撮影だけを行っている状態
遠隔撮影状態 遠隔撮影だけを行っている状態
マルチ撮影状態 自動撮影と遠隔撮影を同時に行っている状態

(2) イベント

状態遷移のトリガとなるイベントを表2に示す。

表2 状態遷移のトリガとなるイベント
図の説明テキスト
イベント名 説明
遠隔撮影開始イベント スマホから遠隔撮影開始が要求されたときに通知されるイベント
遠隔撮影終了イベント スマホから遠隔撮影終了が要求されたときに通知されるイベント
動体検知通知イベント 動体センサで動体を検知したときに通知されるイベント
動画データ通知イベント カメラ部からのエンコードされた動画データが生成されたときに通知されるイベント
自動撮影タイマ通知イベント 自動撮影で使用するタイマでTa秒後に通知されるイベント
遠隔撮影タイマ通知イベント 遠隔撮影で使用するタイマで60秒後に通知されるイベント

(3) 処理

状態遷移したときに行う処理を表3に示す。それぞれのタイマは新たに設定されると,直前のタイマ要求は取り消される。

表3 状態遷移したときに行う処理
図の説明テキスト
項番 処理名 処理内容
① カメラ初期化 撮影を開始するとき,カメラ部に電力を供給して初期化する。
② 撮影終了 カメラ部の電力の供給を停止して撮影を終了する。
③ 撮影開始 バッファを初期化して,スマホに撮影を開始したことを通知する。
④ バッファに書込み 動画データをバッファに書き込む。
⑤ サーバに動画データ送信 バッファの動画データをサーバに送信する。
⑥ スマホに動画データ送信 動画データをスマホに送信する。
⑦ 自動撮影タイマ設定 自動撮影時のTa秒のタイマを設定する。
⑧ 遠隔撮影タイマ設定 遠隔撮影時の60秒のタイマを設定する。

ワイヤレスカメラの状態遷移図を図2に示す。

図2 ワイヤレスカメラの状態遷移図
図の説明テキスト

ワイヤレスカメラの状態遷移図。
起動状態から「待機状態」へ遷移する。状態として「待機状態」「S1」「S2」「S3」が存在する。各状態間は「遠隔撮影開始イベント」「動体検知通知イベント」「動画データ通知イベント」「遠隔撮影終了イベント or 遠隔撮影タイマ通知イベント」「自動撮影タイマ通知イベント」などによって遷移または自己遷移を行う。
遷移経路上の一部に空欄が配置されており、それぞれの枠内下部には(①, ⑧)、(⑤)、なしなどの処理番号が付記されている。
空欄 a: a
空欄 b: b
空欄 c: c
注記: (処理)内の数字は、表3の項番の処理を行うことを示す。ただし、該当する処理がないときは、(処理)は記述しない。

〔サーバに送られた動画データの不具合〕

自動撮影のテストを行ったとき,サーバに異常な動画データが送られてくる不具合が発生した。通信及びハードウェアには問題がなかった。

この不具合は,自動撮影中に動体を検知したときに発生しており,バッファの使い方に問題があることが判明した。

そこで,撮影中に新たに動体を検知した時点で,書き込まれているバッファの続きから動画データを書き込み,バッファの d まで書き込んだ場合は,バッファの e に戻る方式の f に変更した。

設問と解答・解説

設問1

時刻 t1t_1 に動体を検知して自動撮影を開始した。時刻 t1t_1 から時刻 t2t_2 まで途切れることなく自動撮影を続けており,時刻 t2t_2 に最後の動体を検知した。このときの自動撮影は何秒間行われたか。時間を表す式を答えよ。ここで,処理の遅延及び通信の遅延は無視できるものとする。

配点 2点

時間を表す式を答えよ。

模範解答

(t2-t1)+Ta

採点基準

知識・理解度(内容)1点
  • 1点: 仕様で定められた撮影時間の延長条件を正しく理解し、計算式の要素として取り入れている。
  • 0点: 仕様の理解が不十分であり、条件に基づいた時間の算出ができていない。
論理性(構造)1点
  • 1点: 期間($t_2 - t_1$)と延長時間($Ta$)の和として、論理的に正しい数式を構築できている。
  • 0点: 数式の構造が論理的でなく、正しい時間を表現できていない。

解説

自動撮影の仕様に基づいて、撮影が行われた時間を計算する問題です。

  • 仕様「(1) 自動撮影」には、「撮影中に新たに動体を検知すると……更に TaTa 秒間撮影を行う」と規定されています。
  • 時刻 t1t_1 に最初の動体を検知して撮影が開始されます。
  • その後、途切れることなく動体を検知し続け、時刻 t2t_2 に最後の動体を検知します。
  • したがって、最初の検知から最後の検知までの時間は t2−t1t_2 - t_1 秒となります。
  • 時刻 t2t_2 での検知をトリガとして、そこからさらに TaTa 秒間の撮影が継続されます。
  • よって、合計の撮影時間は (t2−t1)+Ta(t_2 - t_1) + Ta 秒となります。

高得点のポイント

  • 時刻 t1t_1 から t2t_2 までの連続検知時間(t2−t1t_2 - t_1)を正しく計算できていること。
  • 最後の検知時点から延長される撮影時間(TaTa)を正しく加算した式を導けていること。

設問2

スマホから要求を行い動画の視聴を開始した。その 10 秒後に送受信の通信障害が 20 秒間発生した。通信障害が発生してから 5 秒後にスマホから遠隔撮影開始を要求した。スマホでの視聴が終了するのは視聴を開始してから何秒後か。整数で答えよ。ここで,処理の遅延及び通信の遅延は無視できるものとする。

配点 2点

スマホでの視聴が終了するのは視聴を開始してから何秒後か。整数で答えよ。

模範解答

60

解説

遠隔撮影の仕様と、通信障害時の挙動を時間軸で整理して考える問題です。

  1. 時刻 00: スマホから遠隔撮影開始が要求され、ワイヤレスカメラで動画の撮影とスマホへの送信(視聴)が開始されます。このとき、カメラ側では 60秒間 の遠隔撮影タイマが設定されます。
  2. 時刻 1010: ワイヤレスカメラとスマホ間で通信障害が発生します(20秒間続くため、時刻 3030 まで継続します)。
  3. 時刻 1515: 通信障害発生から5秒後(時刻 10+5=1510 + 5 = 15)に、スマホから再度「遠隔撮影開始」を要求します。
  4. 通信障害による影響: 仕様の「(2) 遠隔撮影」には、「通信障害が発生すると、データの再送は行わず、障害発生中の送受信データは消滅するが、撮影は続ける」と記載されています。
  5. 結果: 時刻 1515 の再要求データは通信障害のため消滅し、ワイヤレスカメラ側には到達しません。そのため、ワイヤレスカメラ側で遠隔撮影タイマの再設定(延長)は行われません。

結果として、ワイヤレスカメラは時刻 00 に設定されたタイマの通り、視聴開始から 60秒後 に撮影を終了します。それに伴い、スマホでの視聴も終了します。

設問2は,正答率が低かった。通信障害が発生したときの状況を正しく理解することで,障害の及ぼす影響,その対策などが考察できる。与えられた条件から状況を正しく理解して,正答を導き出してほしい。

設問3

〔ワイヤレスカメラの状態遷移〕について,(1)〜(3)に答えよ。

(1)配点 2点

図2の状態遷移図の状態 S1 に入れる適切な状態名を,表1中の状態名で答えよ。

模範解答

遠隔撮影状態

採点基準

正確性(内容)2点
  • 2点: 「遠隔撮影状態」と正確に解答している。
  • 1点: 解答に軽微な誤字・脱字があるが、意味的には遠隔撮影状態を指していると判断できる。
  • 0点: 誤答、または無回答。

解説

図2の状態遷移図から、状態 S1 の名称を特定する問題です。

  • 図2において、「待機状態」 からイベント a をトリガとして 状態 S1 に遷移しています。
  • この遷移に伴う処理は「①(カメラ初期化),⑧(遠隔撮影タイマ設定)」です。
  • 表3より、処理⑧は「遠隔撮影時の60秒のタイマを設定する」処理であり、遠隔撮影のための準備であることがわかります。
  • さらに、表1の「ワイヤレスカメラの状態」において、遠隔撮影を行う状態は 遠隔撮影状態 と定義されています。
  • したがって、S1 は「遠隔撮影状態」に該当します。

高得点のポイント

  • 状態遷移図の初期状態からの遷移トリガと、表1・表3を正しく対応づけられているか。
(2)配点 2点

図2の状態遷移図の状態 S2 に入れる適切な状態名を,表1中の状態名で答えよ。

模範解答

自動撮影状態

採点基準

正確性(内容)2点
  • 2点: 「自動撮影状態」と正確に解答している。
  • 1点: 解答に軽微な誤字・脱字があるが、意味的には自動撮影状態を指していると判断できる。
  • 0点: 誤答、または無回答。

解説

図2の状態遷移図から、状態 S2 の名称を特定する問題です。

  • 図2において、「待機状態」 から 「動体検知通知イベント」(空欄 c のイベント)をトリガとして 状態 S2 に遷移しています。
  • 表1より、動体を検知して自動で撮影を行う状態は 自動撮影状態 です。
  • 状態 S2 からは「自動撮影タイマ通知イベント」によって待機状態に戻る経路があることからも、これが自動撮影を行う状態であることが確認できます。
  • したがって、S2 は「自動撮影状態」に該当します。

高得点のポイント

  • 遷移のトリガとなるイベント(動体検知)および終了条件のタイマ(自動撮影タイマ)から、状態を正確に特定できているか。
(3)配点 2点

図2中の a に入れる適切なイベント名を,表2中のイベント名で答えよ。

模範解答

遠隔撮影開始イベント

採点基準

正確性(内容)2点
  • 2点: 「遠隔撮影開始イベント」と正確に解答している。
  • 1点: 解答に軽微な誤字・脱字があるが、指定のイベントを指していると判断できる。
  • 0点: 誤答、または無回答。

解説

待機状態から状態 S1(遠隔撮影状態)への遷移を引き起こすイベントを特定する問題です。

  • 図2より、待機状態から S1 に遷移するイベント a に伴って、処理「①(カメラ初期化),⑧(遠隔撮影タイマ設定)」が実行されます。
  • 表2を確認すると、スマホからの要求によって遠隔撮影を開始するためのトリガとなるイベントは 遠隔撮影開始イベント です。
  • したがって、空欄 a に入る適切なイベント名は「遠隔撮影開始イベント」となります。

高得点のポイント

  • 表2のイベント名の中から、遠隔撮影のトリガとなるイベントを正確に抜き出していること。
(4)配点 2点

図2中の b に入れる適切なイベント名を,表2中のイベント名で答えよ。

模範解答

自動撮影タイマ通知イベント

採点基準

正確性(内容)2点
  • 2点: 「自動撮影タイマ通知イベント」と正確に解答している。
  • 1点: 解答に軽微な誤字・脱字があるが、指定のイベントを指していると判断できる。
  • 0点: 誤答、または無回答。

解説

状態 S3(マルチ撮影状態)から状態 S1(遠隔撮影状態)へ遷移する際のトリガイベントを特定する問題です。

  • S3 は自動撮影と遠隔撮影を同時に行っている状態です。ここから S1(遠隔撮影状態のみ)へ遷移するということは、自動撮影が終了した ことを意味します。
  • 遷移経路上には処理「⑤(サーバに動画データ送信)」が記載されています。
  • 仕様の「(1) 自動撮影」には、「TaTa 秒間の撮影が終わるとバッファの動画データはサーバに送信される」と記載されています。
  • 自動撮影の終了トリガとなるのは TaTa 秒経過のタイマ通知であり、表2より該当するイベントは 自動撮影タイマ通知イベント です。

高得点のポイント

  • マルチ撮影状態から遠隔撮影のみの状態へ移行する条件(自動撮影の終了)を仕様と照らし合わせて把握できているか。
(5)配点 2点

図2中の c に入れる適切な処理を,表3中の項番で全て答えよ。

模範解答

①,③,⑦

採点基準

正確性(内容)2点
  • 2点: ①,③,⑦の3つを全て解答している(順不同)。
  • 1点: ①,③,⑦のうち、1つまたは2つのみを解答している。
  • 0点: 誤答、または無回答。

解説

待機状態から状態 S2(自動撮影状態)へ遷移する際の処理を特定する問題です。

  • 図2より、待機状態から S2 へは「動体検知通知イベント」をトリガとして遷移し、その際に処理 c が実行されます。
  • 仕様の「(1) 自動撮影」を確認すると、動体を検知して撮影を開始する際に行うアクションは以下の通り定められています。
    1. 「撮影を開始するとき,カメラ部に電力を供給して初期化する」 → 処理 ①(カメラ初期化)
    2. 「バッファを初期化して,スマホに撮影を開始したことを通知する」 → 処理 ③(撮影開始)
    3. 「撮影を開始してから TaTa 秒間撮影する」ためにタイマを設定する → 処理 ⑦(自動撮影タイマ設定)
  • したがって、実行される処理の項番は ①,③,⑦ の3つとなります。

高得点のポイント

  • 仕様に記載されている初期化、通知、タイマ設定の3つの処理を漏れなく抽出できていること(順不同)。

設問3(3)は,正答率が高かったが,三つの処理の全てを挙げていない解答や,関係のない処理を挙げている解答が散見された。各状態とその状態を維持するための理解が不十分であると考えられる。状態遷移は,組込みシステムの設計ではよく利用されるので,ぜひ理解してほしい。

設問4

〔サーバに送られた動画データの不具合〕について,(1)〜(3)に答えよ。

(1)配点 1点

不具合が発生した理由を 40 字以内で述べよ。

模範解答

書込みと読込みが同時に行われ,バッファの先頭のデータが上書きされた。

採点基準

知識・理解度(内容)1点
  • 1点: バッファへの書込みと読込みが同時に行われ、送信前のデータが上書きされたという不具合の原因を正しく記述している。
  • 0点: 原因の記述が不十分、または誤っている。
論理性(構造)0点
  • 0点: 因果関係が論理的に構築された文章になっている。
  • 0点: 文章の論理構造が破綻しており、意味が通らない。

解説

自動撮影時に発生した「サーバに異常な動画データが送られてくる不具合」の原因を説明する問題です。

  • 仕様の「(1) 自動撮影」には、「撮影中に新たに動体を検知すると,バッファにあるその時点までの動画データをサーバに送信し始めると同時に,更に TaTa 秒間撮影を行う。このとき,動画データはバッファの先頭から書き込まれる」と記載されています。
  • データをサーバへ送信する処理(バッファからの 読込み)と、新たな撮影データを保存する処理(バッファへの 書込み)が同時に実行されます。
  • 動画データがバッファの先頭から書き込まれるため、まだサーバに送信しきれていない未送信のデータが、新しい動画データによって上書きされてしまいます。
  • これによりデータが破損し、異常な動画データがサーバに送られる結果となりました。

高得点のポイント

  • バッファに対する「書込み」と「読込み(送信)」が同時に行われたことに言及していること。
  • 同時処理と先頭からの書込みにより、送信前のデータが「上書きされた」という結果が明記されていること。
  • 40字以内という字数制限を満たしていること。
(2)配点 1点

本文中の d に入れる適切な字句を答えよ。

模範解答

終端

採点基準

正確性(内容)1点
  • 1点: 「終端」または同等の意味を持つ適切な字句を解答している。
  • 0点: 解答が不完全である。
  • 0点: 誤答または無回答。

解説

不具合対策として変更されたバッファの仕組みに関する用語を答える問題です。

  • 本文において「書き込まれているバッファの続きから動画データを書き込み、バッファの d まで書き込んだ場合は……」と説明されています。
  • バッファの領域を最後まで使い切った状態を表す用語が求められます。
  • このようなデータ構造の説明において、バッファの最後の位置を指す一般的な用語は 終端(または最後)です。

高得点のポイント

  • バッファの最後尾を示す適切な用語(終端など)を解答できているか。
(3)配点 2点

本文中の e に入れる適切な字句を答えよ。

模範解答

始端

採点基準

正確性(内容)2点
  • 2点: 「始端」または「先頭」など、適切な字句を解答している。
  • 1点: 解答に軽微な誤りがあるが、バッファの最初を指していると判断できる。
  • 0点: 誤答または無回答。

解説

リングバッファの仕組みにおいて、バッファの終端まで達したあとに戻る位置を答える問題です。

  • 「バッファの終端まで書き込んだ場合は、バッファの e に戻る」と説明されています。
  • 領域を循環して使用する方式において、終端の次に書き込みを行う場所はバッファの最初です。
  • これを指す一般的な用語は 始端(または先頭)となります。

高得点のポイント

  • バッファの最初の位置を示す適切な用語(始端、先頭など)を解答できているか。
(4)配点 2点

本文中の f に入れるバッファの名称を答えよ。

模範解答

リングバッファ

採点基準

正確性(内容)2点
  • 2点: 「リングバッファ」と正確に解答している。
  • 1点: 解答に軽微な誤字等があるが、リングバッファを指していると判断できる。
  • 0点: 誤答または無回答。

解説

終端と始端を論理的につなげて循環して使用するバッファの名称を答える問題です。

  • 「終端まで書き込んだ場合は、バッファの始端に戻る方式」を採用したバッファ構造の一般名称が問われています。
  • 通信処理やストリーミングデータ処理などで頻繁に使用される、配列を環状に見立てて再利用するこのデータ構造は リングバッファ(環状バッファ)と呼ばれます。

高得点のポイント

  • データ構造の専門用語である「リングバッファ」を正確に解答できているか。

設問4(2)は,正答率が低かった。リングバッファは,通信などのインタフェース処理でよく利用される。名称及びその仕組みについて理解を深めてほしい。

Spineチーム