esm アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

Turing Completeで学ぶデジタル回路設計

f:id:htkymtks:20211123005417p:plain:w500

こんにちは。永和システムマネジメントの内角低め担当、はたけやまです。

今回は、11月前半の私の可処分時間の全てを注ぎ込んだパズルゲーム「Turing Complete」を紹介します。

Turing Completeとは?

store.steampowered.com

宇宙人にさらわれた主人公が、宇宙人から出題されるパズルを解きながらデジタル回路を作成していく論理パズルゲームです。 Steamで早期アクセス版として配信されており、お値段は2050円。対応プラットフォームWindows、macOS、SteamOS + Linuxです。

Turing Complete は「デジタル回路設計パート」と「プログラミングパート」の二つのパートを行き来しながらゲームが進みます。

デジタル回路設計パート 〜 NANDがあればなんでもできる

f:id:htkymtks:20211122190054p:plain
https://en.wikipedia.org/wiki/NAND_gate より
f:id:htkymtks:20211122190216p:plain
NAND真理値表

NAND回路をご存知ですか?AND回路の出力をNOTで反転させた上記のような回路です。NAND回路があればAND回路やOR回路ひいてはCPUまで、あらゆる論理回路を構成できることが知られています。

f:id:htkymtks:20211122203941p:plain

ゲーム開始時点ではプレイヤーはNAND回路しか使えませんが、NAND回路を組み合わせて「NOT回路」→「AND回路」→「OR回路」→「半加算機」とステップアップしていき、最終的にはチューリング完全なCPUの組み立てを目指します。

f:id:htkymtks:20211121182156p:plain:w300
OR回路
f:id:htkymtks:20211121181929p:plain:w300
CPU

プログラミングパート

CPUを組み立てたあとは、組み立てたCPUを使ってプログラミングパズルを解いていきます。飛来する小惑星の円周を計測したり、金庫のパスコードをブルートフォースアタックでクラッキングしたり、ハノイの塔を解いたりと多彩なステージが待ち受けています。スタックや関数呼び出しを自分で実装するステージなどもあったりして「これが...論理パズル...???」みたいな気持ちになったりして面白かったです。また、アセンブラばかり書いていると「あー、アセンブラだりー、Rubyつかいてー」と普段使っている高級言語のありがたさが身に染みたりしました。

f:id:htkymtks:20211122003746p:plain:w300
小惑星の円周を測れ!

f:id:htkymtks:20211122003940p:plain:w300
ハノイの塔

CPUはピタゴラスイッチ

回路を設計していく中で、シンプルなルールに則って規則ただしくデータが流れていく様はピタゴラ装置のようだなあと感じることが何度もありました。 情報化社会がこんなピタゴラスイッチみたいなものに支えられてるのかと思うと、狐につままれたような気分になります。

こんな人におすすめ

Turing Completeはこんな人におすすめです。

とはいえ、ちょっと微妙なところもあります。

  • 早期アクセス版なので結構バグが残っている
  • 多少の予備知識がないとクリアは難しいかも

現状のTuring Completeは早期アクセス版、未だ開発途中なためバグが結構残っています。例をあげると、複数の部品を動かしたあとにUNDOすると高確率でクラッシュしたり、バグでステージがクリアできなくなったり(すぐに修正されましたが)ということがありました。俺がバグ出ししてやるぜ!という強い気持ちでプレイするのがおすすめです。

また、開発途中のためか説明が足りないところが結構あります。デジタル回路設計について何も知らない状態で挑むとちょっと大変かもしれません。(実績を見ると最終ステージまで到達したユーザーは全体の5%ほどのようです)

それでも挑みたい!という方は以下の書籍が参考になると思います。

まとめ

以上Turing Completeのご紹介でした。低レイヤ好きの皆様はぜひチューリング完全なCPUの自作を目指してみてください!

おまけ 〜 NAND回路はどうやって作るの?

「NAND回路があればどんな論理回路も作れる」と言うけど、そのNAND回路はどうやって作るのか気になりませんか?

Turing Completeと同じ回路設計ゲーム「NandGame」の「NAND」と「NAND(CMOS)」のステージにその答えがあるので、気になる方は以下のリンクをたどって是非チャレンジしてみてください!

nandgame.com