「ゼロから作るミニCPU」というアプリを作った
論理回路を組み立てながら、CPUの中身を入門レベルで理解する「ゼロから作るミニCPU」というスマフォアプリをリリースしました。本記事では、その裏側で考えていたことを書いてみます。

なぜ作ったか
大きく分けて2つ理由があります。
そもそも学びは楽しいから
本来、学びは楽しいものだと私は思っています。特に、普段なんとなく使っているものの、中身はよくわかっていないものを理解できた時の感覚は、何とも言えない楽しさがあります。
自分にとって印象に残っているのは、初めてネットワークの仕組みを理解した時です。CSMA/CDの仕組み、IPアドレスやルーティング、TCP/UDPなど、それまで「インターネット」として一塊に見えていたものが、解像度高く見えるようになった瞬間は、すごく楽しかったのを覚えています。
また、ネットワークの中では今は主流ではないですが、電話の仕組みを理解した時もそうでした。電話番号を押すとなぜ相手につながるのか。回線交換とは何か。インターネットとは何が違うのか。どのように技術が進化してきたのか、そういったことを理解できた時も、非常にテンションが上がりました。
何かの中身を理解すると、世界の解像度が少し上がります。これが楽しい。だから、そういう体験を提供できるものを作りたいと思ったのが、1つ目の理由です。
次世代を担う人たちを支援したいから
自分の人生のフェーズもあると思うのですが、次世代を担う人たちを支援することに強いモチベーションがあります。
個人的に人生でやりたいことの1つは、日本から強いプロダクトがどんどん生まれる可能性を高めることです。私の翻訳書籍のあとがきを読まれた方ならご存知かもしれませんが、ほぼ全てのあとがきの締めくくりで書いている内容です。
もちろん自分自身も仕事でプロダクトを作っていますが、自分以外でも日本から素晴らしいプロダクトが生まれればそれで良いと思っています。(その意味で、スタートアップであれ大企業であれ、気を吐いている人たちをすごく応援しています。)
強いプロダクトが生まれるためには、好奇心強くて、かつ技術に強い熱意を持った人が増えることが重要だと思っています。そういう人たちを少しでも支援したいと考えています。これが2つ目の理由です。
ブラックボックスが増えていく現代
現時点(2026年)以降、AIがプロダクト開発の主流になっていくのは間違いないです。AIは、プロダクト開発のハードルを大きく下げるでしょう。コードを書くことも、デザインすることも、アイデアを形にすることも、AIがサポートしてくれるようになります。抽象化のレベルが上がっていくこと自体はとても良いことです。より多くの人が、より簡単にプロダクトを作れるようになるからです。これまでは諦めていたアプリを簡単に作れるようになります。今回のアプリもその1つです。プライベートでほとんど時間が取れないので、AI無しではとてもリリースできなかったと思います。
一方で、抽象化のレベルが上がることで、ブラックボックスがさらに量産されます。AIコーディング以前は、何かをリリースしようとしたら、Web開発に関する理解がある程度必要でした。今はAIを使いこなせば、理解をすっ飛ばしてブラックボックスのままにしても、とりあえずリリースするところまでは行けるようになります。
もちろん、すべての人がすべてのレイヤーを理解する必要はありませんし、Before AIコーディングであっても一緒だったと思います。低レイヤを細部まで完全に理解している人はほとんどいないでしょう。私自身、例えばアセンブラは雰囲気でしか理解していません。
それでも、どこかで一度、ブラックボックスの蓋を開けてみる体験はあって良いと思っています。理解できる範囲が少し増えるだけで、前述のように世の中の見え方が変わります。また何かあったときに、正しい技術判断もしやすくなるでしょう。(あと大事なことなので、もう一度書きますが、何よりもブラックボックスの中身を知ること自体が楽しい!)
そのきっかけとなる候補はいくらあっても良い。今回、私はその候補の1つとしてCPUに注目しました。
CPUは面白いが、最初の一歩が難しい
CPUは、コンピュータの中でもかなり面白いテーマです。私自身、ヘネパタ本(コンピュータの構成と設計)を初めて読んだ時は、「めちゃくちゃすごいな」と思った記憶があります。また、あと、CPUの創りかたという書籍も非常に参考になりました。論理ゲートから始まり、現代のコンピュータは本当に神業的な積み重ねの上に成り立っているんだなという印象を持ちました。
上記の書籍に加え、このCPUの分野にはすでに良い教材がたくさんあります。たとえば Turing Complete は傑作だと思います。私もプレイしました。ただ、それなりに難易度は高いと思います。私も解答を見ないと厳しいものがありました。そもそも情報科学を履修していない人にとっては、序盤から相当難しいのではないかと想定しています。
もう1つ、NAND2Tetris も有名です。こちらも素晴らしい教材です。ただ、専用言語のHDLを書いて進める形式なので、人によってはとっつきにくい可能性があるかと思っています。
そこで、もう一段だけ難易度を下げたものを作れないかと考えました。今回のアプリは、ITパスポートや基本情報技術者などの内容を少しでもかじったことがあれば、なるべく進められるようにしています。
実際、ITパスポート 令和3年度の試験ではこんな問題が出題されています。
CPU 内部にある高速小容量の記憶回路であり,演算や制御に関わるデータを一時的に記憶するのに用いられるものはどれか。
答えは「レジスタ」です。ただ役割はわかっても、どのようにレジスタが構成されているのかは、試験勉強の範囲ではわからないと思います。今回のアプリでは、レジスタそのものを自分で作るところも含んでいます。
学びのステージはパズル形式です。論理回路を組み立てながら、少しずつCPUを構成する概念に触れていきます。詰まった時のために、ヒントや解説、なんなら(広告を見る必要がありますが)解答例も用意しています。
個人的には、詰まったらどんどん解答例を見てもらって良いと思います。全部を自力で解くことが目的ではありません。CPUの中身を理解するための足場になれば十分です。
厳密さよりも、まずイメージを持ってほしい
大学などの授業では、CPUの構成を正確に教えることが普通です。一方でこのアプリでは、厳密さよりもまずはイメージを持ってもらうことを優先しています。そのため、例えばALU(算術論理演算器)はとんでもなく簡略化したものになっていますし、ビット数も8bit(1Byte)すらありません。それでも、CPUの全体像がちょっとでも見えるような構成にしています。
もちろん、できる限り変な理解につながらないようにはしています。ただ、CPUの仕組みをいきなり厳密に扱おうとすると、配線が複雑になったり、知るべき概念が多くなったりして、最初の一歩がすごく難しくなります。そうすると、そもそもCPUの中身を知る体験にたどり着けない人が出てきてしまいます。
なのでまずは「こういう部品が組み合わさると、足し算引き算ができたり、情報を記憶できるものになるのか」というイメージを持ってもらうことを優先しました。
その上で、もっと深く知りたくなったら、Turing CompleteやNAND2Tetris、あるいはコンピュータアーキテクチャの専門書に進んでいただければ良いと思っています。このアプリは、その前段にある入口/きっかけの1つです。
おわりに
というわけで、ブラックボックスとして普段見ているものを、自分の手で少しでも、組み立ててみて中身を知るのはは面白い! その感覚を少しでも体感してもらえれば嬉しいです。
無料なので、よければぜひ試してみてください。(良かったらレビューも書いてもらえると嬉しいです!)
- Android: ゼロから作るミニCPU - Google Play
- iOS: ゼロから作るミニCPU - App Store