本記事にはAmazonアソシエイトリンクが含まれています。リンク経由で購入された場合、当サイトに紹介料が支払われることがあります。詳しくはプライバシーポリシーをご覧ください。
前回の記事で、「バイブコーディングで5つ作った教員が基礎を学び始めた」話を書いた。3冊の技術書を買って、水をやり始めたところまで。
あれから2日。僕は今、Nand2Tetrisの付録Aを読んで「うそだろ……」と声を出している。
NANDゲートから始まる世界
Nand2Tetrisとの出会い
前回の記事では、コンピュータシステムの理論と実装(通称Nand2Tetris)を「買った」と書いた。NANDゲートという最小の論理回路からコンピュータを組み上げていく本だ、と紹介した。
あれから実際に読み始めて、率直に言う。この本はやばい。
何がやばいかって、最初の数十ページで「コンピュータの全体像」が見えてしまうのだ。NANDゲートから始めて、論理回路を組み、ALUを作り、メモリを作り、CPUを作り、アセンブラを作り、仮想マシンを作り、コンパイラを作り、OSを作り、最後にテトリスが動く。13章で。
「この順番で積み上げれば、コンピュータが作れる」——その地図が、最初に提示される。
付録Aで目が覚めた — ブール関数の簡略化
でも僕が声を上げたのは本編じゃない。付録Aだ。
「ブール関数の標準的表現」。普通、付録なんて読み飛ばす。でも僕は、本編の第1章を読む前にふと付録を開いた。
そこに書いてあったのは、ブール代数の簡略化法則だった。
- 交換法則:
x And y = y And x - 結合法則:
x And (y And z) = (x And y) And z - 分配法則:
x And (y Or z) = (x And y) Or (x And z) - ド・モルガンの法則:
Not(x And y) = Not(x) Or Not(y) - べき等法則:
x And x = x
ここまでは基本情報技術者試験の参考書でも見た。「あー、はいはい」くらいの理解だった。
でもNand2Tetrisは、ここから先が違う。この法則を使って、実際に回路を簡略化する。
たとえば、こんな式がある。
Not(Not(x) And Not(x Or y))
5つのゲートが必要な回路だ。これを法則を使って変形していく。
- ド・モルガンの法則で
Not(Not(x) And (Not(x) And Not(y))) - 結合法則で
Not((Not(x) And Not(x)) And Not(y)) - べき等法則で
Not(Not(x) And Not(y)) - ド・モルガンの法則で
Not(Not(x)) Or Not(Not(y)) - 二重否定の除去で
x Or y
5ゲートの回路が、1ゲートになった。
ゲート5つとゲート1つ。実際のハードウェアでは、これがそのまま消費電力の差、処理速度の差、チップ面積の差になる。数学で回路を5倍効率化できる。
「付録なの、これ?」と思わず声が出た。
基本情報技術者試験では、AND、OR、NOTの真理値表を覚えて、ベン図を描いて、「ド・モルガンの法則とは」で終わる。テストに出るから覚える。でも、なぜそれが重要なのか——つまり、法則を使うと実際のコンピュータがどれだけ効率化されるのか——そこまでは教えてくれない。
Nand2Tetrisは、そこを教えてくれる。

ボトムアップという発想の転換
この本の学習アプローチは完全に「ボトムアップ」だ。一番下の、最も原始的な部品から始めて、上に積み上げていく。
僕がバイブコーディングで5つのアプリを作った時にやっていたのは逆で、「トップダウン」。完成形のアプリのイメージから始めて、AIに「こういうものを作って」と伝える。内部構造は知らなくても動くものができる。それはそれで正しい。
でもNand2Tetrisは、「なぜ動くのか」を一番下から理解させてくれる。
教員として、この違いには既視感があった。授業設計で「探究型学習」と呼ばれるアプローチがある。答えを先に教えるのではなく、生徒自身に発見させる方法だ。Nand2Tetrisはまさにそれをやっている。「NANDゲートだけあげるから、あとは自分で考えて組み上げてごらん」と言っている。
トップダウンで「何を作るか」を知り、ボトムアップで「なぜ動くか」を知る。この2つが揃った時、理解の解像度が一段上がる——そんな予感がしている。
基本情報技術者試験、しばらく棚上げします
資格を取ろうと思った経緯
実は僕、基本情報技術者試験を受けようとしていた。
理由は単純だ。個人開発者×教員という立場で、いくら「アプリ作りました」と言っても、技術的な裏付けがないと説得力が弱い。資格があれば「最低限の知識は持っています」と示せる。
参考書も2冊通読して、あとは過去問を繰り返せば合格圏内——というところまで来ていた。
「楽しい方」に引っ張られた
ところが、予定通りにいかなかった。
Claude Codeでの開発にハマる → Rustのコードが気になる → Rustの本を読む → メモリ管理の話が出てくる → 「そもそもコンピュータってどう動くんだ?」 → Nand2Tetris。
気がつけば、過去問の勉強時間がNand2Tetrisに吸い取られていた。
正直に告白する。基本情報技術者試験、しばらく棚上げします。
最終的には取る。でも今じゃない。今の僕には、もっと没頭したいことがある。

資格のための勉強 vs 好奇心が導く勉強
教員として、この2つの違いはよく知っている。
テストのために勉強する生徒と、面白いから勉強する生徒。前者は点数が取れる。後者は、点数を超えたところまで行く。
外発的動機——「受からなきゃ」「資格がないと困る」。これは短期的には強力だ。締め切りがあるから動ける。
内発的動機——「楽しいから知りたい」「続きが気になって仕方ない」。これは持続力が桁違いだ。誰にも強制されていないのに、気がつけば何時間も経っている。
僕は今、完全に後者の状態にいる。Nand2Tetrisの次のページが気になって、付録まで読んでしまう。寝る前に「明日はALUの章だ」と楽しみにしている。試験のために勉強していた時には、一度もなかった感覚だ。
そして自分が今まさにそれを体感しているからこそ、教壇で生徒に「テストのためじゃなく、面白いから学ぼう」と言う時の説得力が、少しだけ増した気がする。
Rustから低レイヤへ、低レイヤからRustへ
面白いのは、Nand2Tetrisを買うきっかけがRustだったことだ。
前回の記事で書いたように、担任手帳のバックエンドがRustで書かれていて、そのコードを理解したくてRustの本を買った。Rustの本を読んでいると、メモリ管理の話が頻繁に出てくる。ヒープとスタック。ポインタ。所有権。
「ヒープってそもそも何だ?」「メモリってどういう構造なんだ?」
その疑問が、Nand2Tetrisへの入り口になった。
そして実際にNand2Tetrisを読み始めると、今度は逆方向の理解が起きた。「ああ、メモリってこうやって作るのか。だからRustはメモリの扱いにあんなに厳しいのか」。ハードウェアレベルでメモリの仕組みがわかると、Rustの所有権システムが「なるほど、だからこうなっているのか」と腑に落ちる。
Rustが低レイヤへの興味を引き出し、低レイヤの知識がRustの理解を深める。意図して始めた並行学習ではなかった。でも結果的に、最高の相乗効果が生まれている。
AI時代に「中身を知る」ということ
実利があるかと聞かれたら
「で、Nand2Tetrisって役に立つの?」と聞かれたら、正直に答える。
2026年の今、Claude Code、OpenAIのCodex、GoogleのGemini——AIがコードを書いてくれる時代に、NANDゲートの知識が直接的な実利になるかと言われたら、ならない場面の方が多いだろう。
実利だけを考えるなら、もっと効率的な勉強方法はある。もっと「すぐ使える」知識はある。基本情報技術者試験の方が、よっぽどコスパがいい。
でも、教壇に立つ人間としては
僕は教員だ。
「先生、コンピュータってなんで動くの?」
いつかそう聞かれた時に、「NANDゲートっていう小さな部品があってね」と答えられるかどうか。それは教員としての引き出しの深さに直結する。
2025年度から「情報I」が大学入学共通テストの科目になった。プログラミング、データ活用、情報デザイン——高校生が当たり前に学ぶ時代だ。そんな時代に教壇に立つなら、表面的な操作方法だけでなく、「なぜそう動くのか」を語れる教員でありたい。
そして、以前AIとの付き合い方について書いたけれど、AIが生成する答えの「良し悪し」を判断するためには、結局のところ基礎的な理解が必要だ。NANDゲートの知識は直接役に立たなくても、「仕組みを理解しようとする姿勢」は、あらゆる技術判断の土台になる。
「楽しい」は最強のエンジン
でも正直なところ、そういう「教員として」「AI時代に」みたいな理屈は、後付けかもしれない。
本当の理由はもっとシンプルだ。楽しいのだ。
5つのゲートが1つになる瞬間。回路の仕組みが見える瞬間。「だからRustはこう書くのか」と繋がる瞬間。教科書のページをめくるたびに、世界の解像度が一段上がる感覚がある。
利益の計算を超えた、純粋な知的興奮。
教員として3年目、まだまだ経験は浅い。それでも断言できることがある。楽しいと思った生徒は、必ず伸びる。 テストの点数じゃない。「面白い」と目を輝かせた瞬間から、その子の学びは加速する。止めても止まらない。
僕は今、その状態にいる。
まとめ:仕方ないじゃん、楽しいんだもん
前回の記事で、「バイブコーディングで種を蒔いて、今から水をやり始める」と書いた。
水をやり始めたら、根が予想外の方向に伸び始めた。Rustからメモリへ、メモリからNANDゲートへ、NANDゲートからブール代数へ。計画していたルートとは全然違うところに根を張っている。
基本情報技術者試験は棚上げした。「効率的な勉強」からは外れた。
でも——仕方ないじゃん、だって楽しいんだもん。
See ya!