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