今年の事業計画の一つに機械式計算機の工作が盛り込まれています。
以前ご紹介した「クルタ計算機」に勝るものを作るのが目標です。

コンパクトな機械式計算機(クルタ計算機)
http://blogs.yahoo.co.jp/kai_yamamoto/59185217.html

しかしながら、ここまで複雑なものを一気に作るのは難しいのです。
まずは簡単なものから始めます。
レゴで作る計算機です。

イメージ 1

一見どこが計算機なのかと思われるかもしれませんが、これでも立派な加算器なのです。
部品の都合上、出来ることは2進数で0~7までの加算だけですが・・・
計算するビットとしてパチンコ玉を使います。

この計算機を利用する前提として、まず2進数を理解する必要があります。
簡単に2進数と10進数の関係はこうなります。

000 → 0
001 → 1
010 → 2
011 → 3
100 → 4
101 → 5
110 → 6
111 → 7

これを踏まえて再度写真を見てもらうと、上に赤いブロックがあるところが1ケタ目の投入口です。
黄色が2ケタ目の投入口となります。
グレーのピンと斜めに配置された部分が各桁の値を保持するメモリー部分になります。
ハンガーの様なシーソー部分がフリップフロップの役割を果たします。

フリップフロップとは、簡単には0か1を保持して回路により加算や減算を行うコンピューターの基本的な動きをする論理回路です。
この計算機では加算を行うので、

0+0 → 0
0+1 → 1
1+1 → 0(桁上がり)

といった動きをします。
ちゃんと桁上がりをするところがミソですね。
画像をヒントに、どう動くか頭の中で動きをシミュレーションしてみてください。

この工作は何も目新しいものではなく、レゴの部品や動きとパチンコ玉の大きさに最適化しただけです。
もしレゴをお持ちならこの通りに作ってみるのが手っとり早いと思います。

ボード全体の傾斜度もなめらかな動きを行う上で重要なポイントですのでご注意ください。
桁上がりの動きが楽しいです。


残念ながら、この時点で部品が尽きました。
パチンコ玉も1個しか持っていません。(ピンボール用兼務)

しかし、これを組み立てている時「レゴってソフトウェアだなー」とつくづく感じました。
もちろん各部品は形のあるハードウェアなんですが、各部品は単機能としてプリミティブに作られています。

つまり簡単なサブルーチンの部品が沢山あるようなもので、それらの並びを組み替えて一つの流れを作ります。
この作業はソフトウェアを作る手順と似ています。
物理的なものもプリミティブにすればソフトウェアになるということだと思います。

そういえばあのトラクター工作も、ジャンク自転車などを分解してネジや各部品単位に一旦プリミティブ化しすることで、各部品の価値をリセットし、新たな組み合わせで別の集合体を作るというソフトウェア化作業をしているんでしょうね。

ジャンク工作は、ハード作業じゃなくてソフト化作業だったんだと気付きました。

しかし、どれもこれも使い物にならない・・・
この計算機も実用性からは逸脱しています。(汗)