真ん中の通路は、青一色であった。

通路の壁面、床、そして天井全てが、青い光を発する苔でびっしりと覆われていたのだ。

ガフンダルのこうもり傘による照明も、まったく不要なほどに明るい。しかしどう見ても不自然だ。青い光を発する苔が、自然発生的に群生したとはとうてい思えない程、隙なく均等に付着している。まるで、人為的に無理矢理壁の中に塗りこまれたかのようだ。さらに床は平坦で壁面も床からほぼ垂直に切り立っている。壁面と天井の角度もほぼ直角だ。要するにこの道は、長方形のパイプなのである。どう考えても自然にできたものではありえず、人の手が介在してできたものと思われた。

「すごいですねえ。これって自然にできたものではありえないですわね。幾何学的な美しさがあります」チョントゥーが、ため息をつきながら、誰に言うとでもなくそう呟いた。

「ワシも実はここに来たのは初めてなのじゃが、この通路はまさに建造物と呼んでよいじゃろうなあ。だが人類が造ったかどうかはわからんよ。古代の人類が、これほどの技術を持っていたとも思えぬ?もしかすると、人類以外の知的生命体が建造したのかもしれんよ。デラスカバリスカ山脈の南北を行き来しやすいように建造された秘密の抜け道というわけじゃな。しかしなぜそこに通行の障壁となる精霊たちを配置したのか。ふむ。それはやはり、その人外の者が、勝手に我々人類からこの道を秘匿するためなのだろうか。猿に便利なことを教え込むとろくなことにならんと言うわけか。いずれにせよ、なにやら浪漫を感じてしまうワイ」ガフンダルも、誰に言うとでもなく自問自答している。

「ま、誰が造ったのかなんて、この際関係ないわよ。歩きやすくていいじゃん。明るいし綺麗だし。でも、歩いても歩いてもおんなじ景色だから、なんか眠たくなってきちゃうわ」真紅は常に現実的であった。

そのような、益体もない会話を交わしつつ、ほぼまっすぐに続く道を10ノルゴルン(20分)ほど歩いた頃、前方に大きな扉が見えてきた。

「見よ!扉があるぞ。あれが、ひとつめの精霊がいる部屋への扉ではあるまいか!?」ガフンダルが扉をこうもり傘で指し示しながらそう叫んだ。

「健一郎殿、準備はよろしいかな。そろそろ出てきてくだされ」ガフンダルは、真紅が抱えているVAIOに向かって言った。

「パパ。そろそろ出てきてってさ。ねえパパってば」

「へい」VAIOから、全く生気のないくぐもった声が聞こえてきた。

「あれ、パパ。『呼ばれて飛び出てジャジャジャジャーン』って、いつものやつやらないの?」

「とてもそんな気分にはなれないよ。ルビイ。だって頭からバリバリだよ。バリバリ!」

「まだそんなこと気にしてんの。その時はその時でしょうが。頭からバリバリっと齧られそうになってから何か手を考えりゃいいのよ」真紅は平然と言ってのける。

「ルビイ。お前は日に日に、妙な方向へ逞しくなっていくなあ。これも全てガフンダル殿のおかげというやつか」

「コホン。健一郎殿。それは俗に言う皮肉かね。まあよい、そんなことを言っておる間に、扉の前に到着したぞ。これまたでかいな」

扉は、2枚並んだ両開き戸のようになっていた。高さと幅は、優に10ノルヤーン(10メートル)四方はありそうだ。

「どうやって開けるのじゃろうか、このドア。取っ手の如きものはついておらぬようじゃが・・・」ガフンダルがそう言って扉の前に立つと、扉の上部に付いているパトランプのようなものが光りだし、ピッピッピッピという甲高い電子音を鳴らし始めた。それと同時に、扉がゆっくりと横にスライドし、徐々に扉と扉の間の隙間が広くなっていく。

「ほう。自動ドアですよこれは。どこかに対人センサーでもついているのだろうか。ところで動力はどこから供給されているのだろう」健一郎はしきりに感心している。

扉が開いていくにつれ、部屋の中の様子が見えるようになってきた。青い光苔は、ちょうど通路と部屋の境目のところでぴたりとなくなってしまっていた。部屋の中は壁も床も天井も、コンクリート打ちっぱなしのような状態になっている。

真紅たちは、いきなり精霊が襲ってくるかもしれないと身構えたが、部屋の中は全くの無人であった。動くものひとつない。部屋の真ん中に円形の泉があって、青く透き通った水を静かに湛えている。

「これはスゴイですね。この部屋には明かりを供給する光源がありませんよ。なのに、こんなに明るい!部屋の壁面や床、天井そのものが発光しているんです。ものすごい科学技術ですね」健一郎はすっかり興奮し、CPU冷却ファンんをぶん回している。

「そんなことより、この部屋には誰もいないわよ。精霊が守ってるんじゃなかったっけ。もしかして今日は定休日じゃない。あ!向うにあるのは、次の部屋へ続く扉でしょ。さっさと行こうよ。誰もいないうちにさ」そう言うが早いか、真紅は脱兎の如く駆け出して、泉をぐるっと迂回し、向こう側の扉までたどり着いた。そして、扉の前で万歳したり、両足をどんどんと踏み鳴らしたり、しゃがんだりジャンプしたりしている。挙句の果てに、扉に空手チョップをくらわせたりしている。

「おーい。ルビイ。何をやっておるのだお前は?」ガフンダルが声をかけた。

「だって、この扉、どうやっても開かないんだもん」

<あたりまえよ。そんなこと>

突然、女性の声が、真紅たちの頭に直接響いてきた。真紅を始め、全員があたりをきょろきょろと見回していると、部屋の中央にある泉から、突然水しぶきが吹き上げた。そして、大きな水の塊が天井近くまで吹き上げ、塊のままゆっくりと降りてくる。物理的にはありえないことだ。さらに水の塊はなにかの形を形成しつつあった。

真紅たちが固唾を呑んで見守っていると、水の塊は人間の姿になっていった。やがて、一糸まとわぬ、青白い肌の女性が出現した。硬派のパイソンなどは、その姿を正視できず、真っ赤になって顔を背けている。どういう術かはしらないが、その女性は、泉が湛えている水の上に立っている。というか、浮いていると表現すべきてあった。女性が、腰まである長い髪を手で払うと、真紅たちにバシャっと水しぶきがかかる。

<みなさんこんにちはー。おねえさんの名前は『ウンディーネ』でーす>

その挨拶があまりにも自然であったため、真紅たちは思わず「こんにちはー」と声を揃えて返事をしてしまった。そのような情況下においても、真紅はホレハレコンの短剣を抜いて身構えている。そのあたりはさすがといえる。

<あら。おじょうちゃん。物騒なオモチャを持ってるのね。危ないわよ。あなたみたいなちっちゃい子供がそんなもの持っちゃぁ>

「ルビイよ。このウンディーネ殿は、古代神の末裔であるゆえ、その剣は通用しないぞ!ここは健一郎殿に全てを託すのじゃ」

<あら、ボク。よくそんなこと知ってるわね。えらいえらい>

「そ、その、ボクというのは、もしかしてワシのことかな?」

<そうよボク。ボクはおいくつでちゅか?もうオムツとれまちたか?>

「な・・」ガフンダルは、ウンディーネのあまりの言い様に絶句してしまって、言葉を返せない。別に、ガフンダルを挑発しようとして言っているのではなく、彼女には、本当にガフンダルがそう見えているということに、ひどくプライドを傷つけられたようだ。

<おちっこひとりでいけるようになりまちた?>

「は、はい。おかげさまで」どうにも敵わないと覚悟したのか、ガフンダルは真面目くさって答えている。

「ぷ。ぷあははははは。こりゃケッサクだわ!ねえ、ウンディーネのおねえさん。ワタシ、おねえさんのこと気に入っちゃった」真紅は、おなかを抱えながらウンディーネに声をかけた。

<あら。おねえさんも、あなたみたいに元気な女の子大好きよ。なんとなく私の若い頃に似てるし>

「えーっと。若い頃って、何年前ですか?」

<そうね。ざっと1億3000万ノン(年)前ってとこかしら>

― ひゃぁー。そりゃガフンダルも赤ちゃん扱いになるはずよ! ―

<さあ。みんなよい子みたいだけど、決まりは決まりですからね。もしこの部屋を抜けて先に進みたいなら、おねえさんが出す問題に答えるのよ。もしわからなかったり、間違えたりすると、おしおきしなくちゃならないの>

「わかってるわよ。ウンディーネのおねえさん。ワタシたちのこと、頭からバリバリ食べちゃうつもりでしょ?」

<あら。そんな野蛮なことしないわよ。ちょっと尻こ玉を抜くだけ>

「カ、カッパなの?おねえさん」

<さて、おねえさんはお水の精霊だから、お水にちなんだ問題を出すわよ。えーっと。誰が答えるの?そこのボク?それとも元気な、えーっと・・?>

「ルビイよ!」 ―て言うか、パパなんだけど・・・―

<あらそう。じゃあルビイちゃん。ここにね、5ノット(リットル)と3ノットを入れられる水がめがあるの>

ウンディーネがそういうと、泉の中から2つの水がめが競りあがってきた。2つの水がめは空中を移動して、ゆっくりと真紅の前に着地した。

<このふたつの水がめを使って、きっちり4ノットの水を測ってほしいのよ。さあルビイちゃん。できるかなぁ?>

― えーと。まず5ノットのがめに一杯水を入れて、それを3ノットのかめにいっぱいまで移すと、2ノットと3ノットになるでしょ、それから、それから・・・えぇーっとぉ。で、できない・・・ ―

いつものように、真紅が途方に暮れていると、VAIOから、へたくそな口笛が聞こえてくる。

「ふふふ。群青色の健一郎。すいさぁん!」

健一郎の、いたずらに元気一杯な声が、部屋中に響き渡った。

「パパ、もしかしてその口ぶりは・・・。答えがわかったの?」真紅の表情が一気に明るくなる。

<あれ?ルビイちゃん。そのハコさんは誰なの?おともだち?>ウンディーネは、喋るVAIOを怪訝そうに見ている。

「いえあの。これはパ・・」 ― なんか説明するのも面倒だわ ― 「ま、そんなところです。えーっと。この箱が、ワタシに代わって回答しまーす。はいどうぞ」

<まあ。すごーい>ウンディーネがパチパチと拍手をしだしたので、真紅たちも釣られて拍手し始めた。

「えーっと。この水を測る問題はわりと有名なものでございまして」健一郎が話し始めると、ウンディーネは拍手をぴたりとやめ、きらきらと目を輝かせながら耳を向けた。真紅たちも、ついつい釣られて、目をきらきらと輝かせ、健一郎に注目した。ウンディーネが何かアクションを起こすと、どうしても釣られてしまう。保育園や幼稚園の先生にうってつけのカリスマ性だ。

「この問題は非常に有名であって、必勝手順があります。ただし、次の2つの条件を満たしていなければなりません」

1.2つの水がめをそれぞれA、Bとして、いずれかが、測る目的の量と同じか、大きくなくてはならない。
2.Aの容量と、Bの容量、そして、目的の量の最大公約数が等しくなくてはならない。

「という条件です。1番目はわかりますね。この問題の目的が、AまたはBいずれかの水がめに入っている水を目的の分量にするということですから、小さいとそもそも入れることができないのです」

なにやら、数学の授業で、生徒が発表しているような雰囲気になってきた。ウンディーネは、さながらニコニコとしながら長七郎の発表を聞いている先生だ。

「2番目の条件は、実例でお話しするとわかりやすいです。例えばAの水がめには9ノット、Bの水がめには6ノット入るとしますと、最大公約数は3です。この場合、目的の量が3の倍数でなければ駄目なのです。なぜなら、AとBの水がめの中身をどう入れ替えても、絶対に3の倍数にしかならないのです。従って、2ノットとか4ノットの水は測れないわけです。ウンディーネ先生の出題は、5ノットと3ノットの水がめで4ノットを測るというもので、最大公約数は1ですから、この条件に適合します。ゆえに必勝手順を適用すれば、必ず測ることができるのです」

ウンディーネはじめ、みな真剣に健一郎の話を聞いている。ただし、真紅だけは眠そうに生あくびを連発していた。

「この条件を踏まえて、必勝手順の説明をしましょう」

1.Aが空ならAに水を満たす。
2.Bに一杯水が入っていたら全て捨てる。
3.AからBに移せるだけ水を移す。

「この条件を繰り返せば、必ずA、Bいずれかの水がめに目的の分量が入っている状態になるのです。ではシミュレーションをしてみましょう」

健一郎がそういうと、またしても画面にポコッとウインドウが出現した。


実際に動かす場合は、コード(他)のダウンロードでファイルを取得してください。

「ルビイ。パパが言うとおり、アプリケーションを操作してくれるかい。まず3つのテキストボックス、即ちAの容量、Bの容量、そして測る量を入力して、『で計測』ボタンを押してくれたまえ」

「はい。えーっと、四角い箱が重なったやつがふたつ出てきたよ」

「では、『計測開始』を押してくれたまえ。すると、先ほどの必勝手順に乗っ取って画面が変化するはずだ」

「ほんとだわ。『Aで計測できました』って言ってるわよ。ふーん。すごい」

「では、ここにある水がめで、この手順どおりやってくれたまえ。パイソン君。ルビイを手伝ってやってくれんか」

「うん。わかったよ。ボク手伝う」パイソンも、話し言葉が完全に幼児化している。

パイソンとルビイの息のあった作業で、見事5ノットの水がめに4ノットの水が入っている状態となった。

<おじょうず、おじょうずぅ!そこのハコくん?きみのおなまえは?え?ケンイチロくん。みんな、ケンイチロくんにはくしゅー>ウンディーネがそう言うと、みな大喜びで拍手しだした。それぞれ童心に返ったような、はじけんばかりの笑顔である。

「ウンディーネせんせい。問題とは関係ないのですが、みんなにお話しておきたいことがあるんです。ここで発表してもいいですか?」

<あら何かしら。でも、言われたことだけに答えるだけじゃなくて、自分の意見を言うこともたいせつよ。かんしんかんしん。じゃあ話してごらんなさい>

「ありがとうございまーす。この水を測る問題のプログラムなのですが、容器の描画にキャンバスというテクノロジーを使用しているんです。これは、Javaアップレット、フラッシュなどの機能を使わずに、ダイナミックHTMLのスクリプトで、図形を描画できるものなんです。残念なことに、インターネットエクスプローラーではサポートされていないのですが、グーグルが配布しているExplorerCanvasというJavaScriptライブラリを使うことによって、それが可能になるんですね」


「JavaScriptライブラリですから、当然javaScriptで使用されることを前提としているわけですが、なんと、正常に動作しない機能が多くあるものの、RubyScriptからも使用できるんです。すごいですね」

<!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]-->

「この指定で、ExplorerCanvasの使用を宣言しています。そして、実際に使用しているのが次の行です」

   #キャンバスのコンテキストを取得する。
   canvas = @window.document.getElementById('field');
   ctx = canvas.getContext('2d')
   #キャンバスをクリア。
   ctx.clearRect(0, 0, 500, 400)
   #キャンバスの塗りつぶし色を青に設定
   ctx.fillStyle = 'rgb(0, 0, 255)'
   #容器Aを描画する。
   ypos = POSYL - h
   for y in 1..@casea
       if y <= @cura then
           ctx.fillRect(A_POSX, ypos, Y_WIDTH, h)
           ctx.strokeRect(A_POSX, ypos, Y_WIDTH, h)
       else
           ctx.strokeRect(A_POSX, ypos, Y_WIDTH, h)
       end
       ypos -= h
   end
   #容器Bを描画する。
   ypos = POSYL - h
   for y in 1..@caseb
       if y <= @curb then
           ctx.fillRect(B_POSX, ypos, Y_WIDTH, h)
           ctx.strokeRect(B_POSX, ypos, Y_WIDTH, h)
       else
           ctx.strokeRect(B_POSX, ypos, Y_WIDTH, h)
       end
       ypos -= h
   end

「興味のある人は、是非自分でいろいろと試してみてくださいね」


<はいみんな、ケンイチロくんに、もう一度盛大なはくしゅぅー>

もう、割れんばかりの大喝采である。

<はぁーい。よくできましたねー。では次の部屋へ続く扉を開けてあげるわ。それから、本当はケンイチロくんにあげたいんだけど、彼はハコだから、かわりにルビイちゃん。これをあなたにあげるわ。ご褒美よ>

そう言って、ウンディーネは自分が首にかけていたペンダントを外して、真紅の首にかけた。

「きゃぁー。うれしい」真紅は思わずウンディーネに抱きついた。服は水浸しである。

<いいこと、ルビイちゃん。あなたたちが無事この洞窟を抜けることができたとして、外の世界で何か困ったことがあったら、このペンダントを空に向けて『水の精霊、ウンディーネよきたれ!』と叫べば、一度だけ私があなたたちを助けてあげるわ。いいこと。一度だけだからね。何を言えばいいか覚えた?ルビイちゃん。ここで練習してごらんなさい>

「水の精霊、ウンディーネよきたれ!」素直に真紅が復唱している。

<はいよくできました。じゃあみんな気をつけてね。慌てて廊下を走っちゃダメよ。転ばないようにね>

ウンディーネがバイバイの素振りをする。それに促されるように、真紅たちは扉に向かって歩き出した。そして、扉の前で、一同横一列に並び、元気に声を揃えて叫んだ。

「せんせいさようなら」

<みんなー。また遊びにいらっしゃいねー>

ウンディーネはさらに大きく手を振った。

かくして真紅たちは、ウンディーネの部屋を見事攻略したのであった。

火の山(14)に続く
最終更新:2009年02月14日 09:37