応用情報技術者 2024年 秋期 午後 問07
スマートイヤホンに関する次の記述を読んで、設問に答えよ。
G社は、専用のアプリケーションプログラム(以下、アプリという)をインストールしたスマートフォン(以下、スマホという)とBluetoothで接続して、音楽などの音源再生機能、電話の通話機能、ノイズキャンセル機能、音声アシスト機能をもつスマートイヤホン(以下、Sイヤホンという)を開発している。
利用者はアプリを用いて、Sイヤホンの音源再生機能と通話機能の開始/停止の指示、及びノイズキャンセル機能と音声アシスト機能のオン/オフの設定を行うことができる。Sイヤホンを用いて通話するときには、音源再生機能及び音声アシスト機能は使用できない。
Sイヤホンは左右が独立しており、左耳に装着するイヤホン(以下、左イヤホンという)はスマホとペアリングする。右耳に装着するイヤホン(以下、右イヤホンという)とスマホとの通信は、左イヤホンが中継する。
Sイヤホンは専用のケースに入れると電源がオフとなり充電が行われ、専用のケースから取り出すと電源がオンになる。
スマホ及びSイヤホンの概要を図1に、Sイヤホンの機能を表1に示す。


〔Sイヤホンのハードウェア構成〕
Sイヤホンは、左イヤホンと右イヤホンのそれぞれが、マイク及びスピーカーを接続した音声制御部、クロック部、通信部、それらを制御する制御部、及び電力部から成る。左イヤホンと右イヤホンとでハードウェア構成に違いはない。
左イヤホンのハードウェア構成を図2に、Sイヤホンの構成要素の機能概要を表2に示す。


〔クロック部の動作〕
制御部の実行時間はクロックの周波数に反比例する。一方、消費電力はクロックの周波数が高いほど大きくなる。Sイヤホンは電池駆動であるので、できる限り消費電力は小さくしたい。そこで、表3で示すように、機能の使用状況に応じてクロックの周波数を制御部の指示で適切に割り当てることとした。

〔制御部のタスク〕
制御部はリアルタイムOSを使用している。電源オン時にメインタスクが生成される。左イヤホンと右イヤホンとで機能が異なるので、メインタスクはそのイヤホンで必要となるタスクだけを生成する。メインタスクを含め、それぞれのタスクは重複しない固有の優先度が割り当てられる。リアルタイムOSのタスクの状態は、実行状態、実行可能状態、又は待ち状態のいずれかである。
制御部のタスク一覧を表4に示す。クロックの周波数が基準周波数に等しいとき、タスクの実行に要する時間は表4に示す実行時間となる。スピーカータスク、マイクタスク及び特定語検出タスクは起動周期内に処理が完了しなければならない。起動周期内に処理が完了しない場合、音飛びやノイズなどの不具合が発生する。

タスクの優先度は、通信タスクが最も高く、以下、メインタスク、fタスク、gタスク、hタスク、アイドルタスクの順である。
アイドルタスクは最も優先度が低いので、アイドルタスクが実行状態のとき、ほかのタスクの状態はiである。
設問1:Sイヤホンの機能について答えよ。
(1)表1中のa、bに入れる適切な機能名を表1中の機能名で答えよ(aとbは順不同)。
模範解答
a:音源再生機能
b:音声アシスト機能
解説
解答の論理構成
- 通話時に併用できない機能を特定
【問題文】には
「Sイヤホンを用いて通話するときには、音源再生機能及び音声アシスト機能は使用できない。」
と明記されています。これにより、通話が開始される際にはこの 2 機能を停止する必要があると分かります。 - a、b のブランクの役割を確認
表1「通話機能」の説明の冒頭では
「Sイヤホンは、a及びbを停止して、通話開始を音声で知らせる。」
とあり、ここに入るのは前述の “使用できない” 2 機能と一致します。 - 機能名を原文どおり抜き出す
該当する名称は表1の機能名欄に示された
・「音源再生機能」
・「音声アシスト機能」
です。順不同と指示されているため、a/b の対応順は問われません。
誤りやすいポイント
- 「ノイズキャンセル機能」は通話時に“△”で切替え可(表3)なので停止必須と誤解しやすい。
- 「停止」と「オフ」のニュアンスを混同し、オン/オフ設定可能な機能を全て候補に入れてしまう。
- 表1の機能名を略称や平仮名表記に変えて書き、原文引用の要件を満たさない。
FAQ
Q: 通話中に「ノイズキャンセル機能」は使えますか?
A: 表3の凡例で “△” と示されており、オン/オフを切替え可能です。必ず停止するわけではありません。
A: 表3の凡例で “△” と示されており、オン/オフを切替え可能です。必ず停止するわけではありません。
Q: 通話開始前に利用者が音源再生を停止していれば a に別の機能が入りますか?
A: いいえ。仕様上「通話機能」が起動した時点で「音源再生機能」を停止動作として実施するため、a は「音源再生機能」で固定です。
A: いいえ。仕様上「通話機能」が起動した時点で「音源再生機能」を停止動作として実施するため、a は「音源再生機能」で固定です。
Q: 「待機時」にクロック周波数を 0 にできるのはどのタスクが関与しますか?
A: 表4の説明にあるとおり、「メイン」からの指示を受けた「アイドル」タスクがクロック部へ停止を指示します。
A: 表4の説明にあるとおり、「メイン」からの指示を受けた「アイドル」タスクがクロック部へ停止を指示します。
関連キーワード: Bluetooth, 通話制御、省電力、リアルタイムOS, 音声認識
設問1:Sイヤホンの機能について答えよ。
(2)表2中の下線①の特定のイベントとして適切なものを解答群の中から選び、記号で答えよ。
解答群
ア:一定時間経過
イ:スマホからのデータを受信
ウ:制御部からの指示を受信
エ:電力部が電力を供給
オ:マイクから入力された音声データから特定のキーワードを検出
模範解答
イ
解説
解答の論理構成
-
待機時はクロック供給を停止
表3の「待機時」におけるクロック部への指示は「0」です。これは制御部を完全に止めて省電力化している状態を示します。 -
クロックが停止していても通信部は常時動作
表2「通信部」の最初の記述に
「Bluetoothを用いてスマホと通信を行う。内部にクロックをもち、電源オン後は常に動作する。」
とあります。したがって、待機中でも通信部だけは独立したクロックでスマホとの接続を維持できます。 -
通信部はデータ受信時にクロック部へ通知
同じく表2「通信部」には
「スマホからのデータを受信すると、それを制御部に送信し、データを受信したことをクロック部に送信する。」
と明記されています。つまりスマホから何らかのデータ(再生指示、着信など)が届いた瞬間、通信部がクロック部へ“起こして”ほしい旨を伝えます。 -
クロック部の再開条件
表2「クロック部」には
「停止したクロックの供給は、①特定のイベントによって再開する。」
とあるだけで、そのイベント内容は本文中で直接は示されていません。しかし上記 3. の挙動とつなげると、通信部が報告する“スマホからのデータ受信”だけが、クロック部が把握できる具体的なイベントになります。 -
他の選択肢が不適切である理由
・「一定時間経過」は待機だけで再起動すると無駄に電力を消費します。
・「制御部からの指示」は、そもそも制御部が停止しているので発行不能です。
・「電力部が電力を供給」は電源オン直後以外に変化しません。
・「マイクから入力された音声データから特定のキーワードを検出」は、マイクを読むマイクタスクも止まっているため検出が行えません。 -
よって①の正解は「スマホからのデータを受信」、すなわち解答群「イ」となります。
誤りやすいポイント
- 「制御部が止まっている=マイクも止まる」ことを見落とし、音声トリガを選んでしまう。
- 通信部が独自クロックで「常に動作する」記述を読み飛ばし、全デバイスがスリープに入ると勘違いする。
- クロック停止からの再開を「制御部自身が行う」と思い込み、ループ論理に陥る。
FAQ
Q: クロック停止中に着信音は鳴らせないのですか?
A: 着信通知用のデータが届くと、通信部がクロック部を再開させ、制御部・音声制御部が起動してスピーカーから通知音を出します。待機電力と応答性を両立させる典型的な手法です。
A: 着信通知用のデータが届くと、通信部がクロック部を再開させ、制御部・音声制御部が起動してスピーカーから通知音を出します。待機電力と応答性を両立させる典型的な手法です。
Q: 右イヤホンでも同じイベントでクロックが再開しますか?
A: 右イヤホンは左イヤホン経由でデータを受け取ります。左側の通信部がデータ受信→クロック再開→右側へ転送、という流れになるため、右イヤホンのクロック再開トリガも最終的には同一のイベントです。
A: 右イヤホンは左イヤホン経由でデータを受け取ります。左側の通信部がデータ受信→クロック再開→右側へ転送、という流れになるため、右イヤホンのクロック再開トリガも最終的には同一のイベントです。
Q: 一定時間で定期的に起こす方式の方が実装が簡単では?
A: タイマー起床方式は実装は容易ですが、不要なウェイクアップが多発し電池寿命を縮めます。本問のように外部イベント(データ受信)でのみ起床する方が省電力効果が高いです。
A: タイマー起床方式は実装は容易ですが、不要なウェイクアップが多発し電池寿命を縮めます。本問のように外部イベント(データ受信)でのみ起床する方が省電力効果が高いです。
関連キーワード: Bluetooth, 省電力制御、クロックゲーティング、リアルタイムOS
設問2:
表3中のc〜eに入れる適切な数値の組合せを解答群の中から選び、記号で答えよ。ただし、メインタスクと通信タスクの実行時間、OSによるタスクの切替え時間は無視できるものとし、実行時間は供給されるクロックの周波数に反比例するものとする。


模範解答
オ
解説
解答の論理構成
-
必要な条件を整理
引用①「スピーカータスク、マイクタスク及び特定語検出タスクは起動周期内に処理が完了しなければならない。」
引用②「制御部の実行時間はクロックの周波数に反比例する。」
よって各タスクの実行時間/周期の合計(CPU負荷)を 1 以下に抑える最小のクロック倍率を求めます。
なお、引用③「メインタスクと通信タスクの実行時間、OSによるタスクの切替え時間は無視できるものとする。」 -
音源再生1(音源再生+音声アシスト)→[ c ]
・スピーカー:3.4 / 5 = 0.68
・マイク :1.0 / 2 = 0.50
・特定語検出:20 / 40 = 0.50
合計 1.68
反比例より- 倍率 1.5:1.68 / 1.5 = 1.12(NG)
- 倍率 2.0:1.68 / 2 = 0.84(OK)
最小倍率は 2。したがって c = 2。
-
音源再生2(音源再生+ノイズキャンセル)→[ d ]
・スピーカー:3.4 / 5 = 0.68
・マイク :1.0 / 2 = 0.50
合計 1.18- 倍率 1.0:1.18(NG)
- 倍率 1.5:1.18 / 1.5 ≒ 0.79(OK)
よって d = 1.5。
-
通話時(ノイズキャンセルは△=最も負荷が大きい“オン”を想定)→[ e ]
・スピーカー:0.5 / 5 = 0.10
・マイク :1.0 / 2 = 0.50
合計 0.60- 倍率 0.5:0.60 / 0.5 = 1.20(NG)
- 倍率 1.0:0.60(OK)
最小倍率は 1。したがって e = 1。
-
結果の組合せ
c = 2, d = 1.5, e = 1 は解答群「オ」と一致。
誤りやすいポイント
- △の「ノイズキャンセル」を“負荷ゼロ”と誤解し、通話時の計算から除外してしまう。
- 倍率 0.5 時は実行時間が2倍になる点を失念し、負荷を過小評価する。
- スピーカータスクの実行時間に「3.4 と 0.5 の2行がある」ことを見落とし、通話時に 3.4 を用いてしまう。
- 「最小の倍率」ではなく「負荷が 1 未満なら何でもよい」としてしまい、より高い倍率を選択してしまう。
FAQ
Q: クロック倍率 1.5 が用意されているのに 1.2 など細かな値は出せないのですか?
A: 引用④「クロック部への指示は、0、0.5、1、1.5、又は2の値である。」と限定されているため、それ以外の値は指定できません。
A: 引用④「クロック部への指示は、0、0.5、1、1.5、又は2の値である。」と限定されているため、それ以外の値は指定できません。
Q: 音源再生1 で倍率 1.5 を選びたいのですが、0.12 のオーバーは許容されませんか?
A: 許容されません。引用①の通り「起動周期内に処理が完了」しなければ音飛びなどの不具合が生じ、リアルタイム要件を満たせないためです。
A: 許容されません。引用①の通り「起動周期内に処理が完了」しなければ音飛びなどの不具合が生じ、リアルタイム要件を満たせないためです。
Q: 通話時にノイズキャンセルがオフなら倍率 0.5 で省電力にできませんか?
A: ノイズキャンセルはユーザがオンに切替える可能性があります(△)。最小倍率は“どちらの場合でも成立”しなければならないため、1 が選定されています。
A: ノイズキャンセルはユーザがオンに切替える可能性があります(△)。最小倍率は“どちらの場合でも成立”しなければならないため、1 が選定されています。
関連キーワード: リアルタイムOS, 周期実行タスク、負荷計算、クロック周波数制御
設問3:制御部のタスクについて答えよ。
(1)本文中のf〜hに入れるタスク名を、表4中のタスク名で答えよ。
模範解答
f:マイク
g:スピーカー
h:特定語検出
解説
解答の論理構成
- 【問題文】では「タスクの優先度は、通信タスクが最も高く、以下、メインタスク、fタスク、gタスク、hタスク、アイドルタスクの順である。」と優先順位のみが与えられています。
- どのタスクを当てはめるかは、表4に示された各タスクのリアルタイム性(起動周期と実行時間)から判断します。
- 【問題文】には「"スピーカータスク、マイクタスク及び特定語検出タスクは起動周期内に処理が完了しなければならない。"」とあります。つまり、この3タスクはアイドルタスクよりも高い優先度を持ち、通信タスク・メインタスクよりは低い優先度範囲内に並ぶ必要があります。
- 次に、3タスク内での優先度を決める鍵は起動周期の短さです。表4より
・「マイクタスク」の起動周期が最も短い
・「スピーカータスク」はそれに次ぐ
・「特定語検出タスク」が最も長い
短い周期ほどデッドラインが厳しくリアルタイム性が高いので、優先度も高く設定するのが一般的です。 - 以上から、優先度順に
「マイクタスク」→「スピーカータスク」→「特定語検出タスク」
となり、
f=マイク
g=スピーカー
h=特定語検出
が妥当だと導けます。
誤りやすいポイント
- 「通信タスク」「メインタスク」のあとに続く3枠に、表4に見当たらないタスク名を当てはめてしまう。
- 「スピーカータスク」と「マイクタスク」の優先度を逆にする。多くの受験者が“出力(スピーカー)の方が重要”と直感で判断しがちですが、実際には周期の短い「マイクタスク」の方が遅延に弱い。
- 表3のクロック周波数制御とタスク優先度を混同し、消費電力が小さい=優先度が低いと短絡的に考えてしまう。
FAQ
Q: マイクとスピーカー、どちらを優先すべきか迷います。
A: 表4で起動周期が短い方(=デッドラインが近い方)が優先です。今回は「マイクタスク」の方が周期が短いので上位に置きます。
A: 表4で起動周期が短い方(=デッドラインが近い方)が優先です。今回は「マイクタスク」の方が周期が短いので上位に置きます。
Q: クロック周波数の設定は優先度に影響しますか。
A: 直接はしません。周波数は処理時間と電力を調整するもので、タスク切り換えの優先度はリアルタイムOS側のスケジューリングポリシーに基づきます。
A: 直接はしません。周波数は処理時間と電力を調整するもので、タスク切り換えの優先度はリアルタイムOS側のスケジューリングポリシーに基づきます。
Q: メインタスクはどのような役割ですか。
A: 電源オン後に生成され、イヤホン側で必要なタスクを生成・削除する“親”のような役割を持つため、通信タスクに次ぐ高い優先度が与えられています。
A: 電源オン後に生成され、イヤホン側で必要なタスクを生成・削除する“親”のような役割を持つため、通信タスクに次ぐ高い優先度が与えられています。
関連キーワード: リアルタイムOS, タスク優先度, 周期タスク, 音声処理, デッドライン
設問3:制御部のタスクについて答えよ。
(2)右イヤホンのメインタスクでは生成せず、左イヤホンのメインタスクだけが生成するタスクを、表4中のタスク名で答えよ。
模範解答
特定語検出
解説
解答の論理構成
-
左右イヤホンで生成するタスクが異なる
【問題文】には
「左イヤホンと右イヤホンとで機能が異なるので、メインタスクはそのイヤホンで必要となるタスクだけを生成する。」
とあり、左イヤホン専用のタスクが存在することが示されています。 -
左イヤホンだけがスマホと直接やり取りする
「左耳に装着するイヤホン(以下、左イヤホンという)はスマホとペアリングする。右耳に装着するイヤホン(以下、右イヤホンという)とスマホとの通信は、左イヤホンが中継する。」
したがって、スマホやクラウドサービスと連携する処理は左イヤホン側で完結させるほうが合理的です。 -
音声アシスト機能に必要な処理は“特定語”の検出
音声アシスト機能は、マイク入力からウェイクワード(特定語)を検出して初めて動作します。表4に挙げられたタスクの中で、音声アシスト機能と直接結び付くのは「特定語検出タスク」です。
右イヤホンはスマホと直接通信できないため、この検出処理を右側で行ってもメリットがなく、消費電力だけが増えます。 -
結論
よって「右イヤホンのメインタスクでは生成せず、左イヤホンのメインタスクだけが生成するタスク」は
表4中のタスク名で「特定語検出」となります。
誤りやすいポイント
- 通信機能の中心が左イヤホンなので「通信タスク」を選んでしまう
→ 右イヤホンでもスマホへの中継通信が必要なため、通信タスクは両方で生成されます。 - 「マイクタスク」を左専用と誤解する
→ ノイズキャンセルや通話では右イヤホンのマイクも使うため、両側で必要です。 - 優先度の高低で判断してしまう
→ 問題は優先度ではなく“どのイヤホンで必要になるか”です。
FAQ
Q: なぜ右イヤホン側で特定語を検出してはいけないのですか?
A: 右イヤホンは「右イヤホンとスマホとの通信は、左イヤホンが中継する」構造です。右側で検出しても結局は左側経由でスマホへ送るため、処理が冗長になり電力消費が増えます。
A: 右イヤホンは「右イヤホンとスマホとの通信は、左イヤホンが中継する」構造です。右側で検出しても結局は左側経由でスマホへ送るため、処理が冗長になり電力消費が増えます。
Q: 音声アシスト機能がオフの場合でも特定語検出タスクは生成されますか?
A: 「メインタスクはそのイヤホンで必要となるタスクだけを生成する」ため、音声アシスト機能がオンのときのみ生成される設計が合理的です。
A: 「メインタスクはそのイヤホンで必要となるタスクだけを生成する」ため、音声アシスト機能がオンのときのみ生成される設計が合理的です。
Q: 特定語検出タスクが起動周期内に終わらなかった場合、どのような不具合が出ますか?
A: 表4にある通り周期を守れないと音飛びや誤検出が起こり、ウェイクワードが無視されたり誤反応したりします。
A: 表4にある通り周期を守れないと音飛びや誤検出が起こり、ウェイクワードが無視されたり誤反応したりします。
関連キーワード: リアルタイムOS, タスク優先度, Bluetooth, 音声アシスタント, 省電力制御
設問4:アイドルタスクについて答えよ。
(1)本文中のiに入れるリアルタイムOSのタスクの状態を答えよ。
模範解答
i:待ち状態
解説
解答の論理構成
- 【問題文】には次の記述があります。
・「リアルタイムOSのタスクの状態は、実行状態、実行可能状態、又は待ち状態のいずれかである。」
・「アイドルタスクは最も優先度が低いので、アイドルタスクが実行状態のとき、ほかのタスクの状態はiである。」 - リアルタイムOSでは「より高い優先度のタスクが実行可能状態にある限り、それがCPUを占有する」というプリエンプティブ(優先度)スケジューリングが一般的です。
- アイドルタスクが「実行状態」になれる条件は、
• 他のすべてのタスクが「実行可能状態」にいない(存在すれば優先度が高いので切り替わる)
• 残る可能性は「待ち状態」しかない
⇒ よって、ほかのタスクは「待ち状態」と判断できます。 - 以上よりiに入る語は「待ち状態」であり、模範解答「i:待ち状態」と一致します。
誤りやすいポイント
- 「実行可能状態=CPUを使っていないのでアイドルタスクが動ける」と誤解するケース
実際には、実行可能状態に遷移した瞬間にスケジューラが動き、最も優先度が高いタスクが必ず実行状態になります。 - 3 状態モデルを把握していないまま “待機” “スリープ” など曖昧な語を記述して減点されるケース。
- アイドルタスクの役割(消費電力抑制・割り込み待ち等)と今回問われている「他タスクの状態」とを混同するケース。
FAQ
Q: アイドルタスクはいつ生成されますか?
A: 多くのリアルタイムOSではシステム起動時にカーネルが自動生成し、常に実行可能状態として待機します。
A: 多くのリアルタイムOSではシステム起動時にカーネルが自動生成し、常に実行可能状態として待機します。
Q: 実行可能状態と待ち状態の違いは?
A: 実行可能状態は CPU 割当て待ちでスケジューラの対象になります。待ち状態はイベント待ちなどでスケジューラの対象外です。
A: 実行可能状態は CPU 割当て待ちでスケジューラの対象になります。待ち状態はイベント待ちなどでスケジューラの対象外です。
Q: アイドルタスクが動作中に割り込みが発生した場合どうなりますか?
A: 割り込みハンドラ終了後、スケジューラが再実行され、実行可能状態になった高優先度タスクがあれば直ちに実行状態に切り替わります。
A: 割り込みハンドラ終了後、スケジューラが再実行され、実行可能状態になった高優先度タスクがあれば直ちに実行状態に切り替わります。
関連キーワード: 優先度スケジューリング, プリエンプティブ, 実行可能状態, 待ち状態, アイドルタスク
設問4:アイドルタスクについて答えよ。
(2)クロックの供給を停止できるのは、表3における使用状況が待機時のときだけである。待機時以外でクロックの供給を停止できない理由を、タスクの起動周期の観点で40字以内で答えよ。
模範解答
クロックの再開に掛かる5ミリ秒以下の周期で動くタスクがあるから
解説
解答の論理構成
- 低消費電力化のため、クロックを止められる場面は限定されています。問題文の指示は
「クロックの供給を停止できるのは、表3における使用状況が待機時のときだけである。」
と明記しています。 - その理由はタスクの周期性にあります。表4より、
・「スピーカータスク」 起動周期「5ミリ秒」
・「マイクタスク」 起動周期「10ミリ秒」
・「特定語検出タスク」 起動周期「20ミリ秒」
など、きわめて短い周期で繰り返し動くタスクが存在します。 - 一方、表2の「クロック部」の説明には、
「クロック供給再開に要する時間 5ミリ秒」
とあります。 - つまり、待機時以外でクロックを停止すると、再開に「5ミリ秒」を要するため、起動周期が「5ミリ秒以下」のタスク(=スピーカータスク)が期限内に処理を開始できません。
- その結果、音飛びやノイズといった不具合を招くため、待機時のみクロック停止が許容される、という論理になります。
誤りやすいポイント
- クロック停止=常に省電力と短絡的に考え、リアルタイム制約を忘れる。
- 「10ミリ秒」や「20ミリ秒」のタスクだけに注目し、「5ミリ秒」の存在を見落とす。
- 再開時間「5ミリ秒」を“無視できる遅延”と勘違いし、スピーカータスクの締切を超過させる。
FAQ
Q: スマートイヤホン側でスピーカータスクが動かないケースはありますか?
A: 通話時は「音源再生機能」が停止しているためスピーカータスクは生成されません。その場合でもマイクタスクなどが残るため、やはり短周期タスクは存在します。
A: 通話時は「音源再生機能」が停止しているためスピーカータスクは生成されません。その場合でもマイクタスクなどが残るため、やはり短周期タスクは存在します。
Q: クロックの再開時間を短縮できれば、待機時以外でも停止できますか?
A: はい。再開時間が最短周期タスク(本問では「5ミリ秒」)より十分短ければ技術的には可能です。ただしハードウェア設計と消費電力のトレードオフになります。
A: はい。再開時間が最短周期タスク(本問では「5ミリ秒」)より十分短ければ技術的には可能です。ただしハードウェア設計と消費電力のトレードオフになります。
Q: アイドルタスクの役割は何ですか?
A: 実行可能なタスクがないときにCPUを占有し、電力制御命令で低消費電力モードへ移行するための“受け皿”となります。
A: 実行可能なタスクがないときにCPUを占有し、電力制御命令で低消費電力モードへ移行するための“受け皿”となります。
関連キーワード: 低消費電力, クロックゲーティング, リアルタイムOS, 周期タスク, 優先度制御


