第49話 父の手
翌朝、わたしは早起きをして工房に向かった。
机の上に布で包んだ半加算器を出して、その横にもう一段組むための歯車を並べる。残りは四つ、十二歯が二つと十六歯が二つ。昨日と同じ配置でもう一台、同じものを組む。それから二つを繋ぐ。
(——二つの半加算器を組み合わせると、全加算器になる)
頭の中で配線図が動いていた。
一段目は AとB の加算を担当する。出力は『和の下位』と『繰り上がり1』。
二段目は一段目の和と、下の桁から来る『繰り上がり0』を加算する。出力は『最終的な和』と『繰り上がり2』。
そして、二つの繰り上がり——『繰り上がり1』と『繰り上がり2』——を OR で統合して、上の桁へ送る『最終的な繰り上がり』にする。
(——OR が、いる)
OR は AND と並ぶ基本ゲート。AかBのどちらかが回れば出力が動く。XOR と違って、両方回っても出力は動き続ける。
前世なら、半導体一個で済む話。だがこの世界には半導体がない。歯車で組むしかない。
(——構造はシンプル。AかBの動きを、どちらでも受け取れる中継歯車)
机の脇の木屑入れから、半端な歯車を二つ拾った。歯数は揃っていないけれど、原理を確かめるならこれで十分だ。
◇◇◇
工房の扉が開いて、父アルベルトが入ってきた。
「ふん。早いな」
「うん」
父は自分の作業台に向かいかけて、足を止めた。それからこちらの机の方へ歩いてきた。
「リナ」
「うん」
「昨日のあれ、もう一つ組むのか」
「うん。それと、二つを繋ぐ」
父は黙ってわたしの隣の椅子に腰を下ろした。
「俺も、手伝う」
息が一瞬だけ止まった。
「ほ、本当に?」
「ふん。お前一人じゃ、軸の高さが揃わん」
それだけ言って、父は机の引き出しから測り棒と細い針金を出した。軸の高さを測って、噛み合わせの位置を一ミリ単位で合わせる道具だった。
「お前の昨日のは、AとBの軸が少し傾いとった」
「えっ」
「動いとったから、文句は言わなんだ」
父はわたしの組み上げた半加算器をひっくり返して、軸の根元を細い針金で測った。
「ここ、爪の幅二つぶん、ずれとる」
「……」
「組み直す前に、二つ目をちゃんと作れ。同じ歪みを二回繰り返したら、繋いだとき必ず狂う」
頷くしかなかった。前世のソフトウェア設計なら「同じバグを二回コピーするな」と言うところだ。父はそれを、歯車の言葉で同じことを言っていた。
◇◇◇
二つ目の半加算器を組む。
父が横で測り棒を当ててくれる。わたしが歯車を軸に通すたび、父が「もう少し奥」「もう一段、こちらへ」と短く指示を出す。
午前中で骨格は組み上がった。Aの軸とBの軸が、定規で測ったように平行に並んでいる。昨日の試作品とは、見るからに精度が違った。
「お父さん、上手いね」
「これが俺の仕事だ」
それだけだった。
昼食はエマが工房に運んでくれた。
「リナ、お父さん、お昼よ」
机の隅に椀が二つ置かれた。エマが机の上の半加算器を一瞥して、何も言わずに出ていった。問わないこと、それがエマの距離の取り方だった。
午後は OR の組み立てに入った。
机の片隅に小さな台を作って、半端歯車二つを軸に通す。中継の歯車が AかBの動きをどちらでも受け取れるように、噛み合わせの角度を慎重に決めた。
Aだけ回す。出力が動く。
Bだけ回す。出力が動く。
AB同時に回す。出力が、止まらずに動き続ける。
「OR が、生きた」
胸の奥で、また熱が立ち上がった。XOR、AND、OR。三つの基本ゲートが、机の上に揃った。
◇◇◇
夕方になって、二つの半加算器と OR を繋ぐ作業に入った。
一段目の和の出力 → 二段目の入力 A。
二段目の入力 B には、下の桁から来る繰り上がりを差し込む。
一段目の繰り上がり と 二段目の繰り上がり を、両方とも OR に流す。
頭の中の配線図を、机の上の歯車と軸で再現していく。父はもう何も言わずに、横で測り棒を当ててくれていた。
組み終えたのは、夕陽が西の窓から射し込み始めた頃だった。
入力 A を一に。入力 B を一に。下からの繰り上がりを〇に。
ハンドルをそっと回した。
一段目の XOR が打ち消し合って止まる。一段目の AND が回って、繰り上がり1 が立つ。
二段目の入力Aは〇、入力Bは〇。XOR は止まる、AND も止まる。
OR は繰り上がり1 を受け取って、上の桁へ『一』を送る。
最終結果:和の桁が〇、繰り上がりが一。
つまり、一 + 一 = 一〇。二進数で『二』だ。
頭の中で、その計算を並べてみる。
```pseudo
1
+1
ーー
10
```
十進の『二』が、二進では『一〇』になる。和の桁に〇、その左へ繰り上がりの一。桁が、生まれた瞬間だった。
「動いた」
声に出した。
父も、横で椅子の上に身を乗り出して、機械の動きを見つめていた。
「リナ」
「うん」
「これは、一桁の足し算だな」
「うん。それも、繰り上がりまで」
「これを並べると」
「桁が増える」
父は半加算器二つと OR の繋がりを、指先でゆっくり辿った。
「並べた数だけ、桁の足し算ができる」
「うん。原理的には」
父はしばらく黙ってから、机の脇に置いてあった木の板を引き寄せた。家にあった古い棚板の切れ端で、表面にいくつもの傷が残っている。父の作業メモ用だった。
父は炭の細い棒を持って、その板の表面に何かを描き始めた。
◇◇◇
最初は、ただの設計図だった。
四角い枠が四つ。それを横に並べて、上に長い軸を一本通す。歯車を表す小さな円を、枠の中に書き込んでいく。父の手は迷いなく動いていた。
(——四桁の加算機の構想図)
頭の中で父の描いている図が読めた。さっき組んだ全加算器を四つ並べて、下の桁から上の桁へ繰り上がりを伝える鎖になる構造。前世の言葉なら『リップルキャリー加算器』。
この構想を本当に組むには、いまの小箱の歯車では全然足りない。グスタフ親方にもう一度頼んで、精密歯車を追加で何十個か調達してもらう必要がある——頭の隅でそろばんを弾いた。
父がそれを直感的に描いていることに、驚いた。説明していないのに。
——だけど、わたしの息が止まったのは、その後だった。
父の炭の棒は、設計図の余白にすっと動いた。
そこに、何かを描いた。
円。中央に小さな点。点から外側へ放射状に伸びる細い線が四本。その線の先端に、それぞれ小さな印が付いている。
(——なに、これ)
胸の奥で、何かがざわついた。
その図形は、わたしが知っている。
ヴェルティス系の魔法陣の中央構造によく出てくる、『分岐の根』と呼んでもいい記号。四本の線は四つの引数を表していて、中央の点は関数の本体を意味する。前世のプログラマーが書く木構造図に、形がよく似ている。
(——お父さんが、なぜこれを描いている)
父の手は止まらなかった。
円の外側に、もう一つ円を重ねた。二重円。さらにその外側に、波線が一周。
(——これ、ベシリアの外周じゃない)
エマが朝食前に詠唱する着火の魔法、その魔法陣の外周——『ヴェルティス系』への接続を示す装飾。村の祭司エルナが書く魔法陣にも同じ形が見られる。
父はそれを、ただの設計図の余白に、自分の手で描いていた。
「お父さん」
声を出すまでに少し間が空いた。
「ん」
「その、丸いの、なに?」
父は炭の棒を止めて、木の板を見下ろした。それから、ふんと短く息を吐いた。
「分からん」
「分からない?」
「描きながら、いつも勝手に手が動く。意味は、ない」
父は何でもないことのように言った。
(——いつも?)
(——いつも、描いている?)
息が浅くなった。
頭の奥で、何かが繋がりかけていた。
萌の月の半ばに、父が言った言葉。
——『俺も、若い頃に夢で、何度も歯車の噛み合わせを見た』
夢で。何度も。歯車を。
そして今。父は機械の設計図の隣に、無意識に魔法陣の輪郭を描いていた。本人は『意味はない』と言って、気にもしていない。
(——お父さんは、たぶん、見えている)
(——本人が、それと気付かないだけで)
胸の奥で、冷たいような熱いような感覚がぶつかった。
問いかけたい。でも、問いかけてはいけない。
父は『意味はない』と言った。それは父の生き方だった。気付かないまま、見えるものを見ている。それが、たぶん父の安らぎでもあった。
(——わたしが言葉にしたら、お父さんの安らぎが壊れる)
口を閉じた。
「お父さん」
「ん」
「明日も、続き、やる?」
「ああ」
父は炭の棒を置いた。木の板の上で四桁の加算機の設計図と、無意識に描かれた魔法陣の輪郭が、夕陽の光の中で並んでいた。
「お前は、本当に不思議な子だ」
父が今日、はじめてわたしの方を見た。
「うん」
それだけ答えた。
工房の窓の外で、秋の風が一度、強く吹いた。
■あとがき・解説
第49話は、リナが二つ目の半加算器を組み、OR ゲートを足して、ついに「全加算器」を完成させた回でした。1+1=10(二進数)が机の上で動いた瞬間、そして父アルベルトが設計図の余白に無意識に描いた小さな円。今回は組み上がった回路の話と、父の「手癖」について、ゆるく解説していきます。
■この話で出てきた言葉
■「OR ゲート」——どちらかが動けば、出力も動く
リナが午後の作業で組み上げたのが OR ゲートでした。
AND が「AとBの両方が動いたとき」だけ出力が動くのに対して、OR は「AかBのどちらかが動けば」出力が動きます。両方動いても、もちろん動き続けます。XOR との違いは、両方動いたときの挙動。XOR は打ち消し合って止まり、OR は動き続ける。似ているようで、用途はまったく違います。
リナがこれを必要としたのは、全加算器の中で「二つの繰り上がり」を一本にまとめるためでした。一段目から出る繰り上がりと、二段目から出る繰り上がり。どちらか片方でも立っていれば、上の桁へ「一」を送らなくてはならない。「どちらかが動けば動く」という OR の振る舞いが、ぴたりとはまる場所です。
■「全加算器」——三つの入力を、一桁ぶん足す
半加算器を二つと OR を一つ組み合わせると、「全加算器」になります。Full Adder。
何が「半」と違うかというと、入力の数です。半加算器は AとB の二つしか受け取れません。けれど二桁目以降の加算では、AとB に加えて「下の桁から繰り上がってきた一」も受け取らないといけない。入力が三つになるのです。
リナが組んだ構造はシンプルで、まず一段目の半加算器が AとB を加算する。その出力(和の下位)に、下から来た繰り上がりを二段目の半加算器でもう一度加算する。最後に二つの繰り上がりを OR でまとめて、上の桁へ送る。この三層構造で、桁をいくつでも繋げられるようになります。
机の上で 1+1 が「10」と出た瞬間、リナの胸の中で熱が立ち上がります。たった二桁の数字ですが、これが千桁、一万桁と並べば、前世のコンピュータと同じ計算ができる。第一歩としては、本当に大きな一歩でした。
■「論理ゲートの三兄弟」——AND、OR、NOT
ここまでで AND、OR、XOR が出揃いました。実は論理回路の世界で「基本」と呼ばれるのは AND、OR、NOT の三つで、XOR はそれらを組み合わせて作られる派生形です。
NOT は「入力を反転させる」ゲートで、入ってきた一を〇に、〇を一にして返します。リナの加算機ではまだ出番がありませんが、この三つさえあれば、原理的にはあらゆる論理的な判断回路が作れます。前世のコンピュータの中身も、突き詰めれば、この三種類の組み合わせでできているのです。
■父の「手癖」のこと
最後の場面で、父アルベルトが設計図の余白に円や二重円や波線を描いていた、あの場面。本人は「描きながら、いつも勝手に手が動く。意味は、ない」と言いました。
リナの胸がざわついたのは、その図形に見覚えがあったからでした。けれど父は気付かない。気付かないまま、そこに何かを置いている。リナはそれを口に出すのを抑えて、「お父さんの安らぎ」を壊さないように、そっと胸の奥に畳みます。
寡黙な職人の手の中で起きていた小さな事象。今は、それだけが机の上に残っています。
次の話もお楽しみに。




