組み込み開発が抱える構造課題
組み込みソフトウェアの開発現場では、機能追加や派生機種の増加により、規模と複雑さが年々増しています。あわせて通信やIoT対応も進み、確認すべき組み合わせは急速に膨らんでいます。本記事では、開発現場とマネジメントが直面する構造課題を、規模拡大・テスト工数の増大・人手不足・属人化・品質要求の五つに整理します。そのうえで、増員だけに頼らず、一人あたりの生産性を高めるための、現実的な打ち手を解説します。
- 組み込みソフトウェアの規模はなぜ拡大するのか
- 開発手法とテスト工数増大の関係
- 人手不足の本質 - ハードとソフト両方の知識が求められる
- 属人化のリスクとその解消
- 品質要求の高まりへの対応
- 一人あたりの生産性を高めるという発想へ
- まとめ
組み込みソフトウェアの規模はなぜ拡大するのか
組み込みソフトウェアは、特定のハードウェアを制御する目的で開発します。汎用のソフトウェアとは前提が異なります(「組み込みソフトと汎用ソフトの違い」参照)。
近年は家電や産業機器、医療機器など、多くの製品がセンシングや通信の機能を備えています。そのため、ソフトウェアが担う役割は急速に広がっています。単純な制御だけでなく、データの収集や判断まで任される場面が増えました。利用者から見える機能も、年々豊富になっています。工作機械や医療機器でも、安全機能や通信機能の搭載が標準になりつつあります。
独立行政法人情報処理推進機構、略称IPAは、組み込み・IoT産業の動向を毎年調査しています。2022年度の調査では、7,864件に配布し、1,214件の回答を集めました。同調査では、機能強化や新技術への対応が課題に挙がっています。品質確保や情報セキュリティ対策も、重要度を増している項目です。こうした変化は、開発規模の拡大に直接つながっています。
経営上の課題として「人材の確保・強化」を挙げた企業は68%にのぼりました。これは他の項目を大きく上回る割合です。IPAは別途、国内の組み込みソフト開発企業からプロジェクトデータも継続的に収集しています。
規模が拡大する背景には、主に三つの要因があります。
- 機能追加の累積:リリース後の製品にも、顧客要望や競合対応で機能を継ぎ足していきます。
- 派生機種の増加:共通のベースソフトウェアから、複数の機種を派生させる開発が広がっています。
- 通信やIoTへの対応:機器単体の制御に加え、クラウド連携やセキュリティ対応が必須になっています。
これらが積み重なると、当初の設計では想定しなかった複雑さが生まれます。一つひとつの変更は小さくても、蓄積すると全体構造への影響は大きくなります。結果として、一つの変更が思わぬ箇所に影響を及ぼすリスクも高まります。変更履歴を追跡できる体制も、あわせて必要になります。
開発手法とテスト工数増大の関係
IPAの2022年度調査によると、開発手法は「ウォーターフォール/V字開発」が34%を占めます。この数値は、他の開発手法より高く、最も多い結果でした。一方で「アジャイル開発」は12%にとどまり、最も少ない結果でした。組み込み開発では、ハードウェアの仕様が先に固まる場合が多くあります。そのため、工程を順に進めるV字モデルと相性がよいとされています(「V字モデルで学ぶテスト工程と品質保証」参照)。
ただしV字モデルには、工程の後戻りに弱い性質があります。工程が進むほど、後戻りのコストは大きくなっていきます。規模が拡大するほど、手戻りが与える影響も大きくなります(「ウォーターフォールとアジャイル開発」参照)。
規模の拡大は、テスト工数の増大に直結します。IPAは「ソフトウェア開発分析データ集2022」を公表しています。そこでは、新規開発の実績工数比率を分析しています。結合テストの工数は20.1%、総合テストは11.9%という結果でした。合計すると32.0%に達し、開発全体の三分の一近くを占めています。この数値は組み込みに限らない集計ですが、目安として参考になります。テスト工程の負荷は、規模拡大とともに雪だるま式に増えていきます。
組み込み開発では、これに加えてハードウェアとの整合確認が必要です。ソフトウェア単体では正常でも、実機やセンサと組み合わせると不具合が出る場合があります。通信モジュールとの組み合わせでも、同様の問題が起こり得ます。気温や振動といった環境条件も、動作に影響を与えます。ハードウェアのロット差や個体差も、不具合の原因になり得ます。
派生機種が増えるほど、機種ごとの組み合わせ確認が必要になります。テストケースは、単純な足し算ではなく掛け算的に増えていきます。同データ集によると、新規開発では1,000行あたり結合テストは37.63件です。総合テストは9.41件を実施する傾向があります。
打ち手としては、テスト観点の整理による組み合わせの絞り込みが有効です。優先度の高い組み合わせから確認すれば、限られた工数でも重要な不具合を検出しやすくなります。加えて、繰り返し実施するリグレッションテストは、自動化によって工数を圧縮できます。自動テストは、同じ手順を何度でも正確に繰り返せる点が強みです。テスト環境を整備すれば、実機を使わない段階でも検証を進められます。手動でのテスト実施だけを前提にすると、規模拡大のスピードに工数が追いつかなくなります。
人手不足の本質 - ハードとソフト両方の知識が求められる
組み込みソフトウェアの開発者には、プログラミングの知識だけでは不十分です。電気回路や機構、通信プロトコルへの理解も求められます(「組み込み開発における制約事項」参照)。たとえばモータ制御では、電流やノイズの挙動への理解が欠かせません。汎用ソフトウェアの開発者を、そのまま配置転換しても十分ではありません。すぐに戦力になりにくいのが実情です。ハードウェアの制約を理解するまでには、一定の経験が必要になります。座学だけでなく、実機に触れる経験も欠かせません。
IPAの2022年度調査で、人材確保の取り組みを尋ねています。「不足人材の雇用」を挙げた企業は55%でした。これは他の取り組みより高く、最も多い結果でした。一方で「社内人材のリスキリング」は18%にとどまり、最も少ない取り組みでした。採用競争は、業界全体で激しさを増しています。採用による補充だけに頼ると、ハードウェアの知識を持つ人材の獲得競争が激しくなります。思うように補充が進まないのが実情です。
現実的な打ち手は、育成の仕組みを整えることです。設計書やテスト仕様書を整備すれば、経験の浅い技術者でも参照しながら作業を進められます。ベテランと若手を組ませるペア作業も、ハードウェア知識の継承に役立ちます。OJT(On-the-Job Training)だけに頼ると、指導者の負担が偏ってしまいます。
さらに、ハードウェアの挙動をソフトウェアで模擬できる環境を用意します。実機がなくても、学習と検証を進められる利点があります。こうした仕組みは、育成期間の短縮にもつながります。
属人化のリスクとその解消
組み込み開発では、特定の担当者しか理解していないコードが生まれやすい傾向があります。治具や作業手順についても、同じことが起こります。属人化が進むほど、引き継ぎにかかる負担も大きくなります。担当者が異動や退職をすると、保守や改修が滞る事態につながります。テストの現場でも、同様の問題が起こります。ベテランの判断には、経験則に基づく部分が多くあります。こうした内容は、他の人には見えにくいものです(「テスターの経験と暗黙知の形式知化」参照)。
属人化を解消するには、暗黙知を文書やチェックリストに落とし込む作業が欠かせません。テスト観点や過去の不具合傾向を一覧化しておきます。担当者が変わっても、品質水準を維持しやすくなります。特に新任の担当者にとって、大きな助けになります。コードレビューを制度として定着させることも有効です。知識を個人から組織に移す手段になります。共有の仕組みは、属人化を防ぐ土台になります。
治具やテスト環境についても、構成や操作手順を記録しておく必要があります。特に治具は、図面や設定値が残っていないと再現が難しくなります。属人化の解消は、一度の取り組みで終わるものではありません。日々の開発の中で、記録と共有を積み重ねる姿勢が求められます。
品質要求の高まりへの対応
組み込み機器は、市場に出た後の不具合対応にかかるコストが大きい製品です。回収や現地対応が発生すれば、金額も工数も大きくなります。一度失った信頼を取り戻すには、長い時間がかかります。安全性に関わる分野では、規格への対応も求められます。品質確保の重要性は、以前にも増して高まっています。品質問題は、企業の信頼にも影響を及ぼします。
品質要求に応えるには、上流工程での作り込みが欠かせません。要求や仕様の段階でレビューを徹底します。後工程での手戻りを減らす考え方が、基本になります。設計段階での作り込みは、後工程の負担軽減にも直結します。加えて、テストで見つけた不具合の傾向を分析します。次のプロジェクトの設計指針に反映する仕組みも有効です。
一人あたりの生産性を高めるという発想へ
ここまで見てきた五つの課題に、共通する解決策があります。それは、人を増やすことではありません。ハードウェアの知識を持つ技術者の採用は、簡単には進みません。育成にも、相応の時間がかかります。限られた人数でも、成果を維持できる体制が理想です。現実的な解は、一人あたりの生産性を高める方向に、開発の仕組みを変えることです。組織としての生産性を底上げする発想が欠かせません。
特に効果が大きいのは、テストと検証にかかる時間を圧縮する環境整備です。テスト自動化ツールを導入すれば、繰り返しのテストにかかる人手を減らせます。投資対効果も、比較的見えやすい領域です。ハードウェアの挙動を再現できる検証環境も、同様に役立ちます(「自動テストのメリットと役割分担」参照)。空いた時間を、設計レビューや属人化解消の作業に振り向けます。品質と効率を、両立しやすくなります。
規模拡大・人手不足・属人化は、それぞれ独立した問題ではありません。テスト環境や開発プロセスを整えることは、複数の課題に同時に効いてきます。小さな改善の積み重ねが、大きな効果につながります。経営層と開発現場が、共通の理解を持つことも重要です。構造を正しく理解したうえで、優先順位をつけて手を打つことが、開発現場に求められています。
まとめ
組み込みソフトウェアの開発は、機能追加や派生機種の増加により、規模と複雑さが増し続けています。テスト工数の増大、人手不足、属人化、品質要求の高まりは、互いに関連し合う構造課題です。これらは、どれか一つを解決すれば済むものではありません。増員だけに頼らず、テスト自動化や環境整備を通じて、一人あたりの生産性を高める発想が求められます。


