令和4年度 秋期 応用情報技術者試験 午後 問7 傘シェアリングシステムの組込み制御とタスク設計
学習ガイド
無人の傘貸出機を制御する組込みシステムの問題です。光センサー出力の確定処理と時間、カウントダウンタイマーの設定値の計算、リアルタイムOS上の貸出・返却・メインタスク間のメッセージのやり取り、RFIDタグによる不正な傘の検出を、傘貸出機の処理の記述に沿って一つずつ確認します。
この記事で押さえる論点
- センサー出力を10ミリ秒周期で5回連続一致まで読み出す理由(チャタリング対策)と、確定までの最小時間を説明できる
- カウントダウンタイマーの周波数と待ち時間から、タイマーに設定する値を計算できる
- 貸出・返却・メインの各タスクが交換するメッセージの経路を表1のタスク一覧から追える
- 返却時にRFIDタグの情報を貸出中の傘の情報と照合する理由を説明できる
出題情報
- 出題
- 2022(R4)秋 応用情報技術者 午後 問7
- 配点
- 20点満点
- 模範解答
- 公表(設問ごとに掲載)
出題趣旨・採点講評(IPA 公表)
近年,様々な物を各自で個別に所有するのではなく,複数人で共同利用するシェアリングサービスが普及しつつある。本問では,傘シェアリングシステムを題材に,応用情報技術者に求められる要求仕様の理解力,要求仕様に基づいてソフトウェアを設計する能力,及びタスク間の処理の理解について問う。
問7では,傘シェアリングシステムを題材に,要求仕様の理解,要求仕様に基づいたソフトウェア設計,及びタスク間の処理について出題した。全体として正答率は高かった。
問題本文
傘シェアリングシステムに関する次の記述を読んで,設問に答えよ。
I社は,鉄道駅,商業施設,公共施設などに無人の傘貸出機を設置し,利用者に傘を貸し出す,傘シェアリングシステム(以下,本システムという)を開発している。
本システムの構成を図1に,傘貸出機の外観を図2に示す。

図の説明テキスト
図1 本システムの構成
傘貸出機1〜Nが「インターネット」を介して「スマートフォン」および「管理サーバ」と接続されているネットワーク構成図。

図の説明テキスト
図2 傘貸出機の外観
傘貸出機の立体図と傘のイラスト。傘貸出機の上部には「2次元バーコード」があり、スリット部に「ロック機構」と「貸出・返却口」が設けられている。傘を水平方向に貸出・返却口へ出し入れする様子が矢印で示されている。
傘貸出機は,スマートフォンで動作する専用のアプリケーションプログラム(以下,アプリという)と組み合わせて傘の貸出し又は返却を行う。利用者がアプリを使って,利用する傘貸出機に貼り付けてある2次元バーコードの情報を読み,傘貸出機を特定する。アプリは,管理サーバへ傘の貸出要求又は返却要求を送る。管理サーバは,アプリからの要求に従って指定の傘貸出機へ指示を送り,貸出し又は返却が実施される。傘貸出機の構成を図3に示す。

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

図の説明テキスト
表1 制御部の主なタスクの一覧
| タスク名 | 処理概要 |
|---|---|
| メイン | ・管理サーバから指示を受信すると,貸出タスク又は返却タスクへ送信する。 ・“RFID 情報”を受けると,RFID タグの情報を確認し,“正常”又は“異常”を必要とする送信元タスクへ送信する。 ・“ロック解除完了”を受けると,傘の貸出し又は返却が可能なことを知らせる音声をスピーカーから出力する。 ・“完了”を受けると,管理情報を更新し,管理サーバへ管理情報を送信する。 ・“異常終了”を受けると,異常を知らせる音声をスピーカーから出力し,管理サーバに異常終了を送信する。 |
| 貸出 | ・要求を受けると,センサーで傘を検知し,RFID リーダーで RFID タグの情報を読み出し,“RFID 情報”をメインタスクに送信してから,傘貸出機のロックを解除し,“ロック解除完了”をメインタスクに送信する。 ・傘が取り出されたことをセンサーで検知すると,傘貸出機のロックを掛け,メインタスクへ“完了”を送信する。 ・ロックを解除した後,10 秒経過しても傘が取り出されなかった場合は,傘貸出機のロックを掛け,メインタスクへ“異常終了”を送信する。 |
| 返却 | ・要求を受けると,センサーで傘を検知し,RFID リーダーで RFID タグの情報を読み出し,“RFID 情報”をメインタスクに送信する。送信後“正常”を受けると,傘貸出機のロックを解除し,“ロック解除完了”をメインタスクに送信する。 ・傘が傘貸出機へ返却されたことをセンサーで検知すると,傘貸出機のロックを掛け,メインタスクへ“完了”を送信する。 ・“異常”を受けると,傘貸出機のロックを掛け,メインタスクへ“異常終了”を送信する。 ・ロックを解除した後,10 秒経過しても傘が返却されなかった場合は,傘貸出機のロックを掛け,メインタスクへ“異常終了”を送信する。 |
設問と解答・解説
設問1
傘貸出機の処理について答えよ。
本文中の下線①について答えよ。
(a) 制御部が確定値を算出するのに,複数回センサー出力を読出しする理由を 20 字以内で答えよ。
模範解答
ノイズなどによる誤動作を防ぐため
採点基準
- 1点: ノイズなどによる誤動作を防ぐという目的が明確に記述されている。
- 0点: 目的が不明瞭、または誤っている。
解説
センサーは現実環境においてノイズ等の影響を受けやすく、1回の読出しでは不正な値を検知して誤動作を引き起こす可能性があります。そのため、複数回読み出して値が安定・一致することを確認してから確定値とします。
高得点のポイント
- ノイズというキーワードが含まれているか
- 誤動作を防ぐという目的が明確に記述されているか
本文中の下線①について答えよ。
(b) 制御部がセンサー出力の変化を検出してからセンサー出力の確定ができるまで最小で何ミリ秒か。答えは小数点以下を切り捨てて,整数で答えよ。
模範解答
40
解説
センサー出力の確定条件: システム要件により、センサー出力を一定の周期(例:10ミリ秒)で読み出し、複数回(例:5回)連続して同じ値となった場合に確定値とする仕様となっています。
- 計算方法: 変化を検出した1回目の読出しを起点として、残り4回の読出しが全て同じ値であった場合が最短での確定となります。読出し周期が10ミリ秒であるため、最小時間は
ミリ秒となります。
各選択肢の解説
- 数値入力形式のため選択肢はありませんが、読出し回数や周期を取り違えた計算による解答は誤りとなります。
ロックを解除した後の異常を 10kHz のカウントダウンタイマーを使用して,タイマーの値が 0 になったときに異常と判断する。タイマーに設定する値を 10 進数で求めよ。ここで,1k= とする。
模範解答
100000
解説
カウントダウンタイマーの仕様: タイマーの周波数は 10kHz( Hz)であるため、1秒間に 10,000 回のカウントダウンが行われます。
- 異常検知の条件: ロックを解除してから一定時間(例:10秒)経過しても利用者が傘を取り出さなかった場合に、異常と判断します。
- 設定値の計算: 1秒あたり 10,000 カウントで 10秒間カウントダウンするため、タイマーに設定する値は
となります。
各選択肢の解説
- 数値入力形式のため選択肢はありませんが、周波数や時間の単位換算(例:
の適用忘れ)による計算ミスに注意が必要です。
設問1(1)(a)は,正答率が低かった。センサーを用いて対象を検知する際,現実ではノイズなどが発生して不正な値を検知することもあるので,そのような不具合をソフトウェアによって対処する必要があることを理解してほしい。
設問2
制御部の主なタスクについて答えよ。
貸出タスクがロックを解除した後,利用者が傘を取り出さなかった場合の処理について,次の文章中の a , b に入れる適切な字句を表1中の字句を用いて答えよ。
貸出タスクがロックを解除したにもかかわらず,利用者が傘を取り出さなかった場合は,貸出タスクが異常と判断し,aタスクに送信する。“異常終了”を受けたaタスクは,bに異常終了を送信する。
模範解答
メイン
採点基準
- 2点: 「メイン」と正確に解答している。
- 1点: 部分的に合致している、または軽微な表記揺れがある。
- 0点: 全く異なる、または無解答。
解説
タスク間の通信: 貸出タスクは傘の貸出しに関するハードウェア制御を担い、その処理結果(正常・異常)は、制御部全体を統括するメインタスクに報告されます。
高得点のポイント
- 貸出タスクの異常の報告先がメインタスクであることを理解しているか。
- 指定の表から正確な用語を用いて解答できているか。
貸出タスクがロックを解除した後,利用者が傘を取り出さなかった場合の処理について,次の文章中の a , b に入れる適切な字句を表1中の字句を用いて答えよ。
貸出タスクがロックを解除したにもかかわらず,利用者が傘を取り出さなかった場合は,貸出タスクが異常と判断し,aタスクに送信する。“異常終了”を受けたaタスクは,bに異常終了を送信する。
模範解答
管理サーバ
採点基準
- 2点: 「管理サーバ」と正確に解答している。
- 1点: 部分的に合致している、または軽微な表記揺れがある。
- 0点: 全く異なる、または無解答。
解説
システム全体の構成: メインタスクは異常終了の報告を受けると、傘シェアリングシステム全体を管理する管理サーバに対して異常終了を送信し、システム全体の状態を同期させます。
高得点のポイント
- 異常終了の最終的な通知先が上位の管理サーバであることを把握しているか。
- 指定の表から正確な用語を用いて解答できているか。
返却時のタスクの処理について記述した次の文章中のc,dに入れる適切な字句を解答群の中から選び,記号で答えよ。
メインタスクは,不正な傘を返却させないように,返却タスクが傘から読み出したcに対し,dと異なっていないか確認し,異なっていなければ,返却タスクに“正常”を送信する。返却タスクはメインタスクから“正常”を受けるまで,ロックを解除しない。
模範解答
選択肢エ: 貸出中の傘
解説
情報の照合: 読み取ったRFIDタグの情報が、システム側で記録している貸出中の傘の情報と一致するかどうかを確認することで、不正な傘でないことを担保します。
各選択肢の解説
- エ: 正答です。現在貸出中として登録されている傘の情報と照合します。
- ア〜ウ, オ〜ク: 照合して正当性を確認する対象のデータとして不適切です。
設問2は,正答率が高かった。それぞれのタスクの処理について正確に把握することは,組込みシステムにおいては非常に重要な技術である。是非理解を深めてほしい。
設問3
制御部のタスクの処理について答えよ。
傘の貸出しを行う場合,メインタスクから要求を受けた貸出タスクは,傘検知部のセンサーを起動し,傘を検知する。傘が検知されたら RFID リーダーで RFID タグの情報を読み出し,“RFID 情報”をメインタスクに送信する。“RFID 情報”を送信後,傘貸出機のロックを解除し,“e”をメインタスクに送信する。傘が傘貸出機から取り出されたことをfすると,傘貸出機のg,メインタスクへ“h”を送信する。
模範解答
ロック解除完了
採点基準
- 2点: 「ロック解除完了」と正確に解答している。
- 1点: 部分的に合致している、または同義の表現となっている。
- 0点: 文脈に合わない、または無解答。
解説
タスクの順次処理: 貸出タスクはロックを解除した事実を上位のメインタスクに伝えるため、ロック解除完了の通知を送信します。
高得点のポイント
- ロックの解除が完了したことを示す文脈を読み取れているか。
- 適切な字句を正確に記述できているか。
傘の貸出しを行う場合,メインタスクから要求を受けた貸出タスクは,傘検知部のセンサーを起動し,傘を検知する。傘が検知されたら RFID リーダーで RFID タグの情報を読み出し,“RFID 情報”をメインタスクに送信する。“RFID 情報”を送信後,傘貸出機のロックを解除し,“e”をメインタスクに送信する。傘が傘貸出機から取り出されたことをfすると,傘貸出機のg,メインタスクへ“h”を送信する。
模範解答
センサーで検知
採点基準
- 2点: 「センサーで検知」と正確に解答している。
- 1点: 部分的に合致している、または同義の表現となっている。
- 0点: 文脈に合わない、または無解答。
解説
傘の取り出し検知: 傘が取り出された(物理的に無くなった)ことは、傘検知部のセンサーで検知することで判断します。
高得点のポイント
- 対象の有無の判定にセンサーを用いていることが理解できているか。
- 文脈に沿った適切な表現を記述できているか。
傘の貸出しを行う場合,メインタスクから要求を受けた貸出タスクは,傘検知部のセンサーを起動し,傘を検知する。傘が検知されたら RFID リーダーで RFID タグの情報を読み出し,“RFID 情報”をメインタスクに送信する。“RFID 情報”を送信後,傘貸出機のロックを解除し,“e”をメインタスクに送信する。傘が傘貸出機から取り出されたことをfすると,傘貸出機のg,メインタスクへ“h”を送信する。
模範解答
ロックを掛け
採点基準
- 2点: 「ロックを掛け」と正確に解答している。
- 1点: 部分的に合致している、または同義の表現となっている。
- 0点: 文脈に合わない、または無解答。
解説
取り出し後の状態管理: 傘が取り出された後は、次回の返却や貸出しに備えて傘貸出機のロックを掛ける必要があります。
高得点のポイント
- 取り出し後に安全状態を保つためロックを掛ける動作が必要であることを理解しているか。
- 文脈に沿った適切な表現を記述できているか。
傘の貸出しを行う場合,メインタスクから要求を受けた貸出タスクは,傘検知部のセンサーを起動し,傘を検知する。傘が検知されたら RFID リーダーで RFID タグの情報を読み出し,“RFID 情報”をメインタスクに送信する。“RFID 情報”を送信後,傘貸出機のロックを解除し,“e”をメインタスクに送信する。傘が傘貸出機から取り出されたことをfすると,傘貸出機のg,メインタスクへ“h”を送信する。
模範解答
完了
採点基準
- 2点: 「完了」と正確に解答している。
- 1点: 部分的に合致している、または同義の表現となっている。
- 0点: 文脈に合わない、または無解答。
解説
一連の処理の完了: 貸出しに関する物理的動作(ロック解除〜取り出し〜ロック)がすべて終了したため、メインタスクへ完了を通知します。
高得点のポイント
- 処理が全て終わったことを意味する完了の通知であることを理解しているか。
- 文脈に沿った正確な字句を記述できているか。
“完了”を受けた場合のメインタスクの処理を 25 字以内で答えよ。
模範解答
管理情報を更新し,管理サーバへ送信する。
採点基準
- 1点: 管理情報を更新することと、管理サーバへ送信することの両方の要素が含まれている。
- 0点: 必要な要素が不足している、または誤りがある。
- 1点: メインタスクの処理として、順序立てて明確に記述されている。
- 0点: 論理的でない、または文意が不明瞭である。
解説
貸出完了後のデータ処理: メインタスクは、貸出タスクから貸出しの一連の物理的処理が完了した通知を受けた後、システム内の管理情報を更新します。
- さらに、最新の状態を上位システムと同期させるため、更新した情報を管理サーバへ送信する役割を持ちます。
高得点のポイント
- 貸出しが成功したことによる管理情報を更新する処理に言及しているか。
- 更新した情報を管理サーバへ送信する処理が記述されているか。
設問3は,正答率が高かった。傘の貸出しに関する制御部のタスクの一連の処理を正しく理解できていることがうかがえた。(2)は正答率が高かったが,処理の一部しか記述されていない解答,処理の順序が異なる解答が一部見受けられた。通知を受けた際のタスクの処理の内容と,その順序を正しく理解して解答してほしい。