
【AP】令和6年秋午後問7組込みシステム開発の解説(応用情報技術者試験)
このNoteでは「応用情報技術者試験 令和6年秋午後問7(組込みシステム開発)」の解説をします。
問題文の見た目も設問構成も相変わらず良いですし、テーマがワイヤレスイヤホンなので馴染みあって解き易そう。なんですが「地雷問題」でした。
選択問題がメイン。計算問題は問7組込みには大抵入ってくるので、異臭はありません。

この問題の中核は、複数のタスクがCPUを共有し、更にタスクの起動周期内に完了する制約。これが難しい。
初見で問題文を見た時、「何じゃこりゃ、マジで分からん」となりました。本試験で直撃した方は大混乱でしたよね。(具体的なクロック周波数で書かれていたら分かったかも?)

解き終わってしまえば、中核抜きでも最大5割はいけますが。中核が分からないままでは不安すぎて、ボロボロに持ち崩します。本試初見では、4割得点で、足を引っ張るリスキーな問題になるでしょう。
今にして思えば「選択肢問題ばかりってことは難しいのかな」とも。でも解く前に「選択肢問題が多いから罠」なんて逆張りファインプレイできないですね。
すみません。今回前置きが長くなりました。
このNoteでは、私がIT以外の学生時代にAPに独学合格した経験と、大学・IT専門学校で応用情報技術者試験の対策授業を担当した経験を詰め込んで作りました。
それでは始めましょう!
※このNoteは後日有料になります。お早めにお読みください。その後はマガジンに追加されます。マガジンも値上げしますので、お早めにご購入ください。
設問1(1)a, b | 問題文に答え
a:音源再生機能
b:音声アシスト機能
必ず正解してください。
問題文36頁序盤に「通話するときには、音源再生機能及び音声アシスト機能は使用できない」とあるため。
メタ的な確認方法
すごくメタな解き方を、揚げ足で書かせてください。
表1について。文章として、空欄aとbに入る機能名が、空欄aとbより前にあるのは当然ですよね。

表1の通話機能より前にあるのは、音源再生機能と音声アシスト機能。空欄a, bの2つと数も一致。
今回はツッコミ所として書きました。本試験では考えなくてOKです。こんなの技術的な理解ではなく、国語の問題。更に国語の問題というより、揚げ足取りですが。できれば、国語よりも技術的な解法をさせて欲しいなと。
設問1(2) | イベント = 通知・割込み
正答はイ(スマホからのデータを受信)。
正解できます。
組込みにおいて「イベント」=「通知」されること。よって、クロック部に通知する何かを探します。
表2の制御部。クロック再開時の動作は書かれていますが、再開指示は出してません。ウは削除。

表2の通信部。「スマホからデータを受信すると、それを制御部に送信し、データを受信したことをクロック部に送信する」。通信部はクロック部に通知していると解釈。

データは制御部には送ります。クロック部にデータは送りません。クロックには「受信したことを送信」、つまり通知しています。
消去法でも絞って確認しましょう。他の選択肢も表2(や問題文)に書かれてないので削除。
ア:「一定時間経過」なんて言葉なし
ウ:制御部はクロック周波数の指示はあっても、再開指示の言葉なし(表2)
エ:電源部は常に電源を供給。通信部がBluetooth通信を常にするため(表2)。なお、通信部は「内部にクロック」があるため、クロック部が停止しても動けます(表2)。
オ:あり得そうですが、音声制御部がクロック部に指示する文面がありません。
(ここからは、後の表3の解釈ですが)待機時は、全ての動作を停止してクロックも停止した状態。36頁「利用者はアプリを用いて、~開始/停止の指示、~設定を行うことができる」の指示が行われたら、クロック供給を再開し処理を始めます。
つまり通信部は自身の内部クロックで動き続け、スマホから操作がくれば、クロック部と制御部へ通知する仕組み。
前提 | 起動周期と実行時間
今回の組込み問7、くっそ難しかったですよね。特にクロック。マジで分かんなかったです。
表4が要。中核なので、初見だとめちゃ混乱しますね。
表4の解釈行きましょう。
起動周期:タスクが起動される周期
実行時間:タスクの実行にかかる時間
具体的に考えると理解できます。
例えば、表4のスピーカ上行。起動周期が5ミリ秒、実行時間が3.4ミリ秒。5ミリ秒ごとにスピーカタスクが起動され、3.4ミリ秒で処理しますよという意味。
次の起動までの間に処理を終えないと、音飛びとかの不具合が出るんですね。問題文の38頁末「起動周期内に処理が完了しない場合、音飛びやノイズなどの不具合が発生する」。
これらのタスクが、1つの機能で共存するんです。
例えば通話時。
聞くためにスピーカータスク、話すためにマイクタスクが起動。
スピーカータスクは5ミリ秒の間に3.4ミリ秒処理、しないと音飛びが発生。マイクタスクは2ミリ秒の間に1.0ミリ秒処理、しないと相手に音飛びが発生。
以上が共存します。
10ミリ秒間で考えると。スピーカータスクは10ミリ秒間に2回起動され、合計6.8ミリ秒間CPUを使います。マイクタスクは10ミリ秒間に5回起動され、合計5.0ミリ秒間CPUを使います。
10ミリ秒間に、合計11.8ミリ秒の処理を終える。無理ですよね。
そこで表4注記1と2。表4に書かれた実行時間は、クロック周波数が基準周波数に等しい時の場合。つまり制御部から「1」の指示が出てた場合。
クロック周波数は0, 0.5, 1.0 1.5, 2.0倍に調整できる。表2の制御部より、「0, 0.5, 1.0, 1.5, 又は2の値である。この値に基準周波数を乗じた周波数のクロックが供給される」。
よって、10ミリ秒間に、合計11.8ミリ秒の処理を終えたいなら、1.5倍か2.0倍のクロック周波数で手早く処理させます。
さらに38頁序盤「できる限り消費電力は小さくしたい」ので、クロック周波数はギリギリの線にしたい旨。
つまり、制御部からクロック部に「1.5」と指示して、基準周波数×1.5のクロックを供給してもらいます。
以上になります。起動周期と実行時間、変化できるクロック、消費電力を節約する方針、3段階の理解ハードルでした。
まだ分からなくても大丈夫。次節で具体的に計算して解いていきますからね。
組込みは、プログラムとハードウェアの融合。プログラムでは、状態遷移やタスク間の通知・割込み、ハードウェアの動きとの連動がテーマだとずっと思っていました。まさかCPU内部処理、しかもクロックとはと驚きました。エンベデッドシステムスペシャリストでも見た記憶がないです。
今回を機会に、組込みを金輪際切るか、粘るために理解して対応力を広げるかの判断かも。私は技術系問題を解きたいので粘ります。APのデータベースの無茶ぶりに比べれば、まだ呑めるかな。
設問2 | 最難関
正答はオ(2.0, 1.5 1.0倍)。
簡単なものから解説しますね。
空欄d:音源再生2
表3から音源再生2に使う機能は、音源再生とノイズキャンセル。

表4から、音源再生機能はスピーカータスク上行(起動周期5, 実行時間3.4ミリ秒)。ノイズキャンセル機能はマイクタスク(2, 1.0ミリ秒)。
起動周期が違うので統一して考えます。5と2なので10に合わせます。
スピーカータスク:10ミリ秒間に6.8ミリ秒実行
マイクタスク:10ミリ秒間に5.0ミリ秒実行
合計すると、10ミリ秒間に11.8ミリ秒の実行(CPU専有)が必要。足りません。音飛びなどが発生しちゃいます。
そこで表4注記1と2。「実行時間はクロック周波数が基準周波数に等しい時の値」。表2の制御部より「クロック部への指示は、0, 0.5, 1, 1.5, 又は2の値である。この値に基準周波数を乗じた周波数が供給される」。
制御部が1.5と指示したら、1.5倍速く処理されるので、11.8/1.5=約7.87ミリ秒。10ミリ秒以内に完了します。
制御部が2と指示したら、11.8/2 = 5.9ミリ秒。しかし、38頁序盤「できる限り消費電力は小さくしたい」ので、1.5で充分。
したがって、空欄dは「1.5」倍。
空欄e:通話時
空欄dと同じ計算方法です。
表3から、通話機能とノイズキャンセル機能。ノイズキャンセル機能は△なので、オフの場合もありますが、見積もりなのでオンの場合で計算しましょう。オフで見積もりしたら、オンの時に音飛びが発生するかもですから。

表4から、
通話機能はスピーカータスク下行(5, 0.5ミリ秒)
通話とノイズキャンセルはマイクタスク(2, 1.0ミリ秒)
起動周期を統一して考えると、
スピーカータスク:10ミリ秒間に1.0ミリ秒
マイクタスク:10ミリ秒間に5.0ミリ秒
合計すると、10ミリ秒間に6.0ミリ秒のCPU時間が確保できればOK。つまり基準周波数のままで完了できます。
よって空欄eは「1」倍。
空欄c:音源再生1
計算方法は同じ。タスクが3つになるので解説を最後にしました。
表3より、音源再生機能と音声アシスト機能。更に、表1からタスクを特定します。感覚でマイクタスクと検出タスクと予測できますが、確認はしてください。点数・合格がかかってます。

表4より、
音源再生機能にはスピーカー上行(5, 3.4ミリ秒)
音声アシスト機能には
マイクタスク(2, 1.0ミリ秒)
特定語検出タスク(40, 20ミリ秒)
5, 2, 40の最小公倍数の40に統一します。
スピーカータスク:40ミリ秒間に27.2ミリ秒
マイクタスク:40ミリ秒間に20.0ミリ秒
特定語検出タスク:40ミリ秒間に20.0ミリ秒
合計40ミリ秒間に67.2ミリ秒(基準周波数の場合)。
クロックを1.5倍にしたら、67.2÷1.5=44.8ミリ秒。40ミリ秒で処理し切れません。
2.0倍にしたら、67.3÷2.0=33.65ミリ秒。40ミリ秒以内。
以上より、空欄cは「2.0」倍。
本試験で初見したら無理ですよねこれ。でも理解できたなら、今後も組込みは選択問題候補に残しておきたいです。
APはDBが地雷なので、組込みを残しておかないと、プログラム系(問3, 8)か文系(問2, 9, 10, 11)しか選択肢がありません。
私はプログラム系は苦手ですし、文系問題は文章が長いので少し点数が不安定です。>AP問題の選び方Note
設問3(1)f, g, h | 感覚ではなく問題文の範囲内で解く
f:マイク
g:スピーカ
h:特定語検出
hだけは必ず正解してください。
「タスクの優先度」は、タスクが同時に起動された時に、CPUを割り当てる順位。
起動周期に注目します。
スピーカー:5ミリ秒
マイク:2ミリ秒
特定語検出:40ミリ秒
優先度は、マイク>スピーカー>特定語検出。
スピーカーは5ミリ秒間で処理を終えれば良いですが、マイクは2ミリ秒ごとに起動されます。スピーカが処理中でも、マイクの処理をしないと、次の起動に間に合わなくなり音声遅延に。
38頁末「起動周期内に処理が完了しなければならない」と、明確に嫌ってますからね。ご丁寧に「起動周期内に処理が完了しない場合~不具合が発生する」と、わざわざ追加で書いてます。絶対許さないメッセージ。
他の考え方もあるでしょうが、それは自分の責任で実際に作る時。試験なので問題文の範囲で解答を作ります。
私の感覚だと、スピーカー(音飛びが深い)、マイク(ノイキャンミスはたまには許す)、音声アシスト(しゃーねーな)の優先順かなぁ。
起動時間に気づかなくても、音声アシスト(特定語検出)を最下位にするのは正解したいですね。
設問3(2) | 問題文から探し出す
正答は「特定語検出」
正解してください。
設問で、右イヤホンと左イヤホンの違いを問われています。問題文から探します。
36頁「スマホとの通信は、左イヤホンが中継する」
表2「左イヤホンの場合は、~特定のキーワードを検出する」
設問文は「表4中のタスク名で答えよ」なので、特定語検出タスク。
左イヤホンが右イヤホンへ中継するので通信タスクも候補でした。通信タスクを消す理由。
左イヤホンでは、スマホと右イヤホン
右イヤホンでは、左イヤホン
と通信するので違いはあります。しかし表4では通信タスクだけ。区別していません。もし「中継タスク」「イヤホン通信タスク」があれば、正答になり得ました。
設問4(1) | Iパス/FEの知識
正答は「待ち状態」
必ず正解してください。クロック供給をせず、寝ている状態。他の機能、つまり他のタスクは動いていません。
念のためタスクの状態を復習しておきます。いきなり出ると、なんだったっけ?ってなりますよね。
実行状態:タスクにCPUが割り当てられ実行されている状態
実行可能状態:タスクがCPU割り当てを待っている状態
割り当てさえされればすぐに実行状態になれる状態待ち状態:タスクにCPUが割り当てられていない状態
タスク以外の終了を待っているなど(印刷などお)
設問4(2)
正答は「クロックの再開に掛かる5ミリ秒以下の周期で動くタスクがあるから」
これは無理でしょ。めちゃ難しい。
表2のクロック部。「イベントを受けてから5ミリ秒後に、~クロックの供給を再開する」を、「まだ解答に使っていない」ことに気づくファインプレイ。できるレベルじゃないわい!>長文問題の6解法Note(3:未使用情報を把握する)
クロック供給なければ処理止まるから当然じゃん、と思ってしまいます。
別解「通信部以外での処理が進まなくなるから」18文字。短いし苦し紛れですが、最後の問題はノーヒントかも、とオリジナル解答。空欄よりは書いた方が良いですから。
なお設問文で「待機時にクロックを停止できる理由は」と問われれば、「通信部は内部にクロックを持っているため」と答えます。こっちの方が簡単で良いですね。
まとめ
お疲れ様でした!
本試験では地雷ですね。見た目が良いので選ぶけど、解いたら「あれ分かんねぇ」と切って、別の問題に行くのが正解です。

今回の解説で「起動周期」の考え方を理解したら、組込み問題の対応幅が広がったので、もう少し選ぶ候補に残してても良いですね。
APはデータベースが超地雷のケースが多く、組込みを切ってしまうと、ネットワークしか残りません。
他は、設計1問・プログラム系2問・文系4問。私はプログラムは紙で解きたくないし、かといって文系4問の文章量は重いです。組込み好きなので何とか残したいなと、個人的に思います。
ご自分の解ける・解きたい問題の兼ね合いで、優先順を決めて行ってくださいね。>AP問題の選び方Note
\全ての無料Noteへのリンク!/
\全てのAP系Noteが読めます/
いいなと思ったら応援しよう!
