表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
魔力ゼロですが、魔法はぜんぶコードなので問題ありません 〜前世プログラマーの少女、キーボードで異世界をデバッグする〜  作者: せい | 健康優良不良プログラマ
第1部 ③村を変える小さな発明

この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

PR
49/211

第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 は「入力を反転させる」ゲートで、入ってきた一を〇に、〇を一にして返します。リナの加算機ではまだ出番がありませんが、この三つさえあれば、原理的にはあらゆる論理的な判断回路が作れます。前世のコンピュータの中身も、突き詰めれば、この三種類の組み合わせでできているのです。


■父の「手癖」のこと


最後の場面で、父アルベルトが設計図の余白に円や二重円や波線を描いていた、あの場面。本人は「描きながら、いつも勝手に手が動く。意味は、ない」と言いました。


リナの胸がざわついたのは、その図形に見覚えがあったからでした。けれど父は気付かない。気付かないまま、そこに何かを置いている。リナはそれを口に出すのを抑えて、「お父さんの安らぎ」を壊さないように、そっと胸の奥に畳みます。


寡黙な職人の手の中で起きていた小さな事象。今は、それだけが机の上に残っています。


次の話もお楽しみに。


評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ