組み込みエンジニアの仕事内容と働き方を実体験から紹介します

どのように働いているかイメージできない...

こうした悩みを解決します。

解説の根拠

10年間、組み込みエンジニアとして働いていました。言語はC。
いまは個人事業主としてウェブ系に転向。独学で何とかやっていけるのも長らく組み込みをやってたおかげです。ありがたい。

組み込みエンジニアって実際どうなの?業界の話を聞いてみたいという方向けにメンタリングサービスを行っております。
Zoomでお話できればと思います。組み込み業界を検討している方はどうぞ。

仕事内容

大きく分けて3つのステップで、開発を進めていきます。
これは中身は違えど、組み込みに限らずソフトウェアエンジニア全般に当てはまると思います。

①仕様書の作成

このモジュールはこうやって動作して、フロー(動作の流れ)はこうです、と定めた仕様書を作成します。
プログラムはこの仕様書に従って書いていきます。
マイコン自体は
クロック制御、Δ∑やADCといった演算、UARTやI2Cの通信、ポート割り込み(レベル/エッジ)、タイマ割り込み、情報メモリなど、
周辺モジュールは
LCD(COMとセグの割当)とかEEPROM(ボーレート設定)、ボタン制御など
全体を俯瞰しながら動作を考えて仕様書を作成しなければなりません。

②コーディング

組み込みはいまだにC言語が主流なんじゃないでしょうか。かくいう私もC言語で書いてます。
けどこのC言語が難しいったらありゃしません。

・ポインタや配列、構造体の取り扱いが謎すぎ...配列の引数渡しが分かるとGood!
・計算している型が合わずサイズオーバーや予期せぬ結果になる...intとfloatを掛け算したらどうなる?
・=と==の間違いに気づかずドハマりする...if文でやると意図せぬ分岐に飛ぶ
・static...メモリには領域があるのか。
・volatile...最適化ってなんだ!?
・処理が行われない...コメント行の最後が「能」や「表」など0x5C問題にはまる

などなど、初心者ほど何かとつまずきますが、
こうした問題に直面して解決していくことでスキルアップにつながります。

もしコーディングが上手になりたいなら、とにかく先人のコードをよく読んで理解するに尽きます。
そしてこれいいね、と思ったら真似して使ってみるんです。
どうしても時間が経つほど自分なりの書き方になってくるので、誰かのコードが読める環境にあるのなら、一目見ておいて損はないです。

③品質評価

仕様書に沿ってコーディングして、実機に書き込んだときに正しく動作するのか動作検証します。
まず、こういう入力にこういう結果が得られるはず、と評価試験項目を作成します。
どういう機能をもつかによって変わりますが、簡単な動作でも何十、何百の試験数になります。

各ステップに必要な時間の割合は、
新規の開発案件だと仕様書3、コーディング3、評価4くらいでしょうか。
流用だと仕様書4,コーディング2,評価4と、評価に対する重きが大きくなります。
何にしても仕事全体のうち、コーディングしてる時間は少ないです、意外でしょ?

組み込みエンジニアって実際どうなの?業界の話を聞いてみたいという方向けにメンタリングサービスを行っております。
Zoomでお話できればと思います。組み込み業界を検討している方はどうぞ。