システムエンジニア(組込み、IoT)
別名:組込系ソフトウェア開発技術者、制御系ソフトウェア開発技術者、ファームウェア開発技術者、組込みエンジニア
各種の製品や装置に組み込まれた、制御のための小型コンピュータ(マイコン: microcontroller)のソフトウェアを開発したり、製品や装置を含めシステム全体の設計や開発をする。
数字は職業分類のまとまりごとの値で、この職業だけの値ではありません。
仕事の内容
最近はこのような製品や装置はIoTとして、インターネットを経由したデータ連携を行うことが多くなっている。以下では短くエンジニアとしている。
組み込まれる製品や装置では、センサーにより周辺環境の情報を収集し、それによって製品や装置が何らかの動作をしたり、IoTであればセンサーからの情報をサーバーに送り、サーバー側で処理した結果をまた製品や装置に送り、それによって製品や装置が何らか動作をする。このような処理には小型コンピュータが必要であり、このコンピュータのプログラムを開発する。センサーで取得した情報は誤差やノイズが含まれている場合があり、小型コンピュータはこれらを補正する役割もある。製品や装置が行った動作も小型コンピュータで確かめ、適切に行われているか確認する必要がある。
多くの場合、小型コンピュータと周辺回路が乗るプリント基盤、そして製品や装置の機械的な部分(温度や湿度の上げ下げ、水流や送風の調節、照明や日照の調整、レーザーやGPSによる移動や定位、カメラ、等々)のエンジニアと共同で開発にあたる。ソフトウェア、プリント基板、機械的な部分のエンジニアをまとめ、システム全体を開発する場合もある。自分でプログラミングを行う場合もあるが、プログラマーにプログラム作成を依頼する場合もある。
ソフトウェアを開発する場合、既にあるソフトウェアモジュールを組み合わせて開発することが多く、足りない部分を自分でプログラミングしたり、プログラマーに依頼したりする。
仕事としては、製品や装置を動かすためにソフトウェアを開発する場合と(ここでは以下「組込み開発」とする)、その製品や装置を含めシステム全体を開発する場合の二つがある(ここでは以下「システム開発」とする)。
「組込み開発」の典型的な例がエアコン、テレビ、洗濯機といった家電等の制御である。例えば、エアコンであれば設定された室温に温度に保つよう、センサーが温度の上昇を感知すると冷却能力を高め温度を一定にする。リモコンからの指示を受け取り、エアコンをオン、オフしたり、温度を設定するのもこの小型コンピュータである。組込み開発は製品開発の中で平行して行われており、製品開発のエンジニアが行っている場合もある。また、最近、家電もインターネットと接続されるものも出てきており、インターネットを介して指令を受け取ったり、逆に情報をインターネットに送信したりしている。
組込み開発は、大きく分けてハードウェア開発とファームウェア開発に分類される。ハードウェア開発は、組込み装置の用途や、大きさや価格といった制約を踏まえて、どのような部品を使ってどう構成するのがよいかを設計し、プリント基板制作や部品の取り付けなどの実装を行う。ファームウェア開発はプリント基板に搭載されている小型コンピュータ(マイコン)の上で動作するプログラムを設計、作成する。組込み開発では多くはC言語系でプログラムを開発する。機会は少なくなっているがアセンブラなどを使うこともある。組込み開発では処理時間や使用できるメモリ等が限られていることが多く、このような制約のもと、目的としたプログラムを開発する必要がある。
一方、「システム開発」では、まず、顧客の現状とニーズを把握し、開発の要件を明確にすることから始め、設計、開発という流れとなる。システム開発のための製品や装置を選択し、コンピュータ言語で制御プログラムを作成する。周辺環境からの情報を受け取る各種センサー、逆に何らかの動作をするパーツの選定もする。製品や装置はインターネットを介してサーバーに接続されており、サーバー側の設定をしたり、サーバー側のプログラミングも行う。出来上がったら顧客と共にテストしたり、実際の利用者に使ってもらい、不具合や改善点があれば、設定やプログラムを修正したり、場合によってはセンサー等を入れ替えることもある。製品や装置は広範囲に多数、設置されるため、信頼性、耐久性、安全性等のチェックが重要となる。
具体的な例として、農業の例を挙げると、農業用ハウスで以前は手動で窓の開け閉めをしたり、時間によって開け閉めをしていた。農業用ハウスに装置を設置し、その装置で室温、湿度、日照等の情報を集めサーバーに送り、この情報をもとにハウスの窓の開閉を行ったり、送風機を回したり、ハウスの環境を整えることができるようになっている。この装置の選択と設定、装置のプログラム作成、サーバーの設定とプログラム開発等をこのエンジニアが行っている。
以上のように製品や装置を制御する組込みのソフトウェアを開発する場合と、システムとして全体を開発する場合があるが、IoTが広がる今日、実際の開発や仕事の内容は類似してきている。
◇ よく使う道具、機材、情報技術等
OS(オペレーティングシステム:Linux 、ITRON)、データベース(MySQL)、プログラミング言語(C言語系、JAVA、Python、Ruby等)、サーバー、パソコン、表計算ソフト(Excel、Googleスプレッドシート等)
働く場所・業界
メーカーやシステム開発会社(都市部に集中)
なるには
- 入社時に必要な資格
- なし
- 仕事によって必要な資格
- —
- あると有利な資格
- —
- 学歴(働いている人)
- 大卒(72%)/修士課程卒(修士と同等の専門職学位を含む)(44%)
なるまでの道すじを読む
入職にあたって、特に学歴や資格は必要とされないが、大学・大学院卒、高専卒が多い。新卒採用に場合は、電気、電子、情報等を履修している者が多い。中途採用の場合は、学部学科よりも、どのような開発をしてきたかという経験が重視される。
開発では最新の情報も必要になるが、大学・大学院、高専等で開発手法や各種部品の基礎知識を身につけておくことが重要である。なお、このエンジニアに求められる詳細なスキルとしては情報処理推進機構(IPA)の「組込みスキル標準」が参考になる。
入職後、仕事をしながら経験を積み、技術やスキルを身につけていく。複数の開発を経験し、顧客の要件を聞き取り、実際の開発までを過不足なくできるようになれば、一人前のエンジニアと見なされる。一つの領域を深めるだけでなく、機械的な部分、通信など複数のジャンルにわたって幅広く経験することも重要である。開発実績を積み、プロジェクトマネージャー等となっていく。
転職する場合は、同業他社に移ったり、技術が生かせる周辺分野の他社に移ることがある。しかし、この分野のエンジニアは、他社に移動することが比較的少ない。経験を積み、人脈を広げ、独立して自分の会社を始める人もいる。
製品や装置の小型コンピュータのプログラム開発では、プログラミング言語の選択肢は概ね決まっていることが多く、C言語系などが使われ、OS(オペレーティングシステム)はLinuxやITRONが多い。サーバー側のプログラム開発では言語はC言語系、PHP、Javaなどが使われる。また、サーバー側の開発ではOSはLinux、データベースはMySQL等が使われる。今日ではセキュリティに関する知識も重要になっている。
開発で必要となる情報は日本語のものもあるが、英語のものも多い。海外メーカーの部品やソフトウェアを利用することも多く、それらを不自由なく読める英語力が必要となる。
開発は共同作業となることから、チームワークが重要であり、人柄も重視される。言われたことを実現するだけでなく、新たな仕組みを提案するような能動的な姿勢も求められる。
向いている人・求められる力
- ほかの仕事より高めに求められるスキル
- プログラミング/設置と設定/カスタマイズと開発/要件分析(仕様作成)/クオリティチェック
- 興味のタイプ
- 現実的/研究的
- 大事にされる価値観
- 専門性/達成感/自律性
- 雇用形態
- 正規の職員、従業員(85%)/契約社員、期間従業員(8%)
会社や求人を探す
- 業界団体の会員一覧
- 業界の会社を探す
- 求人を探す
- ハローワークインターネットサービスで探す フリーワードに「システムエンジニア」、または職種で「ソフトウェア開発技術者(組込・制御系)」を選ぶと見つけやすくなります。
- 関連団体
公的機関や業界団体が公開している一覧・検索への入口です。特定の会社をすすめるものではありません。
関連する仕事
求められるスキルや知識が近い仕事です。
本で調べる
「システムエンジニア」に関する本を探せます。
広告リンクです(このサイトの収益について)。