見出し画像

【問題文に忠実に】応用情報技術者R05秋組み込みシステムの解説

このNoteは、問7をリアルタイムに解きつつ解説します。

本試験で「どう読んで」「どうマーキングして」「どう解くか」の流れを一緒にやりましょう。私がIT専門学校でしている授業と同じ。

選択問題の中で、出題傾向・解法・難易度が安定なのは技術系。ネットワーク、データベースに続いて、組み込みシステムは最後の砦です。

ぜひ解く候補に入れておきたいところ。


今回の組み込みシステム問題の学びは2点。

  • 問題文の内容「だけ」で解く・・・問題文に書かれていない知識や想像は不要

  • 最初の穴埋め・下線が、設問1ではない・・・穴埋めまで読み切ると読み直しが生じる

午後問題の心構えが学べる良い問題でした。

製品のマニュアルを読むのが得意な方には、組み込みシステム問題は向いていますね。炊飯器や洗濯機など簡単な家電で良いですよ。


さて、私が問7を選ぶかの答え「選びたいし選びます」。>>問題の選び方対策Note<<

  • 図表が多いので、読む文章量が少ない【最重要】

  • 状態遷移がテーマみたいなので、問題文から条件を見つければ良い

  • 最後の計算は難しそうだけど、設問3のPWMぐらいはできそう


解いてみると、選んで後悔する問題でもないです。

苦手な方でも食らいつけば6割。得意な方だと「自信が少しなかったけど、意外と7~8割いけちゃったな」な手触り。

予定通り25分で解けます。最後の計算問題は、時間が迫るぐらいなら捨てるのもテ。>>本試験の時間配分Note<<



それでは始めましょう。

過去問のダウンロードはIPA公式より。
>>公式の問題pdfへのリンク<<
>>公式の解答pdfへのリンク<<





選ぶ | ジャンルと3つの視点

まず、私は技術系ジャンルは解きたいです。

問題の傾向が掴みやすく、得点に再現性があるので。

  • ネットワークは、サーバ配置と通信経路

  • データベースは、スキーマ設計かSQL

  • 組み込みは、機器制御・タスク

毎回題材は違えど、出題される「表現ツール」はほぼ同じですからね。

逆に設計やマネジメント系は、題材も図表も毎回違うので「その場対応」になり勝ち。プロジェクトマネジメントなんて「人間の判断」が絡むので「登場人物に合わせる」のが不安です。


さて、>>問題の選び方対策Note<< の通り、「3つの視点」で評価してみましょう。

  • 解き始めるまで読む量:1頁ぐらいが良い(図表は除いて計測)

  • 回答形式:選択肢が多く、作文が少ない/短めだと良し

  • 図表:パッと見て分かるなら良し

  • 解き始めるまで読む量:おそらく2頁目で解きに入れそう。

  • 回答形式:作文短め、他は選択肢で良し。計算は1問だけだし最悪失点しても止む無し。

  • 図表:パっと見て分かり易い。大した情報もなくシンプル。

以上より、どこまで読めば設問1(1)が解けるかは若干不明ながら、解答形式や図の分かり易さから、得点しやすいと判断しました。

選んで良さそうです。




注意点 | 穴埋め/下線が設問1ではないケース


私が一番重視するのは「解き始めるまでに読む量」。

早く解答して得点をゲットしたいですし、長い文だと覚えきれず「読み直し」が多発して時間もかかります。もし無理そうなら時間を消費してないうちに「選び直し」もしたいですからね。

今回の注意点。

最初の下線・穴埋めが、1番目の設問ではない。

大抵は問題文を見て「2頁目に穴埋めaか。図表抜いて実質1.5頁ならまぁまぁ」と判断します。

しかし今回。穴埋めaがなんと4頁目。図表抜くと2頁ちょいではありますが、後ろすぎ。こういう時は、必ず設問も確認。穴埋めや下線についての設問ではない可能性あり。

確認すると、設問1(1)は、穴埋めaを問うものではないです。つまり、穴埋めaに至る前に解きに入れます。


もし設問を読まず「穴埋めaまで読まなきゃ」と思い込んで問題文を読み進めると、設問1(1)になった時に大変。「開始/終了状態への遷移なんて注目してなかったよぉ」と読み直しが発生して、時間が浪費されます。

問題文の下線や穴埋めから読む量を見積ったときは、念のため1番目の設問も読んで、下線や穴埋めまで読まねばならないのか確認しましょう。




読み | 1頁目で解けるようになるか?

設問1(1)で話題になる「開始/終了状態が書かれているかなぁ」と思いつつ、題材の把握をします。

トマト収穫ロボット。センサーで検出してアームで収穫ですね。

特に覚えようとせず、「ふむふむ」と用途を想像しつつ、「超音波センサは何使うんだろう」と変わった物があれば少し気に留める程度。

特に表は、解く時に改めてガッツリ読み込むので「把握」に留めます。もしコマンドなどの「一覧表」なら、なおさらスキップします。覚えきれませんから。


図3に「開始/終了」状態は出てきましたが、遷移条件は書かれていないので、まだ設問1(1)は解けそうにないです。読み進めましょう。




読み | 【収穫ロボットの動作概要】

各状態・遷移条件が書かれています。

種類が多いのでマーキングすると良いですね。状態名を四角囲み、遷移条件にアンダーライン(下線)するなど。

箇条書きで書き出すと以下の通り。

終盤、状態名と遷移条件がボカされていました。

図3の全ての遷移が説明されてもいません。

次は「アーム」についてなので話が変わります。ここまでの情報で設問1(1)「開始/終了」状態について解くことになります。




解き | 設問1(1)

模範解答は「収穫に適したトマトを検出していない場合」。

待機状態から開始/終了への遷移条件(スマホから指示)は書かれてましたが、収穫終了位置における遷移は明記されずボカされていました。

ヒントを探す時は、設問文の言葉と同じ言葉を目印に探します。


「収穫終了位置」を探します。

「収穫終了位置で、収穫に適したトマトを検出していない場合は、収穫を終了し待機位置へ移動する」を、図3を見て考えます。

  • 収穫をしていたから「収穫中」や「積載中」だったはず。

  • 待機位置へ移動すれば「待機」になるはず。

  • 「待機」に遷移するには「開始/終了」を経由する。

以上より「開始/終了」状態は、移動だけしてるんだろうな、と推測し、「収穫に適したトマトを検出していない場合(19文字)」

25文字ぐらいだと、問題文の流用系の場合が多いです。



解き | 設問1(2) 

設問1(2)も状態遷移についてなので、このまま2問目。

正解は「イ」。


1個目は把持も積載も成功。2個目は把持に失敗。

「把持失敗」を問題文から探すと「収穫中状態のまま、検出している他のトマトの収穫を行う」とのこと。

  1. 2個目把持:収穫中

  2. 失敗したので:収穫中

  3. 検出は2個だったので3個目なし:開始/終了

少なくとも、「2個目以降の積載中(緑枠)はない」と分かればOK。




読み | 【アーム関節部について】

設問2はタスクの問題。読み進めましょう。

しかし3頁目はアームの説明。

4頁目表3のタスク表に行きたいので、「はいはいアームの概要と制御の仕方が書いてあるね」程度で、スキップします。設問3を解く時に改めに読みますから。




読み | 【制御部のソフトウェア構成について】

設問2で問われるタスクの記述を読み進めます。なお、問題文も最後なので、解きながら読んでも構いませんね。


まずは、細かいことよりも「各タスクが何をするのか」を1つずつ理解します。詳細の読み込みは、解きに入ってからです。

  • メイン:全ての制御。具体的記述なし。

  • アーム制御:アームハンドで収穫する。

  • 認識:カメラで、トマトやトレー空き領域を検出。

  • 台車制御:走行制御、障害物検出。

  • 無線LAN通信:管理サーバからの指示受信、報告送信。

特段変わっている・意外なタスクはないですね。




解き | 設問2(1)

模範解答は「収穫トレーに空き領域がない」


設問1でも触れましたが「開始/終了」状態への遷移条件は、明記されていません。情報を搔き集めて推測します。

情報を集めるときは、設問文のキーワードと同じ言葉を探します。「空き領域」に注目すると3点見つかりました。

  • 空き領域に載せる(積載中)

  • 収穫積載終了後、トマトと空き領域があれば収穫中へ。

  • 収穫積載終了時、空き領域などの状況から次の遷移へ

3番目の積載終了時だけが「開始/終了」へ遷移できそうです。


では積載終了時の動作を考えます。設問の通り、認識タスクから空き領域があるか/ないかの情報が来た時のリアクション。

  • 空き領域があれば、次トマトの収穫中(なければ検出中かな)へ。

  • 空き領域がなければ、(明記ないですが、トマトを回収してもらうよう)待機位置へ戻るために「開始/終了」を経て、到着後に「待機」でしょう。

2番目ですね。

「収穫トレーに空き領域がない場合(15文字)」の旨でOK。文字数に余裕があるので「収穫トレーに空き領域がなかった場合(17文字)」でも大丈夫。「トレー」でも通じるでしょう。




解き | 設問2(2)

正解は「トマトの個数」。

文字数制限もないですし「検出したトマトの個数」「収穫に適したと判定されたトマトの個数」などでもOKでしょう。


さて、正解に至る経路を考えましょう。

表3のメインタスクが「ロボットの状態管理を行う」だけなので困りますよね。「認識タスクから検出通知と○○を受ける」とあると簡単なんですが。

大事なのは、問題文に書かれていることから解答を作る

認識タスクはカメラを使っているので、検出したトマトの座標や色などの情報を持っているかもしれません。しかし、問題文に「座標」「色」などは書いてないのでダメ。

仕方がないので、問題文に書いてある「情報」を探して、理屈を考えます。

そうやって「個数」に行きつきます。メインタスクは収穫作業をすべきトマトの個数を知って、状態を遷移させますから。

なお「情報」は、「個数」など具体的な数値情報の場合もあれば、「1個を収穫するために必要な情報(表3より)」や「状況」「指標」のように抽象的に書かれている場合もあります。




解き | 設問2(3)

正解は「メイン」タスク。


まずはコツから。

組み込みシステムでは、タスク同士で連携するので、言葉から「つながり」を捉えるのが有効です。

例えば、アーム制御タスクには「認識タスク」、認識タスクには「アーム制御タスク」と書かれているので、つながりが分かりました。

しかし「認識タスク」に、他のタスク名はありません。

仕方がないので、「空き領域の情報を知りたいタスクはどれだろう」と考えます。

  • メイン:「書いてないなぁ・・・」

  • アーム制御:把持したトマトを置くために必要

  • 台車制御:走行制御なので不要

  • 無線LAN通信:「報告するかも?」

メインか無線LAN通信で迷ったなら、とりあえずOK。

  • 無線LAN通信:「メインタスクの指示に従って」なので、勝手に情報収集せず、メインタスクから「これ送って」と手渡しされるはず。

  • メインタスク:空き領域がなければ、収穫動作を止めて待機位置に戻ろうとする(開始/終了状態へ)ので、空き領域情報が必要。

以上のように考えて、メインタスクに至ります。

完璧でなくて良いので、糸をたぐってくださいね。いろんな糸でも正解に至れる問題でした。




解き | 設問3

「PWM制御なんて知らない!」でも推測できる問題です。

以下のようにパルス幅に応じて、アームの角度を指定します。

正解は「ウ:軸1は0度、軸2は72度、軸3は-54度」。図5より軸1は6ミリ秒なので0度・・・のように対応しています。


個数や領域を計算する時は気をつけましょう。

例えば「2号室から4号室の部屋数は?」で「4-2だから2部屋!」と間違う学生さんはいっぱいいます。「2, 3, 4だから3部屋」です。

計算方法を確かめないのは、愚かです(ごめんなさい)。慎重さがないから足元すくわれるんです。

「2号室から100号室の部屋数は?」だったら「試しに2号室から3号室だったら、2部屋。3-2+1か。じゃぁ100-2+1 = 99部屋」と、少ない数で計算法を確認してから本計算しましょう。




解き | 設問4

最後に計算問題のパターンは、まぁまぁあります。

最終問題だから難しいこともあまりないですが、複数問題で「芋づる式(前の問題の答えを、次の問題で使う)」だと連続失点になるので注意です。

今回は単発、ここまで割と得点できてるので、失点も許容できます。小数点第三位を切り上げなど、割り切れない前提みたいなので面倒ですし。

正解は「5.90」ミリ秒。

間違って良いですよ。数学は難しくないですが、解釈が難しい問題でした。


以下に解説を、かなりガッチリ書きますが、とりあえず図だけ理解すればOKです。



読みでマーキングすると情報集めがスムーズ

大事なのは情報集め。

数値は丸囲みマーキング

読むときにマーキングをしていると、情報集めがスムーズです。問題で必要になってから流し読みで探しても見落とすかもしれませんから。


今回は、距離や時間の話。「みはじ」を集めましょう。



2通りの解釈があり得たのが難しい

上の図を見て「あれぇ?」と思った方もいますね。実は私もそう(この問題間違えました)。

38頁上に「1m以内の距離にある障害物を検知」は、検知した時に最大1m離れた障害物を指しています。

もし、超音波を発信した時に1mだと、検知した時には1mより短い距離になってしまいます。

音速なので微々たる差なのですが、安全に関わる自動運転では重要です。設問に「ソフトウェアの処理時間は考えない」とありますが、本来は考えるぐらい組み込みシステムはシビアなんです。



ありったけの情報で数式をこねくる

分かるだけの情報を書き出したので、数式を考えます。

シンプルなのは「時間 = ○○」の公式一発。しかし今回はなさそう。

となると中学校の方程式。「x + 2 = 4 を変形して x = 2」ですね。未知変数が「時間t」の1つだけなので良さそう。

図のように音波が進んだ距離について、2種類の表現ができたので方程式にできます。

時間をtとおいて。

$$
340 \times t = 2 + 0.5 \times t \\
339.5 \times t = 2 \\
t = 0.0058910・・・秒 \\
t = 5.8910・・・ミリ秒 \\
t = 5.90 ミリ秒
$$

「第三位を切り上げ」に注意してください。四捨五入ではないです。


計算問題の3パターン。
A:公式で一発
B:方程式で求める(変数が1つの場合)
C:連立方程式で求める(変数が複数の場合)




まとめ | 問題文に忠実に解く

組み込みシステムは、いかにもエンジニアっぽいので私は好きです。

しかし今回の問題を、難しく感じる方もいらっしゃるでしょう。

  • 「開始/終了」状態への遷移条件が明記されれず、周辺情報から推測(想像)するしかなかった

  • PWM制御(はギリギリとしても)、設問4の障害物検知の計算が難しかった

私も設問4は失点しちゃいました。


一方で「組み込みシステム問題の特性」も学べました。

問題文に書いてあることだけで解答を作る。

タスク同士の連携はタスク表の言葉に注目したり、状態遷移条件や個数情報は問題文を注意深く読んだりが必要でした。

製品のマニュアル・仕様書を読むような、言葉に注目して紐解き、解釈が必要な性質を感じます。


セキュリティ・ネットワーク・データベースは、技術系なので高い得点再現性が見込めます。

組み込みシステムも技術系。なるべく解く有力候補に確保しておきたいです。他の問題の傾向や難易度・解法の振れ幅が安定しませんので。

引き続き問題演習を続けて、「自分なりの選び方」を確立していってくださいね。

でわでわ。


p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。

でわでわ(・ω・▼)ノシ



p.s. 未来を見据えたことを書いておきます。資格合格だけが目的の方は読まなくてOKです。

応用情報技術者ていどではまだ簡単です。エンベデッドシステムスペシャリストになると、「割り込み処理」「コンピュータと現実での動作速度の差」などの意識が必要になります。

自動販売機や自動改札・ストーブに炊飯器、簡単ならファミレスのドリンクバーなど、日頃からよく観察し「どう動いているかな」と想像すると解きやすくなりますよ。

時間と興味がある方は、mbedやラズベリーパイ(ラズパイ)で少しだけでも遊ぶと良いですよ。「どんなのが作れるか」と調べるだけでも充分効果あります。

また擬似言語やアルゴリズム、オブジェクト指向は、TVゲームを観察すると良し。古いですがDSの「メイドイン俺」はオブジェクト指向の良い教材と思っています。



\全ての無料Noteへのリンク!/

時間配分・問題選択法から午後問題解説まで


\R05秋の選択・得点・学ぶ解法の3点セット!/

不合格になった方に特にお薦めです


この記事が参加している募集

スキしてみて

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ