どんな仕事?
各種の製品や装置に組み込まれた、制御のための小型コンピュータ(マイコン: microcontroller)のソフトウェアを開発したり、製品や装置を含めシステム全体の設計や開発をする。最近はこのような製品や装置はIoTとして、インターネットを経由したデータ連携を行うことが多くなっている。以下では短くエンジニアとしている。
組み込まれる製品や装置では、センサーにより周辺環境の情報を収集し、それによって製品や装置が何らかの動作をしたり、IoTであればセンサーからの情報をサーバーに送り、サーバー側で処理した結果をまた製品や装置に送り、それによって製品や装置が何らか動作をする。このような処理には小型コンピュータが必要であり、このコンピュータのプログラムを開発する。センサーで取得した情報は誤差やノイズが含まれている場合があり、小型コンピュータはこれらを補正する役割もある。製品や装置が行った動作も小型コンピュータで確かめ、適切に行われているか確認する必要がある。
多くの場合、小型コンピュータと周辺回路が乗るプリント基盤、そして製品や装置の機械的な部分(温度や湿度の上げ下げ、水流や送風の調節、照明や日照の調整、レーザーやGPSによる移動や定位、カメラ、等々)のエンジニアと共同で開発にあたる。ソフトウェア、プリント基板、機械的な部分のエンジニアをまとめ、システム全体を開発する場合もある。自分でプログラミングを行う場合もあるが、プログラマーにプログラム作成を依頼する場合もある。
ソフトウェアを開発する場合、既にあるソフトウェアモジュールを組み合わせて開発することが多く、足りない部分を自分でプログラミングしたり、プログラマーに依頼したりする。
仕事としては、製品や装置を動かすためにソフトウェアを開発する場合と(ここでは以下「組込み開発」とする)、その製品や装置を含めシステム全体を開発する場合の二つがある(ここでは以下「システム開発」とする)。
「組込み開発」の典型的な例がエアコン、テレビ、洗濯機といった家電等の制御である。例えば、エアコンであれば設定された室温に温度に保つよう、センサーが温度の上昇を感知すると冷却能力を高め温度を一定にする。リモコンからの指示を受け取り、エアコンをオン、オフしたり、温度を設定するのもこの小型コンピュータである。組込み開発は製品開発の中で平行して行われており、製品開発のエンジニアが行っている場合もある。また、最近、家電もインターネットと接続されるものも出てきており、インターネットを介して指令を受け取ったり、逆に情報をインターネットに送信したりしている。
組込み開発は、大きく分けてハードウェア開発とファームウェア開発に分類される。ハードウェア開発は、組込み装置の用途や、大きさや価格といった制約を踏まえて、どのような部品を使ってどう構成するのがよいかを設計し、プリント基板制作や部品の取り付けなどの実装を行う。ファームウェア開発はプリント基板に搭載されている小型コンピュータ(マイコン)の上で動作するプログラムを設計、作成する。組込み開発では多くはC言語系でプログラムを開発する。機会は少なくなっているがアセンブラなどを使うこともある。組込み開発では処理時間や使用できるメモリ等が限られていることが多く、このような制約のもと、目的としたプログラムを開発する必要がある。
一方、「システム開発」では、まず、顧客の現状とニーズを把握し、開発の要件を明確にすることから始め、設計、開発という流れとなる。システム開発のための製品や装置を選択し、コンピュータ言語で制御プログラムを作成する。周辺環境からの情報を受け取る各種センサー、逆に何らかの動作をするパーツの選定もする。製品や装置はインターネットを介してサーバーに接続されており、サーバー側の設定をしたり、サーバー側のプログラミングも行う。出来上がったら顧客と共にテストしたり、実際の利用者に使ってもらい、不具合や改善点があれば、設定やプログラムを修正したり、場合によってはセンサー等を入れ替えることもある。製品や装置は広範囲に多数、設置されるため、信頼性、耐久性、安全性等のチェックが重要となる。
具体的な例として、農業の例を挙げると、農業用ハウスで以前は手動で窓の開け閉めをしたり、時間によって開け閉めをしていた。農業用ハウスに装置を設置し、その装置で室温、湿度、日照等の情報を集めサーバーに送り、この情報をもとにハウスの窓の開閉を行ったり、送風機を回したり、ハウスの環境を整えることができるようになっている。この装置の選択と設定、装置のプログラム作成、サーバーの設定とプログラム開発等をこのエンジニアが行っている。
以上のように製品や装置を制御する組込みのソフトウェアを開発する場合と、システムとして全体を開発する場合があるが、IoTが広がる今日、実際の開発や仕事の内容は類似してきている。
よく使う道具、機材、情報技術等
OS(オペレーティングシステム:Linux 、ITRON)、データベース(MySQL)、プログラミング言語(C言語系、JAVA、Python、Ruby等)、サーバー、パソコン、表計算ソフト(Excel、Googleスプレッドシート等)