第1話 デスマーチの果てと、10歳の冬
カタカタと乾いたキーの音だけが、誰もいないオフィスに響いていた。22時を過ぎたところでビルの暖房は止まり、送風口のうなりが消えてからは、コンクリートの壁から底冷えする空気がはい上がってくる。吐く息がかすかに白い。机の下で爪先を動かしてみたが、感覚が鈍くて自分の指とは思えなかった。
真壁航、29歳。年が明けて1月14日になれば30歳になる。職業はシステムエンジニア。池袋駅西口の繁華街を抜けた裏通りの、古い雑居ビルに入っている小さなソフトウェア会社に勤めている。社員は十数人。大手の元請けが受けた大きな案件が、中堅の下請けを経由して、最後にこぼれ落ちてくる。いわゆる孫請けの会社だ。
2枚並べたモニターの青白い光が、散らかった机を照らしている。キーボードの脇には、飲み干したエナジードリンクの缶が4本。モニターの縁には、期日の過ぎたタスクを書いた黄色い付箋が何重にも貼られていた。画面の中では、黒い背景に緑色のログが滝のように流れ続けている。
今夜の仕事は、元請け経由で請けた、ある商社の勤怠管理システムのデータ移行だ。年明けの1月5日から新しい仕組みに切り替えるため、古いデータベースにたまった数年分の記録を、新しいデータベースへ流し込む。本来なら、とっくに終わっているはずの工程だった。12月に入ってから元請けの都合で仕様変更が3回も割り込み、そのたびに、データを変換して移すためのプログラム――移行スクリプトを書き直す羽目になった。
何より笑えないのは、人の労働時間を1分単位で記録するシステムを作っている俺自身の勤怠が、会社の指示で毎日18時退勤として打刻されていることだ。記録の上では、俺は今日も定時で帰ったことになっている。「みなし残業40時間」を超えた分は社内規定上存在せず、すべて「自己研鑽」という便利な四文字で処理されていた。
先月、唯一のチームメンバーだった1つ年下の後輩が、胃潰瘍の診断書を置いて辞めていった。それ以来、要件の聞き取りから設計、プログラム、データベースの構築、テスト、本番への移行手順書、夜間の障害対応まで、全部が俺一人に乗っている。
チャットの通知音がフロアに小さく響いた。ほぼ同時に、机の上のスマートフォンが震え出す。画面の表示は『営業部 課長』。乾いた唇を舌で湿らせてから、通話ボタンを押した。
「お疲れさまです、真壁です」
「おお、真壁! まだ起きてたか。進み具合はどうだ?」
電話の向こうから、居酒屋の騒がしい笑い声とグラスのぶつかる音が聞こえる。課長の声は明らかに酒が入っていて、上機嫌だった。
「移行スクリプトを流しながら、エラーの記録を確認しています。順調にいけば、朝の4時か5時には終わる予定です」
「そうかそうか、助かるよ! いやさ、さっきまで元請けの部長さんと飲んでてさ。『年内完了は絶対でお願いしますよ』って念を押されちゃって。『うちのエースが今夜中にきっちり終わらせます』って言っといたから!」
「……今夜中、ですか。移行計画では、やり直しに備えて1月3日まで予備日を取っていたはずですが」
「まあまあ、年内にケリつけといたほうが、お互い気持ちよく正月を迎えられるだろ? 気合でなんとかなるって! あ、俺、明日から金沢の実家に帰省だから。新幹線で寝てたら電話出られないかも。じゃ、あとは頼むな!」
「あ、課長、移行後の確認資料の提出先について――」
言い終える前に、通話は切れていた。俺はスマートフォンを伏せて机に置いた。現場の予定を差し出して元請けにいい顔をし、自分は明日から実家で餅を食う。悪気がないのは知っている。あの人は、画面の向こうでコードを書く作業にどれだけの手間がかかるのかを、たぶん一生理解しない。
小さく息を吐いて、冷えた両手をもみ合わせる。怒る気力もわかない。文句を言って手を止めたところで、明日困るのは自分だ。下請けの悲哀を嘆く時間があるなら、1行でも多くコードを整えたほうがましだった。
深夜1時を回ったころ、画面の右下にメールの通知が出た。送り主は元請けの担当者。件名は『【至急確認】データ移行時の有休フラグの扱いについて』。
『夜分遅くに失礼いたします。仕様書を社内で再確認したところ、過年度分の有休失効データの移行ルールに齟齬がある可能性が浮上いたしました。大変恐縮ですが、失効フラグを個別に判定する処理を追加したうえで移行を流していただけないでしょうか。明朝9時の進捗会議までに結果がそろっていると幸いです』
思わず眉間を指で押さえた。その仕様は先々週の定例会議で合意し、議事録にも残してある。今になって蒸し返してくるのは、向こうの社内レビューで突っ込まれたからだろう。とはいえ、反論のメールを1通書く手間と、判定の処理を足して流し直す手間を比べれば、後者のほうがずっと早い。孫請けの会社員に「できません」という選択肢は用意されていない。
「……はい、今夜中に流します」
誰もいない部屋でそう口に出してから、承知しました、と返信を送った。
エディタを開き、条件によって処理を分ける分かれ道――条件分岐を、またひとつ書き足す。場当たりの継ぎ足しが、これでいくつ目になるのか。誰が保守するんだ、これ。キーボードをたたく指先が、いつからか妙にぴりぴりとしびれていた。左胸の奥に、冷たい鉛を押し込まれたような重さがある。まぶたの裏がちかちかして、モニターの端が白くかすんで見えた。
年末だからな、と自分に言い聞かせる。この1週間で、合わせて10時間も寝ていない。体がおかしくなるのも当然だ。全部終わったら、近くのビジネスホテルに潜り込んで丸一日眠ればいい。引き出しから頭痛薬を出し、冷めて苦くなったお茶で流し込んだ。
3時を過ぎ、4時を迎える。サーバーのファンがうなる中、進み具合を示すゲージが97%、98%とゆっくり伸びていく。エラーは出ていない。書き足した処理も、問題なく通っている。
4時18分。画面の最下行に、白い文字が静かに表示された。
『データ移行処理:正常終了(処理件数:1,248,500件/エラー件数:0)』
終わった。
深く息を吸って、背もたれに体を預ける。張りつめていた神経がほどけて、安堵が胸いっぱいに広がった。その瞬間、胸の真ん中を強く締めつけられるような衝撃が走った。
「……っ」
声にならなかった。胸を押さえようとしても、腕に力が入らない。視界の端から暗さが広がり、天井の蛍光灯が遠ざかっていく。椅子から体が滑り落ちた。床のカーペットに頬が触れた感覚さえ、ひどく遠い。
最後に頭に浮かんだのは、自分でもあきれるほど仕事人間らしい考えだった。
ログのバックアップ、共有サーバーにコピーしたっけ。
有給休暇、20日以上まるまる残ってたな。
……次は、ちゃんと休みのある職場で働きたい。
そこで考えの糸がぷつりと切れて、俺の意識は暗がりの底へ沈んでいった。
◇
八柱暦4096年12月27日、風の日の夜。ぱちぱちと、どこかで薪のはぜる小さな音がしていた。鼻をくすぐるのは、香草と根菜を煮込んだスープの温かい匂い。
僕は木の椅子の上で身じろぎして、ゆっくりと目を開けた。
ここは王国の東部にある町、ミルフェン。大通りから一本入った石畳の路地に建つ「ラングナー魔術具修理店」の2階の居間だ。僕の名前はテオドール・ラングナー。家族や友達からは、テオと呼ばれている。今年の秋に10歳になった。
夕食を終えた丸テーブルの上では、天井から吊るした真鍮の枠の中でガラスの球がやわらかなだいだい色に光り、食卓を照らしている。魔石の力で明かりをともす魔導灯だ。台所では母さんが、洗い終わった皿を布巾で拭いていた。母さんは町の役所で住民の記録を扱う仕事をしていて、家計にも夜更かしにも口うるさい。
「テオ、いつまでテーブルでうとうとしてるの。自分のお皿とスプーン、流しまで持ってきなさい」
「うん、いま持ってく」
スプーンと深皿を重ねて流しへ運ぶ。ついでに壁際の冷蔵箱の取っ手を引くと、背丈ほどある木の箱の扉が重たく開き、ひんやりした冷気が足元に流れ出した。奥の受け皿には薄青く光る魔石がはめ込まれていて、その力を裏の回路板が冷気に変え、牛乳や果物を冷やしてくれる。冷えたガラスのピッチャーから水を注いで飲んでいると、作業着の袖をまくった父さんが居間の引き戸に手をかけた。
「ハンス、もう夜の9時を回ってるよ。明日も朝から冷え込むんだから」
母さんが布巾を持った手を腰に当てて、あきれたように眉を寄せる。父さんはこの町でも指折りの修理職人だけど、仕事に熱が入ると周りが見えなくなるのが困ったところだった。
「分かってる。だが冬至祭まであと3日だ。大通りの肉屋の冷蔵箱、明日中に戻してやらねえと、祭りの仕込みの肉が全部傷んじまう。あれだけは今夜片付けたい」
「無理して倒れたら、お祭りどころじゃないでしょ。エマだってお祭りの前の日には寮から帰ってくるのに、父親が寝込んでたら格好がつかないよ」
「少しだけだ。きりのいいところまでやったら寝る。……テオ、子供はもう寝ろ。風邪ひくぞ」
「おやすみなさい、父さん」
父さんは僕の頭を大きな手でくしゃりとなでて、階段を下り、1階の作業場へ戻っていった。6歳の妹のリリは、もう隣の子供部屋で寝息を立てている。僕もベッドに潜り込み、厚い羊毛の毛布を顎まで引き上げた。下の階からかすかに、コン、コンと金属をたたく音が聞こえてくる。その音を聞いているうちに、眠りに落ちていった。
真夜中、喉が渇いて目が覚めた。部屋はすっかり冷えて、窓ガラスの隅に白い霜が降りている。裸足のままそっと部屋を出て、きしむ木の階段を下りた。作業場の引き戸のすき間から、黄色い明かりが一筋、廊下の床に伸びている。
まだ起きてるのかな。
音を立てないように引き戸を少しだけ開けて、中をのぞいた。棚には大きさの違う魔石や真鍮のねじ、いろいろな形のねじ回しや鏨がぎっしり並んでいる。その真ん中の作業台で、父さんが両腕を枕にして突っ伏していた。低い寝息が聞こえる。手元の作業用の魔導灯が、乱れた茶色の髪と、目の下の濃いくまを照らしていた。
「父さん……」
声をかけようとして、口を閉じた。作業台の隅には、肉屋の冷蔵箱の部品が山になっている。夕食のあともずっと、一人でこれと格闘していたんだ。
その背中を見ているうちに、なぜか胸の奥がきゅっと締めつけられた。夜遅くまで机にしがみつき、誰にも頼れず、倒れ込むように眠る姿。そんな光景を、僕はこれまで一度も見たことがないはずなのに、泣きたくなるほどその苦しさが分かる気がした。
首を振って、隅の棚から古い毛布を取り、父さんの広い背中にそっと掛けた。父さんは少し身じろぎしただけで、起きる気配はなかった。
作業台の上、父さんの右手のすぐ脇に、手のひらより一回り大きな四角い板が置かれていた。故障した冷蔵箱から取り出された回路板だ。表面には、魔導銀の細い線で、細かな模様がびっしり刻まれている。魔石から吸い上げた魔力をこの模様に通すと、冷気が生まれたり、風が起きたりする。魔術具の心臓みたいな部品だ。
回路板を直すとき、父さんは焼き切れた線を鏨で削り落とし、新しい銀を流し込んで、昔の親方に教わったとおりの模様を刻み直す。模様の意味を考える職人はいない。教わった形を狂いなく写すのが、この町の「修理」だった。
僕は作業台に身を乗り出して、その回路板をじっと見つめた。いつも見ている、ただの複雑な模様。文字でも絵でもない、銀色の溝。
それなのに、今夜は何かが違った。
模様が、読める気がする。
左端の魔石をはめる台から、銀の線が1本伸びている。魔力はここから入ってくるんだ。その線は途中で3本に分かれ、それぞれの先で、まったく同じ渦巻きを描いていた。同じ形を、どうして3回も別々に刻んでいるんだろう。1回で済ませて、あとで分ければいいのに。
真ん中に目を移すと、細い線が同じ輪の中をぐるぐると4回も回ってから、ようやく次へつながっていた。こんなに回っていたら、そのたびに板が熱くなってしまう。線が焼き切れたのは、古くなったからじゃなくて――。
これじゃあ、まるで。
繰り返しの処理の中で、毎回意味もなく同じ準備をやり直して、メモリを食いつぶしているような――。
その考えが浮かんだ瞬間だった。
どくん、と頭の芯が跳ねた。太いくぎを横から打ち込まれたような、激しい痛み。
「っ、ぐ……!?」
叫ぼうとしたのに、喉が引きつって、かすれた息しか出ない。立っていられなくなって、僕は作業場の床に崩れ落ちた。板張りの冷たさが膝を打つ。視界がちかちかと点滅し、色のついた砂嵐が渦を巻く。その奥から、とても収まりきらない量の何かが、堤防の切れた川のように頭の中へなだれ込んできた。
キーボードをたたく乾いた音。冷えきった雑居ビルのよどんだ空気。机に並んだ4本の空き缶。“気合でなんとかなるって”と笑って電話を切った上司の声。黒い画面に浮かんだ、白い『正常終了』の文字。頬に触れた床のカーペット。
真壁航。残業に追われ、理不尽に耐え続けたシステムエンジニア。その男が29年かけて積み上げてきた知識と経験と考え方のすべてが、10歳のテオドール・ラングナーの中へ、強引に焼きつけられていく。
頭が割れそうだった。声も出せないまま、床に爪を立てて耐えた。作業台の父さんは深く眠っていて、僕の異変に気づかない。どれくらいたったのか。数十秒のようでもあり、ずっと長い時間のようでもあった。やがて、頭を締めつけていた痛みが、うそのように引いていった。
荒い息を吐きながら、床についた自分の両手を見る。小さくて、白くて、子供らしいやわらかさのある、10歳の手だ。
俺は、真壁航だ。
そして同時に、この家で父さんと母さんに育てられてきた、テオドール・ラングナーでもある。どちらかがどちらかを追い出したような感じはしない。ふたつの記憶が、同じ頭の中に当たり前のように並んでいた。
額ににじんだ冷や汗を手の甲でぬぐい、作業台の回路板を見上げた。さっきまで不思議な模様に見えていた銀の線が、今はもう、ひどく出来の悪い設計図にしか見えない。異常が起きたときの備えもなく、昔の記述をそのまま写しては継ぎ足し、麺のように絡まり合った――いわゆるスパゲッティコードだ。
床に座り込んだまま、口から乾いた声がこぼれた。10歳の子供の声で、10歳の子供が言うはずのない言葉だった。
「……この回路、同じ処理を何回書いてるんだ?」
自分の声に驚いて、思わず喉を押さえた。作業台の上では、父さんが相変わらず静かな寝息を立てていた。




