組み込みエンジニアは激務ではない、むしろオススメ!

スポンサーリンク

組み込みエンジニアは過酷と聞くけど実際どうなの?
どうやったら組み込みエンジニアになれるんだろう。

こうした疑問を解決します。

本記事の内容:
・組み込みエンジニアとは
・業務内容と働き方
・学べること、嫌なこと
・学習方法

解説の根拠

大学では化学を専攻しておきながら、某電機メーカーにて
「君はポテンシャル採用だから!とりあえずやれば理解できるよ!」と説得された結果就職し、
言われるがままに当時人員が少なかった組み込みエンジニアになりました。
なんだかんだ7年もやってました。

スポンサーリンク

組み込みエンジニアとは

ハードウェアを操作するソフトウェアを作る人です。
ハードウェアとは例えば家電製品とか自販機とか、操作すると何かするものですね。
ハードウェアにはボタンとかセンサーとか通信とかいろんな信号線が
マイクロコントローラー(通称:マイコン)に接続されていて、
そのマイコンに、ボタンを押したらこれをする、センサーレベルが○○V以上になったら××する、
といった処理を書くのが組み込みエンジニアの仕事になります。

業務内容

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

①仕様書の作成

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

②コーディング

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

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

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

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

③品質評価

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

けど評価試験項目に書けるってことは自分で想定して対策済みであって、
実際には想定外の事が行われた場合にどうなるのかが重要になってきます。

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

毎日残業ばかりの激務で辞めたくなる…なんてことはない

基本的に常に納期に追われながら進めているのですが、
私個人の話で言えば、直近3年間の残業は0時間です。
30代前半で年収600万円を超えてましたので、給与面でも悪くないのかなあと思います。

けどよく組み込みエンジニアは残業ばかりの激務で辞めたい…って言うじゃないですか。
私が思うに、激務になるのは余裕のないスケジュールと当人の実力不足が原因なんですよ。
開発規模と自身の実力から、与えられたスケジュールが厳しいと感じたなら、
その時点で納期をずらしてもらうか、増員を要請するしかありません。
自分でスケジュールを作成するなら、想定される時間+2週間くらいをそこら中に入れておきます。
あと仕様変更等が生じた場合もスケジュールへの影響があるなら、直ちに相談します。
文句言いながら残業して命削る必要なんてないんですよ、時には戦うことも必要です
そしてそれは結果的に、自分の健康を保つことができ、何よりチーム全体の幸せにつながります。
もしあなたが何言っても会社やチームが対応してくれないなら、辞めて転職したほうがいいです。

そんなこんなで、ソフトウェアのエンジニアって
ブラックと思われがちですが、実際はけっこうホワイトです。

…とはいえ暇を持て余すような楽な仕事でもないです。
原因不明のバグを抱えながら納期が迫ってる時はきついです。
とくにそのバグの再現性が低い場合、原因が分からず時間だけが過ぎ、
周囲からのプレッシャーを感じ始めると本当に焦ります。
組み込みエンジニアにはこうした精神的な疲労がつきまといます。

そしてこれは良いのか悪いのか、上記のように
追い詰められれば追い詰められるほど、解決したときのスッキリ感がたまらないです!
ホッとしたやら、理解できて面白いやらで、こういう日の帰宅後のお酒は最高に美味い…笑

ハードウェア知識の取得

組み込みエンジニアやってると、ハードウェアの知識も身に付けることができます。
というか、そうならざるをえない環境にあります。
「この動作不良ってハードウェアが原因のような気がする…」
と脳裏をよぎることが多々あるからです。

私

あれ?ここの出力から何も出てこない…
んー、これはハード担当の○○さんやらかしましたなあ。
けどまず自分で回路動作を確認しておこう。
この出力の直前にLPFがあって、前段はダイオードで半波整流してる、
整流する前の波形は、スイッチとして使ってるこのNch FETが…
ん!?FETのゲートにHiを与えてないから何も出てないのか?
デバッグしてこのI/O出力を確認して…あ、自分のミスだったー!

自分の書いたプログラムは問題ないはず、と思ってる人(=私)ほど
こうした傾向にあるのではないでしょうか。

そして気づけばはんだゴテと基板とオシロスコープが机に常に置かれてる状態になります笑

相手の仕事を少し理解できるだけで、仕事の進め方が全然変わってきますので、
組み込みエンジニアはハードウェアの理解に貪欲になってよいでしょう。

仕事が嫌になる時

組み込みの開発って初めて間もないほど、面白いです。
ボタンを認識してLEDが点灯したとか、LCDに文字が出てきたとか、自分でできると感動します!

組み込みエンジニアとして成長する過程は次の通り。
1.少しずつ思ったとおりに動かせるようになり、いろんなハードウェアの知識がついてきます。
2.評価でつまずきながらも何とか発売日を迎えて喜びます。
3.そして何度かこれを繰り返すことでスキルアップしていきます。(←ここらへんが一番楽しい)
4.次第に責任者として仕様書の作成を任されて、それをもとにコーディングします。
以降2→3→4→2→3→4…

分かりますかね、組み込みエンジニアって製品は違えど同じような仕事が延々と続きます。
しかも流用設計も多いため、同じことばかりやってるような気がしてきて嫌気が差します。
酷な働き方もそうですが、こうした作業感が出たときも環境変えたくて転職したくなります笑

開発しているときでも、市場で既存製品に不具合があったりすると至急対応を迫られるので、
いくつもの製品を同時に動かすこともあります。
私は一時期3製品(新規2、不具合1)を同時に面倒見てたことがあります。

自力で勉強するならローンチパッドがオススメ

本項では自力で組み込み勉強するにはどうすればよいか紹介します。

準備するもの

1.ローンチパッド(=評価ボード)
2.パソコン
3.開発環境
4.ユーザーガイド
5.サンプルコード

やること

まず各マイコンメーカーからローンチパッドが販売されていると思うのでそれを購入します。
ルネサステキサス・インスツルメンツ(TI)あたりが歴史が長く有名でしょうか。
ルネサスは値段は高いですが、ユーザーガイドが日本語対応で安心です。
TIは値段安いですが、全てが英語表記なので最初少し苦戦するかもしれません。

パソコンに開発環境を入れます。
ルネサスならHEW、TIならCCSですね。
TIのCCSは2018年か19年に無償化されて、現在ではHEWもCCSもどちらも無料です。

ユーザーガイドやサンプルコードを理解しながら、
自分で少しずつ書いて動きの変化から処理を理解していきます。
これらの詳細はは現在別記事にまとめている最中です。

↑TI社のローンチパッド

↑ルネサス社のローンチパッド

未経験者が最短ルートで学習するには学校を勧めざるを得ない

私はたまたま仕事でやったから色々言えますが、
組み込みって自力で環境整えて取り組むにはハードル高いです。
正直、独学で実践レベルに達するにはどうしたらよいか検討つきません…。
もし中途で組み込みエンジニアとして働きたいと思っても、未経験者の中途採用は難しいですし、
プログラミングスクールから始めるのが一番手っ取り早いです。

組み込みエンジニアはオススメの仕事です

上で述べたように働き方が不満とか作業感が出たら転職、と気軽に言えるのには理由があります。
なぜなら、組み込みエンジニアは慢性的な人不足です。
私が勤めているところも例外でなく、同時に3製品面倒見たと上で述べましたが、
40以上の製品のソフトウェア責任者になってる現状があるからです。
組込み機器は製品の更新頻度が高いため、製品廃止にしない限り製品数は増えゆく一方です。

これに加えて、最近ではIoTの普及で家電もネットワークに接続するようになったり、
Suica等のICカードと通信する自動販売機ができたりと、
組み込みエンジニアの需要が高まっています。

もし学生さんで、スマホアプリやWeb開発やりたいのなら、
若手が少ない現状があるので、組み込みエンジニアも視野に入れてみてもよいかもしれません。
食いっぱぐれることも、将来的に無くなることもない安定した市場です、組み込みエンジニアって。

まとめ

・組み込みエンジニアは仕様書作成、コーディング、評価を繰り返します
・慢性的な人不足なので職場が嫌になったら転職するのもあり
・未経験者で組み込みを学びたいなら0円スクール見てみてください
・自力でやるならローンチパッド買うのも良いけど、かなりハードル高いです

おまけ

副業やろうと思ってるなら、HTMLいいですよ。
C言語使える皆さんなら簡単に習得できます。

26+

コメント