2日目(3)
「ハッカー?」
俺は思わず耳にした言葉を聞き返した。正面に立つ同い年くらいの少女が、俺の母親と同じくパソコンやネットワークのプロフェッショナルなのだと言う。そもそも見た目が偽装されているので、年齢や性別さえも本当かは分からないのだが、五感からの情報の八割を占める視覚から伝わってくるだけに、とても信じがたく感じた。
「そう驚くようなこと? スクリプトキディ程度なら、このゲームにだって山ほどいるはずだけど。だいたい、あなただってハッキングの真似事をしてるじゃない」
ハッキングの真似事と言われて、思い当たることがある。昨日身につけた、視界を0と1の集合に読み替える能力は、ゲーム本来のものではないはずだ。
「自覚はあった? なら話は早いわ」
少女はそう言って――いや、性別すら分からない以上、槍使いと呼んだ方がいいのだろうか。槍使いは地面に突き立てていた槍を抜き、柄の中央を支点にぐるんと回して、槍頭をこちらに向けた。
「さっきも言ったけど、あなたは技術だけは一流のくせに、知識がないから根本的なことを理解できてない。だから、あたしが直々に教えてあげる――」
地面を蹴って駆け出すのと同時に、槍を突き出してきた。
「教える? 何を?!」
明らかに教える人間の行動ではない。避けて側面に回りながら、即座に弓を射った。槍頭が弾かれ、槍の先が地面を向いた。
「ハッキングに決まってんでしょ!」
槍使いが大きな声を出すと、弾かれた槍と腕が半透明に変わった。俺は思わず見返していた。腕の付け根からは、別の半透明の腕も突き出している。この腕には、こちらに刃先を向けた槍が握られている。つまり彼女には四本の腕が生え、二本の槍を持っていることになる。
弾いた腕はさらに薄れ、もう一方の腕が濃さを増した。弓使いの直感に従い、その危険から逃げるように体を反らせる。
はっきりとして現実のものになった腕が、槍を突き出してきた。顔の横を刃が通り過ぎた。
避けられたのは辛うじてで、半分以上偶然が味方をしてくれたお陰だ。バックステップで槍使いから離れる。
それにしても、今のは不可解な動きだった。本来あった位置から腕が消え、別の場所から腕が姿を現した。スキルや能力といった、ゲームに用意されているものではないと思う。これがおそらく彼女の言っていた、ハッキングによるもの。物理法則を捻じ曲げる様は、まるで魔法だ。
「ハッキングは魔法じゃない。周到な準備と相手の過失が不可欠なの」
槍使いの言葉は、俺の思ったことを見透かしていたかのようだった。
「現実世界ならまず、盗み聞きしたり信号に対する反応を見たりして、相手のパケットを解析する必要があるわ。パッチの当てられていないセキュリティホールが見つかったなんていったらラッキー。ルートキットを使って進入を隠蔽しながら目的を達成し、ログを消して立ち去るってわけ」
聞き慣れないカタカナが耳から耳へと抜けていくが、手繰り寄せて解読を試みる。そもそもハッカーはパソコンに向かって物凄い速度でキーボードを叩いているイメージがあるが、俺はプログラムを書いたり何かを入力したりしているわけではない。彼女の話を理解しようとすればするほど、視界を0と1に読み替える能力は、ハッキングとはかけ離れているように感じた。
「――ただし、仮想世界でハッキングをするとなると、方法は大きく変わってくるわ」
柄の下を両手で握り、背中の後ろに大きく振りかぶる。
「仮想世界の環境の中で、リアルタイムにパケットの動きを調べ、どんなプログラムが組まれているのかを解析し、能力の穴を見つけ、仮想世界に干渉してとりうる最善の方法で攻撃する必要があるの。こんな風にね」
振り下ろされた腕と槍が消え、違うところから横薙ぎの攻撃が繰り出される。
「このリアルタイムっていうのが厄介で、それには仮想世界に対する慣れが必須なんだけど、その点あなたなら余裕でしょう?」
槍使いは再び槍を後ろに振りかぶった。目を凝らし、彼女の姿を0と1に読み替える。槍が振り下ろされる最中、腕全体が数字の塊に埋め尽くされた。その瞬間、腕と槍が数字の塊ごと消えて、別の場所に現れる。
「今のがパケットの動きなのか?」
「そう。今日教えるのは基本的な技術――バッファオーバーフローよ。プログラムが走る際には、データが、定められた占有範囲の中でメモリに割り当てられる。でも、アドレス範囲を超えてメモリを書き換えた場合、他のデータも変更されて、誤動作を引き起こしてしまうの。とりわけ、行動に関するプログラムの戻りアドレスを書き換えれば、本来次に行われるはずだった動作さえも書き換えることができる」
槍使いが槍を左右に振りながらこちらに向かってきた。左に薙ぎながら、腕にパケットの塊を送り込んでいる。彼女の言葉の通りなら、アドレス範囲を超えるデータを腕に与えることで、その行動に関するプログラムの戻りアドレスを書き換えている。
するとどうなるか。本来左に向かっていた槍は、行き先を書き換えられて右向きに変わる。俺は後方に跳んで、紙一重のところで避けた。振り終わった彼女の腕に触れ、パケットの塊を送り込む。行動に関するプログラムの戻りアドレスを、静止した状態に書き換える。次の瞬間、薙がれた槍は姿を消し、地面に突き立てられていた。初めて試みたが、あっさりとうまくいった。
「へぇ、最初にしては上出来じゃない。一回目の講義はこれで終了ね」
槍使いは満足そうに頷いた。一回目ということは、これからも教えてくれる予定なのだろうか。そもそも、彼女はどういう立場の人間なのだろう。浮かんだ質問を尋ねようとしたが、先に槍使いが口を開いた。
「昔、あるディスプレイ型のネットゲームで、黒衣の騎士団と名乗る連中がチート行動をしていたわ。チートっていうのは、パケットを偽装して短時間でレベルアップしたり、レアアイテムを量産したり、そういうのね。そして彼らは好き放題行った後、街から一歩出たところにボスモンスターを大量にPOPさせるという暴挙に出たの。通りかかったプレイヤーは瞬殺されて、デスペナルティで街に戻るけれど、街を出たところで再び瞬殺された。そのゲームはアップデートを行うまで、阿鼻叫喚の地獄と化したわ」
口を一文字に結んで言い悩んだようだったが、彼女は言葉を続けた。
「仮想世界でこの技術を使えるということは、理を無視した力を持つということよ。世のため人のために使えなんて戯言を言える立場ではないし言わないけれど、くれぐれも目指すものは、はっきりさせておきなさい」
本当の表情なのかアバターなのか、話している最中の槍使いの目は曇って見えた。
「分かった。ハッキングのこと、教えてくれてありがとう」
「どういたしまして。相方が待ってるわよ、さっさと迎えに行きなさい」
槍使いはこちらに背中を向けて、廃工場の出口の方に歩き出した。てっきり一緒に行ってくれると思っていたので、慌てて呼び止める。
「待ってくれ、あんたもイテレータと戦いに来たんだろ。一緒に戦ってくれないのか?」
「バッカなこと言わないの。あたしが倒しても意味がないのよ」
見知った気のする背中は、振り向かずにそう言った。
地図を広げて、赤丸が書き込まれている方向へと進む。サクのいる位置を示す印は、俺がモンスターに襲われたときから寸分も動いていなかった。距離が開いていないことに安堵しつつも、彼女の身に何かあったのではないかと不安も覚えていた。
積み上げられたドラム缶の間を通り抜け、タワークレーンの下をくぐる。たどり着いた先には、倒れたパイプに腰掛けるサクの姿があった。彼女も俺に気づき、手を振るアスキーアートを送ってきた。
「スタミナ切れか? どんな強敵がいたんだよ……」
辺りに注意を払いながら話しかける。サクは荷物や武器を降ろし、体を休めてスタミナを回復させていたようだった。デッドロック相手でもスタミナを使い切ることはなかったというのに、どんな強敵を相手にしていたのだろうか。ひょっとすると、一足先にイテレータと戦っていたのかもしれない。
しかしサクは首を振って、猛スピードでコンソールを叩いた。
『普段歩かないから、疲れた気がして(・ω<)』
俺は隠し切れずに、乾いた笑いを浮かべた。彼女は最強のプレイヤーなのだから、心配するまでもなかった。
メッセージ中に書かれた『普段』とは、いつのことを指すのだろう。昨日は廃れた街の中を歩いていたし、ゲーム中のことではないと思う。だとすると、現実世界でのことだろうか。
「歩かないって……。学校の登下校で、嫌でもそれなりに歩くだろ?」
幼い見た目からして、サクが学生なのは間違いない。ひょっとすると帰宅部や文化部なので、運動が足りていないということなのかもしれない。
『あー、わたし不登校なんで』
コンソールに送られてきたメッセージを見て、俺は納得した。言われてみれば至極当然だ。彼女のレベルまでステータスを強化するためには、現実世界での生活を犠牲にするほどの時間が必要なのだ。
ベッドからもそもそと起きて、カーテンも開けずにパソコンへと向かう。一休みして冷めた料理を口にし、再びゲームの世界へと没入する。ログアウトする頃には日付が変わっており、湿気ったベッドにもぐりこむ。サクが一人部屋にこもってゲームを続けている生活を想像し、もやもやした気持ちになった。
「聞いてごめん」
『なんで謝るの? 引きこもりは最高だよ。人付き合いに悩まないし、ゲームやり放題だし、日焼けしないし(´、ゝ`)』
メッセージを送り終わると、サクは立ち上がり、シャムシールを腰に差した。嫌がっていた先頭に立って、工場の中心部を目指して歩き出す。言葉と裏腹に、マントから覗く彼女の表情は暗かった。
「その、いつから学校に行ってないんだ?」
『そんなこと忘れちゃったよ。中学校の途中だったっけ』
踏み込んだ質問かと思ったが、返信はすぐにきた。ゲームの中では私生活を詮索しない主義を貫いていたのだが、自分で思っている以上に彼女の生活のことが気になっているのかもしれない。
『モトハルさんて、高校生?』
「うん。一年だけど」
『えー、私達タメだったんだ! 私も……通ってたら一年生だった(;´艸`)』
思わず振り向いたサクと同じくらい、俺も驚いていた。小動物的な外見から、もっと幼いと思っていたのだ。
配管の間を風が吹き抜ける。赤茶色の砂の地面に砂埃が立つ。地図を見ると、俺達は円形をした工場の敷地のちょうど真ん中あたりを歩いていた。
弓使いの耳をフルに活用し、辺りの様子を探る。ヒュウン――。左で風を切る音が聞こえる。BCIケーブルにノイズが乗ったのか、時折視界に緑色の線が入る。
「敵が近いみたいだな」
『近いというか』
見えない何かを目で追う猫みたいに、サクは絶えず視線を動かしていた。
ヒュウン――。今度は右から音がする。風が向きを変え、砂埃を巻き上げる。緑の閃光が縦横無尽に配管の間を駆け巡る。
サクが視線を定めた頭上のパイプを、俺もつられて見た。
『そこにいるけどね (◎▽◎)ノ』
ヤツは姿を現し、羽を休めていた。
背後にそびえる煙突のラインがはっきりと分かるほどに半透明で、弓のように反った緑色の体。背中からは六枚の翼が左右対称に広がる。鳥で言う頭の位置には、黒い正八面体のクリスタルが浮かんでいる。
外観にデッドロックとの共通点が多く、風のイテレータであることは疑いようがない。
三対の翼が上から順に、波が押し寄せるように羽ばたく。徐々に往復の間隔が短くなり、羽ばたきを目で追えなくなった瞬間、イテレータはパイプの上から姿を消した。
前から、横から、風を切る音が聞こえる。たまに視界に混じる緑色の線が、おそらく飛び交うイテレータの残像なのだろう。『飛び交う』とは入り乱れて飛ぶ様のことだが、間違いではない。速すぎて、ワープしたかのように宙から宙へと移る様は、一体だとしても飛び交っていると表現して差し支えない。
俺は矢筒から矢を一本引き抜き、弓につがえた。
目を凝らし、姿の見えないものを数字に読み替えて捉えようとする。映った0と1の集合から、煙突やパイプといった背景を外す。すると数字から構成されたイテレータだけが視界に映るようになった。
とはいえ、流れる数字もとてつもなく速い。尾を引いた黒い数字の塊のお陰で、辛うじて飛び去った場所が分かるくらいだ。
当てられる気はまったくしなかった。案の定、放たれたパラライズアローは煙突を穿った。避けられたというより、俺が明後日の方向に発射したというのが正しい表現だ。
「俺じゃあ、攻撃を当てることすら難しそうだ。目で追えてるみたいだし、サクならいけるんじゃないか?」
傍観に徹していたサクに話しかける。
『私も似たようなもんだよ、だいたいの位置しか分かってないから。でも、あれだけ速く動いていたら、逆に大振りの攻撃に自ら当たりに来てくれるかも』
メッセージを読み終わるや否や、サクが走り出した。揃えた両足のバネを開放して跳ね、配管を蹴ってさらに高く跳び上がる。空中で抜刀された二本のシャムシールが、薄暗い灰色の空をバックに怪しい光を放つ。
イテレータの進行方向に向かって、二本の刃が宙を薙ぐ。一振り目と二振り目の間にできた胸の前の空間を縫って、緑の閃光がサクの体を通り抜けた。
サクが空中でバランスを崩し、片膝をついて着地した。刃物で裂かれたような傷が脇から腹にかけて刻まれている。鎧で覆われていない場所が的確に狙われていた。コンソールに表示された彼女の体力は、三分の一ほど削られていた。
「平気か? 移動速度だけじゃなくて、攻撃力もデッドロック並に高いみたいだな」
『それに反応速度もね。下手に攻撃したら、返り討ちにあいそう(・ω・、)』
俺達は攻撃を当てる手段を失っていた。イテレータが周りを飛び回る中で、なす術もなく立ち尽くしていた。
『詰んだかな。黒魔導士をパーティーに誘って出直そうよ』
彼女の言うとおり、魔法なら離れた位置から広範囲に攻撃できるので、イテレータ相手でも有利に戦局を進めることができるはずだ。しかし俺は頷かなかった。
「その前に、ちょっと試してみたいことがあるんだ」
今までの俺では、攻撃の当たらない相手なんて太刀打ちできなかった。しかし視界をパケットに読み替える技術と、付け焼刃のバッファオーバーフローを身に着けた今なら何とかなりそうな気がする。あの槍使いは、まるでこうなることを予想していたかのようだ。
矢をつがえ、思い切り耳の後ろまで弓を引く。左手に添わせた矢尻に大量のパケットを送り込み、情報を氾濫させてバッファオーバーフローを引き起こす。書き換えるのは、矢の進行方向を示す戻りアドレス。名付けて「ウィリアム・テルの林檎作戦」。
引き絞って放たれた矢が、煙突に向かって一直線に滑空する。イテレータがわざわざ矢に近づき、棒の周りを螺旋を描きながら旋回している。
戻りアドレスが変わる。矢が進行方向を変え、イテレータを後方から追いかける。気付いた緑の鳥が宙返りで避けようとするが、矢尻を上げてさらに追尾する。
イテレータは頭を下げてタメを作ると、緑の光になって一気に消えた。
失敗だ、目に映らない対象はさすがに追尾できない。行き先の定まらない矢が地面に突き刺さった。
『追尾する矢? 何それ、すごい!』
「いや、こんなんじゃ駄目だ」
退却せずに待ってくれているサクに返事をして、次の方法を考える。イテレータが高速で移動しているというなら、自由に飛べないようにしてしまえばいい。名付けて「夢の中では上手く走れない作戦」。
今度は敵に当てることを考えずに、即座に弓を射る。大量のパケットが送り込まれた矢が、煙突の壁面に突き刺さる。矢尻を起点に情報が溢れ出し、周囲の空間を0と1で埋め尽くす。このエリアにイテレータを飛び込ませれば、処理が遅れて移動速度が大幅に低下するはずだ。
範囲を広げるため二本目の矢にパケットを送り込むと、煙突の周囲を漂っていた情報の霧が薄くなった。廃工場の一帯をパケットで埋め尽くすには、自分のパソコンではスペックが足りないようだ。
そもそも、矢を一本ずつ放っているから当たらないのだ。無数の矢を放ったように――もちろん手持ちの矢は限られているので、矢の当たり判定だけを張り巡らせて、当たった矢だけを消費したことにする。名付けて「シュレーディンガーの猫作戦」。
パケットを溜め込んだ矢を、上空に向かって放つ。落下する途中でオーバーフローさせて戻りアドレスを書き換える。今度は座標。半透明の矢が空間を覆いつくす。情報を微修正して、自分とサクを当たり判定から除いた。
イテレータは緑の光になって、四方を飛び回っている。
「逃げても無駄だ、――くらえ」
指を鳴らすと、走査式に片っ端から当たり判定が始まった。矢の間隔はイテレータの大きさよりも小さく設定している。いくらスピードが速くても、避けることは不可能だ。
足元でさくりと音が鳴る。何にも当たることなく、一本に収束した矢が地面に突き刺さっていた。
避けることは不可能、のはずだった。方法を誤ったのだろうか。倒れた矢を見つめる。
『どうしたの(?д?)』
「絶対避けられないはずの攻撃が外れたから、おかしいと思ってさ」
『攻撃の当たらない敵に、避けられない攻撃をするなんて、矛と盾の話みたいだね』
サクから送られてきたメッセージを見て、はっとした。デッドロックが持っていた能力は瞬間回復と自動蘇生。イテレータの能力が、単なる高速移動だけとは限らない。
「まさか……、絶対に当たらないのか?」
イテレータにはそもそも当たり判定がないとしたらどうだろう。ゲームにおいてそんな能力は、敵も味方も持つことを許さるはずがないが、あえて名付けるなら絶対回避の能力。
『絶対回避? そんなの倒せるわけないじゃん』
思いついた仮定を話すと、サクは諦めたように首を振った。
「ま、俺達は昨日、そんな敵を倒したんだけどな」
イテレータのステータスを他のモンスターと入れ替える、名付けて「弱くてニューゲーム作戦」。矢の進行方向を示す戻りアドレスをイテレータに書き換え、当たり判定とは無関係に攻撃を当てる、名付けて「ウィリアム・テルの林檎作戦2」。
次々にアイディアがあふれてくる。槍使いが言っていたように、俺には技術という下地があるようだ。あらゆる手を試すことができる気がする。嫌々やらされる学校の勉強なんかよりも、よっぽど頭を使うし面白かった。
「その顔の方がいいよ」
不意に人間の声が聞こえたので振り向いた。鼻が詰まったように濁っているが、芯のある魅力的な声だった。この空間で言葉を発していたのは俺だけだったはずである。振り向いた先には、ほんの少しだけ口元を緩めたサクの姿があった。
そっと自分の頬を触れる。指摘されて気づいたが、俺は自然と笑みを浮かべていた。イテレータを倒す方法を考えるのに夢中で、顔を作るのを忘れていた。
そんなことよりも、だ。
「お前、喋れたんだ」
初めて声を出した相手に、指摘し返した。サクは言葉を発したことに気づいていなかったようで、口を押さえて俯いた。
「可愛い声してるんだから、チャットなんて使ってないで話せばいいのに」
いつものように心にも無いお世辞を言ったつもりだったが、とても恥ずかしい気持ちになった。彼女の反応を見届けるのが気まずかったので、背中を向けて敵を倒す方法を考えているフリをした。
ひたすら自分の力だけで倒す方法を考えていたが、俺は一人で戦っているのではない。ここには心強い仲間がいる。
高い確率でイテレータを倒すことができ、高い確率で自分も排除されかねないアイディアが浮かんだ。絶対に必要なのは、俺のパケットを扱う技術と、サクの正確無比な攻撃の技術。
「頼む、俺を攻撃してくれ」
俺は振り返って自分を指差した。サクは眉を寄せて考えた末に、顔を赤くした。
「勘違いすんな。サクの攻撃を、イテレータに受け流す」
反応から、彼女が有らぬことを考えているのは分かった。慌てて訂正する。
「でも」
「大丈夫、ダメージは受けないよ。信用してくれ」
俺もサクの腕を信用している。でなければ、こんなお願いはできない。
サクがシャムシールを腰の横で構えた。足を恐る恐る滑らせて間合いを詰める。
「いくよ……」
泣き出しそうな、か細い声と共に、横薙ぎの斬撃が繰り出される。目に追える速度で湾曲した刃が宙を走る。俺は腕を伸ばして刀身をつかんだ。
サクが驚いて、剣から手を離した。あからさまに手を抜いた攻撃は案の定、俺のステータスでも大したダメージにならなかった。
「そんなんじゃ、イテレータは倒せない。本気で頼む」
つかんだ剣を押し返す。サクは受け取ったシャムシールを一度収め、柄に手を添えて腰を落とした。
本気でやれとは言ったが、よりによって剣士最強攻撃の30連撃が来るとは思いもしなかった。全部受け流せるか不安だが、いまさら止めることはできない。
「紅蓮桜花!」
ようやく聞き取れた掛け声と共に、抜刀されたシャムシールが横薙ぎに左右から胴を狙う。攻撃を受ける部位に先回りしてパケットを送り込み、バッファオーバーフローで戻りアドレスを書き換える。背骨を残して切り裂いたはずの攻撃は、わずかに脇腹の下の布を裂いた。上空を飛び回っていたはずのイテレータが、顔に位置する黒い正八面体を傾けて動きを止めた。
覚悟を決めたサクの攻撃が加速する。唐竹割りからの突きを見切り、ダメージだけをイテレータに転送する。前宙しながら繰り出された二本の刃を、着地と同時に振り上げられた双剣を、股下をくぐりながら突き出してきた攻撃を、軸足を狙った横薙ぎを、繰り出される連撃を紙一重のタイミングで受け流す。袖が、裾が、鎧が裂けていく。
ふとパケットの挿入が遅れ、袈裟斬りが鎖骨を抉った。苦痛はないが気が散り、間髪いれずに薙がれた刃が腕を裂く。体力が一気に削られたが、平気なフリをして転送を続ける。
――心臓に向かって突き出された刃は、すんでのところで静止した。シャムシールが下ろされたのを見て、30発の攻撃が終わったことを理解した。
六枚の翼の羽ばたくタイミングが合わなくなり、イテレータが赤茶色の地面へと墜落する。殺虫剤を浴びせた羽虫のように、羽を必死に動かして頭を支点にぐるぐると回っている。目に追えなかったスピードは、見る影もない。
緑色の半透明の体にヒビが入り、みるみる全体に広がっていく。羽は倒れて割れ、尾は欠ける。動きを止めた直後、イテレータは砕け散った。残った黒い正八面体も、砂のように細かくなって崩れ落ちた。
「ごめんなさい。大丈夫……?」
強敵を倒した喜びを共感しようと思いきや、サクは俺の腕の傷を心配そうに見つめていた。
「平気、さすがの攻撃だったよ。……チャットは止めたのか?」
「うーん、なんか色々と吹っ切れたかも。私って変な声でしょ? だからあんまり喋りたくなかったんだ」
「さっきも言っただろ、かわい――普通の声だよ」
今度のお世辞は最後まで言えなかった。恥ずかしさを隠すために、足早に立ち去ろうとする。そういえば必死で忘れていたが、ユータ達を待たずにまた倒してしまった。
「待って、何か落ちてるよ」
イテレータの灰の中から、サクが何かを拾って見せた。デッドロックが落とした指輪と同じく、銀色のリングに緑色の宝石が埋め込まれている。アイテム名が表示されず、インベントリに入れることができないところも似ていた。
「アイテムじゃないのかな。何なんだろう」
サクは指輪を顔の前に掲げて、様々な方向から眺めていた。
土のデッドロックは黄色の指輪で、風のイテレータは緑色の指輪。ガーディアンを倒すと、属性に対応した色の指輪を落とすのだろうか。これらを所有していることで、どんな効果があるのだろう。
まだぎこちない喋り方のサクと会話をしながら、廃工場を後にする。




