コラム
組み込みソフトウェアは、特定の用途向けのシステムソフトになります。身近なものでいうと、テレビ、ブルーレイなどのコーダーなど、ソフトで動くけどもユーザーが手を加えて新しいソフトをインストールする必要なく、決められた機能を実現することができる手段になります。
車の場合、自動運転がキーワードになってきていますが、人間を認識してどう回避するかなどはすべてソフトによって制御されています。
ハードウェアのことをどれだけ知っているかが組み込みソフトの技術者としては重要です。
ソフトウェアとハードウェアでは、対象とする場合に決定的に異なる部分があります。
例えばiPhone やWindows のアプリケーションを作りましょうというときは、どんなインターフェイスで、どんなコマンドを投げればどういうものが返ってくるか、みたいなことはある程度予測することができます。
一方で、ハードウェアの場合は対象が機械になる為、例えばあるロボットを動かすときに、モーターの電源をONにすると「どう動くか」「遊びがどの程度あるのか」「ガタつきはどうか」などは実際に経験しないと予測することが難しいです。
結果を見た上でどういうハードウェアの整備が必要なのか、を考えられるスキルが必要になってきます。
ソフトの場合は形が見えないため、可視化したドキュメント、書籍は多く存在します。ソフトは本やインターネット、専用セミナーなどから一般的な知識を吸収することは可能です。
一方で、ハードウェアの場合はドキュメントや書籍から学ぶことは難しいです。
例えば自動車を製造する場合、ハードウェアの部分は命に関わります。そうすると「命、安全とは何か?」から考える必要があります。
仮に要求仕様書として「こういうものを作ってください」と言われ、自分の作っているソフトがユニットに組み込まれることになった場合、「ユーザーが頻繁に触る部分なのか、触らない部分なのか」「ユーザーによっては、想定外のこともするかもしれない」などを含めて仕様書にない部分を想像する必要があります。
そこにはこれまでの経験が重要になります。
ドキュメントだけでは分からない部分を実際にやってみて経験することが重要となるため、自身で学ぶよりも経験者から学ぶことが非常に重要となります。
言われた通りにやるのではなく、指示に対して、「いや、こういう場合はこうした方がいいのではないか」「こういうことを想定したら、こんなことをした方がいいのではないか」といった疑問を持ち、提案できる人が向いています。
また、コミュニケーションスキルも必要です。
ハードウェアの分野、例えば電気設計のマイコンを選ぶ際、どれを選択するか、ここはハードウェアの部分とソフトウェアの部分がちょうど関わるところになります。
そういう、ソフトウェア、ハードウェアの両業者に対して対等に交渉できるスキルが求められます。
その人の志向によって、マネジメントを目指すか、スペシャリストになるかはありますが、マネジメントに進む場合はイチ担当者からチームとして考えていくとなったときに、全体のソフトウェアの構造、考え方、方向性っていうのを抜け・モレなく見て視野を広げていくことが必要です。
新しいものを作るということは、今までの設計者のノウハウが流用できない部分が多くなるので、そういう場合はまさにベテランで経験豊富なスペシャリストが求められることが多いです。キャリアとしてはメカ(機械)と似ていいます。
2つのキーワードがあります。
1つ目は、「安全」です。
例えば自動車業界の場合で言えば、今後自動運転が主流になることが予想されます。
自動運転の場合、万が一事故が起きた際の責任は運転手よりも自動車メーカーに強くなってしまう可能性があります。
だからこそ自動車メーカーは安全に対して万全の対策を講じていく必要があります。
2つ目は、「AI」です。
様々なデータ、情報を取得できるインフラが整ってきています。ただし、データはたくさんあるが、十分に活用できていないのが現状の課題です。まさにそこは組み込みソフトの役割です。例えば画像を処理してどうするか、購買データを集めてどう処理するかなど、ソフトの関わるところは大きくなってきています。
ソフトウェアは形が見えないので、「こういうものを作りたいです」と言われても、それを読み解くことは難しいです。若手のエンジニアで「言われたとおりにとりあえず作ってみました、けれども、これどうやって使われるのですか?」と、実際の利用シーンまで想像できていないことが多くあります。
ゼロから設計シリーズの研修では、「本来こうだから、こういうことを考慮しないといけないのではないか?」というところを実際の商品を使って学んで頂きます。
また、ゼロから設計シリーズでは「安全」に関しても我々の経験をしっかりと伝えます。
例えば、「ソフトにバグがありました」という場合に、メカであればここが不具合というのは、寸法や物を見て語れます。この部分の寸法が長すぎたので削りますとか。
一方でソフトの場合は、「ここが悪かったので、こう変えました」と言っても、「他は大丈夫なのか?」となります。
ではその「確からしさ」を、どこで区切るのか、どこらへんをみて安全というのか、という部分を踏まえ、我々の場合はこういう場合はこういう考えでテストをやっているという経験をお伝えしています。
当然、テストを無限にやれば確かな安全は確認できますが、工数、お金が掛かってくるので、どこかで割り切らないといけない。
そういったところの「勘どころ」みたいなものを教えていきます。こういった経験に基づく部分は、本では学べない部分です。
ゼロから設計シリーズでは、プラスアルファのエンジニアとして価値を高めること、ある程度リーダーを狙って、リーダー候補になってくれる人を育成していく研修になります。