第76話 セキュリティ・アップデート
```
[SYSTEM LOG - securia outer wall / refactoring day 1 / T+33:48:00]
> entity 01 (LEN): Lv5 / root / active / emotional amplitude 80%
> location: securia fortress nation / outer wall north sector / pixelization edge
> task: first refactoring — defensive code rewrite (legacy stack, 3000y depth)
> protocol: TDD (test-first), staged rollout, adapter layer
> witness: aria / guard / shell / memory / harsh / securia chief mage council
> bug_density (global counter): 94.69%
> [STATUS] refactor begins
```
---
セキュリア要塞国の北の外壁の前に、俺は立った。
外壁は石の十間の高さで、長さは見渡すかぎり地平線まで続いていた。要塞国というだけあって、その壁は、千年前に組まれた最初の石組みの上に、二千年前、三千年前と――各時代の補強が、層になって積み上がっていた。古い石の上に、新しい石。新しい石の上に、さらに新しい石。継ぎ目には、それぞれの時代の魔法師たちが書き込んだ防衛コードの刻印が、薄く光っている。
その壁の、北の一区画。
そこから先の景色が、四角い粒に、ほどけはじめていた。
朝の空気のなかで、石の表面が、ドット単位で滲んでいる。粒の一つ一つが、定義の輪郭を保てずに、輪郭の手前で薄く揺れている。揺れの量は、まだ目を凝らさないと分からない。だが、Lv5の視界では、はっきり見えた。ピクセル化が、もう壁の表面まで達していた。
「あと数刻で、外側の一層が崩落します」
セキュリア要塞国の主席魔法師が、俺の半歩後ろで、低い声で言った。
灰色の長衣を着た老人だった。三千年分の防衛コードの保守を、その小さな国が代々受け継いできた、その最後の継承者。彼の指先には、何重にも刻まれた印が、薄く光っていた。
「主席殿」俺は壁から目を離さずに、訊いた。「この壁の防衛コードの最古の層は、いつ書かれたものですか」
「最古は――三千年前。創世期の魔法師、ファイア・ウォール卿の手による、初代の刻印です」
「ファイア・ウォール卿」
俺は思わず、薄く笑った。前世のサーバ管理の語彙が、ここにも、千年単位で残っていた。アドミンが旧世界から運んできた、おそらく最古の語彙の一つ。
「壁の名は、その方から取ったのですか」
「壁が先か、卿が先か、もう分かりません」主席は静かに答えた。「分かるのは――卿の刻印の上に、三千年分の補修が、層になって積み上がっている、ということだけです」
俺は壁の表面に手を当てた。手の平の下で、三千年分の防衛コードの地層が、ゆっくりと脈を打っていた。
---
「シェル」俺は背後を振り返らずに呼んだ。「現状の壁の防衛コードを、Lv5の解像度で読み取れ。古い層から新しい層まで、全部スキャンする」
「了解した」
シェルの補助具が、八個全部、空中に展開した。八つのグラフが、壁の表面に薄い線を投影し、そこから地層の断面を、薄く切り取りはじめた。
「報告する」シェルの声が、グラフの揺れに合わせて、低く流れた。「最古層、三千年前。基本魔法盾の関数定義、二十七行。記法、旧世代。コメントなし。後続の参照は、千七百ある」
「千七百」
「上の層がすべてその関数を直接呼び出している。古い関数を直すと、千七百箇所が同時に影響を受ける」
シェルはふん、と鼻を鳴らした。「これを書いた三千年前の魔法師は、抽象化という概念を知らなかった」
「責めるな」俺は短く笑った。「三千年前にレガシーコードという語はなかった」
ガルドが赤い篭手で、壁の表面を、こんこん、と叩いた。
「で、レン。お前、これをどうする」
「書き直す。ただし、いっぺんには書き直さない。前世の作法に従って、一個ずつ、安全に書き直す」
「作法?」
「テスト・ドリブン・デベロップメント」
ガルドが目を細めた。「呪文の名前か、それ」
「呪文じゃない」俺はLv5の塊から、銀色の指を二本伸ばした。「まず、いまの壁の振る舞いを、テストとして書き留める。壁が魔物の攻撃を防いだ時、どう振る舞うか。火を受けた時、どう振る舞うか。雷を受けた時、どう振る舞うか。境界の条件を、ひとつひとつ、テストとして固定する」
シェルの補助具が、その指の動きに合わせて、グラフの上に薄い枠を切り出した。テストケースの枠だ。一枠ずつ、入力と期待される出力が、銀色の文字で書き込まれていく。
「そのテストが揃ったら――壁の中の古い関数を、ひとつだけ書き直す。書き直したら、すぐにテストを全部走らせる。テストが全部通れば、振る舞いは変わってない、ということだ。安全に書き直した、と確認できる」
「テストが通らなかったら?」
「書き直しを巻き戻す。巻き戻して、テストが通る方法を考え直す。それまで、現場のコードは元のままだ。本番には、テストが通ったやつしか出さない」
ガルドは赤い篭手の指で、額を一度、軽く叩いた。
「……つまり、いきなり全部書き直さず、一個ずつ、テストで確認しながら、安全に置き換えていく、ってことか」
「そういうことだ」
「ふん」ガルドは肩をすくめた。「武勇伝にはならねえやり方だな」
「武勇伝じゃない。仕事だ。仕事は、武勇伝にならないほうがいい。武勇伝になる仕事は、たいてい、どこかで手順を踏み外してる」
シェルの補助具の一つが、その言葉を、グラフの隅に、薄く記録した。
---
主席魔法師が、半歩、俺の隣に並んだ。
「レン殿」その声は、低かったが、震えていなかった。「いま、貴殿がやろうとしていることを、われわれの若い魔法師たちに、見せていただいてよろしいか」
「見せていい」俺は頷いた。「むしろ、見せたい」
主席は背後の若手の魔法師たちに、手で合図した。十数人の若い魔法師たちが、半円を描いて、外壁の前に集まった。みな、灰色の見習い衣を着ていた。年は、十代後半から二十代前半。
「諸君」主席が、彼らに向き直った。「これから、レン殿が、初代ファイア・ウォール卿の刻印を、現代の手で書き直す。これは、三千年に一度の場面だ。記録に残すように」
若い魔法師たちが、それぞれ手の中に、薄い記録板を取り出した。板の表面に、銀色の筆が走りはじめた。
俺は壁に向き直った。Lv5の塊から、銀色の指を、もう一度伸ばした。
「最初に書くのは、テストだ」
声を、若い魔法師たちにも届く高さに上げた。
「壁の振る舞いをテストする。境界条件は三つ。一、火属性の攻撃を受けた時の減衰率。二、雷属性の攻撃を受けた時の減衰率。三、物理属性の攻撃を受けた時の減衰率。それぞれに、入力の強度と、期待される減衰後の強度を、対で記録する」
シェルの補助具が、銀色のテーブルを空中に展開した。三列のテーブル。属性、入力強度、期待減衰後強度。
「現在の壁の挙動を、Lv5で測定する」
Lv5の指を、壁の表面に当てた。指の先から、薄い試験信号を流した。火、雷、物理の三種。壁の防衛コードが、それぞれの信号に反応し、減衰した出力を返してくる。
返ってきた数値を、シェルの補助具が、テーブルに書き込んだ。
火、入力百、減衰後二十二。雷、入力百、減衰後三十一。物理、入力百、減衰後十九。
「これが、いまの壁の振る舞いだ。これを『正』とする」
俺は若い魔法師たちを振り返った。
「いまから書き直す新しい関数は、この三つのテストを、全部、同じ数値で通さないといけない。通らなかったら、書き直し失敗、ということだ。挙動を変えてはいけない――まず、それを固定する」
若い魔法師たちが、半歩、前へ出た。
「先生」一番前の少女が、震える声で言った。「『挙動を変えない』なら――書き直す意味は、なにに、あるのですか」
「いい質問だ」俺は彼女のほうへ、半歩、近づいた。「挙動は変えない。だが、構造は変える。三千年前の関数は、千七百箇所から直接呼ばれてる。直接呼ぶ、というのは、依存が密だ、ということだ。古い関数の一行を直すと、千七百箇所に影響が出る。怖くて、誰も直せない――そんな構造だ」
少女が頷いた。
「だから、その関数の前に、薄い『取り次ぎ層』を一枚、挟む。今後は、千七百箇所が、その取り次ぎ層を呼ぶ。取り次ぎ層が、内部で、古い関数を呼び出す。挙動は変わらない。だが――次に古い関数を直したい時、取り次ぎ層の中だけで、安全に直せるようになる。千七百箇所には、もう影響しない」
若い魔法師の一人が、記録板の上で、銀色の筆を速く走らせた。
「先生」別の魔法師が、訊いた。「その層を、なんと呼べばよろしいでしょうか」
「アダプタ、と呼んでくれ」俺は短く笑った。「前世の現場の語彙だ。『取り次ぎ』の意味だ。古いものと、新しいものを、取り次ぐ層――それがアダプタだ」
「アダプタ」少女が呟いた。「いい名前です」
Lv5の指で、壁の表面に、その「アダプタ層」のコードを、薄く書きはじめた。
---
書く手の動きを、二十人ほどの若い魔法師たちが、息を詰めて見ていた。
俺は彼らに見える速さで、コードを書いた。前世だったら、もっと速く書けた。だが、ここでは、見せるのが半分の目的だった。速度より、手順。手順より、なぜその手順を踏むのか。
書きながら、声に出した。
「いまから、関数の入口に、引数のバリデーションを入れる。入力の属性が、火・雷・物理以外だったら、すぐに弾く。これがないと、想定外の入力が中に流れ込んで、後ろで爆発する」
「ばりでーしょん」少女が、記録板に書き留めた。
「検証、と訳していい。境界での検証、というのが、コードの基本作法だ。外から来るものは、必ず入口で検証する。内側のものは、信頼する。信頼するから、内側のコードは、検証を二重にしない」
「内側を信頼する――」少女が顔を上げた。「もし、内側にもバグがあったら?」
「その時は、テストが見つける」俺は短く笑った。「内側の関数も、別のテストで守ってある。一個一個のテストが、その関数の振る舞いを保証する。だから、入口で二重に検証しなくていい」
胸の中央の塊が、薄く脈を打った。
その脈の上で、書いているコードが、薄く緑色に光った。テストが通った合図だった。
「通った」俺は若い魔法師たちに告げた。「三つのテスト、全部、緑だ。火二十二、雷三十一、物理十九。挙動は変わってない。だが、構造は変わった。今後、ファイア・ウォール卿の関数を直したい時は、取り次ぎ層の中だけで、安全に直せる」
主席魔法師が、ゆっくりと頷いた。その目尻に、薄い光があった。三千年分の地層に、初めて、安全に手をつけた瞬間だった。
「レン殿」主席は低く言った。「これを――われわれにも、できる、と思われますか」
「できる」即答した。「俺のやってる手順は、特別な才能じゃない。順番だ。テストを書く、変更する、テストを走らせる、通ったらコミットする、通らなかったら巻き戻す。順番を、守る。それだけだ」
「順番を、守るだけ」
「守るだけだ。守れない時は、急いでる。急いでる時に手を出さない。手を出すなら、急がないで出す。それだけが、守るべき作法だ」
若い魔法師たちのなかの何人かが、互いに目を見合わせた。視線のあいだに、薄い震えが走った。震えは、戸惑いと、ほんの少しの希望が、混じったものだった。
「われわれにも、できる」主席が、つぶやいた。
「俺ひとりでは、世界全体は書き直せない」Lv5の指を、壁から離した。「俺の脳は、ただの人間の脳だ。処理能力には限界がある。各国の若い魔法師たちが、この手順を覚えてくれれば、俺ひとり倒れても、壁は直し続けられる。そのほうがいい。属人化はよくない」
「ぞくじんか」少女が、また記録板に書いた。
「ぞくじんか、と読む。一人の人間にしか触れないコードは、その人が倒れた瞬間に、システム全体が止まる。だから、複数人で読み書きできるように作る。俺の前世の現場で、繰り返し言われた言葉だ」
主席魔法師が、深く頷いた。深さは、三千年分の継承の重みに、ようやく新しい一行を書き加えた、その重みのぶんだった。
---
午後の遅い時間まで、俺はアダプタ層の追加と、テストの整備を続けた。
セキュリア要塞国の北の外壁の、ピクセル化が始まっていた区画は、その時点で十七のテストが緑になっていた。十七の関数が、安全に「取り次ぎ層」を介して呼ばれるようになった。これで、その十七箇所は、今後、本体を触らずに、取り次ぎ層だけで直せる構造になった。
ピクセル化の進行が、止まった。
止まった、というより、Lv5の視界で見ると、進行の速度が、半分以下に落ちた。完全には止まらない。だが、半分でも、要塞国の住人にとっては、今夜の崩落を、明日の崩落へ、先送りできる、という意味があった。
主席魔法師が、外壁の前で、深く頭を下げた。
「レン殿。今夜は、城の貴賓室を用意します」
「ありがたい」俺は短く頭を下げ返した。「ですが、今日、ここで――俺と一緒にコードを書いた、若い魔法師たち。彼らの記録板を、夜のあいだに整理しておいてください。明日からは、彼らも、テストを書く側に回ってもらう」
「彼らに、ですか」
「彼らに。俺がやってる手順を、もう全部、見ました。残るのは、手を動かして練習することだけです。最初は俺がそばで見る。慣れたら、俺が要塞国を離れても、自分たちで進めてくれていい」
主席は、ゆっくりと、もう一度頭を下げた。
その時だった。
胸の中央の塊が、薄く――しかし鋭く、脈を打った。
普段の脈とは、違う波形だった。
「マスター」メモリが、書を抱えたまま、半歩、こちらへ寄った。「いま――遠くから、何かが来ています」
「何か」
「三千キロ先。世界の北の果ての、データベルグ公国とネットワーク連合の境界。複数のノードが、同時に、沈黙しはじめています」
シェルの補助具のグラフが、即座にその領域へ振り向いた。北の方向に、グラフの線が、滝のように落ちはじめた。
「ノードが落ちてる」シェルの声が、低く流れた。「百……二百……三百。今、五百を超えた」
「攻撃か」
「攻撃だ」シェルは即座に答えた。「データ上、自然劣化ではない。意図的な、外部からの飽和入力。要するに――」
シェルは、補助具のグラフを、俺のほうへ向けた。
グラフの右上に、藍と銀の二色のオーラの波形が、薄く滲んでいた。
「ヴァイラスだ」
ガルドが赤い篭手をぐっと握り直した。アリアが白い軽鎧の留め具を、最後の一個まで嵌め直した。ハーシュが肩の傾きを、深く落とした。メモリが書のページを、新しい章のところで開いた。
俺は北の地平線へ、目を上げた。
夕暮れの空が、北の方向で、四角い粒に、薄くほどけはじめていた。
「最初の総攻撃が来た」低く言った。「リファクタリングを始めた、初日の夜だ」
胸の中央の塊が、深く脈を打った。
その脈の中で、俺は、はっきりと、次の一行を読んだ。書き直す者の手と、壊そうとする者の手が、はじめて、同じ夜のなかで、向き合おうとしていた。
---
```
[SYSTEM LOG - securia outer wall / refactoring day 1 / T+41:30:00]
> entity 01 (LEN): Lv5 / root / active / emotional amplitude 80%
> first refactoring: COMMITTED (adapter layer × 17, all tests green)
> pixelization speed (north sector): reduced by 53%
> knowledge transfer: 20 securia junior mages — TDD procedure recorded
> incoming event: VIRUS DDoS — 500+ nodes dropped (northern border)
> bug_density (global counter): 94.69% → 94.93% (DDoS-driven spike)
> [STATUS] world-wide attack imminent
```
---
第77話「DDoS・ワールドワイド」




