第20話 遊びでは済まない
夜明け前の電話は、嫌な予感しかしない。
枕元で、スマホが鳴っていた。
画面に、莉央さんの名前。時刻は、六時前。
「相馬さん。朝早く、すみません」
声が、低かった。昨日の電話の終わりに笑った人と、同じ人とは思えない。
「異常、戻りました」
俺は、目を開けた。
「止まったんじゃないのか」
「昨日の夜までは、止まってました。今朝、また出ています。今度は……止まりません」
「打刻か」
「はい。出勤していない時刻に、出勤の記録がつき続けます。昨日の症状は一台でした。今朝は、三台です。止める操作が、効きません」
天井を見た。薄い闇が、まだ残っている。
「他には」
「在庫の端末で、数量が勝手に書き換わりました。あやうく、その数で発注をかけるところで……担当が気づいて、止めました」
莉央さんの声が、そこで一度途切れた。
「相馬さん。一度、現場を見てもらえませんか。会社には、私が話を通します」
電話の向こうで、頭を下げる気配がした。自分の作ったものが、知らない誰かの現場で、人を困らせている。その責任を、莉央さんは一人で抱えようとしている。
迷いは、なかった。
「行く」
「……ありがとうございます」
「一時間で着く。準備して出る」
通話が切れた。
部屋は、まだ暗い。机の上のレシートも、方眼紙も、何も知らない顔で転がっている。
「MICA。聞いてたな」
「はい」イヤホンに手を伸ばす前から、声が返った。「現場用の装備を、規程の範囲で組みます。読み取りは、触らない範囲だけです」
「分かってる」
白い点は、戻っていない。仮想キーも、投影格子も、入口を失ったままだ。あの夜、顔も知らない誰かに、先回りで切り離された。
道具の半分は、もうない。
それでも、行く。
——
電車は、朝の通勤客で埋まっていた。
吊り革につかまって、窓に映る自分を見た。
初めてあの事務所へ行った日のことを、思い出していた。
あの日の俺は、便利な道具を試しに行った。誰にも見えないログを読んで、誰にも追えない速さで答えを出した。現場には神様みたいに扱われて、莉央さんには速さを疑われた。それでも内心、得意になっていた。
世界の裏側に、俺だけが触れている。そういう遊びだった。
今日は、違う。
俺が遊んでいたのと同じ穴を、別の誰かが使っている。その手で、来てもいない人間の勤怠が狂って、出したつもりのない発注が走りかけている。
遊びの請求書が、俺じゃない人間のところへ届いている。
「MICA」
「はい」
「インシデント対応の優先順位。復唱しろ」
「原因究明より、封じ込めが先。燃えている間に、火元の議論はしません」
「そうだ」
声に出したのは、自分のためだった。
現場に着けば、犯人を捜したくなる。署名を読んで、経路を追いたくなる。それは、後だ。
まず、止める。
——
物流の事務所は、あの日と同じ匂いがした。
段ボールと、機械の熱と、薄いコーヒー。
入口に、莉央さんが立っていた。顔色が悪い。一睡もしていないのが分かる。
「相馬さん。こっちです」
奥の事務スペースに、卓上の端末が並んでいた。手のひら二つ分の白い箱。出勤の打刻と、在庫の入力に使う、莉央さんが書いたファームが動く機械だ。
そのうちの一台を、担当の人たちが遠巻きにしていた。
近づかない。
画面の中で、記録が増えていた。
誰も触れていないのに、打刻の行が、一つずつ伸びていく。六時十二分、出勤。六時十七分、出勤。六時二十二分。五分おきに、来てもいない人間が、出勤し続けている。
「電源を抜いても、入れ直すと、また始まるんです」
担当の一人が、小さく言った。
莉央さんは、その端末の前で、頭を下げた。
「ご迷惑を、おかけしています」
俺は、机に近づいた。
端末の、すぐ脇。
木目の上に、薄い半月形の痕があった。
——
見間違いじゃない。
その痕を、俺は知っている。
自分の部屋で、レシートの上で、何度も見た。仮想キーを消した後に、説明もなく残ったもの。机の端に、クリップのそばに、勝手ににじんでいたもの。あれだ。
自分のものではない、半月形。
この十日あまり俺が追いかけてきたものが、今、知らない人の業務机の上にある。
俺の部屋にあったときは、面白い謎だった。
ここにあるそれは、来てもいない人間を出勤させている。
同じ痕だ。
同じ穴から漏れた同じものが、俺の遊び場ではなく、人の生活の上ににじんでいる。
喉の奥が、塩辛くなった。
「MICA」
ポケットの中で、定型のコマンドを送る。声には出さない。
「この端末に来てる入力を、触らない範囲で読め。発行者だけ」
「読みます」
短い間。
「五分間隔。連番。発行者フィールドの固定部、一致します」
「qx41だな」
「はい」
来てもいない人間の出勤は、あの署名の脈拍だった。五分おきに、規則正しく、無神経に。俺の部屋でずっと鳴っていたのと、同じ列だ。
それが、ここでは人の打刻になっている。
——
「相馬さん」莉央さんが、隣に来た。「何か、分かりましたか」
「原因は、まだだ」
画面を見たまま、答えた。
「でも、止めるのは、原因が分かる前でいい」
「止められるんですか」
「この一台だけなら」
しゃがんで、端末の設定画面を開いた。莉央さんのファームだ。現実バグの知識なんて要らない。ただの機械として、普通に触れる。
説明できる範囲で、言った。
「今この端末は、本人が触っていない打刻を、そのまま受け取ってる。だから、本物の指がここに触れた瞬間だけ、打刻を通す。それ以外は、捨てる」
「接触のセンサーと、打刻を、突き合わせるんですね」
「そう。打刻の通知が来ても、同じ瞬間に本物の接触がなければ、無視する。一回の打刻に、一回分の裏づけを要求する」
莉央さんは、すぐ理解した。書いた本人だ。
「それ、応急処置ですよね」
「応急処置だ」
俺は、正直に言った。
「原因は塞いでない。穴は、まだ開いてる。向こうは、別の経路を探すかもしれない。これは、この一台の周りだけ、影響を閉じ込めるやり方だ。火は消してない。扉を閉めただけだ」
「それでも、今は止まる」
「今は止まる」
イヤホンで、MICA が言った。
「規程確認。通常の入力検証です。許可リストに該当、違反なし」
「だろうな」
設定を、一つ入れた。
打刻の通知に、本物の接触の裏づけを要求する。たったそれだけの、どこにでもある処理だ。
画面の中で、五分おきの打刻が止まった。
六時二十二分の次が、来なかった。
来てもいない人間が、出勤しなくなった。
事務所の空気が、少しだけ緩んだ。担当の人たちは、何が起きたのか分かっていない。莉央さんも、半分しか分かっていない。
俺にだけ、分かっていた。
初めて、この技術を、遊びじゃないことに使った。
俺が見つけた穴が人を困らせきる前に、その一台だけ、間に合った。
——
帰りは、莉央さんの会社に寄ることになった。正式な話をするためだ。
電車の中で、頭の中を整理した。
ここまでに見たものを、三つに分ける。
一つ。俺だ。この穴を見つけた人間。観測して、再現して、危険まで測った。そして今日、初めて止めた。
二つ。集める奴ら。あの署名。五分おきの、自動化された収集。今日の現場の打刻も、奴らの経路だった。人間が一件ずつ打っているんじゃない。機械が、台帳をなぞるように、集めている。
三つ。消す奴。俺の経路を、丁寧に切り離した奴。ログから、都合の悪い一行を抜いた奴。監査して、隔離して、痕跡まで消す。
だが、そいつは、直していない。
穴は、開いたままだ。集める奴らも、止まっていない。今朝の打刻が、その証拠だ。消す奴は、俺の入口を塞いでも、現場の被害は止めなかった。
世界には、塞がれていない場所が、いくつもある。
それを集める者がいて、それを隠す者がいる。
そして俺は、その両方のリストに、名前が載っている。集める奴らの台帳にも、消す奴の隔離記録にも。
——
NEXTPULSE の小さな会議室で、莉央さんは、姿勢を正した。
「相馬さん。会社として、正式にお願いしたいんです」
「調査か」
「はい。外部の専門家として、この問題を調べてほしい。受けてもらえますか」
少し、考えた。
引き受ければ、報告書を書く。だが、書けないことが、必ず出てくる。現実バグのことは、書けない。署名も、消す奴のことも、紙には残せない。残せば、莉央さんを、説明のつかない場所に巻き込む。
「条件が、一つある」
「先に伺います」
「報告書には、書けないことが出てくる。技術で説明しきれないことが、必ず残る。それは、紙には書かない」
莉央さんの眉が、わずかに動いた。
「それ、私が困ります」即答だった。「原因不明のまま様子見にされて、私はもう一度、同じ思いをしたくない」
「だから、続きがある」
「続き」
「書けないことも全部、莉央さんには口頭で話す。あんたにだけは、隠さない」
莉央さんは、すぐには頷かなかった。
「前に、言いましたよね」と、莉央さんは言った。「何か隠してますよね、って」
「言われたな」
「まだ、隠してるんですね」
「ああ」
「それを口で話すって、どう確かめればいいんですか」
俺は、少し笑いそうになった。確かに、口約束だ。証拠は残らない。
「確かめられない」
正直に言った。
「だから、おかしいと思ったら、その場で聞け。様子見にするな。納得いくまで、何度でも聞き返してくれ。それが、あんたの保険だ」
莉央さんは、数秒、俺を見ていた。それから、ゆっくり頷いた。
「分かりました。聞き返します。遠慮なく」
「それでいい」
「では、お願いします」
「引き受ける」
俺は、言った。
この十日あまり、これは俺の遊びだった。俺だけの謎で、俺だけの道具で、俺だけの請求書だった。
今、それを、引き受けると口にした。他人の生活の上ににじんだものを、止める側へ回る。
イヤホンで、MICA が言った。
「反対しません」
俺は、一瞬、黙った。
「……お前が賛成するの、初めてじゃないか」
「初めてです」と、MICA は言った。「記録します」
——
その夜、部屋に戻った。
持ち帰った現場のログを、MICA が整理していた。誰がいつ何をしたか。無人の打刻が、どう並んでいたか。触らない範囲で、形だけを見る。
コーヒーを淹れて、待っていた。
「透」
MICA の声が、手を止めた。
「これを、見てください」
画面に、入力イベントの並びが出ていた。来てもいない人間の、五分おきの打刻。その一件ずつの、中身だ。
「同じ操作が、二回来ています。記録は、一回分しか残っていません」
近づいた。
二回来た打刻を、一回分に抑える。二度目を、静かに落とす。
その捨て方に、見覚えがあった。
同じ識別子を持つ二度目を、黙って捨てる。俺が、自分の道具で二重実行を止めるために組んだ、あの設計だ。
operation_id。
俺が、自分のためだけに作った、重複排除の癖。
それが、来てもいない人間の打刻の中に、入っていた。
集める奴らは、俺の作ったやり方で、二重の打刻を綺麗に揃えていた。
俺の実験を、誰かが読んで、使っている。
向こうも、俺を、見つけている。
——第1部・完——
# 後書き・技術メモ
## 技術メモ
### インシデント対応
インシデント対応は、システムに異常が起きたときの一連の対処を指します。
このとき優先するのは、原因の究明ではなく、被害の封じ込めです。火事にたとえるなら、出火の原因を調べるより先に、燃え広がりを止めます。原因の議論は、被害が止まってから行います。作中の透も、現場に着いてまず止め、原因の特定は後回しにしています。
### 封じ込めと根本修正
封じ込めは、問題のある対象を周囲から切り離し、影響範囲を狭める応急処置です。すぐに被害を止められますが、原因そのものは残ります。
根本修正は、原因の層を直し、同じ原因から起きる問題をまとめて起きにくくする対応です。時間はかかりますが、再発を抑えられます。
作中で透が行ったのは封じ込めです。原因の穴は開いたまま、一台の端末だけを切り離し、被害をその周りで止めました。本人も「扉を閉めただけ」と述べています。
### 入力の裏づけ
届いた入力が本物かどうかを確かめる処理を、入力検証といいます。
作中の応急処置は、この入力検証を一台だけに加えたものです。打刻の通知が来ても、同じ瞬間に本人の接触という裏づけが無ければ受け付けない、という条件を足しています。裏づけのない入力を、その端末が自分で弾くようにしたわけです。現実側の特殊な知識は使わず、ありふれた処理だけで成り立っています。
### 重複排除
同じ操作が二度届いたとき、二度目を捨てて一回分に揃える処理を、重複排除といいます。同じ操作かどうかは、操作ごとに振られた識別子で見分けます。
二重に走ると困る処理では、よく使われる基本的な手法です。ただし、同じ仕組みは、別の誰かが大量の自動処理を「きれいに一回分へ揃える」ためにも使えます。手段そのものに善悪はなく、何に向けるかで意味が変わります。
# 後書き・技術メモ
## 技術メモ
### インシデント対応
インシデント対応は、システムに異常が起きたときの一連の対処を指します。
このとき優先するのは、原因の究明ではなく、被害の封じ込めです。火事にたとえるなら、出火の原因を調べるより先に、燃え広がりを止めます。原因の議論は、被害が止まってから行います。作中の透も、現場に着いてまず止め、原因の特定は後回しにしています。
### 封じ込めと根本修正
封じ込めは、問題のある対象を周囲から切り離し、影響範囲を狭める応急処置です。すぐに被害を止められますが、原因そのものは残ります。
根本修正は、原因の層を直し、同じ原因から起きる問題をまとめて起きにくくする対応です。時間はかかりますが、再発を抑えられます。
作中で透が行ったのは封じ込めです。原因の穴は開いたまま、一台の端末だけを切り離し、被害をその周りで止めました。本人も「扉を閉めただけ」と述べています。
### 入力の裏づけ
届いた入力が本物かどうかを確かめる処理を、入力検証といいます。
作中の応急処置は、この入力検証を一台だけに加えたものです。打刻の通知が来ても、同じ瞬間に本人の接触という裏づけが無ければ受け付けない、という条件を足しています。裏づけのない入力を、その端末が自分で弾くようにしたわけです。現実側の特殊な知識は使わず、ありふれた処理だけで成り立っています。
### 重複排除
同じ操作が二度届いたとき、二度目を捨てて一回分に揃える処理を、重複排除といいます。同じ操作かどうかは、操作ごとに振られた識別子で見分けます。
二重に走ると困る処理では、よく使われる基本的な手法です。ただし、同じ仕組みは、別の誰かが大量の自動処理を「きれいに一回分へ揃える」ためにも使えます。手段そのものに善悪はなく、何に向けるかで意味が変わります。




