第57話 動く言葉
穣の月十四日の朝、わたしは父の工房に向かった。
外に出た瞬間、空気が一段だけ冷えていた。秋が深まる匂いがした。麦の刈り入れの跡には、朝露が薄く光っていた。
工房の扉を押し開けると、父はもう作業台に向かっていた。机の上には昨日まで作っていた読み取り装置と、その隣に数表生成機が置かれていた。二台の機械の間には、まだ何の繋がりもなかった。
「お父さん、おはよう」
「ああ」
机のこちら側に座って、二台の機械をじっと見つめた。
読み取り装置の出力——針が浮いた時に動く歯車。
数表生成機の入力——AとBの歯車。
(——この二つを、繋ぐ)
頭の中で配線を組み立てた。
読み取り装置の歯車を、細い軸を介して、数表生成機の入力Aに繋ぐ。布の一目を読み取るたびに、桁送りカムが回って、入力Aの『書き込み先の桁』が一つずれていく。藍色の目なら、その桁に『一』が立つ。生成色の目なら、その桁は『〇』のまま。
入力Bは、別の細い軸で固定値『一』を入れる。前回の数表生成機の改造と同じ仕組み。
布から読み取られる『一』『〇』が、Aの値の桁に対応する。布の左端は低い桁として読み、四目分が計算機の四桁分になる。
「お父さん、二つを繋ぎたい」
父はドライバーを置いて、こちらの机を覗き込んだ。机の上の構想を、わたしが指差した。
「読み取り装置の出力を、こっちの入力に流すんだ」
「ああ」
「軸が二本、要る」
父は黙って椅子から立ち上がって、引き出しから細い軸を二本取ってきた。
それから、椅子に戻ると、わたしの隣で工具を構えた。
「やるか」
「うん」
◇◇◇
午前中いっぱい使って、二台の機械を繋いだ。
読み取り装置と数表生成機の高さがわずかに違ったので、間に小さな台を挟んで揃えた。軸の長さは父が削って調整した。歯車の噛み合わせは何度も試して、滑らかに動くようになるまで詰めた。
昼の少し前に、配線が完成した。
机の上には、二台の機械を一本の細い軸が繋いだ、一台の大きな装置が置かれていた。読み取り装置の入り口に布を差し込めるようになっていて、出口側で数表生成機の入力Aが待っている。
「お父さん、見て」
父が机のこちら側に椅子を回した。
「これが、布を読んで、計算する機械」
父が短く頷いた。
父は黙って装置を眺めていた。
机の隅から、エマが織ってくれた最初の試作布を取った。藍色の目が二つ、生成色の目が二つ。表現は『一・一・〇・〇』。
(——前世なら、二進数の『1100』、つまり 12)
(——ただし、布は左から読むと一一〇〇だけど、機械の入力には低い桁から順番に入る)
(——だから読み終わった後、機械の中では〇〇一一として並ぶ)
「やってみる」
布を読み取り装置のローラーに挟んだ。
針を布の上に置いた。
ローラーを手で回した。
布が一目分、手前に動いた。
藍色の目が、針の下に来た。針が浮いた。桁送りカムが一段、回った。
細い軸を伝って、数表生成機の一桁目に『一』が書き込まれた。
——ガコッ。
数表生成機の一桁目が、立ち上がった。
二目目。藍色。針が浮いた。桁送りカムがもう一段、回った。
数表生成機の二桁目に『一』が書き込まれた。
三目目。生成色。針はそのまま。桁送りカムは次の桁へ送られたが、書き込みは入らない。三桁目は『〇』のまま。
四目目。生成色。同じく。四桁目も『〇』のまま。
布が全部読み終わると、数表生成機の入力Aには『〇〇一一』が入っていた。
(——前世なら、3)
「お父さん、Aに『〇〇一一』が入った」
「数表生成機を、動かすのか」
「うん」
数表生成機のハンドルに手を添えた。
回した。
歯車が動き始めた。一桁目、二桁目、三桁目、四桁目。
出力の桁が、ぴたりと止まった。
『〇一〇〇』。
(——3 + 1 = 4。二進数で『100』)
「動いた」
声が漏れた。
胸の奥で、熱が一気に立ち上がった。
◇◇◇
「リナ」
父が低い声で言った。
「うん」
「これは、何を意味するんだ」
少し迷ってから、答えた。
「お母さんの織った布に、計算が書かれてた」
「ああ」
「機械が、その布から数と命令を読み取って、決められた計算をした」
父が黙って続きを促した。
「だから、わたしが布を変えれば、別の計算ができる。布を変えるだけで、機械の動きが変わる」
父はしばらく黙った。
「布が、機械への指示書になるのか」
「そう」
「お母さんの織機で作った指示書を、機械が読む」
深く頷いた。
父はもう一度、装置を眺めた。
「……これは、ただの道具ではないな」
それだけ言って、父はドライバーをまた手に取った。
それだけだった。けれど、父が「道具ではない」と口にするのは、年に一度あるかないかの稀少な評価だった。グスタフが「凄い」と言うのと同じ重みだった。
◇◇◇
午後、エマが工房の戸口に来た。
「リナ、お父さん。お茶を持ってきたわよ」
机の脇に湯気の立つ椀を二つ置いた。エマの目が、机の上の装置に止まった。
「リナ、これが——」
「そう。お母さんの布を、機械が読んでる」
エマが少しだけ近づいた。机の前で立ち止まって、装置と布を見比べた。
「動かして、いい?」
「もちろん」
エマが、ローラーの取っ手に手を伸ばした。少しだけ躊躇ってから、回した。
布が一目分、動いた。
針が藍色の目で浮いた。歯車が回った。
エマがもう一度、ローラーを回した。
針がまた藍色の目で浮いた。歯車がまた回った。
エマが、ふっと笑った。
「わたしの織った藍色の目が、機械の入り口で『一』に変わるのね」
「うん」
「面白い」
エマは何度かローラーを回して、布の最後まで読ませた。それから、数表生成機のハンドルに手を伸ばした。けれど、最後の瞬間で手を引いた。
「これは、リナが回したほうがいいかしら」
「お母さん、回していいよ」
「いいの?」
「ぜひ」
エマがハンドルを握って、ゆっくり回した。
数表生成機の中で歯車が回り始めた。エマの手の動きが、四桁の計算を実行していた。
出力が止まった瞬間、エマの表情がふわりと緩んだ。
「これ、わたしと、リナと、お父さんで作ったってことね」
胸の奥で、何かが大きく揺れた。
「うん。三人で作った」
エマがわたしの頭を撫でた。冷たくて柔らかい手だった。
◇◇◇
夕方エマが家に戻った後、わたしは工房の隅で装置を眺めていた。
(——人が、ローラーを回している)
(——人が、ハンドルを回している)
(——ここに人の手を加えなくていい仕組みを足せば、機械は本当に独り立ちする)
頭の中で、父が前に言ってくれた言葉が立ち上がった。
——『ぜんまいだ』。
ぜんまいを巻いて、その力で布を送るローラーを回す。同じぜんまい、または別のぜんまいで、数表生成機のハンドルを回す。
一度ぜんまいを巻いて手を離せば、機械は布の最後まで自動で読み取って、自動で計算する。
(——でも、それは、もう少し先でいい)
(——今は、ここまでで、十分だ)
今日できたことは、『布を機械の指示書として使えること』を示せた、ということ。あとはぜんまいを足すだけで、本当の自動化に届く。原理は、もう、ここに揃っている。
机の上の装置を、もう一度ゆっくり眺めた。
読み取り装置と数表生成機が、一本の細い軸で繋がっていた。藍色の目と生成色の目が並んだ布が、その入り口に静かに垂れていた。
(——これで、機械が独り立ちする)
(——人の手が要らない計算機の、最初の姿)
父がドライバーを置いて、わたしの隣に椅子を回してきた。
「リナ」
「うん」
「明日は、何をするんだ」
「ぜんまいを、足したい」
「ふん」
「全部、ひとりでに動くようにしたい」
父は短く息を吐いた。
「やってみい」
それだけ言って、父は立ち上がった。
工房の窓の外で、穣の月の風が、機械の上で吹いていた。
■あとがき・解説
第57話は、独立して机に並んでいた読み取り装置と数表生成機を、リナと父が一本の細い軸で繋ぎ合わせる回でした。布から読み取られた一が、軸を伝って計算機の入力に流れ、計算結果が出力に立ち上がる。父が「これは、すごいことだ」と稀少な評価をくれて、エマも最後のハンドル一回りを担当します。今回はその「繋ぐ」という仕事について、ゆるく解説していきます。
■この話で出てきた言葉
■「コンポーネント統合」——別々に作ったものを、一つの動きに繋ぐ
リナがこの話でやったのは、それぞれ別の机仕事として育ってきた二つの装置を、一台の機械として繋ぎ合わせる作業でした。前世の言葉でいうと「コンポーネント統合」あたりが近いでしょうか。
ソフトウェアでも機械でも、複雑な仕組みは普通、いきなり一つの巨大な塊として作るのではなくて、役割ごとに分けた部品として別々に作り、最後にそれらを連結します。それぞれの部品は単独でも動くことが確認されていて、繋いだ時に「ちゃんと噛み合うか」だけを別途検証する。こうしておくと、どこかでおかしくなった時に、原因を部品単位で切り分けやすくなります。
リナと父は、読み取り装置を前回、数表生成機をその前の章で、それぞれ独立に組み上げてきました。今回はその二つを「軸の長さと歯車の噛み合わせ」だけで結びました。それぞれが単独で動くことが分かっていたから、統合の作業は半日で済んだのです。
■「パイプライン」——前の出力が、次の入力になる
布の上の藍が、針を浮かせる。針が浮くと、歯車が回る。歯車が回ると、軸が動く。軸の動きが、数表生成機の入力Aを進める。Aが変わると、計算が走る。計算結果が、出力の桁に立ち上がる。
この「前の段の出力が、次の段の入力にそのまま流れていく」連なり方を、前世の言葉では「パイプライン」と呼びます。水道管をいくつも繋いだような構造で、上流から下流へ、止まらずに一方向に流れていく。
パイプラインの良いところは、各段の役割がはっきり分かれることです。読み取りの段は読み取りだけに集中する。計算の段は計算だけに集中する。間の翻訳は軸が担う。それぞれが自分の仕事だけをやっていれば、全体としては大きな仕事が滑らかに進む。前世の工場のベルトコンベアも、現代のコンピュータの中の処理もこの考え方の延長線上にあります。
■「プログラム実行」——指示書を、機械が一行ずつ読んで動く
エマが織った布の上には『1100』という二進数の四桁が並んでいました。ただし、機械は布を低位桁から順に読み込みます。布の上では左から『1・1・0・0』に見えても、機械の中では低位桁から並んだ『0011』として書き込まれていく。リナが布を装置にセットしてローラーを回すと、機械は布の一目分を読むたびに歯車を一段進め、四目を読み終えた瞬間に「Aの値が3になった」状態が確定します。そこからハンドル(あとでぜんまいになる側)が回ると、計算が走って結果が出ます。
これが前世の言葉でいう「プログラム実行」のいちばん素朴な姿でした。指示書を機械が一行ずつ読んで、書かれた通りに動く。間違っていなければ、決められた結果が必ず出る。間違っていれば、その通りに間違った結果が出る。
「布が、機械への指示書になるのか」という父の確認の言葉は、職人の側から見たプログラム実行の定義そのものでした。リナの世界の機械は、ここでようやく「指示書を受け取る側の機械」として成立し始めます。
エマが最後のハンドルを回した時、「これ、わたしと、リナと、お父さんで作ったってことね」という呟きが胸を打ちました。三人で作ったという実感は、装置がちゃんと最後まで動いてくれたから生まれた言葉でした。次の話もお楽しみに。




