組み込みエンジニアには「きつい」や「難しい」などのイメージがついており、組み込みエンジニアになることを避けてしまうケースがあります。
私は組み込みソフトウェア開発の未経験から自社開発の働きだし、現在、7年目です。様々な失敗や挫折を繰り返しながら、製品開発や技術開発を行ってきました。そんな私でも今まで製品を開発し、市場にリリースしてきました。
この記事では現在、組み込みソフトウェアエンジニアとして働いている筆者が組み込み開発の難しさや組み込みエンジニアになるメリットを体験談をもとにお話しします。
この記事を読めば、「組み込みソフトウェアエンジニアの難しさやメリット」が分かります。けして組み込みエンジニアは「きつい」や「難しい」職種ではありません。
組み込みエンジニアを7年間、勤めた経験を凝縮しました。組み込みエンジニアを目指している人はこの情報を就職活動に生かしてください。
組み込みエンジニアとは?
組み込みエンジニアは家電、自動車、医療機器、産業用ロボットなどの製品に組み込まれているソフトウェアを開発するのが仕事です。特定の目的に合わせて動作を制御するシステムを開発することが組み込みエンジニアの仕事です。
皆さんの身の代わりのものでいうとエアコン、冷蔵庫などの製品を開発します。生活の中で当たり前にあり、陰で生活を支えている製品を開発する仕事です。
近年はIoT分野が注目され、組み込みエンジニアの需要が高まっています。
組み込みエンジニアの難しいといわれる理由
組み込みエンジニアが難しいといわれる理由を詳しく解説していきたいと思います。理由は3つあります。
1.専門知識を習得する難易度が高い
組み込みエンジニアはIT業界のエンジニアとは求められる知識、スキルが違います。たとえば、「電子回路の知識」、「C言語」、「製品独自の技術」です。
ソフトウェア開発の対象となる基板(ハードウェア)の図面やI/O表を確認し、ソフトウェアの仕様を作成していきます。過去の関連資料がなく、製品の動作やソフトウェアを確認し開発を進める場合があります。
組み込みの分野では「C言語」が主に使用されます。他の言語に比べ、C言語は難易度が高く理解に時間がかかります。例えば以下のような難しさがあります。
・他の言語ではすでに用意されている機能でもC言語では自分で機能を実装する必
要があり
・ポインタの概念が理解しずらい
・コードが長くなりやすい
自社開発では会社独自の製品を開発することになります。製品をテストしていくとコードを書き、ソフトウェア上では気づかない動作不良が見つかります。机上で考えたことと実際に起きることは違います。実際の動作に合わせてソフトウェアの制御を変更する必要があります。ソフトウェアやハードウェアだけでなく、独自技術の勉強が必要です。
一概に組み込みソフトウェアといっても様々な知識が必要です。
2.求められる品質が高い
webサービスやアプリであれば、リリース後、アップデートすることをできますが、組み込みエンジニアが開発する製品は一度、リリースするとソフトウェアを変更することができません。例えば、家庭にある冷蔵庫のソフトウェアを書き換えるために業者の人が来ませんよね。だからソフトウェアに高い品質が求められます。
仮に製品の不具合により事故が起きた場合、市場にある製品をすべて回収することになります。最近だと除湿乾燥機のリコールがありました。回収するために数億のコストがかかり、会社に大きな打撃を打撃を与えることになります。最悪の場合、会社が潰れるケースもあります。
テストを徹底的に行い、リリース前に回収などのリスクを潰していきます。
3.ソフトウェアは仕様変更は頻繁に起きる
開発が進むにごとに製品仕様が変わり、そのたびにソフトウェアを変更します。仕様変更に合わしてコードを変更するとコードが複雑になっていきます。複雑になっていくとコードを書き換えた時に不具合が起きやすく、開発の難易度が上がっていきます。
過去にコードを変更するごとに変更したコード以外の箇所で不具合が起こり、大変でした。仕様変更に柔軟に対応できるソフトウェア設計の重要になります。
開発の終盤になると機構、ハードウェアを変更することはできません。しかし、ソフトウェアの変更は可能です。機構やハードウェアで起きた不具合を解決する場合でも、機構、ハードウェアの変更することができず、ソフトウェアの制御を変更して対応することが多いです。不具合の修正を短納期で対応することになり、開発が大変になります。
組み込みエンジニアの仕事が難しいが、それでも組み込みエンジニアになるメリットがあります。
組み込みエンジニアになって感じるメリット
組み込みエンジニアになって感じるメリットを詳しく解説していきたいと思います。メリットは3つあります。
1.意外と仕事は楽
組み込みエンジニアは「電子回路の知識」、「C言語」、「製品独自の技術」と覚えることが多いですが、その知識を覚えると仕事が楽になっていきます。はじめは覚えることが多く、きついですが数年後くらいから専門知識やスキルが身に付き、仕事のきつさは感じなくなりました。
組み込みエンジニアが開発する製品に使用される技術が大きく変わることはありません。冷蔵庫やエアコンといった製品は成熟した製品です。新規機能を追加したとしてもコストが上がれば、ユーザーは買ってくれないため、開発を行うことはありません。ユーザーの求めるものを作ろうと思うと今、ある製品をマイナーチェンジした製品を開発していきます。
自分が提案している技術や製品開発の仕事を除けば、残業時間は10~20時間にぐらいになります。一般的にきついイメージがありますが、そんなことはありません。
2.転職しやすい
組み込みエンジニアの需要は高く、転職がしやすいです。専門的な技術やスキルが求められることもあり、人材が不足しています。
一時期、転職活動をしていました。最大手でなければ、書類選考や面接でほとんど落ちることはありませんでした。このことからも常に企業は組み込みエンジニアを求めていることが分かります。
需要が高いことはチャンスだと思います。一人前の知識やスキルを身に着ければ、今の条件よりも良い条件で転職できる可能性が高まります。
3.自分のアイディアが製品開発に直結
自分の考えたアイディアが製品に盛り込めることです。アイディアが盛り込まれた製品を街中やネットで見かけると製品を開発してよかったと感じます。組み込みシステムは実際にものを動かし、動作を制御する楽しさがあり、webサービスやアプリ開発では味わえないやりがいがあります。
自分のアイディアを盛り込んだ製品を開発できることは仕事へのやる気が上がり、ものづくりが好きな人にとって最高です。
転職の視点からお話ししますと自分のアイディアが製品開発に直結することは実績のアピールにもなります。例えば、自分のアイディアにより性能が20%上昇した実績、売り上げを2倍にした実績を面接の場で話すとこができれば、面接官に好印象をあたえることができます。
以上、組み込みソフトウェアエンジニアの難しさやメリットについてのお話でした。