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

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

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

エラーが発生しました。

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

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

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

PR
6/211

第6話 試行

翌朝、わたしはまだ夜が明け切らないうちに目を開けた。


眠れなかった。

正確には、眠ろうとしたけれど無理だった。


毛布の中でわたしはずっと頭の中でぐるぐる回し続けていた。

ぜんまいがほどける動き。振り子の規則的な揺れ。母エマの「ベシリア」の瞬間に浮かんだ、あの模様。


(あれはたぶん、条件分岐みたいな形だった。決めつけるなって思いつつも、頭の中ではもう線が引かれていた。

それからぜんまいから振り子への動力伝達は、たぶん力が一段ずつ受け渡されていく仕組みに近い。

振り子の周期が何かの基準になる揺れになっていて、それを歯車比で動きを細かく分ける仕組みに通している気がする)


(——周期を分けてる気がする)


(分周っぽい。たぶん、揺れの数を間引いている……!)


頭の中で勝手に英語まじりの言葉がこぼれそうになる。


「ぶ、分ける」


声に出して慌てて両手で口を覆った。

隣で寝ている妹ノラが寝返りを打った。


(危ない。誰かに聞かれたら、変な子だと思われる)


——変な子。


たぶんもう思われてる。

だけどそれでも、口に出してしまいたい衝動を抑えるのが辛い。


確かめないと無理だった。

確かめないままでは、たぶん眠れない。


寝床からもぞもぞと這い出した。

両手が震えていた。

八歳児の身体が何かに取り憑かれているみたいに勝手に動いていた。


◇◇◇


朝食が終わって母エマが井戸へ水を汲みに行った隙に、わたしは台所に忍び込んだ。


(……来た)


竈の脇にいつも置いてある黒い魔石。エマが「ベシリア」と詠唱して火を点ける、あれだ。


わたしは小さな手をその石にそっと伸ばした。


ひんやりとした感触。

祭司エルナの教会で触れた、あの透明な結晶ほど奇妙な冷たさではない。普通の磨かれた石の冷たさ。


「……ベシリア」


声に出してみた。

細く澄んだ八歳児の声で。


——何も起きなかった。


石は光らない。模様も浮かばない。

わたしの手のひらと石の間に、何の反応もない。


(知ってた。知ってた。知ってた)


頭の中で自分を押さえつける。


魔力がないのだ。

「魔力なき者」とは、そういうことだ。


それを確かめに来たわけじゃない。

わたしが確かめたいのは——


(よく見るんだ)


頭の中で自分に言い聞かせる。


——もしわたしに、あの「模様」を読む力が本当にあるのなら。


石の表面をゆっくりと辿るように視線を動かす。

何もない。

ただの黒い石。


(……)


落胆しかけた、その瞬間。


母エマが台所に戻ってきた音がした。

わたしは慌てて石から手を引いて椅子の方へ走った。


「リナ、何してたの?」


エマが桶を抱えながらわたしを見た。


「ううん、何も。お母さん、お水汲んできたの?」


「ええ。あら、火が消えてるわね。点けるわね」


エマは桶を置いて、わたしが触れていたあの黒い石に軽く指を当てた。


「ベシリア」


——その瞬間。


石の表面にぼんやりとした模様が浮かんだ。

赤い光が薄く灯った。

薪にぽっと火がついた。


それだけのこと。


エマにとっては毎朝の、当たり前の動作。


だけどわたしの目は、その模様を確かに捉えていた。


(——あった——!)


息が止まりかけた。

目の奥が急に熱くなった。

八歳児の身体の心臓が、激しい音を立てた。


確かに見えた。

線と線が交わる、規則的な形。

中央に大きな図形があって、その周りを小さな形がいくつも囲んでいる。

中央のは、繰り返しを意味する記号にも見える。

周りのは、条件分岐の形にも見える。

そして外側に向かう矢印は、たぶん結果を返す向きを示している——のかもしれない。


(——前世のあの記法に似てる気がする)


(まだ決めつけるな。何回も見て確かめないと)


頭の中で何かが繋がっていった。


何かを「動かす」ための手順書。

入力は、エマの指から流れる魔力。

そして内部に判定の式のようなもの——「もし対象が燃えるもので、かつ乾いていれば火をつける。そうでなければ何もしない」とでも読めそうな形。


それはちょうど、前世で何度も書いた何かに、似ている気がした。

括弧が入れ子になって、また入れ子になる——ような。


でも、模様はもう消えていた。エマの指が離れた瞬間に、すっと。

頭の中に焼きついた断片を、必死に並べ直してみる。


```ヴェルティス

( ?

 ( ?

  ( ? … )

   ……

```


そこまでで、途切れた。

記号の意味は、何ひとつ読めない。形だって、半分は曖昧なまま。

それでも——いちばん外の、括弧の入れ子の癖。あれだけは、前世のあの言語に似ている気がした。


(——枝分かれの形に見える)


頭の中で声が出た。


前世で、書かれた手順を解析するときに似たような図を描いた覚えがある。

ベシリアの模様を見たとき、視覚的にその構造が枝分かれして見えていた——気がする。


(うわ、うわ、うわ)


両手がまた震えていた。

頭の中で次々と前世の単語が立ち上がるのに、口がそれを追えない。

前世の言葉をこの世界の声で発するのは、なぜかいつもどこかぎこちなくて、「えだ」と呟くだけで精一杯だった。

火がついた薪を見ながら、わたしは頭の中で何度もその模様を反芻していた。

すでに消えてしまった一瞬の光景を、頭の中で再生していた。

何度も。

何度も。


繰り返しの中で枝分かれがあって、その枝分かれの中で出力先が決まっていそうに見えた。

入力はたぶん、エマの指から流れた魔力。

出力は薪への着火。


(……これ)


(まだ早いけど、たぶん解析できる)


(これはたぶん、書けるようになる)


胸の奥がもう、抑えられないくらい熱くなっていた。


「リナ?」


エマが振り返ってわたしを見た。


「あなた、顔、真っ赤よ」


「ちょ、ちょっと暑いだけ、お母さん」


「もう。すぐ外に出るのに、暖炉のそばに近づきすぎたんでしょ。ほら、上着着なさい」


エマが笑った。

わたしは必死に表情を整えた。


——たぶん、上手くできていなかった。


◇◇◇


その日の午後、わたしはもう一度こっそり台所に戻った。

エマは織物の道具を、隣の部屋に運び込んでいる。

父は工房だ。


わたしは黒い石の前に立った。


そしてもう一度、自分の手のひらで石を握りしめた。


「ベシリア」


囁くように詠唱を再現してみた。


——何も起きない。


「ベシリア!」


少しだけ声を強くしてみる。


何も起きない。


「ベシリア。ベシリア。ベシリア」


何度繰り返しても石は無反応だった。


「ベシリア。ベシリア。ベシリア。ベシリア。ベシリア。ベシリア。ベシリア。ベシリア。ベシリア」


止まれなかった。

分かっていた。これじゃ何も起きないって、もう頭では分かっていた。


それでも口から止まらなかった。

それはまるで——前世で答えが分かっているバグを何度も同じ手順で再現してしまう、あの感覚に似ていた。


(止まれ、わたし)


(——でも止まらない)


何度目かの「ベシリア」のあと、わたしはようやく口を閉じることができた。


息が荒くなっていた。

八歳児の胸が上下していた。


(……落ち着け)


(落ち着いてもう一度、整理しろ)


頭の中で自分に何度も言い聞かせた。


——エマが詠唱したとき、模様は自然と浮かんだ。

——わたしが詠唱しても、模様は浮かばない。


つまり詠唱は、模様(魔法陣)を呼び出すための「キー」だ。

そしてそのキーが反応するためには、何か——たぶん「魔力」という燃料が必要なんだ。


(模様は書かれている。

だけどわたしには、それを「実行する」何かがない)


——あの黒い石。


エマが触れたとき、石はぼうっと模様を浮かべた。

わたしが触れても、何も起きなかった。


つまりあの石は、書かれた模様を「実行する」役目を持っているのだ。

書かれているだけでは、何も起きない。

それを一行ずつ「読んで」「その通りに動かす」何かが要る——たぶん、あの黒い石がその役目を担っている。


でも、それだけじゃ足りないらしい。


エマの指から黒い石へ、何かが流れたはずだ。

それは見えなかったけれど、流れていたはずだ。

だから模様が浮かんで、火がついた。


——魔力でんりょく


前世で言う「電気」みたいなものかもしれない。

どんなに精巧な道具でも、燃料がなければ動かない。

あの石を「動かす」ための燃料が、たぶん魔力なのだ。


(……つまりあの石が、わたしの代わりに「実行する」役目を持っている。

魔力はその燃料。

詠唱は「動かしはじめろ」という合図。

そして模様は——書きつけられた「やるべきことの一覧」)


(わたしには書きつけられた模様を「読む」ことができても、あの石を動かす「魔力」がない。

だから「動かす」ことができない)


——それが答え、なのかもしれない。


わたしは自分の小さな手のひらを見つめた。


魔力なき者。

エマと同じ詠唱を口にしても何も起こせない、わたし。


(……でも)


頭の中で何かがぐつぐつ煮立っている。


(でも読めるなら——)


ばらばらに思考が踊り出した。


(——模様を書く側に回ればいい)


(——わたしの代わりに誰かに動かしてもらえばいい)


(——あるいは機械を作って自動で動かせればいい)


頭の中で十も二十も可能性が湧き出してきた。


それはもう止まらなかった。


「読める」


声に出してみた。


「読める。でも動かせない」


繰り返した。


「読める、読める、読める……!」


途中からほとんど呪文みたいになっていた。


——でも止められなかった。


胸の奥が熱くて熱くて、堪らなかった。


これはたぶん、わたしが本当に生まれて初めて出会った——


——書きたいもの。


階下からエマの呼ぶ声が聞こえた。


「リナ、何やってるのー?」


わたしは慌てて石から手を離した。


「な、何も、お母さん」


「変な子ね、本当に」


階段の下から聞こえるエマの笑い声。


わたしは息を整えながらもう一度だけ振り返った。


何の変哲もない黒い石。

誰もが当たり前のように毎日使っている生活魔法の触媒。


その小さな石が今は、わたしにとって世界で一番興味深いものに見えていた。


そしてそれはたぶん——


(まだ、序の口、なんだ)


そう思った瞬間にわたしは初めてふっと笑った。


魔力がなくたって別の手段がある。

今ここから、わたしの新しい人生が始まる。


うっかり家族にバレないようにしないと——

そう思いながら、わたしは台所を後にした。


頭の中ではまだ、薄れていく魔法陣の残像が何度も何度も再生されていた。


■あとがき・解説


リナがついに「魔法陣の中身」を読み解き始めた回でした。前世の知識がここで一気に表へ出てきます。今回は、リナの頭の中で点滅していた専門用語をいくつかご紹介します。


■この話で出てきた言葉


■「AST(抽象構文木)」


ASTは「Abstract Syntax Tree」の略で、日本語では「抽象構文木」と呼ばれます。プログラムというのは、人間が読むときは「文字の並び」ですが、コンピュータが理解するときには「木の形」に分解されます。たとえば「もしAならBする、そうでなければCする」という文は、「もし」を幹にして「条件」「Bの処理」「Cの処理」が枝のように生えている木として表現されます。リナが魔法陣を見たとき、中央に大きな図形があり、その周りに小さな図形が枝のように繋がって見えました。それがまさにASTの形だったのです。


■「if 文(条件分岐)」


if文は、プログラミングで「もし~なら」を表す書き方です。たとえば「もし雨が降っていたら傘を持っていく、降っていなければ持っていかない」のような判断を、コンピュータにさせるための仕組みです。あらゆるプログラミング言語に必ず存在する、最も基本的な道具のひとつです。第6話でリナが「ベシリア」の魔法陣の中に見たのも、この条件分岐の構造でした。「もし対象が乾いていれば火をつける、そうでなければ何もしない」という判定が、図形として浮かんでいたわけです。


■「ループ(繰り返し処理)」


ループは「同じ処理を何度も繰り返す」ための仕組みです。たとえば「100個のリンゴを一つずつ箱に入れる」とき、人間なら「箱に入れる」を100回繰り返しますが、プログラムでもそれを「ループ」という命令で書きます。リナが見た魔法陣の中央にあった「繰り返しを意味する記号」は、このループにあたります。条件分岐とループ。この二つさえあれば、コンピュータはほとんどあらゆる処理を表現できます。


リナがこの一瞬で見抜いたのは「魔法は確かにコードである」という事実でした。読めるけれど動かせない――この絶望と歓喜が同居した状態が、彼女の新しい人生の出発点になります。


次の話もお楽しみに。


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

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

↑ページトップへ