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

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

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

エラーが発生しました。

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

PR
27/65

第3章 Ep7:無限ループの罠

1. 邂逅


「……君が、この美しいネットワークを構築したのか?」


 領主館の執務室。

 突然訪ねてきた白衣の男――宮廷魔導長官サイラス・ワイズマンは、開口一番そう言った。

 その声には、外交辞令の薄い膜すらなかった。純粋な、むき出しの、技術者の驚嘆だけがあった。


 レティシアは仕事の手を止めた。

 机の上には、L-Netの運用状況を示すモニター画面がいくつも浮かび、地脈を流れるデータパケットの量が色分けされたヒートマップとして映し出されている。緑は正常、黄色は注意、赤は異常。今のところ、全てが美しい緑色だ。

 見上げた先にいるのは、年は三十代半ばといったところ。白衣のような長いローブを纏い、銀縁の眼鏡をかけている。だが、学者然とした見た目とは裏腹に、その瞳の輝きは異常だった。彼はモニター画面を見つめていた。それも、単に見つめるのではなく、スキャンするように。まるで、コードそのものを読み込もうとしているかのように。

 その目の動きを、レティシアは知っていた。前世のオフィスで、デバッグ中のプログラマーが見せる、あの目だ。コードの一行一行を追い、論理の流れを脳内で再構築し、バグの所在を嗅ぎ分けようとする職人の目。


「ええ。私が設計しましたけど……貴方は?」

 レティシアは警戒しつつ答えた。不要な来客に対する、自動防御の返答である。

 宮廷魔導長官。その肩書きは知っている。王国の魔法体系の頂点に立つ存在。だが、これまで関わったことはない。なぜ突然、辺境の領地に?


「私はサイラス。宮廷魔導長官だ。君の書いたコード(魔法式)に惚れて、王都から飛んできた」


 彼の声が震えていた。技術者が、人生で初めて「自分より上」の作品に出会った時に見せる、あの震え。

 サイラスはレティシアの手を握りしめた。その手は温かく、そして確かに震えていた。

 指先にはインクの染みが残り、爪の間にも乾いた魔力結晶の粉が付着している。実際に手を動かしている人間の手だ。書類にサインするだけの官僚の手ではない。


「L-Netの地脈変調パターンを王都の観測所で検知した時、最初はノイズだと思った。だが、ノイズにしてはあまりにも規則的で、あまりにも美しかった。解析してみて震えが止まらなくなった。パケット通信の概念。エラー訂正の自動化。多層キャッシュ構造。……これを設計した人間に、どうしても会いたかった」


「……す、すみません。人間不信なもので」

 レティシアは自分の手を引き抜きながら呟いた。だが、引き抜けなかった。サイラスの握力は強く、そして――真摯だった。

 技術者の握手は独特だ。政治家のような作り笑いの握手でも、軍人のような示威的な握手でもない。「お前の作ったものを、俺は理解している」という無言の宣言。それが手のひらを通じて伝わってくる。


「いや。わかる。わかるよ、君の気持ちが」


 サイラスは眼鏡を人差し指で押し上げた。レンズの奥の瞳が、真っ直ぐにレティシアを見ていた。


「孤独だったろう? 自分の作ったものの価値を、誰にも理解してもらえない孤独。設計の美しさを語っても、「それで何が便利になるの?」としか返されない苛立ち。技術者として、その痛みは――痛いほどわかる」


 レティシアは息を呑んだ。

 図星だった。

 この異世界に来てから、いや、前世のSE時代からずっと抱えてきた孤独。深夜3時のオフィスで完璧なモジュールを書き上げた時の、誰とも共有できない達成感。「動いて当たり前」と思われるインフラを作り続ける透明人間のような存在感。

 それを、初対面のこの男が、言葉にした。


 彼が語り始めたのは、技術の美学だった。


「地脈を変調させる発想。既存の魔法体系では、地脈は『触れてはならない聖域』とされている。だが、君はそれを通信媒体として利用した。固定概念の破壊。その勇気だけでも驚嘆に値するが、実装の精密さがさらに凄まじい」


 サイラスは机の上のモニターに目を走らせながら、矢継ぎ早に分析を続けた。


「パケット通信の効率性。データを小さな単位に分割して送信し、受信側で再構築する。これにより、地脈の帯域幅を最大限に活用できる。そして何より、エラー処理の美しさ。リカバリー戦略。例外処理の設計思想。パケットが途中で消失した場合の再送制御、経路障害時の自動迂回、二重送信の検知と排除……どの要素も、他人のコードには見られない――洗練された優雅さを備えている」


 彼が語る言葉は、魔法使いのそれではなく、完全に「エンジニア」の共通言語だった。

 API設計の思想、レイテンシの最適化、スループットとバンド幅のバランス、キャッシュ戦略のトレードオフ。

 宮廷魔導長官という肩書きの裏に隠れていたのは、純粋な「技術オタク」だった。


 それは、元SEのレティシアが、この異世界で最も希求していた言葉だった。

 同じ言語で、同じ熱量で、同じ深度で会話できる存在。前世でも滅多に出会えなかった存在が、こんな場所にいた。


「地脈の共鳴理論、君はどう実装しているんだ? 通常は状態遷移に過剰なオーバーヘッドが――」

「キャッシュ機構を多層化して、予測分岐で先読み実行しているんですよ。ほら、この部分」


 レティシアは無意識のうちに、自分の設計図をサイラスに示していた。

 いつもなら外部の人間に見せることのない、L-Netの内部アーキテクチャ図。それを、自然に、何の抵抗もなく広げていた。

 なぜだろう。この人なら、わかるから? それとも、わかってほしいから?


 二人は机を囲み、夢中で議論を始めた。オタクが己の創造物を論じる時の、あの熱気。その火花がバチバチと迸る。

 アイリーンが紅茶を持ってきた時、二人とも気づかなかった。紅茶が冷めた頃に二杯目を持ってきた時も、気づかなかった。三杯目の紅茶が完全に冷え切って、アイリーンが静かにため息をついて去った時も、二人はまだ設計図に頭を突き合わせていた。


「この手法は……天才的だ。だが、ここのシーケンスに冗長性がある。状態遷移のタイミングを0.3ミリ秒前倒しにすれば、パイプラインのバブルを消せる」

「ご指摘ありがとうございます。実は私もずっと気になっていて……でも単独では検証環境を用意する余裕がなくて、保守的な設計に留めていたんです」

「なら、私の王都のラボで検証しよう。私のところには計測用の高精度マナメーターがある」


 言葉の端々に敬意がある。同志を見つけた喜び。自分の想いを理解する人間を見つけた安堵。

 上司と部下ではない。教師と生徒でもない。対等な技術者同士の、純粋な知的共鳴。


「……よかった。この世界に、話の通じる人がいたなんて」


 レティシアの声は震えていた。

 恋愛感情ではない。もっと根源的な何か。「理解される」という経験が、どれほど人間を救うか。

 前世のSE時代、72時間のデスマーチを乗り越えた後に、同僚が一言「あのモジュール、綺麗だったな」と言ってくれた時の感動を思い出した。たった一言で、全ての苦労が報われたあの瞬間。


「私の方こそ! まさか辺境にこれほどの論理的ロジカルな頭脳があるとは! 王都の魔導官たちは、みんな表面的な魔法理論だけを追い求めていて。原理の暗記と威力の競争。まるで暗唱テストで点を競う受験生だ。本質的な――」


「システムアーキテクチャへの理解が、まるでないんですね」


「そうだ! 君も同じことを感じていたのか!」


 サイラスは、初めてレティシアを正面から見つめた。

 眼鏡の奥の瞳が、微かに潤んでいるように見えた。


 その瞬間、二人は気づいた。自分たちは同種なのだ。秩序を愛し、美しさを求め、システムの内部動作に陶酔する者同士。

 世界が壊れかけていることへの怒り。バグを許せない潔癖さ。美しいコードへの偏執的なこだわり。

 それらが、二人の中で完全に一致していた。


 オタク同士の共鳴。

 完全なる相互理解。

 それは、秩序を愛する者同士の運命的な出会いだった。


「これからは一緒に……L-Netの改良を進めませんか? 貴方の知識があれば、カーネルレベルの最適化ができます。私一人では手が届かなかった領域に」

「ええ、喜んで。いや、喜んでなんて生ぬるい。……ぜひとも。何としてでも。この美しいシステムを、もっと美しくするために」


 サイラスが差し出した手を、今度はレティシアから握り返した。

 二人の天才が手を組んだ瞬間。

 L-Netのモニターが、一瞬だけ明るく輝いた気がした。


 だが、その感動的な対面は、無残にも引き裂かれることになる。



## 2. while(true)


 邂逅から三日後の深夜。

 レティシアとサイラスは執務室で共同作業を続けていた。

 机の上には二人分の紅茶(どちらも冷え切っている)と、大量の設計図、そして空になった角砂糖の箱が散乱している。


 二人の知的協業は、驚くべき速度で成果を上げていた。

 サイラスの地脈制御理論と、レティシアのシステム設計思想が融合し、L-Netのパフォーマンスは初期設計から30パーセント向上していた。レイテンシは半減し、スループットは1.5倍に。バグ修正件数は0。テスト全件パス。

 完璧な開発サイクル。

 前世のどんなプロジェクトよりも理想的なペアプログラミングだった。


 その夜、二人が地脈のルーティングアルゴリズムの改良について熱く議論している最中――。


 ――ブブブブブブブッ!!


 短く、鋭い、不吉な警報音。

 それは、L-Netのシステムが自動で発する「クリティカル・アラート」だった。レティシアが設計した閾値を超えた異常が検知された時にのみ鳴る、最高レベルの警報。

 これが鳴ったことは、L-Net稼働以来一度もなかった。


 執務室の全ての端末が、同時に悲鳴を上げた。モニター画面が赤く染まる。穏やかだった緑のヒートマップが、一瞬で真紅に変わった。まるで、白い布に血が染み込んでいくように。


『警告! 警告! 警告!』

『CPU使用率100パーセント! メモリ枯渇! スワップ領域満杯!』

『全プロセスが応答しません! デッドロック検知! タイムアウト多発!』


「な、何が起きたの!?」

 レティシアが端末に駆け寄った。その顔から、血の色が引いていく。

 指先がキーボードに触れた瞬間、入力の応答が返ってこないことに気づいた。端末自体が半フリーズ状態だ。入力を受け付けるまでに数秒のラグがある。


 サイラスも黙ったまま、画面に食い入るようにして見つめていた。彼の右手が、小刻みに震えている。白衣の袖口が、微かに揺れていた。


 モニターには、複数のウィンドウが開いていた。その全てで、同じシーケンスが表示されていた。

 ネットワーク全域のノード――数千台の端末と中継器の全てが、同じ症状を示している。


「これは……」

「システムリソース監視パネル。各ノードのCPU負荷が……」


 コアが完全に飽和している。全てのコア。全てのノード。全て。

 100パーセント。100パーセント。100パーセント。

 画面に並ぶ数値が、全て同じ数字を示していた。

 赤い。全てが赤い。


 そしてその下の、ネットワークログ画面。

 通常であれば多種多様なプロセスIDとコマンドが流れるはずのログが、たった一行のコマンドで埋め尽くされていた。幾万幾千の回数で。

 一秒あたり数百万回。同じ一行が、延々と、延々と、延々と繰り返されている。


```

while (true) { ; }

```


「……無限ループ(Infinite Loop)!?」


 レティシアは絶句した。その血の気が、完全に失われた。

 椅子の背もたれを掴む手が、白くなるほど強く握りしめられていた。


 一秒もかからず、プログラマーとしての理解が完成する。


 `while (true)` ――条件式が常に「真(True)」であるため、永遠に終了しない処理。中括弧の中身はセミコロン一つ。何もしない。何もしないまま、ただ永遠に回り続ける。

 それ自体は、何の脅威にもならない単なるプログラミングエラー。初心者が最初に学ぶ「やってはいけないこと」の筆頭。教科書の第1章、注意書きの赤文字。

 だが、それが――。


「幾千もの仮想マシン上で、同時に実行されている」


 サイラスが呟いた。その声は蒼白だった。

 眼鏡の奥の瞳から、先ほどまでの知的な輝きが消え、代わりに純粋な恐怖が浮かんでいた。


 L-Netの計算リソースは、この「何もしない処理」を全力で回すために食いつぶされていた。無限に回転し続けるループ。無限に消費される処理能力。無限に。無限に。

 CPUが「何もしない仕事」で忙殺され、「何かをする仕事」に割り当てるリソースが一切残っていない。

 前世の言葉で言えば、全従業員が「会議のための会議のための会議」に出席させられ、実際の仕事をする人間がゼロになった会社のようなものだ。

 会社は回っている。全員忙しそうにしている。だが、何一つ生み出されていない。


 他のタスクは、一切ができなくなっていた。通信は途絶し、データの送受信は停止し、監視システムすらまともに動いていない。全ての機能が、この無限の闇に飲み込まれていた。


「こんな簡単な方法で」


 レティシアの声は震えていた。怒りか、悔しさか、恐怖か。おそらくその全てが混ざり合った、名前のない感情。


「こんな……プログラミングの基礎中の基礎を使って。こんな……子供でも書けるたった一行のコードで。私が寝る間も惜しんで構築した、数千のノードと数万の回線からなるネットワークが」


 サイラスがレティシアの肩に手を置いた。その手は震えていたが、支えようとする意志がこもっていた。


「君は悪くない。むしろ、こんな『美しくない』攻撃を仕掛ける敵が許せない」


 だが、その言葉も、虚しく響いた。


 画面のCPU使用率メーターが、ついに突き刺さった。100パーセント。それ以上を示す目盛りはない。赤い針が右端に張り付いたまま、ピクリとも動かない。あるのは、赤と黒の警告色だけだった。



## 3. 終わらない悪夢


 王都のカフェテラス。

 午後の日差しが降り注ぐ、優雅な石畳の広場。貴族たちが行き交い、花売りの声が響く、平和な午後のひととき。


 マリエルはあくびを噛み殺していた。

 日差しの良い席で、アイスティーを片手に、携帯端末を弄りながら。

 傍目には、美しい聖女がのんびりとティータイムを楽しんでいるように見えるだろう。しかし、その手元のスクリーンには、ノクターン領のシステム状況をリアルタイムで監視するモニターが映し出されていた。


「あー、ハッキングって疲れる。キーボード叩くの面倒くさくなっちゃった」


 聖女様は退屈していた。

 ピンクゴールドの髪が午後の風に揺れ、その下の顔には、聖女らしからぬ怠惰な表情が浮かんでいる。


 ノクターン領へのサイバー攻撃は、もう五日目だ。最初の数日は愉しかった。防御システムを一つ、また一つと突破し、段階的にレティシアの仕組みを壊していく快感。パズルを解くのとは逆方向の快感――パズルを壊す快感。

 ファイアウォールの設定を分析し、脆弱性を見つけ、そこからペイロードを送り込む。防御が更新されれば、別の穴を探す。イタチごっこだが、攻める側が常に有利なのはセキュリティの鉄則だ。


 だが、さすがに飽きた。


 ちまちまと、精密な攻撃魔法を送り続けるのは、ゲーマーとしても退屈だった。RTAの本質は「最速」であり、「最精密」ではない。こんなことなら、もっと派手にやればよかった。

 しかも、レティシア側の防御が日に日に強化されている。最初の日に通用した手法が、翌日には塞がれている。自動学習型の防御システム。面倒くさい。実に面倒くさい。


 マリエルはアイスティーのストローを噛みながら、天を仰いだ。青い空に白い雲が浮かんでいる。平和だ。こんな平和な空の下で、サイバー戦争をしている自分が馬鹿らしくなる。


 そして彼女は、究極の手抜き攻撃を思いついた。


「結局さー、相手のシステムを『壊す』必要なんてないんだよね。『使えなく』すればいいだけ。壊すのは精密さが必要だけど、使えなくするのは雑でいい。究極的に雑でいい」


 マリエルは端末のキーボードに、たった一行のコードを打ち込んだ。


「『ずっと俺のターン』ってやつだね。この処理が終わるまで、他の誰も動いちゃダメ。そして――この処理は永遠に終わらない」


 `while(true) { ; }`


 マリエルは、ほぼ無意識に、そのコマンドを送信した。

 送信先は、L-Netに接続された全ノード。同時配信。

 指先でタッチするだけ。1秒もかからない。


 彼女が放ったのは、思考停止の罠。シンプルで、エレガントで、そして最悪な呪い。

 システムに「待て」を命令し続けるだけの。終わることなく。

 プログラミングの世界で「無限ループ」は初歩的なミスとされる。だが、それを「意図的に」「大規模に」仕掛けた場合、それは立派な――いや、凶悪な攻撃になる。

 DDoS攻撃の変形だ。大量の無意味なリクエストでサーバーを飽和させる古典的な手法。しかし今回は外部からの攻撃ではなく、システム内部で自己生成される無限の負荷。止めるには、物理的にマシンの電源を落とすか、内部からプロセスを強制終了するしかない。


 ループが消えない。ループが終わらない。処理が前に進まない。全てが停止する。

 秒間数百万回の「何もしない」が、数千のマシンで同時に実行され続ける。


「さーて、サーバーが落ちるまでお昼寝でもしようかな。何杯目だろ、このアイスティー」


 マリエルはテーブルに突っ伏した。ピンクゴールドの髪が大理石のテーブルの上に広がる。

 その顔には、満足げな笑みが浮かんでいた。猫が日向ぼっこをするような、邪気のない表情。

 だが、その邪気のなさこそが最も恐ろしいのだ。彼女にとって、世界を壊すことは「退屈しのぎ」でしかない。壊す対象への敬意も、壊される側への同情もない。ただの作業。ただの消化試合。


 遠く、辺境のノクターン領。その執務室で、レティシアとサイラスが見守る画面の中で。


 システムは悲鳴を上げていた。

 モニターの赤い光が、二人の蒼白な顔を照らしている。


「な、なんてことを……!」

 サイラスが憤っていた。その拳がテーブルを叩く。冷めた紅茶のカップが跳ね、中身がソーサーに溢れた。


「こんな……美しさの欠片もない。設計思想の欠落した。野蛮で、下品で、尊厳のないコードが。たった一行のコードが。許されていいのか! プログラミングの冒涜だ! `while(true)` だと!? 変数もない! 関数もない! 構造もない! こんなものは『プログラム』とは呼ばない! これはただの……ただの暴力だ!」


 技術者として、最も許せない侮辱。それは、相手を格下に見なすことだった。マリエルの攻撃に込められているのは、そういうメッセージだ。

 「お前たちの何ヶ月もの努力が作り上げた精巧なシステムを、私はたった一行で無力化できるんだぞ」と。

「君たちの努力なんて、こんな簡単な手段で潰せるんだぞ」と。


「許さない……絶対に許さないわ、マリエル!」


 レティシアは叫んだ。その声は、怒りだけでなく、悔しさに震えていた。

 目の奥が熱い。泣きそうだ。だが、泣くわけにはいかない。


 エンジニアとして、最も許せない攻撃。それは技術的な知識から生まれたものではなく、悪意を持って――意図的に「美しくない方法」を選んで、仕掛けられたものだった。

 レティシアの精巧な防御システムを、精巧な攻撃で突破するのではなく。ただ力任せに、ブルートフォース(総当たり)で潰す。

 剣の達人に対して、剣技ではなくビルを丸ごと落とすような攻撃。


 つまり、完全なる舐めプ(なめプレイ)。


「サイラス様、力を貸して!」


 レティシアはサイラスを見つめた。その目には、炎が宿っていた。

 諦めの色はない。むしろ、闘志が燃え上がっている。


「この無限ループを断ち切るには、強制割り込み(インタラプト)しかないわ。だけど、私一人では、正確なタイミングを計算できない」


 なぜなら、ループが同時多発的に発生しているから。数千のマシンで、数百万回のループが、同時に回転している。それを統制的に割り込むには――一つ一つ手動で止めていては間に合わない。止めた端から新しいループが生成される。全てのマシンのプロセスを、同じ瞬間に、一斉に強制終了する必要がある。


「ペアプログラミング?」


 サイラスが呟いた。

 その声に、決意が滲んでいた。


「そうです。あなたが計算を。私がシステム制御を。二人で同時に実行すれば――全ノードへの同期的な割り込み信号を、一斉送信できます」


「わかった。君の美しいネットワークを、あんな下品なバグに汚させてたまるか」


 サイラスは椅子を引き、キーボード前に座った。

 白衣の袖をまくり上げ、長い指がキーの上に構えられる。


 レティシアは、彼の隣に立った。

 並んだ二つのモニター。赤い警告に染まる画面が、二人の横顔を照らしている。


 二人は、同じモニターを見つめた。赤く警告に染まるシステムログを。果てしなく続く無限ループを。

 `while(true)` の文字列が、滝のように流れ落ちていく画面を。


「では、いきますか」


「ああ。君の論理とこの腕が、最高の形で融合する時だ」


 秩序のタッグが結成された。


 二人の天才エンジニアが、終わらない悪夢ループに、いよいよ真正面から挑もうとしていた。

 モニターの赤い光が、彼らの背後に長い影を落としていた。


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

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

↑ページトップへ