この記事は、PD-S(システム)試験(仮称)科目B 第3章「フィジカルコンピューティングに関すること」の1節目、小項目3-1「IoTを含む組込みシステム,制御システムのソフトウェア設計(リアルタイム処理など)」の教科書です。1-5で組込みシステムの全体アーキテクチャ(HW/SW分割まで)を決めました。本節はその続き——ソフトウェアに割り当てられた部分を、実際にどう設計するかです。鍵になるのが小項目名にもあるリアルタイム処理。「速い」ことではなく「間に合うことを保証する」という、業務システムにはない設計原理を、競合制御・省電力・テスト環境まで含めて前提知識ゼロから解説します。
この節の全体像 — 設計する→組み込む→テストする
技能1:組込みソフトウェアの設計 — 3つの制御をおさえる
システムのソフトウェア要件を分析し,機能仕様を策定した上で,実装のためにタスク分割を行い,リアルタイム制御,競合制御,省電力制御など,組込みソフトウェアに求められる設計を行うスキル
前提:タスク分割 — 並行して動く仕事に分ける
組込みシステムは、複数の仕事を同時並行でこなします。エアコンなら「温度を測る」「制御を計算する」「表示を更新する」「リモコン信号を受ける」——これらをタスクという実行単位に分割し、それぞれの起動周期(100ミリ秒ごとに温度を測る等)と優先度を設計するのがタスク分割です。どう分けるかで、後述のリアルタイム性も競合の起きやすさも決まる、組込みソフト設計の土台です。
図1:組込みソフトウェア設計の3つの制御(シラバス案・技能の例①の柱)
柱①:リアルタイム制御 — 「速い」ではなく「間に合うことを保証する」
リアルタイム性には厳しさの段階があります。
- ハードリアルタイム:期限を1回でも破ると人命・設備に関わる致命的な結果になるもの。例:自動車のエアバッグ展開、ブレーキ制御。
- ソフトリアルタイム:期限を破ると品質は落ちるが致命的ではないもの。例:動画再生のコマ落ち、表示の更新遅れ。
これを支える仕組みが、1-5でも登場したRTOS(リアルタイムOS)です。RTOSは優先度の高いタスクを最優先で実行する(低優先タスクの実行中でも、高優先タスクが起きれば即座に切り替える)スケジューリングによって、重要な処理の期限を守りやすくします。また、センサーやボタンなどの外部の出来事に即座に反応する仕組み(割込み)——実行中の処理を一時中断して緊急の処理を先に行う——も、リアルタイム制御の基本部品です。
柱②:競合制御 — 共有するものを壊さない
タスクが並行して動くと、同じデータや装置(共有資源)に同時にアクセスする場面が生まれます。例えば「温度データを書き込むタスク」と「温度データを読んで表示するタスク」が同時に動くと、書き換え途中の中途半端な値を読んでしまうことがあります。
柱③:省電力制御 — 電池で何年も動かす
IoTセンサー端末の多くは電池や小さな電源で動くため、消費電力がソフトウェア設計の制約になります。基本戦略は「働いていない時間は寝る」:処理のないあいだプロセッサを低消費電力のスリープ状態にし、周期タイマーや外部イベント(割込み)で起こす間欠動作です。「1時間に1回だけ起きて温度を測り、送信してまた眠る」設計なら、常時稼働の何十分の一の電力で動かせます。無線送信は特に電力を食うため、送信の回数・データ量を減らす工夫(まとめ送り、変化があったときだけ送る)も定番です。
技能2:OS・ミドルウェアを理解し、組み込む(技能2)
システムを実装するために選定された,OS,ミドルウェアなどを理解し,システムに組み込むための設計を行うスキル
1-5(技能2)でOS・ミドルウェアの評価・選定を行いました。本節の技能2はその続きで、選定済みの部品を自分のシステムに正しく載せる設計です。具体的には:
- OSの設定と資源割り当て:RTOSのタスク数・優先度・メモリの割り当てを、タスク分割の設計に合わせて構成する。
- デバイスドライバ:センサーやアクチュエーターなどのハードウェアをOSから使えるようにする接続部分のソフトウェア。ハードウェア担当(3-2)とのインタフェース仕様の合意が品質を左右する。
- ミドルウェアの統合:通信プロトコル処理・ファイルシステム・暗号処理などの既製部品を組み合わせる。自作せず実績ある部品を使うのが品質・工数の定石だが、部品のメモリ使用量・応答特性が自システムの制約(リアルタイム性・省電力)に収まるかの確認が「理解し,組み込む」の中身。
技能3:テスト環境の構築と評価(技能3)
システムのソフトウェアをテストするために必要な環境を構築し,テストを実施して結果を評価するスキル
組込みソフトのテストには、業務システムにない事情が2つあります。
図2:クロス開発とテスト環境 — 開発する場所と動く場所が違う
- クロス開発:プログラムを書く場所(開発PC)と、動く場所(ターゲットの組込み機器)が別のコンピュータ。開発PC上でターゲット用のプログラムを作り、実機に書き込んで動かす。実機は画面もキーボードもないことが多く、動作を観察する手段(ログ出力・デバッグ用接続)をあらかじめ設計に織り込む必要がある。
- 実機とシミュレータの使い分け:実機テストは最終確認として不可欠だが、「センサーが高温を検知した」「電池残量が尽きかけた」のような条件を実機で再現するのは大変。そこで、ハードウェアの挙動をソフトウェアで模擬するシミュレータを使い、異常系・境界条件を網羅的に流す。シミュレータで広く、実機で深く、が定石。
「結果を評価する」まで含めて技能です。リアルタイム性の評価なら「最悪応答時間が期限内か」、省電力の評価なら「想定電池寿命を満たす消費電流か」——設計時に決めた数値目標と突き合わせて合否を判定します(テスト設計の一般論は第4章 4-2で扱います)。
混同しやすい概念の整理
| 紛らわしいペア | 違いの核心 |
|---|---|
| リアルタイム ⇔ 高速 | リアルタイム=期限内完了の保証(最悪ケースで判定)。高速=平均が速いだけで保証はない。速くてもまれに遅れるならリアルタイム失格 |
| ハードリアルタイム ⇔ ソフトリアルタイム | 期限を破ったときの結果が致命的(人命・設備)か、品質低下で済むか。エアバッグ ⇔ 動画のコマ落ち |
| 排他制御 ⇔ デッドロック | 排他制御=共有資源を守る仕組み。デッドロック=その仕組みの使い方を誤って互いに待ち合って停止する事故。確保順序の統一などで予防 |
| 割込み ⇔ ポーリング | 割込み=出来事が起きたら知らせてくる(即応・省電力)。ポーリング=こちらから定期的に見に行く(単純だが無駄が出る)。省電力設計では割込み起床が定石 |
| 実機テスト ⇔ シミュレータ | 実機=最終確認・実環境の忠実さ。シミュレータ=異常系・境界条件の再現性と網羅性。「シミュレータで広く、実機で深く」 |
確認クイズ(4問)
この節の理解度チェックです(当サイト独自の予想問題。公式の出題ではありません)。
リアルタイム処理の説明として、最も適切なものはどれか。
ハードリアルタイムに分類されるものとして、最も適切なものはどれか。
並行動作する2つのタスクが同じデータ領域を読み書きする。設計上の対処として最も適切なものはどれか。
電池駆動のIoT温度センサー端末(1時間に1回測定・送信すればよい)の省電力設計として、最も適切なものはどれか。
まとめ:小項目3-1で身につけること
- 技能3つ=設計する(タスク分割+3つの制御)→組み込む(OS・ミドルウェア)→テストする(環境構築と評価)。
- タスク分割が土台:並行する仕事を実行単位に分け、周期と優先度を設計する。
- リアルタイム制御=期限内完了の保証(速さではない・最悪ケースで判定)。ハード(致命的)/ソフト(品質低下)の区別、RTOSの優先度スケジューリングと割込みが道具。
- 競合制御:共有資源は排他制御で守り、副作用のデッドロックは確保順序の統一などで予防する。
- 省電力制御:スリープと間欠動作、無線送信の削減。「要件の頻度まで活動を落とす」。
- テストはクロス開発が前提。シミュレータで異常系を網羅し実機で最終確認、結果は設計時の数値目標と突き合わせて評価する。
関連記事・次に読む
出典(一次情報)
- IPA「プロフェッショナルデジタルスキル(システム)試験(仮称)科目B シラバス(案 Ver0.2)」大項目3・小項目3-1(2026年7月31日更新)[link]。本文中の「技能の例」引用は同シラバス案からの原文引用です。
- IPA「情報処理技術者試験・情報処理安全確保支援士試験 出題範囲等の改定案 Ver.1.0」(2026年3月)
※試験名は仮称、内容は検討段階の案です。試験の形式・時間・配点・合格基準は未公表のため本記事では扱いません。技術解説(リアルタイム処理、排他制御、省電力設計、クロス開発など)は一般に確立した知識に基づく当サイトの解説で、シラバスの記載そのものではありません。確認クイズは当サイト独自の予想問題です。正式シラバス公開時に内容を更新します。

