エンジニア

プログラミングだけじゃない!組込みエンジニアの仕事とは?【1】

エンジニアの仕事とは?

プログラミングだけじゃない!組込みエンジニアの仕事とは?【1】 

いきなりですが、組み込みエンジニアってどんなエンジニアでしょうか?

それはずばり「組み込みシステム」を作る人です。

では「組み込みシステム」とはどんなシステムのことを指すのでしょうか。

組み込みシステムは、特定の機能を実現するために家電製品や機械等に組み込まれるコンュータおよびソフトウェアが組み込まれたシステムや製品のことを言います。

たとえば、炊飯器はごはんを炊くための機械。カーナビは目的地までの道順を教えてくれる機械。洗濯機は衣服を洗濯するための機械ということになります。カーナビでごはんを炊いたり、洗濯機に目的地への行き方を教えてもらうことはできません。アプリをいくつも起動していろんなことができるパソコンやスマートフォンのようなデバイスもありますが、多くの組込みシステムは特定の用途に特化されたものです。

組み込みエンジニアは、洗濯機やエアコンのような家電を動かすソフトウェアを開発し、ソフトウェアによる制御で機械がユーザーの望む機能を実現します。また、ソフトウェアを搭載するために、ソフトウェアが動くコンピュータ(マイコンと呼ばれる小型のチップなど)やメモリが実装されたプリント基板などの設計も組み込みエンジニアの仕事の範囲に含まれます。

洗濯機は「水が一定量に達したら洗濯槽を回転させる」、エアコンは「一定の温度に保つ」ために必要なシステムが備わっています。機械に作業の指示を与えるシステムを開発し、そこでソフトウェアを動かすのが組込みエンジニアの仕事なのです。

「ほとんど組込みシステムじゃん!」

そうです。電化製品・産業用機械・自動車など、今やほとんどの機器は組み込みシステムだと言っても過言ではありません。

組込みエンジニアの仕事はどんな仕事?

エンジニアの仕事と聞いて、「プログラミング」を思い浮かべるひとも多いと思いますが、

組込みエンジニアの仕事はプログラミングだけではなく多岐にわたります。

組込みエンジニアはプログラミング言語はそれほどたくさん覚えることを求められないのですが、プログラミング以外にも理解しておくべき要素がたくさんあります。

ここではいくつか組込みエンジニアに求められる工程と各段階における仕事内容について見ていきたいと思います。

1.要件定義

 

 要件定義と書いて「ヨウケンテイギ」と読みます。なんだか難しそうですね…。

 要件定義とは

クライアントが実装して欲しい機能をまとめて共有すること

です。

カーナビを必要としているお客さんに炊飯器、炊飯器を必要としているお客さんに洗濯機を売りつけたりしてはいけません。そんなことをしたら2度と買っていただけなくなります。

少しオーバーな例ですが、要件定義をおろそかにすると、クライアントが欲しいと思っていたものとまったく違うものが出来上がってしまうことがあります。

クライアントがどのような機能を欲しているのかをヒヤリングで把握して、どれを実現するのか具体的に明記していきます。また、予算と納期がある程度分かっていることも多いので、その範囲内で必要な機能が満たせるかどうかなども検討します。

自社製品を作る場合は、作ろうとしている製品がどれくらいの市場規模を持っているか、市場がどれくらいの機能の製品をどの程度の価格で求めているのかなどの市場調査がまず行われます。

会社の規模が大きければなおさら、この市場調査や企画の立案にまでエンジニアが関わる機会は限られます。組込みエンジニアはあくまで要件定義が明確になったところから、それを実現可能な要素に落とし込んで実現していくのです。

上から降りてきた要件定義や仕様書を見て「これを作って大丈夫かな?」と思うことはあります。また、クライアントからの要望を元にまとめられた書類の場合でも、ユーザーが使っている姿を具体的にイメージできない、というケースが多々見受けられます。このような場合、日本人はあまり意見をぶつけ合うことが得意ではないので、少々おかしいなと思っていても言わないことが多いようです。

しかし、完成してから「こんなものが出来上がるとは思ってなかった」ということになれば、クライアントの満足度は下がります。また、開発を担当したエンジニアからしてみても、「開発の苦労はなんだったのか」と報われない気持ちになります。要件定義や仕様書で疑問に思うことがあれば、クライアントや企画担当を巻き込んで、何をプロジェクトのゴールとするのかを共有することを徹底してください。

ごはんの炊けるカーナビ」のようなものが仕様書としてあがってきたら、絶対に止めましょう。