応用情報技術者 2022年 春期 午後 問07
ワイヤレス防犯カメラの設計に関する次の記述を読んで、設問1~4に答えよ。
I社は、有線の防犯カメラを製造している。有線の防犯カメラの設置には通信ケーブルの配線、電源の電気工事などが必要である。そこで、充電可能な電池を内蔵して、太陽電池と接続することで、外部からの電力の供給が不要なワイヤレス防犯カメラ(以下、ワイヤレスカメラという)を設計することになった。
ワイヤレスカメラは、人などの動体を検知したときだけ、一定時間動画を撮影する。撮影の開始時にスマートフォン(以下、スマホという)に通知する。また、スマホから要求することで、現在の状況をスマホで視聴することができる。
〔ワイヤレスカメラのシステム構成〕
ワイヤレスカメラのシステム構成を図1に示す。ワイヤレスカメラは Wi-Fi ルータを介してインターネットと接続し、サーバ及びスマホと通信を行う。

・カメラ部はカメラ及びマイクから構成される。動画用のエンコーダを内蔵しており、音声付きの動画データを生成する。
・動体センサは人体などが発する赤外線を計測して、赤外線の量の変化で人などの動体を検知する。
・通信部は Wi-Fi で Wi-Fi ルータを介してサーバ及びスマホと通信する。
・制御部は、カメラ部、動体センサ及び通信部を制御する。
〔ワイヤレスカメラの機能〕
ワイヤレスカメラには、自動撮影及び遠隔撮影の機能がある。
(1) 自動撮影
・動体を検知すると撮影を開始する。撮影を開始したとき、スマホに撮影を開始したことを通知する。
・撮影を開始してから Ta 秒間撮影する。ここで、Ta はパラメタである。
・撮影した動画データは、一時的に制御部のバッファに書き込まれる。このとき、動画データはバッファの先頭から書き込まれる。Ta 秒間の撮影が終わるとバッファの動画データはサーバに送信される。
・撮影中に新たに動体を検知すると、バッファにあるその時点までの動画データをサーバに送信し始めると同時に、更に Ta 秒間撮影を行う。このとき、動画データはバッファの先頭から書き込まれる。
(2) 遠隔撮影
・スマホから遠隔撮影開始が要求されると撮影を開始する。
・撮影した動画データはスマホに送信され、そのままスマホで視聴することができる。
・スマホから遠隔撮影終了が要求される、又は撮影を開始してから 60 秒経過すると撮影を終了する。
・撮影中に再度、遠隔撮影開始が要求されると、その時点から 60 秒間又は遠隔撮影終了が要求されるまで、撮影を続ける。
・ワイヤレスカメラとスマホが通信するときに通信障害が発生すると、データの再送は行わず、障害発生中の送受信データは消滅するが、撮影は続ける。
〔ワイヤレスカメラの状態遷移〕
(1) 状態
ワイヤレスカメラの状態を表1に示す。

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

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

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

〔サーバに送られた動画データの不具合〕
自動撮影のテストを行ったとき、サーバに異常な動画データが送られてくる不具合が発生した。通信及びハードウェアには問題がなかった。
この不具合は、自動撮影中に動体を検知したときに発生しており、バッファの使い方に問題があることが判明した。
そこで、撮影中に新たに動体を検知した時点で、書き込まれているバッファの続きから動画データを書き込み、バッファの d まで書き込んだ場合は、バッファの e に戻る方式の f に変更した。
設問1:
時刻に動体を検知して自動撮影を開始した。時刻から時刻まで途切れることなく自動撮影を続けており、時刻に最後の動体を検知した。このとき自動撮影は何秒間行われたか。時間を表す式を答えよ。ここで、処理の遅延及び通信の遅延は無視できるものとする。
模範解答
(−)+Ta
解説
解答の論理構成
-
自動撮影の基本動作
- 問題文には「撮影を開始してから Ta 秒間撮影する。ここで、Ta はパラメタである。」とあります。
- したがって動体を 1 回だけ検知した場合、撮影時間は開始時刻+Ta 秒で終了します。
-
途中で新たに動体を検知した場合
- さらに「撮影中に新たに動体を検知すると…更に Ta 秒間撮影を行う。」と明記されています。
- 検知のたびに残り時間がリセットされるイメージではなく、「検知した時点」から改めて Ta 秒追加される仕組みです。
-
設問の条件整理
- 動体を最初に検知したのが時刻 。
- 以降、途切れずに撮影を継続しつつ、最後の検知が時刻 に発生。
- 「途切れることなく」とあるため、 と の間に複数回検知があったとしても撮影はずっと続いています。
-
撮影終了時刻の決定
- で最後に検知した瞬間、そこから Ta 秒 が新たに加算されます。
- 従って、撮影終了時刻は
-
撮影継続時間の算出
- 開始は 、終了は 。
- よって撮影時間 は
誤りやすいポイント
- Ta を「毎回上書きで残り時間を Ta に戻す」と誤解し、 を答えてしまう。
- 最後の検知があった瞬間を含めて Ta 秒撮ることを忘れ「」など減算してしまう。
- 動体が検知されなかった区間があると仮定し、撮影が一旦止まるケースと混同する。設問は「途切れることなく」と強調しています。
FAQ
Q: Ta とは固定値ですか。
A: 問題文に「Ta はパラメタである」とある通り、試験では任意の定数として扱います。計算式だけ求めればよく、具体値は不要です。
A: 問題文に「Ta はパラメタである」とある通り、試験では任意の定数として扱います。計算式だけ求めればよく、具体値は不要です。
Q: 最後の検知が複数同時に起きても計算は変わりますか。
A: 同時刻に複数回検知しても「時刻 に検知した」とみなせるため、追加される時間は 1 回分の Ta 秒 だけです。
A: 同時刻に複数回検知しても「時刻 に検知した」とみなせるため、追加される時間は 1 回分の Ta 秒 だけです。
Q: 通信障害があった場合の影響は考えますか。
A: 「処理の遅延及び通信の遅延は無視できる」と明記されているので、撮影時間の計算には影響しません。
A: 「処理の遅延及び通信の遅延は無視できる」と明記されているので、撮影時間の計算には影響しません。
関連キーワード: タイマ割込み, 状態遷移図, リングバッファ, 自動撮影, イベント駆動
設問2:
スマホから要求を行い動画の視聴を開始した。その10秒後に送受信の通信障害が20秒間発生した。通信障害が発生してから5秒後にスマホから遠隔撮影開始を要求した。スマホでの視聴が終了するのは視聴を開始してから何秒後か。整数で答えよ。
ここで、処理の遅延及び通信の遅延は無視できるものとする。
模範解答
60
解説
解答の論理構成
-
初期条件の整理
スマホは「視聴を開始」した時点で遠隔撮影が始まっています。このときワイヤレスカメラは遠隔撮影状態に遷移し、
「・スマホから遠隔撮影終了が要求される、又は撮影を開始してから 60 秒経過すると撮影を終了する。」
により のタイマがセットされます。 -
通信障害の影響
問題文には、
「・ワイヤレスカメラとスマホが通信するときに通信障害が発生すると、データの再送は行わず、障害発生中の送受信データは消滅するが、撮影は続ける。」
とあります。よって、 から までの は映像が届かないだけで、カメラ側では遠隔撮影を継続しています。タイマも停止・延長されません。 -
「再度の開始要求」が届かない理由
通信障害が始まって 後(=時刻 )にスマホが送った遠隔撮影開始要求は、障害中のためカメラに届きません。従って、
「・撮影中に再度、遠隔撮影開始が要求されると、その時点から 60 秒間…」
の条件は発動せず、タイマはリセットされません。 -
視聴終了時刻の決定
以上より、最初にセットされた タイマがそのまま有効です。
したがって視聴終了は視聴開始からちょうど 後、答えは
誤りやすいポイント
- 「再度の開始要求」があったから 延長されると勘違いする
→ 要求がカメラに届いて初めてタイマがリセットされます。通信障害中に送った要求は消滅します。 - 通信障害の時間を加算してしまう
→ 撮影は継続し、タイマも進み続けます。映像が届く・届かないはタイマに無関係です。 - 「視聴が中断したから終了も遅れる」と考える
→ 終了条件はカメラ側のタイマまたは終了要求だけで決まります。スマホ側の視聴可否は無関係です。
FAQ
Q: 通信障害中にスマホが視聴を続けられない場合、終了時刻は補償されますか?
A: いいえ。撮影は継続しタイマも進行しますので、映像が再び届く時刻に関わらず 後に終了します。
A: いいえ。撮影は継続しタイマも進行しますので、映像が再び届く時刻に関わらず 後に終了します。
Q: 遠隔撮影終了要求は障害回復後に自動的に再送されますか?
A: 問題文の「データの再送は行わず」により、自動再送は行われません。再度ユーザが明示的に送る必要があります。
A: 問題文の「データの再送は行わず」により、自動再送は行われません。再度ユーザが明示的に送る必要があります。
Q: 動画データが欠落した場合、サーバやスマホで補完処理はありますか?
A: 本問題の仕様では補完や再送は定義されていません。欠落部分はそのまま失われます。
A: 本問題の仕様では補完や再送は定義されていません。欠落部分はそのまま失われます。
関連キーワード: 状態遷移, タイマ制御, 通信障害, バッファ管理, 遠隔撮影
設問3:〔ワイヤレスカメラの状態遷移〕について、(1)〜(3)に答えよ。
(1)図2の状態遷移図の状態S1、S2に入れる適切な状態名を、表1中の状態名で答えよ。
模範解答
S1:遠隔撮影状態
S2:自動撮影状態
解説
解答の論理構成
-
図2で 待機状態 → S1 の遷移条件が「遠隔撮影開始イベント(8)」と示されています。遠隔撮影が開始されると直ちに 表3 の「⑧ 遠隔撮影タイマ設定」が実行されていることから、S1 は“遠隔撮影のみ”を行うモードであると判断できます。
表1に該当する状態名は「遠隔撮影状態(遠隔撮影だけを行っている状態)」です。 -
図2で 待機状態 → S2 の遷移条件が「動体検知通知イベント(5、7)」です。表3 で「⑤ サーバに動画データ送信」「⑦ 自動撮影タイマ設定」は自動撮影時に用意された処理であり、動体検知を契機に自動撮影が始まることを示します。
表1に該当する状態名は「自動撮影状態(自動撮影だけを行っている状態)」です。 -
以上より、
• S1=「遠隔撮影状態」
• S2=「自動撮影状態」
が妥当となります。
誤りやすいポイント
- 「動画データ通知イベント」を見て撮影中であることだけに注目し、S1 と S2 の区別をタイマ処理でなく“データ送信先”で判断しようとして混乱するケース。
- S2 から S3 の遷移に「遠隔撮影開始イベント(8)」が含まれているため、S2 を“待ち受け”と誤認してしまうケース。
- 表3 の処理番号を見落とし、「⑧ は S1 にも S3 にも付いている=どちらも遠隔撮影状態」と考えてしまうミス。
FAQ
Q: 状態名を決める際、イベントと処理のどちらを優先して読み取るべきですか?
A: まずイベントが「何の機能を開始/終了させるのか」を見て大枠を判定し、次に処理番号で裏付けると誤判定を防げます。
A: まずイベントが「何の機能を開始/終了させるのか」を見て大枠を判定し、次に処理番号で裏付けると誤判定を防げます。
Q: S3 の名前は本問では問われていませんが、どの状態になりますか?
A: S3 では自動撮影と遠隔撮影の両方を行う遷移が存在するため、表1 の「マルチ撮影状態」に相当します。
A: S3 では自動撮影と遠隔撮影の両方を行う遷移が存在するため、表1 の「マルチ撮影状態」に相当します。
Q: 「遠隔撮影タイマ通知イベント」で S1 からどこへ遷移しますか?
A: 図2では [ a ] → 待機状態 の矢印に「遠隔撮影終了イベント 又は 遠隔撮影タイマ通知イベント(2)」とあるので、タイマ満了時には撮影終了処理②を実行して待機状態へ戻ります。
A: 図2では [ a ] → 待機状態 の矢印に「遠隔撮影終了イベント 又は 遠隔撮影タイマ通知イベント(2)」とあるので、タイマ満了時には撮影終了処理②を実行して待機状態へ戻ります。
関連キーワード: 状態遷移図, イベント駆動, タイマ割込み, バッファリング
設問3:〔ワイヤレスカメラの状態遷移〕について、(1)〜(3)に答えよ。
(2)図2中のa、bに入れる適切なイベント名を、表2中のイベント名で答えよ。
模範解答
a:遠隔撮影開始イベント
b:自動撮影タイマ通知イベント
解説
解答の論理構成
- 表2に記載されているイベントのうち、スマホからの操作で発生する開始系のイベントは「遠隔撮影開始イベント」である。問題文には
「スマホから遠隔撮影開始が要求されたときに通知されるイベント」
と説明されている。 - 図2では、待機状態から遠隔撮影だけを行う状態(S1)へ遷移するときに (8) の処理「遠隔撮影タイマ設定」が付随している。この処理は遠隔撮影で使用するタイマを設定するものであり、遠隔撮影の開始時に必ず実行される処理である。したがって、待機状態 → S1 のトリガは「遠隔撮影開始イベント」と判断できる。これが [a] に入る。
- 自動撮影では、撮影開始時に (7) の処理「自動撮影タイマ設定」で Ta 秒後にタイマをセットし、タイマ満了時に「自動撮影タイマ通知イベント」が発生する。図2ではこのイベントが待機状態 → [c](自動撮影状態)や、マルチ撮影状態からの遷移条件に用いられている。さらに、[b] から S3 へ遷移するときの処理は (5)「サーバに動画データ送信」であり、これは自動撮影でバッファがいっぱいになったときに行う処理であることから、[b] は自動撮影に関係する状態である。
- 自動撮影における状態遷移を引き起こすタイマ満了イベントはただ一つであり、表2では
「自動撮影タイマ通知イベント ― 自動撮影で使用するタイマで Ta 秒後に通知されるイベント」
と定義されている。したがって [b] に入るのは「自動撮影タイマ通知イベント」である。
結論
a:遠隔撮影開始イベント
b:自動撮影タイマ通知イベント
a:遠隔撮影開始イベント
b:自動撮影タイマ通知イベント
誤りやすいポイント
- 遠隔撮影と自動撮影の両方でタイマを使うため、(7) と (8) の処理番号だけを見て混同しやすい。必ず表2のイベント名と対応付けることが重要です。
- 「動画データ通知イベント」は撮影中ずっと発生し得るので、状態開始のトリガにはなりにくい点を見落としやすいです。
- Ta 秒と 60 秒、二種類のタイマがあるため、どちらのタイマ通知なのかを状況(自動/遠隔)で切り分けないと選択を誤ります。
FAQ
Q: 「遠隔撮影開始イベント」はどの処理番号とセットで覚えるべきですか?
A: 遠隔撮影開始直後に行う (8)「遠隔撮影タイマ設定」とセットで覚えておくと、図中で見分けやすくなります。
A: 遠隔撮影開始直後に行う (8)「遠隔撮影タイマ設定」とセットで覚えておくと、図中で見分けやすくなります。
Q: タイマ通知イベントは常に状態遷移を伴いますか?
A: はい。表3に「それぞれのタイマは新たに設定されると、直前のタイマ要求は取り消される」とあるように、タイマ満了時には必ずイベントが発生し、状態遷移か処理が行われます。
A: はい。表3に「それぞれのタイマは新たに設定されると、直前のタイマ要求は取り消される」とあるように、タイマ満了時には必ずイベントが発生し、状態遷移か処理が行われます。
Q: 動画データ通知イベントと自動撮影タイマ通知イベントを混同しないコツは?
A: 動画データ通知は撮影フレームごとに高頻度で発生する一方、タイマ通知は Ta 秒間隔で一度だけ発生します。頻度と目的を意識すると判別しやすいです。
A: 動画データ通知は撮影フレームごとに高頻度で発生する一方、タイマ通知は Ta 秒間隔で一度だけ発生します。頻度と目的を意識すると判別しやすいです。
関連キーワード: 状態遷移図, タイマイベント, 自動撮影, 遠隔操作, バッファ管理
設問3:〔ワイヤレスカメラの状態遷移〕について、(1)〜(3)に答えよ。
(3)図2中のcに入れる適切な処理を、表3中の項番で全て答えよ。
模範解答
c:①、③、⑦
解説
解答の論理構成
- 初期状態である「待機状態」は、【問題文】の表1で「カメラ部には電力が供給されておらず、撮影していない状態」と定義されています。
- 動体を検知したときは自動撮影を開始しなければなりません。自動撮影開始時の動作は【問題文】の自動撮影仕様で
‐「動体を検知すると撮影を開始する。」
‐「撮影を開始したとき、スマホに撮影を開始したことを通知する。」
‐「撮影を開始してから Ta 秒間撮影する。」
と明示されています。 - この一連の処理に対応する項番は表3より
①「カメラ初期化」
③「撮影開始」
⑦「自動撮影タイマ設定」
の3つです。 - したがって、図2で「待機状態」から自動撮影を始める遷移に付与すべき処理、すなわちcに入る処理は「①、③、⑦」となります。
誤りやすいポイント
- 動体検知時にすぐバッファ送信(⑤)を入れてしまう
待機中はまだ動画が存在しないため送信処理⑤は不要です。 - タイマ設定を忘れる
Ta 秒後の自動停止が必要なので⑦「自動撮影タイマ設定」を必ず入れる必要があります。 - カメラ初期化①の抜け漏れ
待機状態では電力が遮断されています。撮影開始前に①が不可欠です。
FAQ
Q: スマホへの「撮影開始通知」は表3のどの項番に含まれますか?
A: 表3の③「撮影開始」に「スマホに撮影を開始したことを通知する。」と記載されています。
A: 表3の③「撮影開始」に「スマホに撮影を開始したことを通知する。」と記載されています。
Q: タイマ再設定のルールはどうなっていますか?
A: 【問題文】表3の注記で「それぞれのタイマは新たに設定されると、直前のタイマ要求は取り消される。」と規定されています。
A: 【問題文】表3の注記で「それぞれのタイマは新たに設定されると、直前のタイマ要求は取り消される。」と規定されています。
Q: 動体検知が連続した場合の処理はどう区別しますか?
A: 既に自動撮影中なら「撮影中に新たに動体を検知すると…バッファにある…動画データをサーバに送信し始める」とあるため、開始時とは異なり⑤+⑦の組合せになります。
A: 既に自動撮影中なら「撮影中に新たに動体を検知すると…バッファにある…動画データをサーバに送信し始める」とあるため、開始時とは異なり⑤+⑦の組合せになります。
関連キーワード: 状態遷移図, 自動撮影, タイマ設定, カメラ初期化, バッファ
設問4:〔サーバに送られた動画データの不具合〕について、(1)〜(3)に答えよ。
(1)不具合が発生した理由を40字以内で述べよ。
模範解答
書込みと読込みが同時に行われ、バッファの先頭のデータが上書きされた。
解説
解答の論理構成
-
自動撮影の通常手順
引用: 「撮影した動画データは、一時的に制御部のバッファに書き込まれる。」
引用: 「Ta 秒間の撮影が終わるとバッファの動画データはサーバに送信される。」
── 本来は“書き込み→完了後に読み出し”という順序です。 -
動体を再検知した場合の特別手順
引用: 「撮影中に新たに動体を検知すると、バッファにあるその時点までの動画データをサーバに送信し始めると同時に、更に Ta 秒間撮影を行う。」
── “送信(読込み)”と“追加撮影(書込み)”が同時並行で発生します。 -
書き込み位置の仕様
引用: 「このとき、動画データはバッファの先頭から書き込まれる。」
── 送信がまだ終わっていない先頭領域へ、追加撮影データを書き始めることを意味します。 -
不具合報告の状況
引用: 「自動撮影中に動体を検知したときに発生しており、バッファの使い方に問題があることが判明した。」
── 上記の同時アクセスが原因で、未送信データが上書きされ“異常な動画データ”となったと推定できます。 -
したがって解答
「書込みと読込みが同時に行われ、バッファの先頭のデータが上書きされた。」
誤りやすいポイント
- 「バッファの先頭から書き込まれる」を“空き領域のみ利用”と誤読しやすい。実際は先頭強制リセットなので転送中データと衝突する。
- “遠隔撮影”と“自動撮影”の挙動を混同し、遠隔撮影では問題が起きない理由(読込み先がスマホで同時書込みがない)を見落とす。
- 不具合を通信障害と結び付ける誤解。引用: 「通信及びハードウェアには問題がなかった。」と明示されている。
FAQ
Q: なぜリングバッファ形式に変更すると解決できるのですか?
A: 「書き込まれているバッファの続きから動画データを書き込み、… バッファの d まで書き込んだ場合は、バッファの e に戻る方式」によって、読み出しポインタと書き込みポインタを分離できるため、重複領域を避けながら連続的に格納できます。
A: 「書き込まれているバッファの続きから動画データを書き込み、… バッファの d まで書き込んだ場合は、バッファの e に戻る方式」によって、読み出しポインタと書き込みポインタを分離できるため、重複領域を避けながら連続的に格納できます。
Q: 送信開始時にバッファをロックする方法では駄目なのでしょうか?
A: 電力節約と処理遅延を抑える観点から、ロック&コピーよりもリングバッファでポインタを回す方が実装が軽量で電池残量にも優しいためです。
A: 電力節約と処理遅延を抑える観点から、ロック&コピーよりもリングバッファでポインタを回す方が実装が軽量で電池残量にも優しいためです。
Q: 遠隔撮影で同様の不具合が起こらないのはなぜ?
A: 遠隔撮影では「動画データをスマホに送信する」と同時に同じバッファへ書き戻す動作がなく、“読み出しと書き込みの競合”が発生しないためです。
A: 遠隔撮影では「動画データをスマホに送信する」と同時に同じバッファへ書き戻す動作がなく、“読み出しと書き込みの競合”が発生しないためです。
関連キーワード: リングバッファ, オーバーライト, 同時アクセス, メモリ保護, データ破損
設問4:〔サーバに送られた動画データの不具合〕について、(1)〜(3)に答えよ。
(2)本文中のd、eに入れる適切な字句を答えよ。
模範解答
d:終端
e:始端
解説
解答の論理構成
- 問題文には、従来方式でバッファの「先頭から書き込む」仕様が示されています。
引用:
「撮影した動画データは、一時的に制御部のバッファに書き込まれる。このとき、動画データはバッファの先頭から書き込まれる。」 - 不具合の原因として「撮影中に新たに動体を検知」するとバッファ運用が乱れると記述されています。
引用:
「この不具合は、自動撮影中に動体を検知したときに発生しており、バッファの使い方に問題があることが判明した。」 - 対策として、バッファの残り領域を使い切ったら先頭に戻る“循環”方式へ変更すると明言されています。
引用:
「撮影中に新たに動体を検知した時点で、書き込まれているバッファの続きから動画データを書き込み、バッファの d まで書き込んだ場合は、バッファの e に戻る方式」 - 循環的に最後まで書き込む位置はバッファの「終端」、戻る位置は「始端」と表現するのが自然です。これにより先頭/末尾間でポインタを折り返すリングバッファが実現できます。
- 以上より、
d=「終端」、e=「始端」と決定できます。
誤りやすいポイント
- 先頭・末尾という語をそのまま当てはめたくなるが、問題文は“戻る”対象を「バッファの e に戻る」としているため、循環開始点を示す一般語「始端」を用いる方が適切です。
- 「終端」を「最後」や「末端」と誤記すると配点対象外になる可能性があります。設問は字句を問うため語形の統一が重要です。
- 不具合の原因を通信障害と結び付けてしまうミス。問題文は「通信及びハードウェアには問題がなかった。」と明示し、論点をバッファ管理に限定しています。
FAQ
Q: なぜ「先頭」ではなく「始端」とするのですか?
A: 問題文は従来方式で「先頭から書き込まれる」と記述済みです。循環方式では“戻る位置”を改めて定義するため、同義語でも区別しやすい「始端」が採用されています。
A: 問題文は従来方式で「先頭から書き込まれる」と記述済みです。循環方式では“戻る位置”を改めて定義するため、同義語でも区別しやすい「始端」が採用されています。
Q: 「リングバッファ」という言葉が本文にないのに、終端・始端と断定して良いのでしょうか?
A: 記述自体が「終端まで書き込んだら始端に戻る」動きを説明しており、これはリングバッファの典型的動作です。語を使わなくても動作仕様で明確に示されています。
A: 記述自体が「終端まで書き込んだら始端に戻る」動きを説明しており、これはリングバッファの典型的動作です。語を使わなくても動作仕様で明確に示されています。
Q: 循環方式にすると何が解消されるのですか?
A: 動体を連続検知した際もバッファポインタを折り返せるため、書込み位置の衝突や誤送信が防止でき、異常な動画データがサーバへ送られる問題が解決します。
A: 動体を連続検知した際もバッファポインタを折り返せるため、書込み位置の衝突や誤送信が防止でき、異常な動画データがサーバへ送られる問題が解決します。
関連キーワード: バッファ管理, リングバッファ, ポインタ操作, 循環キュー, メモリ効率
設問4:〔サーバに送られた動画データの不具合〕について、(1)〜(3)に答えよ。
(3)本文中のfに入れるバッファの名称を答えよ。
模範解答
f:リングバッファ
解説
解答の論理構成
-
状況整理
本文では自動撮影中に再度動体を検知した場合のバッファ処理に不具合があり、改善策を検討しています。
引用:- 「撮影中に新たに動体を検知したときに発生しており、バッファの使い方に問題があることが判明した。」
- 「書き込まれているバッファの続きから動画データを書き込み、バッファの d まで書き込んだ場合は、バッファの e に戻る方式の f に変更した。」
-
要件の読み解き
- 「バッファの続きから書き込み」→ 追記式で上書きしない。
- 「バッファの d まで書き込んだ場合は、バッファの e に戻る」→ 末尾に達したら先頭に戻る循環動作。
-
適合するバッファ構造
末尾まで進んだら自動で先頭に戻り、既にあるデータを上書きしながら連続的に格納できる典型的なデータ構造は「リングバッファ(Circular Buffer)」です。 -
結論
上記より f に入る語は「リングバッファ」と判断できます。
誤りやすいポイント
- 「キュー」と混同する
先頭・末尾の概念だけで循環の要件を見落とすと「キュー(FIFO)」と答えてしまう。 - 「スタック」と誤答する
LIFO 構造は末尾に戻る仕様とは無関係。 - 「メモリマップドファイル」等の高度概念を連想してしまう
問題文は単純にデータ格納方式を問うのみであり、複雑な仕組みは不要。
FAQ
Q: リングバッファはメモリ容量を超えたときデータが失われませんか?
A: はい。古いデータから順に上書きされるため、最新の Ta 秒分を優先的に保持する設計に向いています。本問題でもそれが狙いです。
A: はい。古いデータから順に上書きされるため、最新の Ta 秒分を優先的に保持する設計に向いています。本問題でもそれが狙いです。
Q: リングバッファと循環キューの違いは?
A: 概念的には同じで、データ構造としては配列を円環状に扱う方式を指します。本試験では一般的名称「リングバッファ」を採用しています。
A: 概念的には同じで、データ構造としては配列を円環状に扱う方式を指します。本試験では一般的名称「リングバッファ」を採用しています。
Q: 送信途中で通信障害が起きたらバッファはどうなりますか?
A: 本文の「通信障害が発生すると、データの再送は行わず…」に従い、リングバッファ自体は書き込みを継続し、送信に失敗した区間だけが欠落します。
A: 本文の「通信障害が発生すると、データの再送は行わず…」に従い、リングバッファ自体は書き込みを継続し、送信に失敗した区間だけが欠落します。
関連キーワード: リングバッファ, 循環バッファ, データ構造, バッファ管理


