第1話:目覚めのリブート
「……う、あ……?」
目を開けると、そこは知らない天井だった。
いや、天井だけではない。
空気の匂いが違う。湿度も、重力さえも、何かが違う。
肌に触れる布の感触はゴワゴワとしていて、化学繊維特有の滑らかさがない。まるで麻袋の中に詰め込まれたような居心地の悪さだ。
(……どこだ、ここ)
起き上がろうとして、僕は自分の体に致命的な違和感を覚えた。
動かない。
手足が、まるで鉛を流し込まれたかのように重いのだ。
神経がうまく繋がっていないような、ドライバの不具合にも似た感覚。
視界を動かす。
ぼやけた視界に入ったのは――クリームパンのように白く、ムチムチとした小さな手だった。
指の関節にはエクボができている。どう見ても、三十路を超えた社畜エンジニアの手ではない。
(……は? なんだこれ。僕の手か?)
状況を整理しようと脳をフル回転させる。
だが、思考速度に体がついてこない。
少し複雑なことを考えようとしただけで、脳みそが焼き切れるような猛烈な疲労感が襲ってくる。CPU使用率が常に100%に張り付いているような重苦しさだ。
【System Check Initiated...】
【Warning: Hardware Spec Verification Failed.】
【CPU: Low Performance (Infant Type)】
【Memory: Insufficient (32MB)】
【Storage: Write Protected】
脳裏に、無機質なエラーログが走った。
幻覚ではない。システムエンジニアとして長年培ってきた「論理的思考」が、現状をシステムトラブルとして解釈しているのだ。
(ハードウェア……スペック不足? 僕が、赤ん坊になってるってことか?)
転生。
ラノベやアニメで見たことのある概念だ。
ブラック企業でのデスマーチの果てに過労死した社畜が、異世界で第二の人生を歩むというやつ。
まさか自分がその当事者になるとは。
「……あう、あー」
声を出そうとしても、情けない喃語しか出てこない。
声帯の制御すらままならない。言語モジュールもまだ初期化されていないらしい。
絶望的な「低スペック環境」へのダウングレード。
愕然とする僕――レインの視界に、若い女性の顔が覗き込んだ。
「あらあら、レイン。起きたの? いい子ねえ」
母親だろうか。
優しげな微笑みと、栗色の長い髪。
彼女は僕を抱き上げると、あやしながら優しく語りかけてくる。
レイン・リファクト。
それが、この世界で僕に与えられた個体識別名だった。
だが、僕の関心はすぐに、彼女の顔から指先へと移った。
そこには、物理法則を無視した不可思議な「光」が灯ろうとしていたからだ。
夕暮れ時の薄暗い部屋を照らすために、彼女は魔法を使おうとしていた。
「暗いから、明かりをつけましょうね。《ライト》」
彼女が指先を振ると、小さな光球がふわりと浮かび上がった。
魔法だ。
間違いなく、ファンタジー世界の魔法だ。
普通なら感動する場面だろう。文明の利器を使わずに光を生み出すなど、前世の常識ではあり得ない奇跡だ。
だが。
僕の反応は違った。
(……なんだ、そのクソコードは!!)
僕は心の中で絶叫した。
僕の目には、その魔法が「輝く光」ではなく、「醜悪で非効率なプログラム」として視覚化されていたのだ。
――『低レイヤー・ビジョン』。
それが、僕がこの世界に持ち込んだ唯一のユニークスキル。
世界の物理法則を、ソースコードとして視認する——エンジニアの職業病が具現化したような目だ。
僕の目には、母の指先で実行されている処理が、コンソール画面のログのように流れて見えた。
そしてそれは、見るに耐えない代物だった。
```
function cast_light() {
// 無駄なループ処理。なぜここで100回も魔素を回転させる?
for (i=0; i<100; i++) { gather_mana(); }
// 冗長な条件分岐。火属性のチェックなんていらないだろう。
if (is_fire == true) { error(); }
// 変数の宣言場所がおかしい。グローバル変数を汚染している。
var light_intensity = 50;
// メモリ解放漏れ! これじゃ魔力が垂れ流しだ!
emit_light(light_intensity);
// return; ←ここ! 終了処理がない!
}
```
(汚い! コードが汚すぎる! インデントも揃ってないし、コメントもない! なにより、メモリリーク(魔力漏れ)が酷すぎて見てられない!)
母は光を出すたびに、少し疲れたように息を吐く。
当然だ。
本来なら「1」の魔力で済む処理に、「100」の魔力を浪費しているのだから。
エネルギー効率が悪すぎる。これでは電球を点けるために火力発電所を一基燃やしているようなものだ。
(直したい……! 今すぐその場でリファクタリングしてやりたい!)
(その `for` 文はいらない! 条件分岐も `one-liner` で書ける! 変数はローカルスコープに閉じ込めろ!)
エンジニアの職業病が疼く。
バグを見つけたら修正せずにはいられない。最適化されていないコードを見ると蕁麻疹が出る。
だが、悲しいかな。
僕の体は、まだ生後数ヶ月の乳児なのだ。
キーボードを叩く指もなければ、呪文を唱える口もない。
ただ「あーあー」と喚くことしかできない。
(くそっ、見えてるのに! 解法は分かってるのに、実装できない!)
(インターフェースがない! 入力デバイスがない! `Standard Input` が `Null` だなんてふざけるな!)
僕は悔しさのあまり、「あー! うー!」と手足をバタつかせて抗議した。
母はそれを「元気いっぱいね」と勘違いして、ニコニコと頬ずりをしてくる。
柔らかい頬の感触。母の匂い。
それは本来なら安らぐべき温もりなのだが、今の僕にとっては「バグを放置する開発者」への憤りでしかなかった。
違う。そうじゃない。
僕は愛されたいんじゃない。デバッグがしたいんだ。
【今節の専門用語解説】
・低レイヤー(Low Layer)
プログラムの中でも、より機械に近い部分のこと。レインは世界の法則をこのレベルで視認し、直接いじることができる。
・メモリリーク(Memory Leak)
使い終わったメモリ領域(作業スペース)を解放し忘れること。これが起きると、パソコンの動作がどんどん重くなる。魔法で言うと「魔力の無駄使い」である。
・リブート(Reboot)
システムの再起動。レインにとっての「転生」は、まさに人生のリブートだった。前世の膨大な知識と経験を引き継いだまま、新しい体で再起動した状態。




