
現役の組み込みエンジニア、あるいは組み込みエンジニアを目指している方が読むべき本・書籍をまとめました。
私は、大手の機械メーカーで組み込みエンジニアをしているひらとまです。学生時代から10年以上、組み込み分野に携わっています。
学生時代に学んだこれが今も活きているよな、業務として組み込みをするようになってここが大事だよなと感じた点などをもとにおすすめの書籍をまとめます。
目次
- 1 プログラミング言語編
- 2 ソフトウェアエンジニア全般に役立つ本
- 2.1 6.リーダブルコード―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 2.2 7.プリンシプルオブプロプリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則
- 2.3 8.テスト駆動開発
- 2.4 9.SOFT SKILLS ソフトウェア開発者の人生マニュアル
- 2.5 10.世界で戦うプログラミング力を鍛える本 コーディング面接189問とその解法
- 2.6 11.オブジェクト指向のこころ デザインパターンとともに学ぶ
- 2.7 12.デバッグの理論と実践
- 2.8 13.独習Git
- 2.9 14.Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
- 3 組み込みエンジニア全般知識
- 3.1 15.組み込みエンジニアの教科書
- 3.2 16.これだけ!組み込みシステム
- 3.3 17. 実践ロボットプログラミング 第2版 LEGO Mindstorms EV3で目指せロボコン!
- 3.4 18.基礎から学ぶ 組込みRust
- 3.5 19.リアルタイムOSから出発して 組込みソフトエンジニアを極める
- 3.6 20.基礎から学ぶ組込みμT-Kernelプログラミング リアルタイムOSの初歩から実践テクニックまで
- 3.7 21.モダンC言語プログラミング
- 3.8 22.テスト駆動開発による組み込みプログラミング C言語とオブジェクト指向で学ぶアジャイルな設計
- 3.9 23.情報処理教科書 エンベデッドシステムスペシャリスト
- 3.10 24.良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
- 4 マイコン系
- 5 ハードウェア系
- 6 セキュリティ系
- 7 低レイヤー系
- 8 AI/画像処理系
- 9 関連記事
プログラミング言語編
1.Cの絵本
初心者おすすめ度
内容の充実度
言わずとしれた「苦C」ですが、名前の通りちょっと苦しい。というのも、初心者は一旦こういうものとスルーして進んでもいいようなところも、丁寧に説明しているため困惑することもあります。そのため、全くの初心者にはおすすめできません。
プログラミング経験0の友人が何名かこちらで勉強していましたが、途中で折れてしまいました。
一方で、ちょっと勉強したことあるよ!とか他のプログラミング言語をやった事があるという人には超おすすめです。
組み込みエンジニアとして働くための最低限のC言語知識が身につきます。
2.C言語(入門ソフトウェアシリーズ)
初心者おすすめ度
内容の充実度
こちら他所のサイトではあまり勧められていないのですが、個人的に思い入れの深い一冊なので紹介させていただきました。というのも、こちら私が高専生として学生時代に「C言語」の授業の教科書として使われていました。教師付きではありましたが、C言語の基礎はこちらでばっちり身につき、今の組み込みエンジニアとしての業務にも役立っています。
3.苦しんで覚えるC言語
初心者おすすめ度
内容の充実度
言わずとしれた「苦C」ですが、名前の通りちょっと苦しい。というのも、初心者は一旦こういうものとスルーして進んでもいいようなところも、丁寧に説明しているため困惑することもあります。そのため、全くの初心者にはおすすめできません。
プログラミング経験0の友人が何名かこちらで勉強していましたが、途中で折れてしまいました。
一方で、ちょっと勉強したことあるよ!とか他のプログラミング言語をやった事があるという人には超おすすめです。
組み込みエンジニアとして働くための最低限のC言語知識が身につきます。
4.C言語本格入門
初心者おすすめ度
内容の充実度
こちら2018年出版とC言語の本の中ではかなり新しい本になります。ターゲットは入門書レベルのC言語の知識は持っていて、もうワンランクレベルアップしたい人になります。プリプロセッサやライブラリに関する知識や、ポインタとハードウェアの関わりなどをgccコンパイラベースのサンプルを交えて丁寧に記しています。また、昨今のソフトウェア業務では切っても切れない、オープンソースについても触れています。
5.C言語ポインタ完全制覇
初心者おすすめ度
内容の充実度
C言語最大の難所であり、最大の魅力でもあるポインタに的を絞った本になります。2001年に販売された本ですが、その後実情に合わせ第4版まで改定されています。そのため昨今では当たり前になった、64bitシステムについても触れています。組み込みエンジニアとして働く上で一読の価値アリの書籍です。
ソフトウェアエンジニア全般に役立つ本
6.リーダブルコード―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
初心者おすすめ度
内容の充実度
チームのためにも、未来の自分のためにも簡潔で明朗なコードを書くことはとても大事です。本書は、そのためのテクニックやリファクタリング、テスト方法まで説明しています。この人のコードわかりにくいんだよなあ、と思ったことがある方は読むべきタイミングです。
7.プリンシプルオブプロプリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則
初心者おすすめ度
内容の充実度
コードをキレイに書くためにはをはじめとし、ソフト開発とはこうあるべきがまとまっている、ソフトエンジニアの啓発書的なもので非常によくまとまっています。ソフト開発の実務を初めて初心者を脱したというタイミングで読むのがおすすめです!
8.テスト駆動開発
初心者おすすめ度
内容の充実度
開発の前に先にテスト用のコードを開発する「テスト駆動開発」の考案者自身が著したTest-Driven Development By Example”の翻訳本です。原点にはどんな思想があったのか感じ取ることができます。
9.SOFT SKILLS ソフトウェア開発者の人生マニュアル
初心者おすすめ度
内容の充実度
こちらは、ソフトエンジニアの人生論について著された本です。技術習得法やどういったキャリアを描くべきかなど、あなたのエンジニア人生の羅針盤となる一冊です。
10.世界で戦うプログラミング力を鍛える本 コーディング面接189問とその解法
初心者おすすめ度
内容の充実度
AmazonやMicrosoftといった大手IT企業で行われるコーディング面接の攻略本となっています。こういったコーディング面接を控えている人はもちろん、自分の実力を試したいという人も一度読んでみると面白いですよ。
11.オブジェクト指向のこころ デザインパターンとともに学ぶ
初心者おすすめ度
内容の充実度
オブジェクト指向を活かすためのデザインパターンの本です。オブジェクト指向で書いているつもりなんだけど、これでいいのかな?と不安を抱えている人におすすめの一冊となります。
12.デバッグの理論と実践
初心者おすすめ度
内容の充実度
プログラムのデバッグ。自分の書いたコードがなぜ正しく動かないのか調べる時間はかなり多いです。そして、その調査は結構経験則で行っている人が多いと思います。この本はこうしたデバッグの作法を系統的に記しています。
13.独習Git
初心者おすすめ度
内容の充実度
ソース管理にはGitというのが当たり前になってきました。Gitってなんだ。わからんという人は一度系統立てて学んでみましょう。
14.Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
初心者おすすめ度
内容の充実度
最近では、WindowsPCを使った組み込みというのも結構あるので、そんな方向けの一冊です。Windwowsソフトはメモリマップをそのまま吐き出すダンプということができます。そのダンプを解析することでかなりのことまでわかるのでWindowsを扱う方は絶対に身につけるべきスキルとなります。
組み込みエンジニア全般知識
15.組み込みエンジニアの教科書
初心者おすすめ度
内容の充実度
組み込みエンジニアに必要な知識、ハードウェア関連やリアルタイムOSなどそして昨今流行りのIoTにも触れたバランスの良い入門書です。ArduinoやRaspberryPiといった敷居の低いマイコンデバイスでの実習もついており、手も動かせる初心者がまず手に取るべき1冊です。
16.これだけ!組み込みシステム
初心者おすすめ度
内容の充実度
組込みシステムってこんな感じ、こんな技術が必要だよ!というのを易しくまとめている入門書です。前提知識がまったくないからとりあえず触りだけという人におすすめです。
17. 実践ロボットプログラミング 第2版 LEGO Mindstorms EV3で目指せロボコン!
初心者おすすめ度
内容の充実度
LEGOマインドストームというレゴロボットを使って、ロボットプログラミングの学習をする本です。LEGOマインドストーム自体が値段が高いので少し敷居が高いのですが教材として一番オススメです。私も学生時代はこちらでライントレースや倒立振子のロボット(セグウェイ的なもの)を作ってロボット制御のためのプログラミングの勉強をしました。高度な動作を実現でき自信に繋がりますよ!子供用にもおすすめ!
18.基礎から学ぶ 組込みRust
初心者おすすめ度
内容の充実度
組み込み系では新し目の言語であるRustを用いて、マイコン「Wio Terminal」のファームウェアを作ってみようという本です。C/C++の開発に慣れているけどRustってどうなんだろう?という人に読んでほしい一冊です。
19.リアルタイムOSから出発して 組込みソフトエンジニアを極める
初心者おすすめ度
内容の充実度
リアルタイムOSって何?というところから始まり、モジュールの分割はこうするべきとか、こう再利用するべきといったマネジメント論まで、初学者から上級者まで学ぶべきところのある1冊です。
20.基礎から学ぶ組込みμT-Kernelプログラミング リアルタイムOSの初歩から実践テクニックまで
初心者おすすめ度
内容の充実度
IoTエッジノード向けに現在主流で用いられている「μT-Kernel」というリアルタイムOSでのプログラミングに関する入門書となります。これからIoT開発に携わる方におすすめの一冊です。
21.モダンC言語プログラミング
初心者おすすめ度
内容の充実度
一見C言語の教本に見えますが、中身は組み込みエンジニア向けの開発ノウハウ盆です。最前線の現場でしか知り得ないテクニックが詰め込まれた良作です。
22.テスト駆動開発による組み込みプログラミング C言語とオブジェクト指向で学ぶアジャイルな設計
初心者おすすめ度
内容の充実度
組み込み向けにC言語でテスト駆動開発を行う。そのためのオブジェクト指向を使い、アジャイルな設計をしていこうという、なんというか全部盛りの一冊です。テスト駆動開発をC言語でというのがかなり珍しく、組み込みではこういった先端の取り組みの採用が結構遅いのでCでのサンプルはとても貴重です。
23.情報処理教科書 エンベデッドシステムスペシャリスト
初心者おすすめ度
内容の充実度
組み込みエンジニアの国家資格である「エンベデッドシステムスペシャリスト」の教科書です。組み込みエンジニアとして求められている資質が整理されているので初級者から中堅に差し掛かったあたりの方は一度呼んでみると良いでしょう。
24.良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
初心者おすすめ度
内容の充実度
私もTwitterでフォローしているミノ駆動さんの著書になります。
業務としてプログラムを設計し始めた1〜3年目の方に読んでほしい1冊です。著者が現場で経験した生きたノウハウが詰め込まれた一冊です。
マイコン系
25. キットで遊ぼう電子回路 新PIC入門C言語編
初心者おすすめ度
内容の充実度
PICマイコンを使った回路を作り、C言語でソフトを書きながら少しずつ動作ができていくのを確認していく本です。PICを使った学習というのも非常に効果的で、私の学生時代にもPICで7セグメントLEDを光らせたり、スピーカーで音を出したりといった実験をして成長してきました。プログラミングでなにかモノを動かしてみたいという人におすすめです。PICはコストも安いです。
26.マイコンのしくみと動かし方―徹底図解
初心者おすすめ度
内容の充実度
組み込み屋さんならご存知「トランジスタ技術」という雑誌が初学者向けにマイコンの解説をした本になります。マイコンってなんじゃ?という段階という人におすすめの一冊になります。
27.予算1万円でつくる二足歩行ロボット
初心者おすすめ度
内容の充実度
この本はすごいですよ!12関節で歩行のできるロボットを自分で設計して歩行できるプログラムを書いちゃおうという本です。しかも予算1万円で、自分で機械加工はせずに。
ロボットの機械設計/電気設計はフリーCADの「Fusion 360」「Kicad」で行い、海外業者に発注して、組み立てて、ソフトはArduinoに書いて動かす。凄くないですか?
ものづくりの一連の流れが体験できます。ぜひご体験ください。
ハードウェア系
28.FPGAプログラミング大全 Xilinx編
初心者おすすめ度
内容の充実度
高速な実装が必要なときFPGAのようなハードプログラミングが必要なときがあります。XilinxのFPGAを使う機会に遭遇した人はまずてにとるべき本となります。
29.論理回路入門(第3版)
初心者おすすめ度
内容の充実度
組み込みエンジニアの基礎教養である論理回路の入門書です。結構、わかる前提で業務することになると思うので、業務中に不足を感じたら勉強してみましょう。
30.デジタルフィルタ (ビギナーズ)
初心者おすすめ度
内容の充実度
組み込みエンジニアをしていると、センサの信号の処理などでデジタルフィルタをかけたくなることがしばしばあります。この辺の知識も基礎教養として知ってて当たり前の風潮もあるので、ローパスフィルタとかハイパスフィルタと聞いてピンとこない人は一度勉強してみましょう。
31.高速デジタル信号伝送回路の設計と評価法
初心者おすすめ度
内容の充実度
最近は大量の情報を短時間でやりとりしたいという要望が多いため高速な信号伝達に遭遇する機械があるでしょう。ソフト屋としてはあまり踏み込まなくても良い領域かもしれませんが、周辺知識として回路設計がどうなっているか学んでおくとワンランク上のエンジニアとなれるでしょう。
32.よくわかる最新センサ技術の基本と仕組み IoTに不可欠なセンサデバイスを知る 図解入門
初心者おすすめ度
内容の充実度
上位レイヤーよりの組み込み屋さんであれば、各種センサの特徴や原理について一通りの理解が求められます。本書は系統的にセンサの特徴がつかめるため最適です。
セキュリティ系
33.ハッカーの学校IoTハッキングの教科書
初心者おすすめ度
内容の充実度
IoT製品へどうハッキングするかという本です。もちろんハッキングを推奨しているわけではありませんが、攻撃の仕方を知らねば防御はできないと、毒を持って毒を制す的な本です。
34.サイバー術 プロに学ぶサイバーセキュリティ
初心者おすすめ度
内容の充実度
サイバーセキュリティ戦のノウハウをNINJA(忍者)の秘術に例えて説明した本です。意外な組み合わせですがなんともわかりやすいすごい本です。
低レイヤー系
35.低レベルプログラミング
初心者おすすめ度
内容の充実度
Intel x64 CPUに対してアセンブラで自由自在に書けるようになろうという本です。理論から実践まで、低レイヤーの内容を丁寧に解説している名著です。
36.プログラムはなぜ動くのか
初心者おすすめ度
内容の充実度
プログラムとメモリ・CPUの関係を解説し、プログラムがどのように動作するのかを解説しています。中堅組み込みエンジニアはみなさんこのあたり理解しているような印象のため30手前までには一度勉強しておきましょう
37.Optimized C++ ―最適化、高速化のためのプログラミングテクニック
初心者おすすめ度
内容の充実度
動作速度やCPUやメモリなどのソフトウェアリソースの使用を最適化したいという要求は組み込みエンジニアをしていれば、多かれ少なかれ直面する課題です。結構ノウハウのいる作業になるので、系統だってまとめられた本書はなかなか貴重ですよ。
38.コンパイラ: 原理と構造
初心者おすすめ度
内容の充実度
合って当たり前の魔法のツールのコンパイラについて、その原理と構造を紐解いていく本です。上級者向けの内容ですが、本書に沿ってコンパイラを作り上げる体験は凄まじく力が付きますよ。
39.並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ
初心者おすすめ度
内容の充実度
組み込みをしていると、一つのスレッドでは足りないケースが多く、マルチスレッドでプログラミングをすることが多いです。平行処理を使ったプログラミングにフォーカスされた書籍です。初心者からわかったつもりの中級者も学びのある内容となってます。
40.RISC-VとChiselで学ぶ はじめてのCPU自作 ――オープンソース命令セットによるカスタムCPU実装への第一歩
初心者おすすめ度
内容の充実度
CPUを自作してしまおうという本です。FPGAで実装などではなくソフトウェア上への実装となるため、CPU自作系の本では敷居が少し低くなっています。もちろんCPUのアーキテクチャに関する教養はバッチリ抑えられます。
AI/画像処理系
41.Jetson NanoではじめるエッジAI入門
初心者おすすめ度
内容の充実度
AIデバイス開発に力を入れているNVIDIA社が出している入門向けデバイスのJetsonNanoを使った組み込みAIの入門書です。JetsonNanoも用いた教育は画像処理やAIの学会などでも薦められるほど評価をうけている手法です。これからAIを勉強してみたい組み込み屋さんはここからはじめましょう。
42.物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング
初心者おすすめ度
内容の充実度
こちらは画像処理の先端トピックを学べる入門書です。GANやオートエンコーダなど先端のAI技術を用いた画像処理について学べます。組み込み屋としての顔+画像処理屋としても活躍したい人は是非読んでください。