「楽しいから学ぶ」が最強だった — Nand2Tetrisで低レイヤに沼った教員の話
「楽しいから学ぶ」が最強だった — Nand2Tetrisで低レイヤに沼った教員の話
10 min read
— views
目次

本記事には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つのゲートが必要な回路だ。これを法則を使って変形していく。

  1. ド・モルガンの法則で Not(Not(x) And (Not(x) And Not(y)))
  2. 結合法則で Not((Not(x) And Not(x)) And Not(y))
  3. べき等法則で Not(Not(x) And Not(y))
  4. ド・モルガンの法則で Not(Not(x)) Or Not(Not(y))
  5. 二重否定の除去で x Or y

5ゲートの回路が、1ゲートになった。

ゲート5つとゲート1つ。実際のハードウェアでは、これがそのまま消費電力の差、処理速度の差、チップ面積の差になる。数学で回路を5倍効率化できる。

「付録なの、これ?」と思わず声が出た。

基本情報技術者試験では、AND、OR、NOTの真理値表を覚えて、ベン図を描いて、「ド・モルガンの法則とは」で終わる。テストに出るから覚える。でも、なぜそれが重要なのか——つまり、法則を使うと実際のコンピュータがどれだけ効率化されるのか——そこまでは教えてくれない。

Nand2Tetrisは、そこを教えてくれる。

トップダウン(完成品から分解)とボトムアップ(NANDゲートから組み上げ)の対比

ボトムアップという発想の転換

この本の学習アプローチは完全に「ボトムアップ」だ。一番下の、最も原始的な部品から始めて、上に積み上げていく。

僕がバイブコーディングで5つのアプリを作った時にやっていたのは逆で、「トップダウン」。完成形のアプリのイメージから始めて、AIに「こういうものを作って」と伝える。内部構造は知らなくても動くものができる。それはそれで正しい。

でもNand2Tetrisは、「なぜ動くのか」を一番下から理解させてくれる。

教員として、この違いには既視感があった。授業設計で「探究型学習」と呼ばれるアプローチがある。答えを先に教えるのではなく、生徒自身に発見させる方法だ。Nand2Tetrisはまさにそれをやっている。「NANDゲートだけあげるから、あとは自分で考えて組み上げてごらん」と言っている。

トップダウンで「何を作るか」を知り、ボトムアップで「なぜ動くか」を知る。この2つが揃った時、理解の解像度が一段上がる——そんな予感がしている。

コンピュータシステムの理論と実装
コンピュータシステムの理論と実装
Noam Nisan, Shimon Schocken 著 / 斎藤 康毅 訳
Amazonで見る →

基本情報技術者試験、しばらく棚上げします

資格を取ろうと思った経緯

実は僕、基本情報技術者試験を受けようとしていた。

理由は単純だ。個人開発者×教員という立場で、いくら「アプリ作りました」と言っても、技術的な裏付けがないと説得力が弱い。資格があれば「最低限の知識は持っています」と示せる。

参考書も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!

Share: 𝕏