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

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

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

エラーが発生しました。

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

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

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

PR
57/211

第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になった」状態が確定します。そこからハンドル(あとでぜんまいになる側)が回ると、計算が走って結果が出ます。


これが前世の言葉でいう「プログラム実行」のいちばん素朴な姿でした。指示書プログラムを機械が一行ずつ読んで、書かれた通りに動く。間違っていなければ、決められた結果が必ず出る。間違っていれば、その通りに間違った結果が出る。


「布が、機械への指示書になるのか」という父の確認の言葉は、職人の側から見たプログラム実行の定義そのものでした。リナの世界の機械は、ここでようやく「指示書を受け取る側の機械」として成立し始めます。


エマが最後のハンドルを回した時、「これ、わたしと、リナと、お父さんで作ったってことね」という呟きが胸を打ちました。三人で作ったという実感は、装置がちゃんと最後まで動いてくれたから生まれた言葉でした。次の話もお楽しみに。


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

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

↑ページトップへ