AP過去問 令和7年度春期 午後 問7 組込みシステム開発
AP 過去問題 午後に戻る。
AP過去問_令和7年度春期_午後_問6_データベースの同じ回の前の問題へ移動。
AP過去問_令和7年度春期_午後_問8_情報システム開発の同じ回の次の問題へ移動。
AP過去問_令和6年度秋期_午後_問7_組込みシステム開発の前の回の同じカテゴリの問題へ移動。
令和7年度春期 午後 問7 組込みシステム開発(AIプロンプト向け)
■電動キックボードのシェアリングシステムに関する次の記述を読んで、設問に答えよ。
G社は、電動キックボード(以下、電動KBという)のシェアリングシステム(以下、本システムという)を開発している。本システムは、利用者に対し、電動KBの貸出し、使用及び返却をさせるものである。本システムを利用する場合には、利用者が事前にスマートフォン(以下、スマホという)に専用アプリケーションプログラム(以下、アプリという)をインストールし、利用者情報を登録して,利用者IDを取得しておく必要がある。電動肥の外観を図1に、本システムの主な構成を図2に、本システムの主な構成要を表1に示す。
図1 電動KBの外観 ここから
電動KBはL字型の構造でLの上端にハンドル。角と右下の端にはタイヤ(L字角、前輪)、タイヤ(L字右下、後輪)がある。
ハンドルには右にアクセルレバー回転式、左にも右にもブレーキレバーを握るとブレーキが利く構造。
ハンドルの真ん中には表示部があり。表示部の内部に制御部が格納されている。
ハンドルとタイヤ角の間にはパイプがつながっていて、パイプの中央には前照灯。
タイヤ(前輪)とタイヤ(後輪)の間に人が乗るためのステップがあり、ステップの裏には電池が備え付けられている。
前輪には速度センサーがあり、前輪と後輪にブレーキ機構がついている。
後輪には駆動部があり。
前照灯の下と後輪のカバーの後方には最高速度表示灯がある。
後輪には車輪ロック機構も装備されている。
後輪の最高速度表示灯の下に、尾灯や制動灯が装備されている。
図1 電動KBの外観 ここまで
図2 本システムの主な構成 ここから
電動KBは、制御部、駆動部、表示部、速度センサー、ライト、電池で構成されている
制御部とスマホはBLE通信で繋がっている。
スマホとインターネットが繋がっている。
インターネットと管理サーバが繋がっている。
注記 BLEはBluetooth Low Energyのこと。
図2 本システムの主な構成 ここまで
<div><div class="table-container"><div class="table-header"><span class="table-title">表1 本システムの主な構成要素</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">構成要素名</td>
<td align="center" style="border: 2px solid;">機能概要</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">制御部</td>
<td align="center" style="border: 2px solid;">・電動KB全体を制御する。</br> ・利用者のアクセルレバ ー(以下、アクセルという)の操作量を計測し、アクセルの操作量に応じてモーターのトルクの発生を制御する。</br> ・その他、ライトの点灯制御、BLE通信などの電動KBに必要な処理を行う。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">駆動部</td>
<td align="center" style="border: 2px solid;">・制御部から情報を受信し、車体を前方に加速するためにモーターの回転を制御する。</br> ・車輪ロック機構があり、貸出しされていないときは車輪をロックする。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">表示部</td>
<td align="center" style="border: 2px solid;">・制御部表面のディスプレイに、電動KBの車体の速度(以下、現在速度という)及び電池残量を表示する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">ブレーキ</td>
<td align="center" style="border: 2px solid;">・利用者がブレーキレバーを握ると作動し、機械的に車体を減速させる。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">速度センサー</td>
<td align="center" style="border: 2px solid;">・現在速度を計測する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">ライト</td>
<td align="center" style="border: 2px solid;">・前照灯、尾灯、最高速度表示灯、制動灯などで構成され、用途に応じ点灯、消灯する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">電池</td>
<td align="center" style="border: 2px solid;">・制御部、駆動部、表示部、速度センサー、ライトなどに電力を供給する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">スマホ</td>
<td align="center" style="border: 2px solid;">・アプリで、次のことを行う。</br> - スマホの位置の情報(以下、位置情報という)を使用する。</br> - インターネットを介して、管理サーバとメッセージをやり取りする。</br> - 電動KBの制御部とBLEで通信し、メッセージをやり取りする。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">管理サーバ</td>
<td align="center" style="border: 2px solid;">・利用者情報、電動KBの情報の管理などを行う。</td>
</tr>
</table>
</div>
</div>
〔本システムの利用方法〕
利用開始前の電動KBは、車輪が口ックされた状態で、専用の貸出し用及び返却用の駐車スペース(以下、ポートという)に、駐車している。本システムには、複数のポートがあり、各ポートで電動KBの貸出し又は返却を行う。なお、ポート以外の場所では、電動KBの貸出し及び返却を行うことはできない。電動KBの利用手順を表2 に示す。
<div><div class="table-container"><div class="table-header"><span class="table-title">表2 電動KBの利用手順</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">利用方法</td>
<td align="center" style="border: 2px solid;">詳細手順</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">利用者が電動KBを借りる場合</td>
<td align="center" style="border: 2px solid;">①利用者がポ一トに駐車している任意の電動KBに近づき、アプリで電動KBの車体に貼られている2次元バーコ一ドから、車体の識別情報である車体IDを読み取る。</br> ②アプリで電動KBを返却するポ一ト(以下、返却ポートという)を予約する。</br> ③アプリで ❝貸出し❞を選択する。その結果、車体IDに対応した電動KBの車輪の口ックがされる。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">利用者が電動KBで走行する場合</td>
<td align="center" style="border: 2px solid;">①利用者は、手押しで初速をつけて、地面を蹴りながら電動KBに乗車する。</br> ②利用者がアクセルを押すと、アクセルの操作量に応じて、電動KBはモーターのトルクを発生させて最高速度(20km/時)まで加速することができる。</br> ③利用者は、アクセルを用いて加速、又はブレーキレバーを用いて減速させて電動KBを操作する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">利用者が電動KBを返却する場合</td>
<td align="center" style="border: 2px solid;">①予約した返却ポートに、利用中の電動KBを駐車する。</br> ②アプリで❝返却❞を選択する。その結果、利用中の車体IDに対応した電動KBの車輪がロックされる。</td>
</tr>
</table>
</div>
</div>
〔電動KBの状態の遷移〕
電動KBの状態のを図3に示す。
図3 電動KBの状態の遷移 ここから
状態=待機中から操作・状況=(貸出し)を経て、状態=停止中に遷移する。
状態=停止中から操作・状況=(返却)を経て、状態=待機中に遷移する。
状態=停止中から操作・状況=(0.3km/時以上)を経て、状態=走行準備に遷移する。
状態=走行準備から操作・状況=[ a ]を経て、状態=停止中に遷移する。
状態=走行準備から操作・状況=(3km/時以上)を経て、状態=加速可能に遷移する。
状態=加速可能から操作・状況=[ a ]を経て、状態=停止中に遷移する。
状態=加速可能から操作・状況=(アクセルを押す)を経て、状態=走行中に遷移する。
状態=走行中から操作・状況=(アクセルを戻す)を経て、状態=加速可能に遷移する。
状態=走行中から操作・状況=[ a ]を経て、状態=停止中に遷移する。
注記 簡略化のために、一部の状態だけを図に示している。
図3 電動KBの状態の遷移 ここから
〔電動KBの動作概要〕
電動KB の動作概要を次に示す。
・利用開始前の電動KBは、車輪を口ックした待機中状態でポートに駐車している。
・待機中状態で利用者がアプリで❝貸出し❞を選択すると、電動KBはアプリを介した管理サーバからの指示によって車輪の口ックを解除して停止中状態になる。
・停止中状態で手押しなどによって0. 3km/時以上になると、走行準備状態になる。
・走行準備状態で手押しなどを続けて3km/時以上になると、加速可能状態になる。
・加速可能状態でアクセルを押すと、走行中状態になり次の動作のいずれかを行う。
ー現在速度が最高速度未満の場合は、アクセルの操作量に応じて、モーターのトルクの発生を制御する。
―現在速度が最高速度に達した場合は、最高速度表示灯を点灯させ、モーターのトルクを抑制する。
・走行中状態でアクセルを戻すと、加速可能状態になる。
・走行準備状態、加速可能状態、走行中状態で0.1km/時未満が一定時間継続すると停止中状態になる。
・停止中状態で利用者がアプリで“返却” を選択したとき,管理サーバは<u>(ア)ある情報を確認してから</u>、返却の指示を行う。電動KB はアプリを介した管理サーからの指示によって車輪を口ックし、待機中状態になる。
・状態に関係なく、ブレーキレバーを握ると、機械的にブレーキが掛かる。
〔 本システムで使用する主なメッセージ〕
本システムで使用する主なメッセージを表3に示す。
<div><div class="table-container"><div class="table-header"><span class="table-title">表3 本システムで使用する主なメッセージ</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">メッセージ名</td>
<td align="center" style="border: 2px solid; width: 5em;">送信元</td>
<td align="center" style="border: 2px solid; width: 5em;">送信先</td>
<td align="center" style="border: 2px solid; width: 5em;">構成データ名</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">貸出し要求</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">管理サーバ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、利用者ID、返却ポート、位置情報</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">貸出し指示</td>
<td align="center" style="border: 2px solid; width: 5em;">管理サーバ</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、利用者ID</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">貸出し応答</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">管理サーバ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、利用者ID、車輪ロック解除結果(成功・失敗)</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">返却要求</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">管理サーバ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、利用者ID、位置情報</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">返却指示</td>
<td align="center" style="border: 2px solid; width: 5em;">管理サーバ</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、利用者ID</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">返却応答</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">管理サーバ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、利用者ID、車輪ロック結果(成功・失敗)</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">車輪ロック指示</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">電動KB</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">車輪ロック応答</td>
<td align="center" style="border: 2px solid; width: 5em;">電動KB</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、結果(成功・失敗)</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">車輪ロック解除指示</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">電動KB</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">車輪ロック解除応答</td>
<td align="center" style="border: 2px solid; width: 5em;">電動KB</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、結果(成功・失敗)</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">現在情報</td>
<td align="center" style="border: 2px solid; width: 5em;">電動KB</td>
<td align="center" style="border: 2px solid; width: 5em;">アプリ</td>
<td align="center" style="border: 2px solid; width: 5em;">車体ID、電動KBの状態、現在速度</td>
</tr>
</table>
</div>
</div>
<div>注 車輪ロック応答の結果が失敗のときは、車輪ロック指示のメッセージを1回だけ再送する。</div>
<div>注 車輪ロック解除応答の結果が失敗のときは、車輪ロック解除指示のメッセージを1回だけ再送する。</div>
〔電動KBの制御部のソフトウェア構成について〕
電動KBの制御部では、リアルタイムOSを使用する。制御部の主なタスクの処理概要を表4 に示す。
<div><div class="table-container"><div class="table-header"><span class="table-title">表4 制御部の主なタスクの処理概要</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">タスク名</td>
<td align="center" style="border: 2px solid;">処理概要</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">メイン</td>
<td align="center" style="border: 2px solid;">・電動KB の状態管理を行い、10秒間隔で❝現在情報❞をアプリに送信する。</br> ・アプリからメッセージを受信し、次のことを行う。</br> - ❝車輪口ック解除指示❞を受信すると、車輪の口ックを解除し、状態を[ b ]状態にして、❝車輪口ック解除応答❞をアプリに送信する。</br> - ❝車輪口ック指示❞を受信すると、車輪を口ックし、状態を待機中状態にして、❝車輪口ック応答❞をアプリに送信する。</br> ・現在速度及び電池残量の情報を表示タスクに通知する。</br> ・[ c ]をモータ一タスクにする。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">速度計測</td>
<td align="center" style="border: 2px solid;">・速度センサーで計測した現在速度を、[ d ]タスクとモータータスクに通知する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">モーター</td>
<td align="center" style="border: 2px solid;">・メインタスク、アクセルタスク、速度計測タスクの情報から、モーターのトルク・回転数を制御する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">表示</td>
<td align="center" style="border: 2px solid;">・メインタスクから現在速度及び電池残量の情報を受けると、現在速度及び電池残量をディスプレイに表示し、最高速度表示灯を制御する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">アクセル</td>
<td align="center" style="border: 2px solid;">アクセルの操作量を計測し、メインタスクとモータータスクに通知する。</td>
</tr>
</table>
</div>
</div>
設問1 電動KBを手押しからアクセルを押して加速した後、アクセルを戻して惰性で走行したときの状態の遷移を解答群の中から選び、記号で答えよ。
解答群
ア 走行準備→加速可能
イ 走行準備→加速可能→走行中
ウ 走行準備→加速可能→走行中→加速可能
エ 走行準備→加速可能→走行中→加速可能→走行準備
設問2 〔電動KBの状態の遷移〕及び〔電動KBの動作概要〕について答えよ。
(1) 図3中の[ a ]に入れる適切な条件を答えよ。
(2) 下線(ア)について、ある情報には車体ID及び利用者ID以外に何があるか。本文中の字句を用いて答えよ。なお、スマホと電動KB間はBLE通信が安定的に行える状態である。
設問3 電動KBの制御部の主なタスクについて答えよ。
(1) 表4中の[ b ]に入れる適切な電動 KB の状態を図3 中の字句で、表4中の[ d ]に入れる適切なタスク名を表4中のタスク名でそれぞれ答えよ。
(2) 表4中の[ c ]に入れる適切な情報を答えよ。
設問4 電動KBの貸出し・返却の処理について答えよ。
(1) 利用者が電動KBを借りる処理において車輪の口ック解除が失敗なく正常に行われた場合に、送受信されるメッセージの流れについて、[ e ]~[ g ]に入れる適切なメッセージ名を解答群の中から選び、記号で答えよ。
❝貸出し要求❞→❝貸出し❞→❝[ e ]❞→❝[ f ]❞→❝[ g ]❞
解答群
ア 貸出し応答
イ 車輪口ック指示
ウ 車輪ロック応答
エ 車輪ロック解除指示
オ 車輪口ック解除応答
令和7年度春期 午後 問7 組込みシステム開発(問題原文)
■
回答・解説
AP過去問_令和7年度春期_午後_問6_データベースの同じ回の前の問題へ移動。
AP過去問_令和7年度春期_午後_問8_情報システム開発の同じ回の次の問題へ移動。
AP過去問_令和6年度秋期_午後_問7_組込みシステム開発の前の回の同じカテゴリの問題へ移動。
AP 過去問題 午後に戻る。