あらゆるモノがインターネットにつながるIoT時代が到来し、一昔前は地味だった組込みエンジニアもにわかに脚光を浴びるようになってきました。
組み込み業界は空前の人手不足なこともあり、30~35歳未満くらいであれば、IT業界未経験でも組み込みエンジニアとして就職・転職することは決して難しいことではありません。
ただ、仮に未経験者が組み込みエンジニアになれたとしても、全くの予備知識ゼロの状態では、入社してから何かと苦労することになります。覚えることだらけなので。
本記事では、未経験者が組み込みエンジニアになる前に予習として読んでおきたい本を、厳選して7冊紹介します。
- 独習C
- 標準テキスト 組込みプログラミング(ソフトウェア基礎/ハードウェア基礎)
- 組込みエンジニアの教科書
- IoTの基本・仕組み・重要事項が全部わかる教科書
- 組込み開発者におくるMISRA-C
- 電子回路が一番わかる 電子工学を学ぶ人のはじめの一歩
- まとめ
- 関連記事
独習C
組み込みエンジニアにとってC言語は切っても切れない仲、腐れ縁のようなものです。最近ではC++やJavaを使う開発現場も増えてきているとはいえ、まだまだC言語は組み込み業界では中心的存在です。
組み込みエンジニアとして働くためには、C言語は必修中の必修!是非とも習得しておきたい言語です。
C言語の入門書は数多く出版されていますが、独学で一通りのことを過不足なく学ぶには独習C 第4版*1をおすすめします。
標準テキスト 組込みプログラミング(ソフトウェア基礎/ハードウェア基礎)
組み込み系の開発は他のIT業界(Web系やオープン系など)ではあまり聞かないような用語やプログラミング上の注意点が多々あり、他業界を経験した人は最初戸惑うことも多いかと思います。
「標準テキスト 組込みプログラミング」では、組み込み開発に必要な基本的な知識・ノウハウを網羅しています。
「ソフトウェア基礎」と「ハードウェア基礎」がありますが、組み込みエンジニアはソフトとハード両方の知識が求められるため、できれば2冊とも読んでおきたいところです。
組込みエンジニアの教科書
「組み込み開発のことを学ぶのに2冊も読まなくてはいけないのは面倒だ!」
という人には、組込みエンジニアの教科書をおすすめします。
- そもそも組み込みシステムとは何か?
- 組み込みエンジニアの仕事内容やキャリアパス
- 組み込み開発の流れや一般的なプロセス(要求定義、設計、コーディング・・・)
- 組み込み開発でC言語を使用する際の注意点
- リアルタイムOS
- テスト環境(ICE)
- マイコンボードの構成(CPU、メモリの種類など)
- マイコンボードの制御方法
等々、ソフトウェア/ハードウェア両面にわたる幅広い知識をわずか270ページにまとめた良書です。詳細は下記記事を参照してください。
IoTの基本・仕組み・重要事項が全部わかる教科書
車載システム、家電組み込みソフトウェア、工作機械・・・などなど、組み込み開発といっても色々ありますが、最近ではやはりIoT*2のイメージが強いことと思います。
- 現在のIoTシステムの市場環境
- IoTを活用した実際のサービス例
- セキュアな運用方法
- ビッグデータなどの周辺技術
などが広く(ある意味浅く)解説されており、
「そもそも最近騒がれているIoTって何なんだろう?今後社会にどう関わってくるんだろう」
という点を総合的に勉強することができます。業界研究の意味でも御一読をおすすめします。
組込み開発者におくるMISRA-C
自動車や工作機械に組み込むシステムは不具合があった場合、重大な事態に発展する可能性があります。冗談抜きで命にかかわるような不具合だってあります。このあたり、パソコン用アプリやWebアプリ開発とは不具合に対する温度感がかなり違いますね。
ゆえに、組み込み系システムを開発する際は、
- 静的ソースコードチェックツール(PGReliefとか)によるソースチェック
- 自動試験ツール(WinAMSとか)を活用した単体試験
- 厳重過ぎるくらいの結合試験、システム試験の実施
などを徹底し、リリース前に可能な限り不具合を発見できるようにします。また、万が一誤動作が発生してしまっても致命的な事態を避けるために、フェールセーフ(故障が発生した場合、安全側で制御すること)の仕組みを取り入れてリスクを軽減します。
不具合をいかに確実に発見するか、というのももちろん大事ですが、そもそも不具合を作り込みにくいソースコードを書くのが第一です。
そこで必要になってくるのが、コードの品質を高めるための仕組み「コーディング規約」*3です。コーディング規約は開発現場で独自に作る場合もありますが、汎用的なコーディング規約を取りいれることもあります。
有名なのが、主に自動車業界で使用されるコーディング規約「MISRA-C」です。
MISRA-Cには「逆に生産性や可読性を悪くしている」という批判もありますし、必ずしもマストな知識というわけではありませんが、実際に少なくない現場で使われているのも現実です。
静的ソースコードチェックのルールとして採用しているチェックツールも多いので、覚えておいて損はありません。
電子回路が一番わかる 電子工学を学ぶ人のはじめの一歩
最後に紹介するのがこちら、「電子回路が一番わかる 電子工学を学ぶ人のはじめの一歩」になります。
「なんでシステム開発者なのに電子回路の知識が要るの?それってハードウェア技術者の領分じゃないの?」
と思うかもしれませんが、実際組み込み開発の現場に入ると、そうも言ってられないことが多いんですよ、これが。
ハードウェアチームからなかなか正式な仕様書が降りてこない、でも納期は刻一刻と迫ってくる・・・という状況では、例え門外漢であっても電子回路図*4を読んでハードウェア仕様をあらかじめ知っておくことが大事なのです。
また、ハードウェアの仕様書にミスがあった場合も、自分で電子回路図を読むことができればそのミスに気付けるかもしれないので、開発工程の手戻りを減らすことができます。
「電子回路が一番わかる 電子工学を学ぶ人のはじめの一歩」は僕が今まで読んできた電子回路の入門書の中でも格段にわかりやすく、おすすめです。
正直、大学時代に電子回路の授業で読んでた本よりもわかりやすいです。これがあれば電子回路の単位赤点ギリギリになることもなかったかもしれない・・・(余談)
まとめ
本記事で挙げた7冊は、
「全て読破しなければ組み込み系エンジニアになれない」
というわけではありませんが、予備知識として1冊でも多く読んでおくことをおすすめします。特に、C言語の基礎的な知識を身に着けておくことはほぼマストと考えます。
IT業界、Web業界、組み込み系業界(製造業)向けの求人フィード型転職サイト『GeekOut』
関連記事
組み込み系関連では、他にもこんな記事を書いてます!