ITSS事業部の安藤です。
組込系のソフトウェアの開発を担当しています。

組込系って何?
という方も多いと思います。

組込系のソフトウェアは、多くの場所で使われていますが、あまり意識されることはありません。
身近なところでは炊飯器。
マイコン電子ジャーなんて名前が付いていたら、間違いなくコンピュータが内蔵されていて、プログラムが動いています。

他に自動車には100個くらいのコンピュータが使われて、乗り心地を良くしたり、便利な機能を提供しています。
昔は重くて回すのが大変だったハンドルも、今は片手、指1本で回すことができます。
これも、コンピュータがドライバのハンドル操作を検知して、手助けをするためのモータを回しているからです。

このように、人の目に触れにくいところで働いているのが組込系ソフトウェアです。

個人でコンピュータを持つことができるようになって約40年の月日が流れました。
コンピュータと聞くと、ほとんど方はディスプレイ、キーボード、マウスが接続されたパソコンを思い浮かべるでしょう。
組込系で使うコンピュータは指先ほどの大きさのLSIです。

パソコンで動作するソフトウェアは、人の目に触れることを前提に作られています。
面倒な計算を行い、結果を出すことがパソコンで使用するソフトウェアの目的です。

組込系のソフトウェアはものを動かすことが目的です。
先ほどの例の炊飯器では、面倒な火加減の調節を自動で行うことを目的にしています。

パソコンの場合、ディスプレイ、キーボード、マウスと言った入出力装置、ハードディスクのような記憶装置が接続されています。
CPUもクロックスピードが数GHz、メモリも最近では16GBといった高性能のものがあります。

組込系で使用されるマイコンチップは、入出力装置、メモリ、CPUがひとつのLSIにまとめられています。
パソコンに比べると、CPU速度は遅く、メモリのも数10kBから多くても1MB程度です。

なぜ、そのような不自由な環境で開発する仕事を選んだのかと疑問に思う方も多いと思います。
少ないリソース(CPU能力やメモリ容量)を効率的に活用してプログラムを作ることは、難解なパズルを解くようなな面白さがあります。
それに、何より完成したプログラムが動作し、自分の思う通りに機械が動作するのは、ちょっとした感動があります。