応用情報技術者 2017年 秋期 午後 問07
ドライブレコーダに関する次の記述を読んで、設問1~4に答えよ。
H社は、カーアクセサリ用品の開発会社である。H社では、このたび、ドライブレコーダ(以下、レコーダという)を設計することになった。
レコーダは、自動車運転時における周囲の状況を撮影し、急停止、衝突など(以下、衝撃という)を検出すると、衝撃までの最大10秒間及び衝撃後20秒間の動画に、GPS情報を含めて動画ファイルとしてSDカード(以下、SDという)に保存する。
〔レコーダの基本動作〕
図1にレコーダのハードウェア構成を示す。

(1) 電源投入後の動作
各ハードウェアは、電源投入で起動し、次のとおり動作を開始する。
① 制御装置は、衝撃センサの割込みを有効にし、カメラに撮影を指示する。
② GPSモジュールは、GPS情報の取得を開始する。取得したGPS情報を1秒ごとに制御装置に通知し、GPS情報を取得できないときは通知しない。GPS情報には、GPSから得られた位置及び時刻が含まれる。
③ 制御装置は、最初のGPS情報を受け取ると、GPS情報から時刻を取り出してシステム時刻に設定し、その後、ソフトウェアでシステム時刻を逐次更新する。また、GPS情報を取得できるときは、GPS情報の時刻によって1時間ごとにシステム時刻を補正する。
④ 制御装置は、カメラから1フレームごとの画像データを受け取り、記録バッファに書き込む。このとき、GPS情報があれば、画像データに含めて記録バッファに書き込む。
(2) 衝撃検出時の動作
・衝撃センサは、衝撃を検出すると、制御装置に割込みで通知する。
・制御装置は、衝撃センサからの割込みを受けると記録バッファに書き込まれている画像データを動画ファイルとしてSDに保存する。
(3) 電源断時の動作
レコーダは電源断となっても最低30秒間は動作を維持できる二次電池を内蔵している。電源断となったときには、衝撃センサからの割込みを禁止とし、二次電池から電力を供給する。この結果、レコーダがaしているときに電源断となっても、動画ファイルの破損を防止できる。
〔記録バッファ〕
記録バッファは、画像データを書き込むためのFIFO構成のメモリである。カメラで撮影した画像データが書き込まれ、動画ファイルをSDに保存するとき、その画像データが読み出される。読み出された画像データは記録バッファから削除される。
画像データが読み出されずに記録バッファの空き容量がなくなったときは、最も古い画像データから順に破棄され、常に最新の画像データが書き込まれていることになる。
カメラはFフレーム/秒で画像を撮影する。1フレームの画像データはGPS情報を含めてNバイトである。
記録バッファには、衝撃検出直前の10秒間分の画像データが書き込まれる。さらに、動画ファイルの保存の処理遅れを考慮して、10.5秒間分の画像データを書き込むことができる容量とする。
〔動画ファイルの保存〕
動画ファイルは、SDの空き容量が十分であれば、衝撃を検出したシステム時刻(YYYYMMDD_hhmmss)をファイル名として保存される。ここで、YYYY、MM、DD、hh、mm、ssは、それぞれ西暦年、月、日、時、分、秒を表す。
なお、システム時刻が設定されていないときは、動画ファイルを保存しない。
(i) 制御装置は、衝撃センサからの割込みを受けると、記録バッファに書き込まれている最大10秒間分の画像データを圧縮して動画ファイルとしてSDに保存する。保存に要する時間は最大100ミリ秒である。
(ii) 以降 20 秒間、記録バッファに書き込まれる画像データを待ち受け、新しい画像データが書き込まれると、逐次、圧縮して動画ファイルに追記する。
(iii) SD に動画ファイルを保存中に再度衝撃センサからの割込みを受けると、受けた時点から 20 秒間、(ii)と同様に画像データを圧縮して動画ファイルに追記する。
〔レコーダのタスク構成〕
表1にレコーダのタスク構成を示す。
各タスクはイベントドリブン方式で制御され、イベントを受信すると必要な処理を行う。
衝撃センサが衝撃を検出すると割込みで通知し、割込み処理プログラムは保存タスクに衝撃イベントを送信する。

〔保存タスクの動作〕
図2に保存タスクの状態遷移図を示す。

(1) イベント待ち
衝撃イベントを受すると、衝撃検出前データ保存状態に遷移する。
(2) 衝撃検出前データ保存
タイマにa秒を設定し、動画ファイルを生成する。次に、記録バッファに書き込まれている画像データを読み出して動画ファイルに追記する。記録バッファに書き込まれている最大10秒分の画像データを全て保存すると、衝撃検出後データ保存状態に遷移する。
(3) 衝撃検出後データ保存
各種イベントを受してイベントに応じた処理を行う。
・画像格納イベントを受信すると、記録バッファから1フレーム分の画像データを読み出し、動画ファイルに追記する。
・衝撃イベントを受言すると、設定してあるタイマ要求を取り消し、タイマに新たにf秒を設定する。
・タイマ満了イベントを受信すると、動画ファイルの保存を終了し、イベント待ち状態に遷移する。
設問1:
〔レコーダの基本動作〕について、本文中のaに入れる適切な字句を答えよ。
模範解答
a:動画ファイルを保存
解説
解答の論理構成
-
空欄が現れる箇所
【問題文】(3) 電源断時の動作“この結果、レコーダがaしているときに電源断となっても、動画ファイルの破損を防止できる。” -
文脈が示す状況
同じ段落には“電源断となったときには、衝撃センサからの割込みを禁止とし、二次電池から電力を供給する。”
と書かれています。これは一時的にでも記録処理を安全に完了させるための措置です。 -
破損リスクが生じる操作
レコーダで“破損”が問題になるのは SD への書込み、すなわち“動画ファイル”
を“保存”している最中だけです。読み出しや待機中はファイルシステム整合性が失われません。 -
結論
よって、aに入る語句は“動画ファイルを保存”となります。
誤りやすいポイント
- “圧縮処理”や“記録バッファへ書込み”と答えてしまう
破損対象は SD 上のファイルなので、圧縮やバッファ書込み中ではなく SD への保存中が正解です。 - “画像データを書込”のように対象を限定しない
問われているのはファイル単位の保護であり、“動画ファイル”まで言い切る必要があります。 - “保存中”だけを答えて主語を省略
何を保存中なのかを示さないと文が成立しません。
FAQ
Q: “動画ファイルを保存”ではなく“書込み”では駄目?
A: 動作名は【問題文】中で“動画ファイルとしてSDに保存”と明示されており、同じ表現を使用するのが適切です。
A: 動作名は【問題文】中で“動画ファイルとしてSDに保存”と明示されており、同じ表現を使用するのが適切です。
Q: 電源断後に二次電池で“最低30秒間”動かす理由は?
A: SD 書込み完了とファイルシステム更新に十分な余裕を持たせ、動画ファイル破損を確実に防ぐためです。
A: SD 書込み完了とファイルシステム更新に十分な余裕を持たせ、動画ファイル破損を確実に防ぐためです。
Q: 衝撃センサの割込みを禁止するのはなぜ?
A: 追加の割込み処理で CPU を占有させず、限られた二次電池残量を“動画ファイルを保存”に集中させるためです。
A: 追加の割込み処理で CPU を占有させず、限られた二次電池残量を“動画ファイルを保存”に集中させるためです。
関連キーワード: SDカード、ファイルシステム、割込み制御、電源保護、バッファリング
設問2:
〔記録バッファ〕について、記録バッファの容量を求める式を、カメラが1秒間に撮影するフレーム数F及びGPS情報を含む1フレームの画像データのバイト数Nを使って答えよ。
模範解答
10.5FN
解説
解答の論理構成
-
記録バッファが保持すべき時間長
原文では「記録バッファには、衝撃検出直前の10秒間分の画像データが書き込まれる。さらに、動画ファイルの保存の処理遅れを考慮して、10.5秒間分の画像データを書き込むことができる容量とする。」とあります。容量計算には後段の「10.5秒間」を採用します。 -
1秒当たりのフレーム数
同じ節に「カメラはFフレーム/秒で画像を撮影する。」と明記されています。したがって10.5秒間に撮影されるフレーム総数は
です。 -
1フレーム当たりのデータ量
「1フレームの画像データはGPS情報を含めてNバイトである。」と与えられています。 -
容量の算出
保管すべきフレーム数に1フレーム当たりのサイズを掛ければ記録バッファ容量になります。
したがって式は 10.5FN となります。
誤りやすいポイント
- 「10秒」と「10.5秒」を混同して10FNと答えてしまう。遅延吸収分の0.5秒を忘れないよう注意が必要です。
- 「30秒」の記述は電源断時の保持時間であり、記録バッファの容量計算とは無関係です。
- FやNをキロバイトやメガバイト換算に誤って置き換える。設問は式を求めているので単位変換は不要です。
FAQ
Q: 0.5秒分を追加している理由は何ですか?
A: 原文の「動画ファイルの保存の処理遅れを考慮して、10.5秒間分」とあるとおり、保存タスクが処理中でもフレームロスを起こさないための安全マージンです。
A: 原文の「動画ファイルの保存の処理遅れを考慮して、10.5秒間分」とあるとおり、保存タスクが処理中でもフレームロスを起こさないための安全マージンです。
Q: 10.5秒をミリ秒に直して計算しなければいけませんか?
A: いいえ。設問は「式」を求めるだけなので、秒単位のまま で問題ありません。
A: いいえ。設問は「式」を求めるだけなので、秒単位のまま で問題ありません。
Q: GPS情報が無いフレームはどう扱われますか?
A: 記録バッファ容量の計算は「GPS情報を含む1フレームの画像データはNバイト」との前提なので、GPSの有無にかかわらず1フレームあたりNバイトとして扱います。
A: 記録バッファ容量の計算は「GPS情報を含む1フレームの画像データはNバイト」との前提なので、GPSの有無にかかわらず1フレームあたりNバイトとして扱います。
関連キーワード: バッファ設計、FIFO, フレームレート、データサイズ 계산、遅延吸収
設問3:〔保存タスクの動作〕について、(1)、(2)に答えよ。
(1)図2中のb〜dに入れるイベントを、本文中のイベントを用いて答えよ。
模範解答
b:衝撃イベント
c:画像格納イベント
d:タイマ満了イベント
解説
解答の論理構成
-
状態遷移図と本文を突き合わせて遷移条件(イベント)を洗い出す
- 本文の“〔保存タスクの動作〕”には
「(1) イベント待ち 衝撃イベントを受すると、衝撃検出前データ保存状態に遷移する。」
とある。従って b=「衝撃イベント」 です。 - “衝撃検出後データ保存”の説明には
「・画像格納イベントを受信すると、記録バッファから1フレーム分の画像データを読み出し、動画ファイルに追記する。」
と自己ループ条件が明記されているため、ループを示す c=「画像格納イベント」 となります。 - 同じ節の最後に
「・タイマ満了イベントを受信すると、動画ファイルの保存を終了し、イベント待ち状態に遷移する。」
とあるので、“衝撃検出後データ保存”から“イベント待ち”へ戻る矢印は d=「タイマ満了イベント」 です。
- 本文の“〔保存タスクの動作〕”には
-
解答一覧
- b:衝撃イベント
- c:画像格納イベント
- d:タイマ満了イベント
誤りやすいポイント
- 「衝撃イベント」は二度出現するが、b と d を混同しやすいです。b は“イベント待ち”→“衝撃検出前データ保存”の遷移、d は“衝撃検出後データ保存”→“イベント待ち”の遷移で タイマ満了イベント なので注意。
- 自己ループだからといって「タイマ満了イベント」を c に入れてしまうケースが散見されます。本文には自己ループ条件として「画像格納イベント」を明記しているため、ループ条件を本文で必ず確認しましょう。
- “保存タスク”と“録画タスク”で送受信するイベントを取り違えると、c に「GPS取得イベント」など誤ったイベントを入れてしまうことがあります。タスク間の役割分担を整理してから判断することが大切です。
FAQ
Q: 「画像格納イベント」はどのタスクが送信しているのですか?
A: 表1で「録画タスク」が「カメラからの画像データを1フレームごとに記録バッファに書き込む。このとき、…保存タスクに画像格納イベントを送信する。」と示されています。
A: 表1で「録画タスク」が「カメラからの画像データを1フレームごとに記録バッファに書き込む。このとき、…保存タスクに画像格納イベントを送信する。」と示されています。
Q: d に「衝撃イベント」が入ると考えてはいけない理由は?
A: “衝撃検出後データ保存”から“イベント待ち”へ戻る条件は本文で「タイマ満了イベントを受信すると、動画ファイルの保存を終了し、イベント待ち状態に遷移する。」と明言されているためです。衝撃イベントでは戻りません。
A: “衝撃検出後データ保存”から“イベント待ち”へ戻る条件は本文で「タイマ満了イベントを受信すると、動画ファイルの保存を終了し、イベント待ち状態に遷移する。」と明言されているためです。衝撃イベントでは戻りません。
Q: 同時に複数の衝撃が発生した場合、タイマはどう扱われますか?
A: “衝撃検出後データ保存”で「衝撃イベントを受言すると、設定してあるタイマ要求を取り消し、タイマに新たにf秒を設定する。」と規定されています。つまり二度目以降の衝撃でタイマが延長され、20秒間の追記処理がリセットされます。
A: “衝撃検出後データ保存”で「衝撃イベントを受言すると、設定してあるタイマ要求を取り消し、タイマに新たにf秒を設定する。」と規定されています。つまり二度目以降の衝撃でタイマが延長され、20秒間の追記処理がリセットされます。
関連キーワード: イベントドリブン、状態遷移図、割込み、タイマ、FIFO
設問3:〔保存タスクの動作〕について、(1)、(2)に答えよ。
(2)本文中のe、fに入れる適切な数値を答えよ。
模範解答
e:20
f:20
解説
解答の論理構成
- 仕様書から必要秒数を抽出
- 【問題文】の「衝撃までの最大10秒間及び衝撃後20秒間の動画…保存する」という要求から、保存タスクは“衝撃後”に「20秒間」画像を追記する必要があると分かります。
- 保存タスクの動作との対応付け
- 【問題文】「以降 20 秒間、記録バッファに書き込まれる画像データを待ち受け、新しい画像データが書き込まれると、逐次、圧縮して動画ファイルに追記する。」
- 同じく「再度衝撃センサからの割込みを受けると、受けた時点から 20 秒間、(ii)と同様に画像データを圧縮して動画ファイルに追記する。」
以上 2 か所で “20 秒間” が明示されています。
- プレースホルダへの割当
- 保存タスクは衝撃イベント受信直後にタイマをセットして“衝撃検出後データ保存”へ遷移します。ここで設定するタイマ値が e に相当し、「20 秒」と一致します。
- “衝撃検出後データ保存”状態で再度衝撃イベントを受信すると「タイマに新たにf秒を設定する」とあります。これは再スタート後も同一の 20 秒間を監視するため、f も同じ「20 秒」となります。
- 結果
- e:20
- f:20
誤りやすいポイント
- 「最大10秒間」を“タイマ値”と誤読し、e に 10 を入れてしまう。10 秒はあくまで“衝撃前”に保存すべき期間です。
- 再衝撃時に追加で 20+20=40 秒と想像し、f に 40 を設定してしまう。仕様には「受けた時点から 20 秒間」とあり、リセット後は毎回 20 秒です。
- 電源断時の「最低30秒間動作」と混同して 30 を選ぶミス。電源保持時間はタイマ値とは無関係です。
FAQ
Q: 衝撃が連続して発生した場合、保存時間は延びますか?
A: 「再度衝撃センサからの割込みを受けると、受けた時点から 20 秒間…追記する」とあるので、その都度タイマがリセットされ、最後の衝撃から 20 秒後まで延長されます。
A: 「再度衝撃センサからの割込みを受けると、受けた時点から 20 秒間…追記する」とあるので、その都度タイマがリセットされ、最後の衝撃から 20 秒後まで延長されます。
Q: タイマが満了する前に電源が落ちたらどうなりますか?
A: 【問題文】「二次電池…最低30秒間は動作を維持できる」とあるため、20 秒の保存処理は完了でき、動画ファイル破損を防げます。
A: 【問題文】「二次電池…最低30秒間は動作を維持できる」とあるため、20 秒の保存処理は完了でき、動画ファイル破損を防げます。
Q: GPS が取得できない場合でも 20 秒保存しますか?
A: はい。GPS は動画ファイル名やフレームメタデータに使われますが、保存タスクの 20 秒タイマ動作自体は GPS 取得の有無に依存しません。
A: はい。GPS は動画ファイル名やフレームメタデータに使われますが、保存タスクの 20 秒タイマ動作自体は GPS 取得の有無に依存しません。
関連キーワード: FIFOバッファ、タイマ管理、割込み処理、イベントドリブン、動画圧縮
設問4:
現在のレコーダの設計では、電源投入後に衝撃を検出しても、動画ファイルをSDに保存しないことがある。どのような場合にこのようなことが起きるのか。40字以内で述べよ。ここで、SDには十分な空き容量があり、ハードウェアに故障はないものとする。
模範解答
電源投入後、システム時刻の設定が完了するまでの間に衝撃を検出した場合
解説
解答の論理構成
- 【問題文】の「(1) 電源投入後の動作」には
「制御装置は、最初のGPS情報を受け取ると、GPS情報から時刻を取り出してシステム時刻に設定」
とあり、電源投入直後はシステム時刻が未設定です。 - 【動画ファイルの保存】の冒頭で
「システム時刻が設定されていないときは、動画ファイルを保存しない。」
と明記されています。 - したがって、システム時刻がまだ設定されていない電源投入直後のタイミングで衝撃センサが割込みを発生させても、保存タスクはファイル名(YYYYMMDD_hhmmss)が生成できず、SD への書込みがスキップされます。
- 以上より、解答は「電源投入後、システム時刻の設定が完了するまでの間に衝撃を検出した場合」となります。
誤りやすいポイント
- 「GPS情報を取得できないときは通知しない。」という一文を読み落とし、電源投入直後に必ず GPS 情報が得られると誤解する。
- SD の空き容量やハードウェアの故障を疑ってしまい、本質であるシステム時刻未設定の条件に気付かない。
- 衝撃イベントの処理手順(最大100ミリ秒以内の保存開始)に意識が向きすぎて、ファイル名生成条件を見落とす。
FAQ
Q: 電源投入後に GPS 受信が遅れる具体的な要因は何ですか?
A: 衛星捕捉に時間が掛かるコールドスタートや屋内駐車による受信障害などが考えられます。
A: 衛星捕捉に時間が掛かるコールドスタートや屋内駐車による受信障害などが考えられます。
Q: システム時刻が未設定でも RAW 画像だけを保存する実装は可能ですか?
A: 可能ですが、設計要求で「システム時刻が設定されていないときは、動画ファイルを保存しない。」と定められているため、現行仕様では行いません。
A: 可能ですが、設計要求で「システム時刻が設定されていないときは、動画ファイルを保存しない。」と定められているため、現行仕様では行いません。
Q: 衝撃イベントが複数回発生した場合でも同じ問題は起こりますか?
A: システム時刻が一度設定されれば以降は正常保存されるため、問題となるのは電源投入直後の一回目の衝撃検出時のみです。
A: システム時刻が一度設定されれば以降は正常保存されるため、問題となるのは電源投入直後の一回目の衝撃検出時のみです。
関連キーワード: システム時刻、GPS情報、割込み処理、ファイル名生成、イベントドリブン


