第2話
はっと気づいたとき、奈都の体は温かいものに包まれてやさしく揺らされていた。
「▽●◇◎→□▲○←dafni」
目を開けたとき、すぐ目の前には優しい笑顔が奈都を見つめていた。
『お、にいさま?』
直感的に、これは兄だと思った。言葉が分からないので何を言っているのか分からないが、きれいな声だと思った。
「◆○●△□dafni◎→○▲」
兄は目の覚めた奈都をベッドに戻して、何かを言いながら部屋を出て行った。それに寂しい思いを感じて手を伸ばしたが、しばらくするといつものお世話をしてくれる人たちが入ってきた。どうやら、目が覚めたことで人を呼んできてくれたらしい。
――……お腹空いたですな。
風邪が治まって熱が引いてきたせいか急に空腹を感じ始めたので、奈都はとりあえず兄のことは忘れておっぱいを飲むことに専念したのだった。……もう、巨乳どうかを気にしたりはしなかった。
それからしばらくして、奈都は自分の名前が「ダフニ」であることを知った。兄が掛けてくれた言葉の中でその部分が特に耳に残っていて、他の人の話す言葉にも同じ音が出てくるのに気づいたのだ。
――はぁ。また、お兄さまに会いたいですな。そして、あの温かい胸にもう一度抱かれたいです。
単語を一つ覚えてからは手がかりを掴めたのか言語の習得も少し楽に感じるようになった。それに、今度兄と会った時には自分の言葉で話したいという思いもあって、言語習得により身が入るようになったというのも大きかった。
それから、暗算の件でも新しい発見があった。プログラムっぽいものを思い浮かべると、その結果が頭にひらめくことがあるのだ。
> a := 258 + (23 * 5) - 87
> a / 26
みたいな変数を含む式を頭で考えると
11
という数字が即座に頭に浮かんでくる。それだけではなく
> sin(1.0)
0.84147098480...
のように数学関数も評価できる。しかも、小数部分は意識すればどれだけ小さな桁の数字でも思い浮かんでくる。ただ、その数字が正しいのかどうかを確認する方法は相変わらずないのだけれど。
ただ、こういうプログラムは結果がひらめくことはなかった。
> sum := 0
> for i := 1; i <= 10; i++ {
> sum += i
> }
> sum
ちなみに、これは1から10までの数字を足し合わせるというプログラムだ。結果は55である。
――こ、これは、サヴァン症候群というやつですかな。
サヴァン症候群というのは記憶能力や計算能力などの特定の分野だけが天才的な能力を発揮する症状で、しばしば知的障害や発達障害を併発することで知られている。映画「レインマン」で有名な現象だ。
奈都の、今は生まれ変わってダフニだが、その計算能力はサヴァン症候群を彷彿とさせるものだった。サヴァン症候群の人が同じように頭の中でプログラムを実行できるのかどうかは分からないが。
それからダフニは、言語の習得と脳内プログラムの調査、さらに運動を兼ねた散歩という名の社会見学に時間を費やすようになったのだ。そして、そんな日々を続けるうちにいつの間にかダフニは3歳になっていた。
「ダフニくん」
「はいですな、マヤさん」
「そっちは階段ですから気を付けてください」
「分かっているですな」
「……本当、3歳とは思えないくらいしっかりしていらっしゃいますわ」
マヤさんというのはダフニの乳母だ。まだ自分が女だと思っていたころに好んでおっぱいを飲んでいた人で、母が家をよく空けるのでいつも代わりに世話をしてくれている。と言っても、日常的なことはメイドさんたちが主に片づけてくれていて、基本的に遊び相手になってくれるだけなのだが。
そう、ダフニの屋敷には住み込みのメイドがいるのだ。それも一人や二人ではない。なぜそんなことになっているのかというと、実はそれはダフニが王族だからなのだった。
テオドル=オスティアというのがダフニが生まれた国の現在の王様で、ダフニの父ということらしい。いつも王宮の方に住んでいてダフニと会うのは月に1回くらいしかないのであまり父という実感はなかった。
ダフニはその父の5番目の王子ということのようだ。ちなみに、あの風邪の時に会った兄はやはり本当の兄で1番目の王子なのだそうだ。名前はレオ。あの時は次にいつ会えるのかと心配していたが、その心配は全くの杞憂でその後最低でも週1度は会って遊んでもらっている。
その反面、2番目から4番目の王子とはこれまで会ったことがない。レオ以外の王子は異母兄弟ということらしく、交流はないのだ。妻が何人もいるというのはさすが王様ということなのだろうか。最近の王族は側室を取らないかと思っていたが、この世界では違うようだ。
ダフニがこの世界で最初に魔法のことを認識したのは絵本の中でのことだった。どの絵本を見ても必ずどこかに魔法のことが書かれていて、初めは単に魔法の好きな家庭なんだなと思っていたのだが、よくよく周囲を観察していると日常生活のいろいろなところで科学とは異なる技術が使われているらしいことに気づいたのだ。
――ちょ、これは異世界転生というやつではないですかな?
ワクテカしてマヤに聞いたところ、ダフニの場合、魔法は3歳になったら専門の教室に通って勉強することになっているのだそうだ。なんでも国で一番有名な幼児魔法教室の室長先生が直々に教えてくれるということで、普通なら厳しい選抜試験を勝ち抜かなければ授業を受けることはできないところを特例で入れてもらえるらしい。
3歳から試験とか、どこの世界でも似たようなことはあるものだな、というのがダフニの率直な感想だった。
――そういうところにコネだけで入るってところもまたありがちな感じですな。まるで学閥とコネが有名な某私大の某小学校のようですな。ああ、そうすると私はなんとかボーイなのですかな。
魔法の話で思い出すのは、ダフニの頭の中で魔法のようにプログラムが実行できるという能力についてだが、それとなく周囲の人に確認したところではダフニ以外にできる人はいなさそうだった。たまたまいなかったのか、それともダフニだけ特別なのかは分からない。
実行できるプログラムの種類についてもいろいろ調べてみて分かったのは、実行の可否はプログラミング言語の種類には依らないらしいということだった。ダフニの知る範囲の言語ならどれでも実行できた。ただ、複数の言語を混ぜてそれっぽいものをでっち上げたときには実行できなかった。また、中身のよく分かっていない関数についても実行できなかった。
仮説としては、ダフニ自身が言語システムを理解しているかどうかがカギで、理解していれば実行できるし、そうでなければ実行できないということなのではないかと思われた。
それからもう一つ重要な点が判明した。副作用のあるプログラムは実行できないのだ。
> x := 1
> x += 2
> x
というプログラムは、最初に変数xを定義して1で初期化し、次にxに2を足して、最後にxの値を表示するというプログラムだが、実行できない。なぜならこのプログラムは途中で変数xの値が上書きされるからだ。こういう上書きのような操作をプログラミングでは「副作用」と呼ぶことがあるが、これがあるとどういうわけか実行できなくなるのだ。
前に試した次のプログラム。
> sum := 0
> for i := 1; i <= 10; i++ {
> sum += i
> }
> sum
これも、変数sumを上書きする副作用があるから実行できなかった。実行するには関数を定義して次のように書く必要がある。
> func sum(x int) int {
> if x == 1 {
> return 1
> }
> return x + sum(x - 1)
> }
> sum(10)
こういう制限のついた言語体系にダフニは心当たりがあった。むしろありすぎてそのことに気づいてからしばらくはニヤニヤが止まらなかったほどだ。
こんな風にプログラムから副作用を完全に排除するプログラミングを純粋関数型プログラミングと呼んで、それを前提として言語仕様から副作用を排除したものを純粋関数型プログラミング言語と呼ぶ。一部に熱烈なファンのいる言語パラダイムだが、ダフニも前世の奈都だったときにはそういうファンの1人だった。
純粋関数型言語はいくつか種類があるが、その中で一番有名で広く使われているものは
> fibs = 0 : 1 : add fibs tailfibs
> where
> _:tailfibs = fibs
> add (x:xs) (y:ys) = x+y : add xs ys
> fibs
[0, 1, 1, 2, 3, 5, ...]
これで1から10まで足し合わせるプログラムを書けばこうなる。
> sum [1..10]
> where
> sum [] = 0
> sum (x:xs) = x + sum xs
55
とにかく、ダフニはこれでようやく0歳のころから心を囚われていた問題に答えを出すことができたのだ。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます