Introduction
近年、家電製品や自動車、医療機器、産業機器などに高度な機能が搭載されている製品が増えています。このようにハードウェアに高度な機能を搭載するための仕組みとして、組み込みソフトウェア、組み込みシステムがあります。このような組み込みシステム、組み込みソフトウェアを開発する開発手法は、組み込み開発と呼ばれているのが特徴です。
しかし、組み込み開発とは実際どのようなものなのか、組み込みシステムを導入するとどのようなことを実現できるのかなど、疑問をおもちの企業様も多いでしょう。
この記事では、組み込み開発とは何かから、組み込み開発の主な用途や開発の流れ、組み込み開発の将来性と課題について解説します。
目次
組み込み開発とは

ここでは組み込み開発とは何か、組み込み開発によるソフトウェアと一般のソフトウェアの違いなどについて解説します。
機器に特定の機能を実装するために組み込まれるソフトウェアの開発
組み込み開発とは、特定のハードウェアに組み込まれているコンピューターを動作させるソフトウェアを開発することです。一般的なパソコンやスマートフォンなど、多目的に使えるコンピューター向けのソフトウェアではなく、特定の目的に使われるハードウェアのためのソフトウェア開発を行います。そのため、対象となるハードウェアの機能や性質を活かした開発が求められるのです。
たとえば家電製品のなかには、タイマー機能やセンサーに応じた機能などが組み込まれている製品があります。部屋の温度や部屋にいる人物、動物などの動きに応じて動作するエアコンや、決められた時間だけ加熱する電子レンジなどです。
これらの家電製品は内部にソフトウェアが組み込まれており、プログラムどおりに動作するため、高度な機能を実現できるのです。
組み込みソフトウェアは家電製品以外にも、自動車のブレーキ制御やエアバッグ、医療機器、工場で稼働するロボットなど、さまざまな分野で使われています。
組み込み開発によるソフトウェアと一般ソフトウェアの違い
組み込み開発によるソフトウェアと一般のソフトウェアの違いは、ソフトウェアが動作させるハードウェアにあります。
組み込み開発は自動車やロボット、家電製品など、特定のハードウェア上で機器に特化した開発が求められます。一方、一般的なソフトウェアはパソコンやスマートフォン、サーバーなど汎用的なコンピューター上で動作するのが特徴です。
そのため組み込み開発では、特定のハードウェアの性質や機能を理解したうえで開発を進めることが重要です。
▽あわせて読みたい▽
>>ソフトウェア開発とは?種類や流れ、代表的なモデルなどをわかりやすく解説のページへ
組み込み開発によく使われる言語
組み込み開発でよく使われるプログラミング言語はC言語で、C++が使われることもあります。
C言語は処理速度がはやく、シンプルな構造で互換性が高いことから、組み込み開発ではよく使われている言語です。
【業界・ジャンル別】組み込み開発の主な用途
組み込み開発は、具体的にどのような用途で使われているのかについて解説します。
家電製品
家電業界では、洗濯機や冷蔵庫などの家電製品に数多くの組み込みソフトウェアが採用されているのが特徴です。
たとえば洗濯機では、通常の洗濯モード以外にも節水モード、ソフトモード、毛布の洗濯、槽洗浄モードなどさまざまなモードが用意されています。また、投入された洗濯物の重さを検知して適した水や洗剤の量、洗濯時間などを割り出して洗濯する機能もあります。このような多様な機能を、組み込みソフトウェアが制御しているのです。
自動車
自動車業界でも、車載システムや自動運転制御などの開発現場で組み込み開発が行われています。
自動運転制御を実現するために、自動車に搭載されたセンサーや、自動車制御機器に組み込みソフトウェアが搭載されています。センサーで人物や障害物を検知したらブレーキを作動させる、などの複雑な動作を実現するために組み込み開発が必要です。
産業用ロボット
産業分野では、産業用ロボットの組み込みソフトウェアの開発が行われています。
工場の生産ラインに設置された産業用ロボットが、センサーで製品を認識して部品を組み立てる、不良品を検知してとり除くなどの動作を行います。その際にロボットに組み込まれたソフトウェアがロボットを制御しているのです。
医療機器
医療分野では、高度な機能をもつ医療機器に組み込みソフトウェアが採用されています。
たとえばCTスキャンやMRI、内視鏡などの検査機器や、手術時に医師が患者の体内で操作するメス、小型カメラなどさまざまな医療機器が存在します。これらの医療機器の細かい動作や操作を行う際に、組み込みソフトウェアが活躍しているのです。
組み込み開発の流れ
組み込み開発の大まかな流れは、以下のとおりです。
1.要件定義
組み込みソフトウェア、組み込みシステムに求められる目的を明確にし、搭載する機能を洗い出します。その際はハードウェアの性質や動作、制約条件などを十分に考慮する必要があります。
2.設計
要件定義で決まった仕様や機能をどのように実現していくか、基本設計、詳細設計と設計を進めていきます。
ここでもハードウェアの仕様や性質、制約条件にあわせた設計が求められます。たとえば電子レンジの温度設定が高すぎると、ユーザーに危険がおよぶこともあるなど、実際の製品の状況や性質を考慮しなければなりません。
3.プログラミング
設計内容をもとに、プログラミングを行います。
4.テスト
プログラムが完成したら、単体テスト、結合テスト、システムテスト、受入テストとそれぞれ観点の異なるテストを実施します。それぞれモジュール単体のテスト、モジュールを結合したテスト、機能テスト、実際にハードウェアに搭載した実機テストと、テスト段階を進めていきます。
5.リリース、運用・保守
テストが完成したら、製品にソフトウェアを搭載してリリースとなります。リリース後も顧客からの問い合わせ対応、製品アップデートなどの運用・保守対応を行います。
▽あわせて読みたい▽
>>ソフトウェア開発とは?種類や流れ、代表的なモデルなどをわかりやすくのページへ
組み込み開発の将来性

組み込み開発の分野は、今後どのように発展していくのでしょうか。その将来性について解説します。
IoTと5Gの普及に伴う開発需要の拡大
近年はIoTや5Gが幅広く普及しており、これに伴う開発需要の拡大が見込まれています。
インターネット環境が整備されたことで、パソコンやスマホだけではなく、家電製品やゲーム機器などもネットワークにつなぐことが容易になりました。その結果、ネットワーク接続によるさまざまな機能を搭載した家電・機器がリリースされ、その利便性に魅力を感じ購入する人が増えています。また、留守中の家を外出先から見守るホームセキュリティ製品などのIoT製品への需要も高まっており、今後もこの傾向はつづくでしょう。
また5Gが普及し、ネットワークが高速化・大容量化したことから、産業ロボット、医療機器などの操作も容易になりました。このようにインフラ面の進化が、組み込み開発の需要拡大につながっています。
▽あわせて読みたい▽
>>スマートシティとは?メリットや実現に必要な技術、日本・海外での事例を解説のページへ
AI・機械学習との統合
組み込み開発とAI、機械学習の分野が組み合わさることで、より高度で便利な仕組みを開発できます。
たとえば店舗内に設置した監視カメラで撮影した映像を、AIによって解析することで来店者数を計測できます。また季節や曜日、天気、気温などの情報とともにAIで分析を行えば、条件ごとに正確な来店予測を得ることも可能です。
このように、ビッグデータを分析して学習した結果をもとにマーケティング戦略を進めるなども可能です。
サイバーセキュリティ対策の強化
組み込みソフトウェアが搭載された機器が増えると、サイバーセキュリティのリスクも高まります。
たとえば街中に設置されたセンサーや監視カメラがサイバー攻撃の標的となり、IoT機器を入り口として、企業のシステムにウイルスが侵入したという事例もあります。末端のIoT機器はセキュリティ対策が不十分なケースが多く、サイバー犯罪者に狙われやすいのです。
ネットワークに接続した脆弱なIoT機器が増えることで、セキュリティリスクが高まります。そのため組み込み開発においても、サイバーセキュリティ対策の強化が求められています。
組み込み開発で伴いがちな課題
組み込み開発における課題について解説します。
人材不足・技術継承の課題
どの業界も人材不足が深刻ですが、組み込み開発の現場でもそれは同様です。組み込み開発の場合、とくにIT人材のなかでもそれぞれのハードウェアに特化した専門知識や技術、経験が必要なため、人材不足がより深刻といわれています。しかも、組み込み開発の需要増大と開発の大規模化に伴い、深刻な人材不足が慢性化しています。
機能追加による仕様の肥大化
組み込みソフトウェアに求められる機能が増え、仕様が肥大化していく傾向にあります。
たとえば家電製品は季節ごとにバージョンアップを重ねていますが、冷蔵庫の場合はセンサーを搭載した温度管理機能、AIカメラを搭載した在庫管理機能など、高度な機能が年々増えています。
その結果、仕様が肥大化し、一部では必要と感じる人が少ないような機能を増やすケースもあるでしょう。
コストと品質のバランス
組み込み開発の需要は高まっていますが、その一方で設計品質の向上も求められています。求められる機能は増えて複雑化しており、製品の開発コストや運用コストも増大傾向にあります。そのため、コストと品質のバランスを保つことが困難になっています。
外注先との連携不足
組み込み開発を依頼する外注先と適切に連携することは、非常に重要です。しかし要件定義の曖昧さやハードとソフトの連携不足、開発期間の長期化などにより、連携不足が生じることもよくあります。
そのため組み込み開発を外注する際は、適切にコミュニケーションをとれる外注先かどうか、しっかりと見定める必要があります。
まとめ
組み込み開発とは、特定のハードウェアに組み込まれているコンピューターを動作させるソフトウェアを開発することです。一般的なパソコンやスマートフォンなど、多目的に使えるコンピューター向けのソフトウェアではなく、特定の目的に使われるハードウェアのためのソフトウェア開発を行います。
組み込み開発で顧客やユーザーからの要望を適切にとり入れたい場合は、アジャイル開発の手法をとり入れるのがよいでしょう。アジャイル開発を導入して、顧客のニーズや仕様変更に柔軟に対応できる開発を行いたい場合は、SHIFTのアジャイル開発支援(SHIFT 1LINE)をご活用ください。
お客様のアジャイル内製開発体制の構築とプロジェクト推進において、開発・ITガバナンス・プロダクトデザインなど、すべての局面で強力にサポートいたします。
継続的なプロダクト開発に伴走する、SHIFTのアジャイル開発支援
「アジャイル開発手法を導入して、ユーザーからの要望を的確にとらえた組み込みシステムを開発したい」「アジャイル開発を導入したいが、社内にノウハウがない」などの悩みを抱えている企業様は多いかもしれません。
アジャイル開発は短いスパンの開発を繰り返すため、機能変更や機能追加に柔軟に対応できるというメリットがあります。しかし、アジャイル開発をスムーズに進めるためには、設計、開発、テストという短いスパンを繰り返して、つねにフィードバックを行う必要があり、豊富な専門知識や経験、ノウハウが必要です。
アジャイル開発に関する知識やノウハウ、優れた開発メンバーなどがそろわない状態で、アジャイル開発にシフトするのはむずかしいでしょう。
そこで、SHIFTのアジャイル開発支援(SHIFT 1LINE)をご活用いただければ、お客様のアジャイル内製開発体制の構築とプロジェクト推進において、開発・ITガバナンス・プロダクトデザインなど、すべての局面で強力にサポートいたします。
短期的な人材確保や長期的な人材育成など、お客様のニーズにあわせて対応し、お客様のシステム開発に柔軟性とスピードをもたらします。

監修
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――