こんにちは、東城です。
僕は20代後半にして事務職からC言語による組込エンジニアとしてメーカーで働くようになったのですが、エンジニアとして働きだして1年、最近ようやく初心者の域は抜けてこれたのかなと思えるようになりました。
初心者の域は抜けれたと言っても、自らゴリゴリとコードを書けるのかと問われたらそうではありません。
ただ、実際組み込みの現場でゼロからプログラムを構築することはあまりなく、常に何かベースがありそこから一部を改良していくというやり方が一般的です。そして新人に与えられる仕事は「よその製品で組み込んだあの機能、こっちの製品でも同じように動作するように移植して」と、いわゆる移植作業がほとんどかと思います。*1
その移植作業をするにはとりあえずC言語が読めればなんとかなるので、まずはC言語を読む力を身につけることが必要です。
ではそのC言語を読む力をどうやってつければいいかと言うと、これがどこを調べてもあまり詳しく言及されていない。
ということで今回は僕が未経験からC言語による組込エンジニアになるために使用した参考書を紹介していきたいと思います。
①『これならわかる! C言語入門講座 第2版』
勉強時間
20~30時間
学習方法
C言語のプログラミングをこれから始めようという人にピッタリの1冊。
PCの画面に「こんにちは」と表示させるところから始まり、if文、while文、ポインタなどC言語の基礎的な部分を網羅。文体も優しく絵もふんだんに使っているため、初心者が理解しやすいように限りなくハードルを下げた構成になっています。
本書はあくまでもC言語の入り口を勉強するだけなので、これ1冊だけでは当然C言語は読めるようになりませんし、いくら初心者に優しい構成とはいえ本書を終えるのに20~30時間ぐらいはかかることでしょう。
②『新・明解C言語 入門編 (明解シリーズ)』
勉強時間
50~80時間
学習方法
①の『これならわかる! C言語入門講座 第2版』の範囲を更に深掘りしたもの。(といってもあくまでも初心者の範囲なのだけども)
基本的にドリル形式になっていて、「入力した2つの数字を比較して、数字の大きい方を表示しなさい」というような問題に対し、どういうプログラムを組んだら良いかを答えるものになっています。
本書の使い方としては、とにかくプログラム(コード)を暗記してください。理解は後からでいいです。問題文を見たら、パッとコードが思い浮かぶようになればベスト。
C言語は物理の勉強と似たところがあって、最初から厳密に理解して進めようとすると「なんでこのときはこうするのに、あのときはああするんだ?」と謎が謎を呼ぶばかり。
それが一通り知識が身について全体像が分かってくると「ああ! これだからここはそうなっていたのね!」と理解できるようになるんです。
なので最初から一個一個理解していこうとするのはナンセンスで、ちょっと分からなかったら無理やり答えを覚えて先に進める。「まぁそのうち理解できるでしょ」ぐらいの気持ちで大丈夫です。
③『僕なりにポインタの説明を考えてみた。』(外部サイト)
『what you see is what you get』というサイトの1記事。
勉強時間(読み終えるまでの時間)
10分
学習方法
C言語最大の鬼門と言われるポインタをWindowsやMacの「ショートカット」に例えて説明した名エントリー。
これがポインタの説明としてはほんとに分かりやすく、僕はこの記事を読まなかったら未だにポインタのことがよく分からないままでいたことでしょう。
あくまで個人ブログの1記事なのでサラサラと読めてしまいます。
C言語を勉強する上では必見の記事です。
④『C言語ポインタ完全制覇 (標準プログラマーズライブラリ) 』
勉強時間
50~60時間
学習方法
僕が学習に使ったのは2001年出版の旧版の方で、最近新版も出たようです。
一応50時間ほどかけ勉強しましたが、正直そこまでオススメではないです。
確かにポインタに対する理解は深まりましたが、この本はポインタ初心者からのステップアップ式で説明がなされているわけではなく、作者が割と行き当たりばったりで説明をしているので、詰まる人はとことん詰まると思います。
初心者向けと言うよりかは、ある程度C言語の知識がある人がポインタに対する知識の再構成するために読む本。
全6章あり、第3章ぐらいまではギリギリついていけるかも知れませんが、4章からは初心者では歯が立たなくなります。
ただ本書はC言語がなぜいびつなプログラミング言語になってしまっただとか、Javaに対する作者の愚痴など所々ニヤリとさせる文章があったりと、読み物としては非常に面白い本でした。
旧版の方は中古であればワンコインで買えるので、興味がある人は買っても良いかも知れませんね。
⑤『600円で始めるラズパイ超入門(日経BPパ ソコンベストムック) (日経BPパソコンベストムック)』
勉強時間
10~15時間
学習方法
えっ、ここに来てラズパイ? と思われた方。安心してください。ラズパイはやりません。
この本の第4部『実はカンタン! 電子工作』と第5部『はじめての工作で組む電子回路』を勉強するだけです。
本書はラズパイについて書かれた本なので、大半がラズパイの説明になっていますが、第4部と第5部は電子工作についての記事でして、これが初心者に向けた電子回路の説明としてはとても良い内容になっているのです。
組み込みをやる上では抵抗やトランジスタ、モーターを扱わないといけないのですが、それらをどういう仕組で動作させればよいのかが分かります。
ただし初めてこの本を読むときはチンプンカンプンになると思うので、とりあえずは3周ほどサラサラと読んで、だいたいの内容がわかれば後述する⑥『基板付きキット 絵解き マイコンCプログラミング教科書』に進んでください。
⑥『基板付きキット 絵解き マイコンCプログラミング教科書』
勉強時間
70~80時間
学習方法
組み込みを勉強する上ではこの本はマストの名著!
僕はこの本に出会えなかったらどうなっていたことかと考えるだけでも恐ろしくなってしまいます。
本書はC言語の説明からマイコンが動く仕組み、マイコン制御では必須となる割り込み処理や、実際にどうやってマイコンを使って周辺機器を操作するかなど、初心者が組み込みで知りたいポイントを容赦なくガッチリと詰め込んでいます。
が、当然そこまで詰め込んでいるので1周目ではすべてを理解できるわけもなく、僕は7周通読してやっと理解できるようになりました。最初の3周目ぐらいまでは「???」といった感じでしたけども、4週目ぐらいから徐々に分かるようになってきました。
本書の弱点としてはマイコンを使って周辺機器を動かすときのプログラム(ソフト)については詳しく書いているのですけども、じゃあなぜこのソフトでこのハードは動くの? といったハード面はあまり言及されていません。
なので組み込みのハード面は⑤『600円で始めるラズパイ超入門』で勉強して、ソフト面は本書で勉強されるのがいいかと思います。
以上の6点が僕がC言語の組み込みを勉強する時に使った参考書でした。
組み込みの勉強をしていて強く思ったのは「分からなかったら飛ばすことが大事」ですね。確かに1つ1つ厳密に理解していくことは大切かと思いますが、同じところでいつまででも止まっていても仕方ないですし、その先の項目を勉強することで前の項目が分かるということが往々にしてありました。
今回紹介した参考書はあくまで僕が勉強する時に使った参考書なので当然他にももっとよい参考書もあると思います。その時は容赦なくそちらの参考書を使いましょう!
-
初心者が組み込み(マイコン制御)を学ぶならWinスクール
初心者が組み込みのことを学ぶならどうすればいいんだろ。 Winスクールっていうプログラミングスクールが評判良さそうだけど、実際はどうなんだ? ほんとに初心者からでも授業を理解できるのかなぁ? & ...
続きを見る