応用情報技術者 2022年 秋期 午後 問07
傘シェアリングシステムに関する次の記述を読んで、設問に答えよ。
Ⅰ社は、鉄道駅、商業施設、公共施設などに無人の傘貸出機を設置し、利用者に傘を貸し出す、傘シェアリングシステム(以下、本システムという)を開発している。
本システムの構成を図1に、傘貸出機の外観を図2に示す。

傘貸出機は、スマートフォンで動作する専用のアプリケーションプログラム(以下、アプリという)と組み合わせて傘の貸出し又は返却を行う。利用者がアプリを使って、利用する傘貸出機に貼り付けてある2次元バーコードの情報を読み、傘貸出機を特定する。アプリは、管理サーバへ傘の貸出要求又は返却要求を送る。管理サーバは、アプリからの要求に従って指定の傘貸出機へ指示を送り、貸出し又は返却が実施される。傘貸出機の構成を図3に示す。

〔傘貸出機の処理〕
・貸出・返却口に内蔵されているロック機構は、制御部からの指示で貸出・返却口のロックを制御する。ロック機構は、1度の操作で傘貸出機から1本の傘の貸出し、又は、1本の傘の返却ができる。ロックが解除されると、制御部はスピーカーから音声を出力して、ロックが解除されたことを利用者に知らせる。また、ロック機構は、貸出時と返却時とでロックの解除方法が異なっており、貸出時のロックの解除では、傘の貸出しだけが可能となり、返却時のロックの解除では、傘の返却だけが可能となる。
・ロック機構の傘検知部は、傘検知部を通過する傘を検知する光センサー(以下、センサーという)及び傘に付与される識別情報を記録したRFIDタグを読み取るRFIDリーダーで構成される。①制御部は、傘検知部のセンサー出力の変化を検出すると10ミリ秒周期で出力を読み出し、5回連続で同じ値が読み出されたときに、確定と判断し、その値を確定値とする。傘の特定には、RFIDリーダーで読み出した情報(以下、RFIDタグの情報という)が使用される。傘貸出機が貸出し、返却を行うためのロックを解除した後10秒経過しても傘の貸出し、返却が行われなかった場合は、異常と判断し、ロックを掛ける。異常の際は、制御部がスピーカーから音声を出力して、異常が発生したことを利用者に知らせる。
・傘貸出機内の傘の本数は、制御部で管理する。本システムの管理者は、初回の傘設置の際、管理サーバ経由で傘の本数の初期値を傘貸出機に登録する。
・傘貸出機は、利用者への傘の貸出し又は返却が終了すると、自機が保有する傘の本数及び傘を識別するRFIDタグの情報(以下、これらを管理情報という)を更新し、管理サーバに送信する。傘貸出機は、全ての管理情報を管理サーバから受信し、記憶する。
〔制御部のソフトウェア構成〕
制御部のソフトウェアには、リアルタイムOSを使用する。制御部の主なタスクの一覧を表1に示す。

設問1:傘貸出機の処理について答えよ。
(1)本文中の下線①について答えよ。
(a) 制御部が確定値を算出するのに、複数回センサー出力を読出しする理由を20字以内で答えよ。
(b) 制御部がセンサー出力の変化を検出してからセンサー出力の確定ができるまで最小で何ミリ秒か。答えは小数点以下を切り捨てて、整数で答えよ。
模範解答
(a):ノイズなどによる誤動作を防ぐため
(b):40
解説
解答の論理構成
-
下線部の仕様
引用:「①制御部は、傘検知部のセンサー出力の変化を検出すると10ミリ秒周期で出力を読み出し、5回連続で同じ値が読み出されたときに、確定と判断し、その値を確定値とする」
ここから
・センサー値は “10ミリ秒周期” でサンプリング
・“5回連続で同じ値” になったときだけ確定
という二つの条件が読み取れます。 -
(a) の理由
センサーは光学式であり、周囲光の瞬間的変化や電気的ノイズなどにより一時的に誤った値を出力する可能性があります。そのため、連続して同じ値が得られるまで待つことで入力の“安定”を確認し、誤動作を防ぎます。
⇒「ノイズなどによる誤動作を防ぐため」となります。 -
(b) の時間計算
変化を検出した瞬間を 1 回目と数え、あと “5回連続” が必要という仕様です。
・1 回目:変化検出時(0 ミリ秒)
・2 回目:10 ミリ秒後
・3 回目:20 ミリ秒後
・4 回目:30 ミリ秒後
・5 回目:40 ミリ秒後
最小時間は 0 → 40 ミリ秒で確定します。小数点以下切捨てなので整数 “40” です。
誤りやすいポイント
- 「5回連続」を “5 × 10 ミリ秒 = 50 ミリ秒” としてしまい、1 回目を数え忘れる。
- センサー安定化の目的を「分解能向上」などと書き、ノイズ対策であることを外す。
- アプリやRFIDの待ち時間と混同し、10秒タイマを使って計算してしまう。
FAQ
Q: なぜ 10 ミリ秒という短い周期で読むのですか?
A: 人が傘を抜き差しする速度より十分短く、機械の応答遅れを感じさせない一方、CPU 負荷も過大にならないバランスだからです。
A: 人が傘を抜き差しする速度より十分短く、機械の応答遅れを感じさせない一方、CPU 負荷も過大にならないバランスだからです。
Q: もし 5 回ではなく 3 回に変更したらどうなりますか?
A: 誤検知の確率が上がります。連続確認回数を減らすほど確定までの時間は短縮できますが、ノイズによる揺らぎを誤って確定値と判断しやすくなります。
A: 誤検知の確率が上がります。連続確認回数を減らすほど確定までの時間は短縮できますが、ノイズによる揺らぎを誤って確定値と判断しやすくなります。
Q: センサーが壊れて常に同じ値を返した場合は検出できますか?
A: 変化が検出されないためタスクは動きません。定期的に自己診断し、一定時間変化が無い場合に異常通知するなどの追加設計が必要です。
A: 変化が検出されないためタスクは動きません。定期的に自己診断し、一定時間変化が無い場合に異常通知するなどの追加設計が必要です。
関連キーワード: ノイズ除去、デバウンス、サンプリング周期、リアルタイムOS
設問1:傘貸出機の処理について答えよ。
(2)ロックを解除した後の異常を10kHzのカウントダウンタイマーを使用して、タイマーの値が0になったときに異常と判断する。タイマーに設定する値を10進数で求めよ。ここで、とする。
模範解答
100,000
解説
解答の論理構成
-
異常判定までの待ち時間を確認
問題文には
・「ロックを解除した後10秒経過しても傘の貸出し、返却が行われなかった場合は、異常と判断」
と明記されています。したがってカウントダウンタイマーは 10 秒 を測定する必要があります。 -
タイマーの動作周波数を確認
小問説明に
・「10kHz のカウントダウンタイマー」
とあります。ここで なので 10 kHz = 10 × 10^3 Hz = 10,000 カウント/秒 です。 -
必要カウント数を計算
1 秒あたり 10,000 カウントが進むタイマーで 10 秒測りたいので、 -
結論
タイマーに設定する値(初期カウント値)は 「100,000」 となります。
誤りやすいポイント
- 「10k」を と誤って 1024 倍で換算してしまう。問題文に「」とあるので注意が必要です。
- 周期と周波数を混同する。10 kHz は 0.1 ms 周期ですが、本問は「1 秒に何カウント進むか」を聞いています。
- ロック解除からの待ち時間を 10 s ではなく 10 ms と読み違えるミス。
FAQ
Q: 「10kHz のタイマー」とは何を意味しますか?
A: 1 秒間に 10,000 回 カウントが減る(または増える)タイマーです。
A: 1 秒間に 10,000 回 カウントが減る(または増える)タイマーです。
Q: タイマー設定値が「100,000」より 1 少ない「99,999」では駄目ですか?
A: 駄目です。設定値が 1 小さいと 9.9999… 秒で 0 になり、仕様上の 「10秒」 を満たしません。
A: 駄目です。設定値が 1 小さいと 9.9999… 秒で 0 になり、仕様上の 「10秒」 を満たしません。
Q: もしタイマーがアップカウント方式ならどうなりますか?
A: アップカウントであっても「10秒で 100,000 に達したら異常」と判定条件を逆にすれば同じ数値を使えます。
A: アップカウントであっても「10秒で 100,000 に達したら異常」と判定条件を逆にすれば同じ数値を使えます。
関連キーワード: 周波数換算、カウントダウンタイマー、リアルタイム制御、異常検出
設問2:制御部の主なタスクについて答えよ。
(1)貸出タスクがロックを解除した後、利用者が傘を取り出さなかった場合の処理について、次の文章中のa、bに入れる適切な字句を表1中の字句を用いて答えよ。
貸出タスクがロックを解除したにもかかわらず、利用者が傘を取り出さなかった場合は、貸出タスクが異常と判断し、aタスクに送信する。
“異常終了”を受けたaタスクは、bに異常終了を送信する。
模範解答
a:メイン
b:管理サーバ
解説
解答の論理構成
-
“貸出タスク”が異常と判断したときの送信先
・表1の“貸出”タスクの処理概要に
“ロックを解除した後、10秒経過しても傘が取り出されなかった場合は、傘貸出機のロックを掛け、メインタスクへ“異常終了”を送信する。”
と記載されています。したがって a は “メイン” です。 -
“メイン”タスクが“異常終了”を受け取った後の処理
・同じく表1の“メイン”タスクの処理概要に
““異常終了”を受けると、異常を知らせる音声をスピーカーから出力し、管理サーバに異常終了を送信する。”
とあります。したがって b は “管理サーバ” です。 -
以上より
a:メイン
b:管理サーバ
誤りやすいポイント
- “貸出タスク”と“返却タスク”の異常処理を混同し、a に“返却”と書いてしまう。実際に“異常終了”を受取って集約処理を行うのは“メイン”タスクです。
- “メイン”タスクが“異常終了”を送る相手を“スピーカー”と誤記するケース。スピーカーは音声出力装置であり、報告先は“管理サーバ”です。
- 表1の縦読みを急ぎ、ロック解除後10秒経過の条件を読み飛ばして手順を取り違えるミス。
FAQ
Q: “メイン”タスクは常に“管理サーバ”へ通知するのですか?
A: “メイン”タスクは“完了”時にも“管理情報を更新し、管理サーバへ管理情報を送信”しますが、異常時には“異常終了”を送信します。状況に応じて内容が変わります。
A: “メイン”タスクは“完了”時にも“管理情報を更新し、管理サーバへ管理情報を送信”しますが、異常時には“異常終了”を送信します。状況に応じて内容が変わります。
Q: “貸出”タスクが直接“管理サーバ”へ送信してはいけない理由は?
A: システム設計上、サーバ通信は“メイン”タスクに集約され、タスク間の責務分担を明確にしています。これにより通信処理の重複や競合を防ぎます。
A: システム設計上、サーバ通信は“メイン”タスクに集約され、タスク間の責務分担を明確にしています。これにより通信処理の重複や競合を防ぎます。
Q: “返却”タスクの異常処理も同じ流れですか?
A: はい。“返却”タスクも“ロックを解除した後、10秒経過しても傘が返却されなかった場合”や“異常”判定時に“メイン”タスクへ“異常終了”を送信し、以降は同じ処理フローになります。
A: はい。“返却”タスクも“ロックを解除した後、10秒経過しても傘が返却されなかった場合”や“異常”判定時に“メイン”タスクへ“異常終了”を送信し、以降は同じ処理フローになります。
関連キーワード: リアルタイムOS, タスク間通信、センサー入力処理、異常検知
設問2:制御部の主なタスクについて答えよ。
(2)返却時のタスクの処理について記述した次の文章中のc、dに入れる適切な字句を解答群の中から選び、記号で答えよ。
メインタスクは、不正な傘を返却させないように、返却タスクが傘から読み出したcに対し、dと異なっていないか確認し、異なっていなければ、返却タスクに“正常”を送信する。返却タスクはメインタスクから“正常”を受けるまで、ロックを解除しない。
解答群
ア:RFIDタグの情報
イ:RFIDリーダー
ウ:傘の本数
エ:貸出中の傘
オ:センサー出力
カ:不正な傘
キ:返却タスク
ク:メインタスク
模範解答
c:ア
d:エ
解説
解答の論理構成
- ① 返却タスクがメインタスクへ送るデータ
表1の返却タスクには
「RFIDリーダーでRFIDタグの情報を読み出し、“RFID情報”をメインタスクに送信する。」
とあります。よって c には “RFIDタグの情報” が入ります。解答群で該当するのは【ア】です。 - ② メインタスクが照合に利用する基準
メインタスクの処理概要には
「“RFID情報”を受けると、RFIDタグの情報を確認し、“正常”又は“異常”を必要とする送信元タスクへ送信する。」
と記載されています。不正返却の判定には現在 “貸出中” として記録されている傘の一覧と照合する必要があります。管理情報として「傘を識別するRFIDタグの情報」を保持しているのは貸出中の傘です。したがって d には “貸出中の傘” が入ります。解答群で該当するのは【エ】です。
誤りやすいポイント
- 「メインタスクが比較する対象=全傘在庫」と勘違いしやすいですが、目的は「不正な傘を返却させない」ことなので “貸出中” でない傘は受け付けません。
- c を “RFIDリーダー” としてしまうミス。リーダーは機器名であってデータではありません。
- 返却タスクがロックを解除するタイミングを読み違え、d に “メインタスク” や “返却タスク” を入れてしまう混乱。
FAQ
Q: メインタスクは具体的にどのように “貸出中の傘” を管理しているのですか?
A: 貸出や返却が完了する都度、「自機が保有する傘の本数及び傘を識別するRFIDタグの情報」を更新し管理サーバへ送信します。その情報のうち、貸出操作で外部に出た傘のRFIDタグが “貸出中の傘” として保持されます。
A: 貸出や返却が完了する都度、「自機が保有する傘の本数及び傘を識別するRFIDタグの情報」を更新し管理サーバへ送信します。その情報のうち、貸出操作で外部に出た傘のRFIDタグが “貸出中の傘” として保持されます。
Q: “RFID情報” を受け取った後、メインタスクが “正常” を送らなかった場合はどうなりますか?
A: 返却タスクは「“正常”を受けるまで、ロックを解除しない」設計です。したがって不正な傘と判定された場合、ロックは解除されず返却口は開きません。
A: 返却タスクは「“正常”を受けるまで、ロックを解除しない」設計です。したがって不正な傘と判定された場合、ロックは解除されず返却口は開きません。
Q: センサー出力は照合に使われないのですか?
A: センサーは傘の通過を検知するためのもので、傘個体の識別はできません。識別・照合には “RFIDタグの情報” が使われます。
A: センサーは傘の通過を検知するためのもので、傘個体の識別はできません。識別・照合には “RFIDタグの情報” が使われます。
関連キーワード: RFID, ロック制御、タスク間通信、リアルタイムOS, センサフィルタリング
設問3:制御部のタスクの処理について答えよ。
(1)次の文章中のe〜hに入れる適切な字句を答えよ。
傘の貸出しを行う場合、メインタスクから要求を受けた貸出タスクは、傘検知部のセンサーを起動し、傘を検知する。傘が検知されたらRFIDリーダーでRFIDタグの情報を読み出し、“RFID情報”をメインタスクに送信する。
“RFID情報”を送信後、傘貸出機のロックを解除し、“e”をメインタスクに送信する。傘が傘貸出機から取り出されたことをfすると、傘貸出機のg、メインタスクへ“h”を送信する。
模範解答
e:ロック解除完了
f:センサーで検知
g:ロックを掛け
h:完了
解説
解答の論理構成
-
貸出タスクの詳細手順を【問題文】から確認します。
引用:「“RFID情報”をメインタスクに送信してから、傘貸出機のロックを解除し、“ロック解除完了”をメインタスクに送信する。」
したがって e には「ロック解除完了」が入ります。 -
次に、傘が取り出されたことをどのように検知するかを確認します。
引用:「傘が取り出されたことをセンサーで検知すると、傘貸出機のロックを掛け、メインタスクへ“完了”を送信する。」
ここから f は「センサーで検知」、g は「ロックを掛け」、h は「完了」と決定できます。 -
以上を文章に当てはめると、 ・“e”=「ロック解除完了」
・傘が傘貸出機から取り出されたことをf=「センサーで検知」
・傘貸出機のg=「ロックを掛け」
・メインタスクへ“h”=「完了」
となり、設問の流れと完全に一致します。
誤りやすいポイント
- “ロック解除完了”と“完了”を混同しやすい
→ “ロック解除完了”はロックを外した瞬間の通知、“完了”は貸出処理全体の終了通知です。 - 検知方法を「RFIDリーダー」と思い込むミス
→ 傘が実際に取り出されたかどうかは光センサーで判断します(RFIDはタグ情報取得用)。 - g に「ロックを解除」と誤記しやすい
→ 取り出し後の動作は“ロックを掛け”ることです。直前の解除と逆になります。
FAQ
Q: なぜ傘取り出し後に再びロックを掛けるのですか?
A: 次の利用者が勝手に扉を開けられないようにするためです。処理完了時には安全側へ戻すのがリアルタイム制御の基本です。
A: 次の利用者が勝手に扉を開けられないようにするためです。処理完了時には安全側へ戻すのがリアルタイム制御の基本です。
Q: “ロック解除完了”と“完了”の通知が二段階になっている利点は?
A: ロック解除までは機械制御、そこから先は利用者操作というフェーズ分けができます。異常検知やタイムアウト管理をフェーズごとに行えるため、堅牢性が高まります。
A: ロック解除までは機械制御、そこから先は利用者操作というフェーズ分けができます。異常検知やタイムアウト管理をフェーズごとに行えるため、堅牢性が高まります。
Q: センサー出力の確定処理(10ミリ秒×5回)は貸出フローに関係ありますか?
A: 直接の字句穴埋めには関係しませんが、ノイズを排除して確実に傘検知を行うためのデバウンス処理として重要です。
A: 直接の字句穴埋めには関係しませんが、ノイズを排除して確実に傘検知を行うためのデバウンス処理として重要です。
関連キーワード: タスク間通信、センサー入力、状態遷移、リアルタイムOS, 排他制御
設問3:制御部のタスクの処理について答えよ。
(2)“完了”を受けた場合のメインタスクの処理を25字以内で答えよ。
模範解答
管理情報を更新し、管理サーバへ送信する。
解説
解答の論理構成
- 問題は「“完了”を受けた場合のメインタスクの処理」を尋ねています。
- 【問題文】表1「制御部の主なタスクの一覧」の“メイン”タスク欄には次の記述があります。
- ““完了”を受けると、管理情報を更新し、管理サーバへ管理情報を送信する。”
- 従って、メインタスクが“完了”を受信したときに実行する処理は
「管理情報を更新し、管理サーバへ送信する。」
であると論理的に導けます。
誤りやすいポイント
- “管理情報”の更新と“管理サーバ”への送信をどちらか一方だけと勘違いする。
- “完了”と“異常終了”の動作を取り違え、異常時の音声出力や送信内容を答えてしまう。
- 返却タスク・貸出タスクの処理フローと混同し、RFIDの確認やロック操作を解答に含める。
FAQ
Q: “完了”は貸出タスクと返却タスクのどちらから送られますか?
A: 両タスクともロック再施錠後に“完了”をメインタスクへ送信します。処理内容は共通です。
A: 両タスクともロック再施錠後に“完了”をメインタスクへ送信します。処理内容は共通です。
Q: “管理情報”には具体的に何が含まれますか?
A: 傘の本数と各傘を識別する“RFIDタグの情報”です。
A: 傘の本数と各傘を識別する“RFIDタグの情報”です。
Q: “異常終了”を受け取ったときのメインタスクの動作は?
A: “異常終了”を受信すると「異常を知らせる音声をスピーカーから出力し、管理サーバに異常終了を送信」します。
A: “異常終了”を受信すると「異常を知らせる音声をスピーカーから出力し、管理サーバに異常終了を送信」します。
関連キーワード: タスク間通信、リアルタイムOS, 状態遷移、センサ入力、RFID


