キノコの自省録

日々適当クリエイト

ソフト屋はハードウェアがわからない

タイトルのとおり、
「ソフト屋はハードウェアがわからない」
と馬鹿にされることが多いようです。
実際、私もハードウェアがさっぱりわかりませんでした。
でも、馬鹿にされるのはちょっと悔しいので、
年末から1月末までの1ヵ月間、ハードの勉強をしていました。
以降、ハードウェア奮闘忘備録。


私のハードウェア力の初期値

どれくらいハードウェアがわからなかったか、といいますと、
オームの法則はわかりますが、キルヒホッフ?なんだっけ?」
というレベルです。酷いですね。
中学生並です。
アナログとデジタルの違いもわかりませんでしたし、
接地(GND)も、アース?というレベルでした。
本当に酷いですね。
高校時代から電気回路が苦手で、逃げ回っていたせいです。


とっかかりは

電気回路から勉強することにしました。
ということで、
「マンガでわかる電子回路」と「図解でわかる電気回路」を購入して、
年末年始の帰省中に読んでました。
マンガで〜の方は、説明が飛ぶのでわかりやすいとはお世辞にもいえませんでしたが、
「こうやって回路って設計するんですよ」ということがわかったので、まあ良し。
電気回路の本は、とてもわかりやすかったですね。お薦め。
高校時代、何がわからなかったのかわからないくらい、理解できました。
本当に、どの辺がわからなかったのやら。
ちなみに本の内容は、大学レベルの電気回路にまで踏み込んでいます。
が、ぶっちゃけ簡単です。
「図解でわかる電子回路」も買ったのですが、
途中でアナログ回路に興味を失ってしまい、
オペアンプの部分くらいしか読みませんでした。


アナログからデジタルへ

私はソフト屋なんで、アナログは一旦脇に置いておいて、デジタルの世界へシフト。
# 勉強始めた当初、アナログとデジタルの違いがわかってなかったのですが、
# 上の本を読んでいるうちに、なんとなく違いがわかって来ました。
というわけで、デジタル回路初心者がまず読むべきと言われる名著、
CPUの創りかた」を読みました。
これはソフト屋にもお薦めの1冊。
「CPUを創るなんてとても……」と思ってしまいがちですが、
ハードウェア知識0でも全然読めます。
最後まで読めばCPU、メモリ、ALU辺りの動作も理解できますので、
情報処理試験対策にも役に立つと思います。
それともう一冊、「ゼロから学ぶディジタル論理回路」。
これはタイトルどおり、論理回路だらけです。
カルノー図とフリップフロップがメインといった感じです。
この2冊を読んで、デジタル回路が論理回路の集合体なんだ、
と漸く理解するに至りました。


ちなみに大学の講義で、論理回路は散々出てきたのですが、
論理回路の実物は今の今まで見たことありませんでした。
というか架空の回路とすら思っていたフシがありました。
最低です。
今では部屋に論理回路が転がっています。
ある意味最低です。
PLD弄ってみたいなあ。


楽しい工作

デジタルの勉強と並行して、電子工作を開始しました。
主に、AVRを利用した回路の制作です。
最初PICにしようかと思ったのですが、
AVRの方がよさげだったので、AVRにしました。
AVRはC言語で書けるので楽ですね。
回路図を見てAVRライターを作成したり、
LEDルーレットを作ったり、
キャラクタLCDにHello, worldを表示したり、と、
まあ、基本中の基本ですね。
めっちゃ苦労しましたが。
このとき、「やさしいPICマイコンプログラミング&電子工作」という本を参考に、
いろいろと制作しました。
タイトル通りPICの本ですが、
物理的な回路構成さえわかれば、
プログラム部分をAVR用に書き換えるのはそんな大変じゃないです。
まあ、そんな大層なことをしているわけじゃないですからね。


基礎勉強を終えて

成果書き忘れてました(2010.3.18)
オームの法則キルヒホッフの法則と重要性を再確認した
・交流が理解できた(仕事で波形データ扱ってるおかげでもある)
・抵抗とコンデンサの重要性がわかった(特にコンデンサ
・コイルはほとんど使わないが、誘導リアクタンスの概念はやたら重要だとわかった
 (ツイストペアケーブルの差動信号とか、誘導リアクタンスを考慮してる?)
・回路図から実際に回路を作れるようになった
トランジスタが理解できた
・LEDの有り難味がわかった
・LEDは目に悪いとわかった
・ICの逆差しは絶対一度はやってしまうことがわかった
・ユニバーサル基板で回路作るのは面倒だとわかった
・ブレッドボードはとても便利だとわかった
・秋月や千石は楽しい場所だとわかった
・1KBは大容量だとわかった
・AVRで簡単な回路設計ができるようになった

その他、デジタルというのは本当に0と1しかない世界なんだ、
と今更ながら実感しました。
0と1だけの世界なんで、色々なデジタル機器を作りたければ、
0と1の羅列をコントロールしなきゃいけない、
つまり、様々なプロトコル、特に物理層データリンク層あたりを知る必要がある、
と感じました。
ソフト書いている時は、プロトコルなんかTCP/IPアプリケーション層程度しか意識しないですが、
ハードをやって、プロトコルの重要性を再確認させられた気分です。

あと、もうひとつ。
「電子工作はとても楽しい。」
なんだか時間忘れて弄ってました。

今後の予定

現在、他にやることがあって、
ハードウェアの勉強はお休み中ですが、
USB機器やネットワーク機器を作れるようになって、
PCやWebサービスと連動する意味不明なガジェットを作りたいなあ、と。


正直、ソフト一辺倒より、
ハードとの連携を考えた方が、
勝ち目があるような気がします。
誰に対する勝ち負けかわかりませんが。
昔はハードのためにソフトがありましたが、
これからはソフトのためにハードが作られるような気がします。
もうなってますかね。スマートフォンとか。
そのうちロボットの時代が来たりなんかすると、
ソフト+ハード+制御の3分野を深く理解する必要に迫られるのかも。

2017.3.28 追記

興味がそれ以上持続せず、当時は上に書いた以上のことはできませんでした。
今思うと、「筐体を作る」という技術がなかったせいかなあと思います。
ゲームに絵が必要なように、電子回路には筐体デザインが必要ではないかと。
そこも合わせて作ったシアーハートアタックを紹介しておきます。
見た目はすっっっごいボッコボコですけど、何もないよりは良いですよね。

youtu.be


マンガでわかる電子回路

マンガでわかる電子回路

CPUの創りかた

CPUの創りかた

ゼロから学ぶディジタル論理回路 (KS自然科学書ピ-ス)

ゼロから学ぶディジタル論理回路 (KS自然科学書ピ-ス)

やさしいPICマイコン プログラミング&電子工作

やさしいPICマイコン プログラミング&電子工作