組み込みエンジニアは難しいと言われるのはどうして?
と気になる人向けに、難しいと言われる理由をまとめてみました。
私はプログラミング未経験、電気知識がない状態で組み込みエンジニアになりました。
組み込みエンジニアの業務で難しかった部分を自身の体験をふまえて解説していきますので、本記事を読むと難しいと言われる理由が分かるようになりますよ!
結論から言うと組み込みエンジニアの仕事は確かに難しいですが、時間をかければ理解できる仕事です。
本記事の内容は動画でも解説しています!
習得困難なC言語
組み込み機器の開発で使うプログラミング言語はCもしくはC++が多いです。
これらの言語は高級言語(=人間が見て理解できる形式の記述可)ではあるものの、メモリ空間&アドレスの理解が弱いとうまく動かせないです。
実際にやると分かりますが、これがまあ難しいこと…。
・ポインタや配列、構造体の取り扱いが謎すぎ…配列の引数渡しが分かるとGood!
・計算している型が合わずサイズオーバーや予期せぬ結果になる…intとfloatを掛け算したらどうなる?
・=と==の間違いに気づかずドハマりする…if文でやると意図せぬ分岐に飛ぶ
・static…メモリには領域があるのか。
・volatile…最適化ってなんだ!?
・処理が行われない…コメント行の最後が「能」や「表」など0x5C問題にはまる
ポインタの取り扱い方とか、型が違う変数同士で演算をした場合の処理とか、変数に格納した構造体の中身は先頭アドレスだとか、とにかくメモリ空間とアドレスがつきものです。
つまり、逆を言えばメモリ空間とアドレスを理解すればC言語は理解できた、と考えて良いでしょう。
これからCを学ぶならこの本をどうぞ。
新・標準プログラマーズライブラリ C言語 ポインタ完全制覇
あとコーディングが上手になりたいなら、とにかく先人のコードをよく読んで理解するに尽きます。
そしてこれいいね、と思ったら真似して使ってみるんです。
どうしても時間が経つほど自分なりの書き方になってくるので、誰かのコードが読める環境にいるのなら、一目見ておいて損はないです。
CやC++は処理が高速なので、好まれます。
動作が遅いと演算精度が下がったり、処理が追い付かず性能が出ないという問題につながります。
設計次第ですけど、1命令がナノ秒オーダーで動くなんてざらです。
最近はPythonやRustに置き換わるのでは?と言われてますけど、別言語で設計し直すのはだいぶ苦労するので、まだまだ現場で使われるようになるまでは時間がかかるでしょう。
品質要求が高い
組み込み開発は品質要求が高く、バグが出ることは許されないです。
組込開発は基本的に数が出る商品を扱うことが多いからです。
もし致命的なバグを出したまま市場に出してしまうと、お客様全員に通知、全品回収の後その対応をして返却する…莫大な手間とコストがかかってしまいます。
ウェブ系言語と違って、演算、通信、制御、割込、例外処理など機能が多岐にわたるうえに、どういう状態でも問題なく動作することが求められるのが組込の難しいところです。
設計側からすると「え、なんでそんなことするの?」と思うことをユーザーはするものです。
IoT化でOTAによるファームウェアアップデートが可能に
最近は組み込み機器のIoT化が進んでいますよね。
ネットワークにつなげられる機器だと、OTA(=over the air)と言われる無線通信によるファームウェアの更新ができます。
ファームウェアとはマイコンに書き込むプログラム、要は私たちが設計したプログラムを指しますよ。
IoT化によってOTAで回収騒ぎになる機会は減るのは、現場からするとありがたいです!
ハードウェア知識
組み込みエンジニアはハードウェアとソフトウェアの両方を理解する必要があります。
マイコンのプログラムを書くのが主な仕事ではありますが、回路図が読めないとマイコンの制御が分からないことも多々あり、プログラミング言語+電気回路の知識が求められます。
簡単に言うと、信号の波形とレベルを整えるんですけど、トランジスタやFETをスイッチとして使う場合もあったりして、どの部品を何に使うのかは経験を積んで理解する必要がありますね。
ネットワーク知識
最近はIoT化がめざましく、ネットワークの知識も必要になってきている印象です。
Buetoothでスマホと通信するとか、HTTPリクエストでサーバをたたくとか。
M5stackとかライブラリで簡単に制御できるものから学んでいくのがよいかと思います。
ぶっちゃけ最初は皆難しいと思ってる
いま組み込みエンジニアをやっている人たちも、かつてはその難しさを体感し乗り越えています。
会社に入ると分かるのですが、意外と組み込みエンジニアっていっぱいいるものです。そうなると自分ができないわけはないという風にも思えてきますよね。
なので、難しいからと弱気になる必要は全然なくて、少しでも気になったら組み込み業界に入ってきてもらえると嬉しいなと思います。
まとめ
組み込みエンジニアが難しいと言われるのは下記の通り
・C言語を使う
・品質要求高め
・ハードウェア知識も必要
コメント