「組み込み ソフトウェア」と検索したあなたは、この仕事が具体的にどんな内容で、何が求められるのか、気になっているのではないでしょうか。
組み込みソフトウェアとは、家電・自動車・産業機械などのハードウェア上で動作し、特定の機能を実現するためのプログラムのことです。
この記事では、IT・機電エンジニア専門の転職エージェントである私たちが、組み込みソフトウェアの定義から仕事内容、必要スキル、年収、なるための方法までを詳しく解説します。
組み込みソフトウェアとは
組み込みソフトウェアとは、マイコンなどのハードウェア上で動作し、機器の特定の機能を実現するためのプログラムのことです。
パソコンのアプリケーションソフトウェアとは異なり、限られたメモリ容量や処理速度の中で、確実に動作することが求められます。
組み込みシステムとの違い
組み込みシステムは、ハードウェアとソフトウェアを組み合わせた「システム全体」を指す言葉です。
組み込みシステムの詳しい定義や工程全体については、別記事「組み込み システム」で解説しています。
本記事では、そのシステムの中で動作する「ソフトウェア」の開発そのものに焦点を当てて解説します。
アプリケーションソフトウェアとの違い
パソコンやスマートフォン向けのアプリケーションソフトウェアは、汎用的なOS上で動作し、比較的リソースに余裕がある環境で開発されます。
組み込みソフトウェアは、メモリ容量や処理速度が限られた環境で動作するため、無駄のない実装や、リアルタイム性を意識した設計が求められる点が異なります。
仕事内容【工程別】
組み込みソフトウェア開発の仕事は、大きく6つの工程に分けて理解すると全体像がつかみやすくなります。
| 工程 | 主な役割 |
| 要件定義 | ソフトウェアに求められる機能・性能要件を整理する |
| ソフトウェア設計 | 状態遷移や処理の流れなど、ソフトウェアの構造を設計する |
| コーディング | C言語などを用いて、設計に基づきプログラムを実装する |
| 単体テスト | 実装した機能が個別に正しく動作するかを検証する |
| 結合テスト | 複数の機能を組み合わせた際の動作を検証する |
| デバッグ・保守 | 不具合の原因を特定し、修正・改善を行う |
要件定義
ソフトウェアに求められる機能や性能要件を、ハードウェア担当者や企画部門と連携しながら整理する工程です。限られたリソースの中で実現可能な範囲を見極めることが求められます。
ソフトウェア設計
状態遷移図やフローチャートなどを用いて、ソフトウェアの構造や処理の流れを設計する工程です。後工程での手戻りを減らすため、この段階での設計の精度が重要になります。
コーディング
C言語などのプログラミング言語を用いて、設計に基づいてプログラムを実装する工程です。メモリ使用量や処理速度を意識しながら、無駄のないコードを書くことが求められます。
単体テスト
実装した機能が、個別に仕様通り動作するかを検証する工程です。想定外の入力やエラー処理が正しく機能するかも確認します。
結合テスト
複数の機能やモジュールを組み合わせた際に、意図した通りに連携して動作するかを検証する工程です。単体では問題がなくても、組み合わせることで不具合が発生することもあります。
デバッグ・保守
不具合が発生した際に、原因を特定し修正する工程です。製品出荷後も、ソフトウェアの改善や機能追加のための保守業務が発生することがあります。
組み込みソフトウェアの種類
組み込みソフトウェアは、設計方式によっていくつかの種類に分けられます。
・状態遷移型:機器の状態(待機中・動作中・エラー中など)に応じて処理を切り替える設計方式です
・イベント駆動型:センサーの入力やボタン操作などのイベントをきっかけに処理を実行する設計方式です
・リアルタイム制御型:時間的な制約の中で、決められた処理を確実に実行する設計方式です
対象となる製品分野によっても、求められる品質基準や開発手法が異なります。自動車業界では厳格な安全規格への対応が求められる一方、家電業界では開発サイクルの速さやコスト意識が重視される傾向があります。
1日の流れ(例)
組み込みソフトウェア開発の1日のイメージをつかみやすいよう、一例を紹介します。あくまで一例であり、企業やフェーズによって業務の比重は異なります。
・9:00 出社、前日のテスト結果の確認
・10:00 設計書に基づくコーディング作業
・13:00 単体テスト・結合テストの実施
・15:00 不具合の原因調査・デバッグ
・17:00 テスト結果の記録、翌日の作業計画の整理
組み込みソフトウェア開発の仕事、自分に合うか気になったら
経験豊富なアドバイザーが、これまでの経験や希望を丁寧にヒアリングします。まずは情報収集の一環として話を聞いてみたいという方も歓迎です。
必要なスキル・知識
組み込みソフトウェア開発で求められる主なスキルは以下の通りです。
・C言語・C++などの低レイヤーなプログラミングスキル
・状態遷移設計など、ソフトウェア設計の基礎知識
・単体テスト・結合テストの実施経験
・バージョン管理システム(Gitなど)の操作経験
・コーディング規約を守った、読みやすく保守しやすいコードを書く力
・静的解析ツールを用いたコード品質のチェック経験
役立つ資格
組み込みソフトウェア開発に資格は必須ではありませんが、知識の証明として役立つものがあります。
「資格がなければなれない」というわけではなく、あくまで補助的な位置づけです。
・組込みソフトウェア技術者試験(ETEC):組み込みソフトウェア開発に特化した知識を体系的に証明できる民間資格です
・基本情報技術者試験:ITの基礎知識全般を証明する国家資格です
・応用情報技術者試験:より高度なソフトウェア開発の知識を証明する国家資格です
出典:IPA「情報処理技術者試験」
私たちの求人選考の現場では、資格の有無よりも「単体テスト・結合テストを含めた開発経験の幅」を重視する企業が多いという傾向が見られます。
組み込みソフトウェア開発の仕事、続けるべきか迷ったら
市場価値を客観的に評価したうえで、納得のいく選択肢を一緒に考えます。今の悩みの相談だけでもかまいません。
やりがいと大変さ
やりがいとしては、自分が実装したソフトウェアが、実際の製品として意図通りに動作する瞬間に立ち会えることが挙げられます。一方で、単体テストでは問題がなかった機能が、結合テストの段階で予期しない不具合を起こすこともあり、原因の特定に時間がかかる場面が少なくありません。
組み込みソフトウェアエンジニアになるには
組み込みソフトウェア開発の仕事に就くには、以下のような準備が一般的です。
・情報系・電気電子系の学科でC言語やソフトウェア設計の基礎を学ぶ
・学生時代や独学でマイコンボードを使ったプログラミングを経験しておく
・未経験の場合は、教育体制が整った企業やOJTが充実した求人を選ぶこと
組み込みシステム全体の工程や種類については、別記事「組み込み システム」で解説しています。また、組み込みエンジニアとしての適性(向いている人・向いていない人)については、別記事「組み込み エンジニア」でセルフチェックを紹介していますので、あわせてご確認ください。
まとめ
・組み込みソフトウェアとは、ハードウェア上で動作し、機器の特定の機能を実現するためのプログラムのこと
・仕事内容は要件定義からソフトウェア設計、コーディング、単体・結合テスト、デバッグ
・保守まで多岐にわたる
・求められるのはC言語などのプログラミングスキルと、テスト
・品質管理に関する知識 ・資格は必須ではないが、テスト工程を含めた開発経験の幅が選考で評価されやすい
・年収は企業規模や対象製品分野によって差が大きく、固有の統計は限定的
よくある質問
組み込みソフトウェアとはどういう意味ですか?
家電・自動車・産業機械などのハードウェア上で動作し、特定の機能を実現するためのプログラムを指します。
組み込みソフトウェアと組み込みシステムはどう違いますか?
組み込みシステムはハードウェアとソフトウェアを組み合わせたシステム全体を指し、組み込みソフトウェアはその中で動作するプログラムそのものを指します。
未経験から組み込みソフトウェア開発の仕事に就けますか?
可能です。ただしC言語やソフトウェア設計の基礎知識の学習が必要になるため、教育体制が整った企業を選ぶことがポイントです。
組み込みソフトウェア開発にはどの資格が役立ちますか?
組込みソフトウェア技術者試験(ETEC)や基本情報技術者試験などが、知識の証明として役立つことがあります。ただし必須ではありません。
組み込みソフトウェアエンジニアの需要は今後も続きますか?
自動車・IoT機器など組み込み技術が使われる製品分野は今後も広がると考えられます。
組み込みソフトウェア開発とアプリケーション開発、スキルは共通していますか?
プログラミングの基礎的な考え方は共通する部分もありますが、組み込みソフトウェアはリソースの制約を意識した実装が求められる点で異なります。
この記事の執筆者

AIdeaCareerMedia編集部
主にIT・機電エンジニアに特化した転職事情に関する有益な情報を発信するメディアの編集部です。転職者であれば転職市場や選考での対策、企業の採用担当者様であればエンジニア人材の採トレンド等の「エンジニアに携わる転職・採用」の情報を提供します。
この記事の監修者

【機電部門統括責任者】キャリアアドバイザー 湯浅 空大
立命館大学卒業後、新卒で中堅アパレル企業へ入社。当社入社後は未経験圧倒的なスピードで実績を上げ、わずか2年半で機電部門統括責任者に就任。
圧倒的な求職者様目線を強みに、多くの機電エンジニアの転職成功。現在は、機電部門統括責任者として、勝てる組織づくりと後進育成に邁進。
