AP過去問 令和7年度春期 午後 問7 組込みシステム開発

提供:yonewiki

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 ]❞

解答群

ア 貸出し応答

イ 車輪口ック指示

ウ 車輪ロック応答

エ 車輪ロック解除指示

オ 車輪口ック解除応答


(2)利用者がアプリで❝返却❞を選択した後、電動KBは1回目では車輪のロックに失敗し、2回目で車輪のロックに成功した。管理サーバが結果を受信するまでの処理について,次の①及び②­に要する時間は何秒かそれぞれ答えよ。答えは小数第3位を四捨五入して、小数第2位まで求めよ。

 ここで、管理サーバとアプリ間でーつのメッセージ通信には200ミリ秒掛かり、アプリと電動KB間でーつのメッセージ通信には10 ミリ秒掛かるものとする。また、電動KBの車輪をロックする処理に成功した場合1秒、電動KBの車輪を口ックする処理に失敗した場合1秒、メッセージ再送までに0. 5秒掛かり、その他の管理サーバ、アプリ、電動KBの処理時間は無視できるものとする。

①アプリで❝返却❞を選択してから、管理サーバから❝返却指示❞メッセージを受信するまで

②アプリが、❝返却指示❞メッセージを受信してから、結果が成功の❝車輪口ック応答❞メッセージを受信するまで

 

令和7年度春期 午後 問7 組込みシステム開発(問題原文)

■電動キックボードのシェアリングシステムに関する次の記述を読んで、設問に答えよ。


 G社は、電動キックボード(以下、電動KBという)のシェアリングシステム(以下、本システムという)を開発している。本システムは、利用者に対し、電動KBの貸出し、使用及び返却をさせるものである。本システムを利用する場合には、利用者が事前にスマートフォン(以下、スマホという)に専用アプリケーションプログラム(以下、アプリという)をインストールし、利用者情報を登録して,利用者IDを取得しておく必要がある。電動肥の外観を図1に、本システムの主な構成を図2に、本システムの主な構成要を表1に示す。


AP R7 1Spring PMQ7 Fig1.png

 図1 電動KBの外観


AP R7 1Spring PMQ7 Fig2.png

 図2 本システムの主な構成


表1 本システムの主な構成要素
構成要素名 機能概要
制御部 ・電動KB全体を制御する。
・利用者のアクセルレバ ー(以下、アクセルという)の操作量を計測し、アクセルの操作量に応じてモーターのトルクの発生を制御する。
・その他、ライトの点灯制御、BLE通信などの電動KBに必要な処理を行う。
駆動部 ・制御部から情報を受信し、車体を前方に加速するためにモーターの回転を制御する。
・車輪ロック機構があり、貸出しされていないときは車輪をロックする。
表示部 ・制御部表面のディスプレイに、電動KBの車体の速度(以下、現在速度という)及び電池残量を表示する。
ブレーキ ・利用者がブレーキレバーを握ると作動し、機械的に車体を減速させる。
速度センサー ・現在速度を計測する。
ライト ・前照灯、尾灯、最高速度表示灯、制動灯などで構成され、用途に応じ点灯、消灯する。
電池 ・制御部、駆動部、表示部、速度センサー、ライトなどに電力を供給する。
スマホ ・アプリで、次のことを行う。
 - スマホの位置の情報(以下、位置情報という)を使用する。
 - インターネットを介して、管理サーバとメッセージをやり取りする。
 - 電動KBの制御部とBLEで通信し、メッセージをやり取りする。
管理サーバ ・利用者情報、電動KBの情報の管理などを行う。


〔本システムの利用方法〕

利用開始前の電動KBは、車輪が口ックされた状態で、専用の貸出し用及び返却用の駐車スペース(以下、ポートという)に、駐車している。本システムには、複数のポートがあり、各ポートで電動KBの貸出し又は返却を行う。なお、ポート以外の場所では、電動KBの貸出し及び返却を行うことはできない。電動KBの利用手順を表2 に示す。


表2 電動KBの利用手順
利用方法 詳細手順
利用者が電動KBを
借りる場合
①利用者がポ一トに駐車している任意の電動KBに近づき、アプリで電動KBの車体に貼られている2次元バーコ一ドから、車体の識別情報である車体IDを読み取る。
②アプリで電動KBを返却するポ一ト(以下、返却ポートという)を予約する。
③アプリで ❝貸出し❞を選択する。その結果、車体IDに対応した電動KBの車輪の口ックがされる。
利用者が電動KBで
走行する場合
①利用者は、手押しで初速をつけて、地面を蹴りながら電動KBに乗車する。
②利用者がアクセルを押すと、アクセルの操作量に応じて、電動KBはモーターのトルクを発生させて最高速度(20km/時)まで加速することができる。
③利用者は、アクセルを用いて加速、又はブレーキレバーを用いて減速させて電動KBを操作する。
利用者が電動KBを
返却する場合
①予約した返却ポートに、利用中の電動KBを駐車する。
②アプリで❝返却❞を選択する。その結果、利用中の車体IDに対応した電動KBの車輪がロックされる。


〔電動KBの状態の遷移〕

電動KBの状態のを図3に示す。


AP R7 1Spring PMQ7 Fig3.png

 図3 電動KBの状態の遷移


〔電動KBの動作概要〕

電動KB の動作概要を次に示す。

・利用開始前の電動KBは、車輪を口ックした待機中状態でポートに駐車している。

・待機中状態で利用者がアプリで❝貸出し❞を選択すると、電動KBはアプリを介した管理サーバからの指示によって車輪の口ックを解除して停止中状態になる。

・停止中状態で手押しなどによって0. 3km/時以上になると、走行準備状態になる。

・走行準備状態で手押しなどを続けて3km/時以上になると、加速可能状態になる。

・加速可能状態でアクセルを押すと、走行中状態になり次の動作のいずれかを行う。

ー現在速度が最高速度未満の場合は、アクセルの操作量に応じて、モーターのトルクの発生を制御する。

―現在速度が最高速度に達した場合は、最高速度表示灯を点灯させ、モーターのトルクを抑制する。

・走行中状態でアクセルを戻すと、加速可能状態になる。

・走行準備状態、加速可能状態、走行中状態で0.1km/時未満が一定時間継続すると停止中状態になる。

・停止中状態で利用者がアプリで“返却” を選択したとき,管理サーバは(ア)ある情報を確認してから、返却の指示を行う。電動KB はアプリを介した管理サーからの指示によって車輪を口ックし、待機中状態になる。

・状態に関係なく、ブレーキレバーを握ると、機械的にブレーキが掛かる。


〔 本システムで使用する主なメッセージ〕

 本システムで使用する主なメッセージを表3に示す。


表3 本システムで使用する主なメッセージ
メッセージ名 送信元 送信先 構成データ名
貸出し要求 アプリ 管理サーバ 車体ID、利用者ID、返却ポート、位置情報
貸出し指示 管理サーバ アプリ 車体ID、利用者ID
貸出し応答 アプリ 管理サーバ 車体ID、利用者ID、車輪ロック解除結果(成功・失敗)
返却要求 アプリ 管理サーバ 車体ID、利用者ID、位置情報
返却指示 管理サーバ アプリ 車体ID、利用者ID
返却応答 アプリ 管理サーバ 車体ID、利用者ID、車輪ロック結果(成功・失敗)
車輪ロック指示 アプリ 電動KB 車体ID
車輪ロック応答 電動KB アプリ 車体ID、結果(成功・失敗)
車輪ロック解除指示 アプリ 電動KB 車体ID
車輪ロック解除応答 電動KB アプリ 車体ID、結果(成功・失敗)
現在情報 電動KB アプリ 車体ID、電動KBの状態、現在速度
注 車輪ロック応答の結果が失敗のときは、車輪ロック指示のメッセージを1回だけ再送する。
注 車輪ロック解除応答の結果が失敗のときは、車輪ロック解除指示のメッセージを1回だけ再送する。


〔電動KBの制御部のソフトウェア構成について〕

電動KBの制御部では、リアルタイムOSを使用する。制御部の主なタスクの処理概要を表4 に示す。


表4 制御部の主なタスクの処理概要
タスク名 処理概要
メイン ・電動KB の状態管理を行い、10秒間隔で❝現在情報❞をアプリに送信する。
・アプリからメッセージを受信し、次のことを行う。
 - ❝車輪口ック解除指示❞を受信すると、車輪の口ックを解除し、状態を 状態にして、❝車輪口ック解除応答❞をアプリに送信する。
 - ❝車輪口ック指示❞を受信すると、車輪を口ックし、状態を待機中状態にして、❝車輪口ック応答❞をアプリに送信する。
・現在速度及び電池残量の情報を表示タスクに通知する。
をモータ一タスクにする。
速度計測 ・速度センサーで計測した現在速度を、 タスクとモータータスクに通知する。
モーター ・メインタスク、アクセルタスク、速度計測タスクの情報から、モーターのトルク・回転数を制御する。
表示 ・メインタスクから現在速度及び電池残量の情報を受けると、現在速度及び電池残量をディスプレイに表示し、最高速度表示灯を制御する。
アクセル アクセルの操作量を計測し、メインタスクとモータータスクに通知する。


設問1 電動KBを手押しからアクセルを押して加速した後、アクセルを戻して惰性で走行したときの状態の遷移を解答群の中から選び、記号で答えよ。

解答群

ア 走行準備→加速可能

イ 走行準備→加速可能→走行中

ウ 走行準備→加速可能→走行中→加速可能

エ 走行準備→加速可能→走行中→加速可能→走行準備


設問2 〔電動KBの状態の遷移〕及び〔電動KBの動作概要〕について答えよ。

(1) 図3中の に入れる適切な条件を答えよ。

(2) 下線(ア)について、ある情報には車体ID及び利用者ID以外に何があるか。本文中の字句を用いて答えよ。なお、スマホと電動KB間はBLE通信が安定的に行える状態である。


設問3 電動KBの制御部の主なタスクについて答えよ。

(1) 表4中の に入れる適切な電動 KB の状態を図3 中の字句で、表4中の に入れる適切なタスク名を表4中のタスク名でそれぞれ答えよ。

(2) 表4中の に入れる適切な情報を答えよ。


設問4 電動KBの貸出し・返却の処理について答えよ。

(1) 利用者が電動KBを借りる処理において車輪の口ック解除が失敗なく正常に行われた場合に、送受信されるメッセージの流れについて、 に入れる適切なメッセージ名を解答群の中から選び、記号で答えよ。

❝貸出し要求❞→❝貸出し❞→❝ ❞→❝ ❞→❝

解答群

ア 貸出し応答

イ 車輪口ック指示

ウ 車輪ロック応答

エ 車輪ロック解除指示

オ 車輪口ック解除応答


(2)利用者がアプリで❝返却❞を選択した後、電動KBは1回目では車輪のロックに失敗し、2回目で車輪のロックに成功した。管理サーバが結果を受信するまでの処理について,次の①及び②­に要する時間は何秒かそれぞれ答えよ。答えは小数第3位を四捨五入して、小数第2位まで求めよ。

 ここで、管理サーバとアプリ間でーつのメッセージ通信には200ミリ秒掛かり、アプリと電動KB間でーつのメッセージ通信には10 ミリ秒掛かるものとする。また、電動KBの車輪をロックする処理に成功した場合1秒、電動KBの車輪を口ックする処理に失敗した場合1秒、メッセージ再送までに0. 5秒掛かり、その他の管理サーバ、アプリ、電動KBの処理時間は無視できるものとする。

①アプリで❝返却❞を選択してから、管理サーバから❝返却指示❞メッセージを受信するまで

②アプリが、❝返却指示❞メッセージを受信してから、結果が成功の❝車輪口ック応答❞メッセージを受信するまで

 

回答・解説

設問1

 アクセルを押して惰性ですすんで止まるまでの状態の変化は図3で読み取ることができます。一般的な電動KBのイメージだと、間違う問題ですね。この電動KBはちょっと特殊です。


 停止中から、蹴って推進力10cm/秒を超えれば(0.3km/時を超えます)、走行準備状態になります。さらに蹴るなりして、83cm/秒を超えれば、やっとでアクセルが使える状態になるみたいですね。たとえ止まったとしても加速可能状態に居続けそうです。そしてブレーキを握ったらまた手押しで10cm/秒を超え走行準備状態なり更に手押しして83cm/秒を超えればアクセルが使えるというヘンテコな電動KBです。なので、走行準備→加速可能→走行中→加速可能っていう遷移ですね。問題をよく読まないとイメージできない状態遷移ですね。


したがって


ウ 走行準備→加速可能→走行中→加速可能


が答えです。


 ブレーキを握ったらまた手押しして、83cm/秒の推進力が発生しないとアクセルは使えないっていうね。変な電動KB。あんまり所有したくない仕様だな。レンタルでも、できれば乗りたくないな。まぁ使いこなせれば極力、止まらないようにブレーキ操作したいな。え、ブレーキ握ったら停止中に遷移するじゃん。また手押しっすよ。おかしいだろ。だな。でもこういうヘンテコ仕様を理解できるかな君は!っていう問題なんだな。やるな問題作成者。これは思い込みによって回答をこのさきも間違えそうだ。恐るべし!


設問2

(1)


 ひとつ手前の問題を解く段階では状態遷移のことも理解する必要があるので、この問題は設問1を考えたあとなら簡単でしょう。ブレーキを握ることでそれぞれの状態から停止中に遷移するでしょう。


したがって


a:ブレーキを握る


が答えです。


(2)

 下線ア 停止中状態で利用者がアプリで“返却” を選択したとき,管理サーバは(ア)ある情報を確認してから、返却の指示を行う。電動KB はアプリを介した管理サーバからの指示によって車輪を口ックし、待機中状態になる。ある情報とは車体ID及び利用者ID以外に何があるか?という問題。


 これは、下線アのちょっと先になりますが、表3に記載があります。返却要求のときは車体ID、利用者IDに加えて、位置情報データで構成されたメッセージを受け取るとあります。送信元もアプリで、送信先が管理サーバになっていますし、この部分がこの問題の答えと考えることができます。


したがって


位置情報


が答えです。


 フリー入力解答が続きますね。文字数制限問題にする意図がないのも難易度が増しますね。


設問3

(1)

 穴埋めbと穴埋めdで、bは電動KBの状態を図3中の字句、dはタスク名を表4中のタスクで答える問題です。cはまだ関係ないっていう変な順番の問題になっています。


 穴埋めbはメインタスクについてで、・ ❝車輪口ック解除指示❞を受信すると、車輪の口ックを解除し、状態をb 状態にして、❝車輪口ック解除応答❞をアプリに送信する。というもので、これは〔電動KBの動作概要〕の・待機中状態で利用者がアプリで❝貸出し❞を選択すると、電動KBはアプリを介した管理サーバからの指示によって車輪の口ックを解除して停止中状態になる。とありますので、停止中状態になると考えるのが正解だと思います。


したがって


b:停止中


が答えです。


 穴埋めdは速度計測タスクについてです。・速度センサーで計測した現在速度を、d タスクとモータータスクに通知する。というもので、速度をどのタスクに伝える必要があるかを考えます。モータータスク以外で現在速度を受け取るタスクを探します。すると表4の少ししたの表示タスクに・メインタスクから現在速度及び電池残量の情報を受けると、現在速度及び電池残量をディスプレイに表示し、最高速度表示灯を制御する。とありますので、表示タスクは現在速度をディスプレイに表示するので、情報を受け取る必要があります。


したがって


d:表示


が答えです。


(2)

 cの穴埋めです。メインタスクの・c をモータ一タスクに通知する。という部分です。メインタスクからモータータスクに何を通知するかという問題になります。


 アクセルの操作量はアクセルタスクからモータータスクに通知されています。現在速度は速度計測タスクからモータータスクに通知されています。それ以外の情報でモータータスクのトルク・回転数を制御するのに必要な情報である必要があります。


 最高速度の情報じゃないでしょうか?TACさんは苦し紛れに電動KBの状態とかいう広い通知をしています。問題文にでてくる情報でトルクに関係する情報はこれかなって思います。


したがって


c:最高速度情報


が答えです。


設問4

(1)

 電動KBの貸出し・返却において、利用者が電動KBを借りた時、車輪ロックが失敗無く正常に解除された場合の処理の流れについての穴埋め問題です。貸出し要求→貸出指示→e→f→gという穴埋めです。


解答群

ア 貸出し応答

イ 車輪口ック指示

ウ 車輪ロック応答

エ 車輪ロック解除指示

オ 車輪口ック解除応答


 のうち車輪ロックに関する指示と応答は必要なくてロック解除の指示と応答が必要です。したがってア、エ、オだけで解答する必要があります。さらに表3でみると貸出し応答には車輪ロック解除結果が必要とされているので、貸出し応答がが最後で、先に車輪ロック指示と応答がなされるべきです。なのでエ→オ→アが普通の考え方になり、少なくともエは最初であるべきです。あとは特に指示がないのでエ→ア→オでも普通じゃない考え方ですが、特に指示がないという一点において部分点か満点はありえると思いますね。


したがって


e:エ 車輪ロック解除指示


f:オ 車輪ロック解除応答


g:ア 貸出し応答


が答えです。


(2)

 返却のときのメッセージ通信にかかる時間に関する問題です。

管理サーバとアプリ間で一つのメッセージ通信:200ミリ秒

アプリと電動KB間で一つのメッセージ通信:10ミリ秒

電動KBの車輪をロックする処理に成功:1秒

電動KBの車輪をロックする処理に失敗:1秒

メッセージの再送:0.5秒

 という中で、アプリで返却を選択した後、1回目は車輪ロックを失敗し、2回目で車輪ロックに成功した場合の動作について


〔①返却要求(fromアプリto管理サーバ)→返却指示(from管理サーバtoアプリ)〕〔②車輪ロック指示(fromアプリto電動KB)→車輪ロック指示応答失敗(from電動KBtoアプリ)→車輪ロック指示(fromアプリto電動KB)→車輪ロック指示応答成功(from電動KBtoアプリ)〕→返却応答(fromアプリto管理サーバ)っていう順番にメッセージが出力されます


①アプリで返却を選択してから管理サーバから返却指示メッセージを受信するまで

②返却指示を受信してから、車輪ロック指示応答成功を受信するまで


という問題です。


 ①は以下の部分です。

〔①返却要求(fromアプリto管理サーバ)→返却指示(from管理サーバtoアプリ)〕


 これは返却要求(fromアプリto管理サーバ)管理サーバとアプリ間で一つのメッセージ通信:200ミリ秒と管理サーバ→返却指示(from管理サーバtoアプリ)アプリ間で一つのメッセージ通信:200ミリ秒の2回の通信で構成されています。


したがって


①:0.40秒


が答えです。


 ②は以下の部分です。


〔②車輪ロック指示(fromアプリto電動KB)→車輪ロック指示応答失敗(from電動KBtoアプリ)→車輪ロック指示(fromアプリto電動KB)→車輪ロック指示応答成功(from電動KBtoアプリ)〕


車輪ロック指示(fromアプリto電動KB)アプリと電動KB間で一つのメッセージ通信:10ミリ秒→電動KBの車輪をロックする処理に失敗:1秒→車輪ロック指示応答失敗(from電動KBtoアプリ)アプリと電動KB間で一つのメッセージ通信:10ミリ秒→メッセージの再送:0.5秒→車輪ロック指示(fromアプリto電動KB)アプリと電動KB間で一つのメッセージ通信:10ミリ秒→電動KBの車輪をロックする処理に失敗:1秒→車輪ロック指示応答成功(from電動KBtoアプリ)アプリと電動KB間で一つのメッセージ通信:10ミリ秒


 という感じです。0.01+1+0.01+0.5+0.01+1+0.01=2.54秒


したがって


②:2.54秒


が答えです。


 設問③の(2)のcの穴埋めがややこしい感じですが、TACさんが間違ってると思うな。電動KBの状態ってずるくない?電動KBにかんする何らかの情報で全部おさえれる意味のない答えに近いような。まぁ部分点はあるでしょうけど、ここは一般人vsTACの戦いになる解答例だったな。まぁたいてい負けるんだけど一般人はね。公式解答を待ちましょうか。


 

AP過去問_令和7年度春期_午後_問6_データベースの同じ回の前の問題へ移動。

AP過去問_令和7年度春期_午後_問8_情報システム開発の同じ回の次の問題へ移動。

AP過去問_令和6年度秋期_午後_問7_組込みシステム開発の前の回の同じカテゴリの問題へ移動。

AP 過去問題 午後に戻る。