令和7年度 春期 応用情報技術者試験 午後 問7 電動キックボードの状態遷移設計

テクノロジ組込み・IoT

この問題は2025(R7)春 応用情報技術者 午後に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

学習ガイド

電動キックボードのシェアリングシステムを題材にした組込みシステムの問題です。手押し・加速・惰性走行といった車体の状態遷移、スマホと車体・管理サーバ間のメッセージの流れ、ロック失敗時のリトライを含む応答時間の計算まで、要求仕様を横断的に読み取る力が試されます。この記事では、利用者が借りて返すまでの一連のシナリオに沿って資料を統合し、各設問の解答をシナリオの時点で特定していきます。

この記事で押さえる論点

  • 利用手順と状態遷移図を対応付けて遷移条件を特定する
  • BLE通信のメッセージシーケンスを補完する
  • リトライを含む処理時間の計算を行う

問題本文

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

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

図1 電動KBの外観
図の説明テキスト

「図1 電動KBの外観」を示す模式図。各部の名称が引き出し線で示されている。
示されている名称:

  • アクセルレバー
  • 表示部
  • 制御部
  • ブレーキレバー
  • 前照灯
  • 最高速度表示灯
  • 速度センサー
  • ブレーキ
  • 電池
  • 駆動部
  • 尾灯, 制動灯
  • 車輪ロック機構
図2 本システムの主な構成
図の説明テキスト

「図2 本システムの主な構成」を示すブロック図。
構成要素間の関係:

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

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

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

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

〔電動KBの状態の遷移〕

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

図3 電動KBの状態の遷移
図の説明テキスト

状態遷移図。

ノード:
待機中、停止中、走行準備、加速可能、走行中

遷移と条件:

  • 「待機中」から「停止中」へ (条件: 貸出し)
  • 「停止中」から「待機中」へ (条件: 返却)
  • 「停止中」から「走行準備」へ (条件: 0.3km/時以上)
  • 「走行準備」から「加速可能」へ (条件: 3km/時以上)
  • 「加速可能」から「走行中」へ (条件: アクセルを押す)
  • 「走行中」から「加速可能」へ (条件: アクセルを戻す)
  • 「走行準備」から「停止中」へ (条件: a)
  • 「加速可能」から「停止中」へ (条件: a)
  • 「走行中」から「停止中」へ (条件: a)

注記 簡略化のために,一部の状態だけを図に示している。

〔電動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
車輪ロック応答 注1) 電動KB アプリ 車体ID, 結果(成功・失敗)
車輪ロック解除指示 アプリ 電動KB 車体ID
車輪ロック解除応答 注2) 電動KB アプリ 車体ID, 結果(成功・失敗)
現在情報 電動KB アプリ 車体ID, 電動KBの状態, 現在速度

注1) 車輪ロック応答の結果が失敗のときは, 車輪ロック指示のメッセージを1回だけ再送する。
注2) 車輪ロック解除応答の結果が失敗のときは, 車輪ロック解除指示のメッセージを1回だけ再送する。

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

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

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

貸出し・返却処理におけるメッセージの流れ

貸出し・返却処理におけるメッセージの流れ
図の説明テキスト

貸出し・返却処理におけるメッセージの流れを示す図。「“貸出し要求” → “貸出し指示” → “e” → “f” → “g”」という矢印でつながれた順序が示されている。

設問と解答・解説

設問1

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

  1. 走行準備→加速可能
  2. 走行準備→加速可能→走行中
  3. 走行準備→加速可能→走行中→加速可能
  4. 走行準備→加速可能→走行中→加速可能→走行準備

模範解答

選択肢ウ: 走行準備→加速可能→走行中→加速可能

配点 1

解説

電動KB(キックボード)の動作における状態遷移を問う問題です。
手押し状態(走行準備)からアクセルを押して加速するには、一定以上の速度が必要であり、その条件を満たした状態が 加速可能 です。
そこからアクセルを押すと 走行中 になります。
その後、アクセルを戻して惰性で走行している場合、まだ速度があるため「走行準備」ではなく 加速可能 な状態に戻ります。
したがって、「走行準備→加速可能→走行中→加速可能」となります。

各選択肢の解説

  • : 加速可能で止まっており、走行中への遷移が抜けているため誤りです。
  • : 走行中から惰性走行(アクセルを戻した状態)の遷移が含まれていないため誤りです。
  • : 正解です。
  • : 惰性走行時は速度が維持されており、完全に停止して「走行準備」に戻るわけではないため誤りです。

設問2

(1)

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

模範解答

0.1km/時未満が一定時間継続

採点基準(配点 4点)

知識・理解度(内容)(2点)

  • 2: 「0.1km/時未満」という速度条件を明確に示している。
  • 1: 速度低下には触れているが、具体的な数値が欠けている、または不正確である。
  • 0: 速度に関する条件の記述がない。

論理性(構造)(2点)

  • 2: 「一定時間継続」という時間条件を明確に示している。
  • 1: 時間経過には触れているが、「一定時間継続」であることが明確でない。
  • 0: 時間に関する条件の記述がない。

解説

図3の電動KBの状態遷移において、走行状態などから停止状態へ遷移するための条件を答える問題です。
停止状態と判断される条件は、速度がほぼゼロになることと、それが一時的ではなく継続することです。
具体的な数値は他の状態遷移条件から「0.1km/時未満」と導き出せ、またノイズや瞬間的な速度低下と区別するために「一定時間継続」することが求められます。

高得点のポイント

  • 速度条件として 0.1km/時未満 を示していること
  • 時間条件として 一定時間継続 を示していること

(2)

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

模範解答

位置情報

採点基準(配点 4点)

正確性(内容)(4点)

  • 4: 「位置情報」と正しく抜き出している。
  • 2: 位置情報に該当する内容だが、余分な文字が含まれているなど完全に一致しない。
  • 0: 誤答または無解答。

解説

シェアリングシステムにおいて、車体や利用者のID以外に必要な管理情報を問う問題です。
電動KBがどこに存在するかの把握は、サービス運営上必須となります。
下線(ア)の周辺や動作概要を読み取ると、BLE通信を用いてスマホ経由で送信される情報として 位置情報 が該当します。

高得点のポイント

  • 本文中の字句を用いて 位置情報 と正確に答えること

設問3

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

(1)

表4中のbに入れる適切な電動KBの状態を図3中の字句で答えよ。

模範解答

停止中

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 「停止中」と正しく抜き出している。
  • 1: 余分な文字が含まれているなど完全に一致しない。
  • 0: 誤答または無解答。

解説

電動KBの制御部のタスクにおいて、該当する状態を図3中の字句で答える問題です。
電動KBの仕様や各タスクに必要な情報から、タスクbは電動KBが走行していない状態、すなわち 停止中 であることが読み取れます。

高得点のポイント

  • 図3に存在する状態名から 停止中 を正確に抽出していること

(2)

表4中のdに入れる適切なタスク名を表4中のタスク名で答えよ。

模範解答

メイン

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 「メイン」と正しく抜き出している。
  • 1: 余分な文字が含まれているなど完全に一致しない。
  • 0: 誤答または無解答。

解説

電動KBの制御部タスク名を表4から答える問題です。
制御の中心となるタスクは、他の各タスクと連携して動作のオーケストレーションを行います。
表4の記述から、全体を統括するタスクである メイン が該当します。

高得点のポイント

  • 表4中のタスク名から メイン を正確に抽出していること

(3)

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

模範解答

電動KBの状態

採点基準(配点 2点)

知識・理解度(内容)(1点)

  • 1: 「電動KB」に関する情報であることが明確に示されている。
  • 0: 対象が不明確である。

論理性(構造)(1点)

  • 1: 「状態」に関する情報であることが示されている。
  • 0: 状態であることが示されていない。

解説

電動KBの制御部タスクにおいて必要となる情報を答える問題です。
システムが電動KBを適切に制御・管理するためには、現在のステータスを常に把握しておく必要があります。
したがって、タスクに必要な情報は 電動KBの状態 となります。

高得点のポイント

  • 電動KB に関する情報であることを明記する
  • 現在の 状態 であることを示す

設問3(2)は,正答率が低かった。電動キックボードの仕様から各タスクに必要な情報を読み解いて解答してほしい。

設問4

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

(1)

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

  1. 貸出し応答
  2. 車輪ロック指示
  3. 車輪ロック応答
  4. 車輪ロック解除指示
  5. 車輪ロック解除応答

模範解答

選択肢エ: 車輪ロック解除指示

配点 1

解説

貸出し処理のシーケンスにおいて、車輪のロック解除が正常に行われた際のメッセージを答える問題です。
利用者がアプリで貸出し操作を行うと、システム側から車体のロックを解除するよう指示が出されます。
したがって、送受信されるメッセージは 車輪ロック解除指示 となります。

各選択肢の解説

  • : 貸出し全体の応答であり、ロック解除のための具体的な指示ではありません。
  • : 貸出し時ではなく、返却時にロックするための指示です。
  • : ロック指示に対する応答であり、貸出し時の動作とは逆です。
  • : 正解です。
  • : 解除指示に対する応答メッセージであり、指示そのものではありません。

(2)

fに入れる適切なメッセージ名を解答群の中から選び,記号で答えよ。

  1. 貸出し応答
  2. 車輪ロック指示
  3. 車輪ロック応答
  4. 車輪ロック解除指示
  5. 車輪ロック解除応答

模範解答

選択肢オ: 車輪ロック解除応答

配点 1

解説

貸出し処理において、ロック解除指示が実行された後に電動KBから返されるメッセージを答える問題です。
「車輪ロック解除指示」を受けた電動KBは、物理的なロックを解除した後、その結果をアプリ側に伝えます。
したがって、送信されるメッセージは 車輪ロック解除応答 となります。

各選択肢の解説

  • : ロック解除応答を受けた後の、より上位のトランザクションでのメッセージです。
  • : 返却時の処理です。
  • : 返却時にロックが成功した際のメッセージです。
  • : 電動KBに対する指示であり、電動KBからの返答ではありません。
  • : 正解です。

(3)

gに入れる適切なメッセージ名を解答群の中から選び,記号で答えよ。

  1. 貸出し応答
  2. 車輪ロック指示
  3. 車輪ロック応答
  4. 車輪ロック解除指示
  5. 車輪ロック解除応答

模範解答

選択肢ア: 貸出し応答

配点 1

解説

貸出し処理の最後に、アプリから利用者へ(あるいは管理サーバからアプリへ)最終的な貸出しの成否を伝えるメッセージを答える問題です。
すべての処理(ロック解除など)が正常に完了したことを受けて、貸出し手続きの完了を通知します。
したがって、該当するメッセージは 貸出し応答 となります。

各選択肢の解説

  • : 正解です。
  • : 返却時の処理です。
  • : 返却時の処理です。
  • : ロック解除の指示であり、最終的な応答ではありません。
  • : ロック解除の成否を示すものであり、貸出し処理全体の応答ではありません。

(4)

利用者がアプリで“返却”を選択した後,電動KBは1回目では車輪のロックに失敗し,2回目で車輪のロックに成功した。管理サーバが結果を受信するまでの処理について,① アプリで“返却”を選択してから,管理サーバから“返却指示”メッセージを受信するまでに要する時間は何秒か答えよ。答えは小数第3位を四捨五入して,小数第2位まで求めよ。

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

模範解答

0.40

配点 1

解説

アプリで「返却」を選択してから、管理サーバから「返却指示」メッセージを受信するまでの時間を計算する問題です。

通信のフローは以下の通りです:

  1. アプリ \rightarrow 管理サーバ(返却要求): 200200 ミリ秒
  2. 管理サーバ \rightarrow アプリ(返却指示): 200200 ミリ秒

合計時間は 200+200=400200 + 200 = 400 ミリ秒となります。
秒に換算すると 0.40.4 秒です。
問題文に「小数第3位を四捨五入して、小数第2位まで求めよ」と指定されているため、0.400.40 が正解となります。

各選択肢の解説

本設問は数値入力のため、選択肢の解説はありません。桁数指定の無視による誤答に注意してください。

(5)

② アプリが,“返却指示”メッセージを受信してから,結果が成功の“車輪ロック応答”メッセージを受信するまでに要する時間は何秒か答えよ。答えは小数第3位を四捨五入して,小数第2位まで求めよ。

模範解答

2.54

配点 1

解説

アプリが「返却指示」を受信してから、結果が成功となる「車輪ロック応答」を受信するまでの時間を計算する問題です。

処理のフローと所要時間は以下の通りです:

  1. アプリ \rightarrow 電動KB(車輪ロック指示 - 1回目): 1010 ミリ秒
  2. 電動KBでのロック処理(失敗): 11 秒(10001000 ミリ秒)
  3. 電動KB \rightarrow アプリ(車輪ロック応答 - 失敗): 1010 ミリ秒
  4. メッセージ再送までの待機時間: 0.50.5 秒(500500 ミリ秒)
  5. アプリ \rightarrow 電動KB(車輪ロック指示 - 2回目): 1010 ミリ秒
  6. 電動KBでのロック処理(成功): 11 秒(10001000 ミリ秒)
  7. 電動KB \rightarrow アプリ(車輪ロック応答 - 成功): 1010 ミリ秒

これらの時間を合計すると:
10+1000+10+500+10+1000+10=254010 + 1000 + 10 + 500 + 10 + 1000 + 10 = 2540 ミリ秒となります。
秒に換算すると 2.542.54 秒です。
小数第3位を四捨五入して小数第2位まで求めると、2.542.54 となります。

各選択肢の解説

本設問は数値入力のため、選択肢の解説はありません。再送までの待機時間や処理時間の合算漏れに注意してください。

設問4(2)①は,正答率が平均的であったが,②は,正答率がやや低かった。どちらも問題文にある小数点以下の桁数の指示を無視した解答が散見された。技術者は桁数を考慮する機会が多いので,桁数を気にする習慣をつけて,問題文に従った解答をしてほしい。