第10話 画面外の残骸
消す処理は、作る処理より難しい。
作るだけなら、出せばいい。
消すには、どこに何を出したか、誰が見ているか、まだ誰かが使っていないか、順番に確かめる必要がある。
ファイルを閉じる。
通信を切る。
画面を消す。
一見ただの後始末に見えるが、ここで雑にやると、消したはずのものが残る。
「投影を閉じる」
俺は言った。
机上には、二点アンカーで固定した薄い格子が残っている。
その中に、青白い知らない点が一つ。
灰色の破線で囲ってある。
触るな。
自分で書いた警告が、作業ログの最後に残っていた。
「破棄順序を確認します」
MICA が表示した。
表示レイヤ。
現実ログの重ね合わせ。
隔離表示。
アンカー。
投影本体。
「普通なら、上から順に閉じる」
「はい。見た目の上に乗っているものから消すのが自然です」
「ただし今回は、知らない点が混ざってる」
「隔離表示はあなたの描画です。知らない点そのものではありません」
「そこを間違えると危ない」
見えている枠を消すことと、中身を消すことは違う。
ブラウザのタブを閉じても、サーバー上の処理は止まらない。
画面から行を消しても、データベースから消えたとは限らない。
逆に、見えているだけのものを本体だと思って触ると、見えていない参照先へ手を伸ばすことになる。
「隔離表示だけ消す」
「実行します」
灰色の破線が消えた。
青白い点は残った。
「まあ、そうだよな」
「隔離表示はただの枠です」
「次、ログ重ね合わせ」
半月形の痕、第三の揺れ、A社の弱い印が消える。
格子と知らない点だけが残る。
「次、格子」
「推奨しません」
「理由」
「格子を消すと、知らない点の位置を相対的に観測できなくなります」
「見えないものは安全、ではない」
「はい」
「でも消す」
「記録します」
格子の線が薄くなる。
縦線が消える。
横線が消える。
レシートの角とクリップの先端だけが机上の目印として残る。
青白い点は、まだ見えていた。
「おい」
「表示レイヤの破棄は完了しています」
「じゃあ、これは何の表示だ」
「不明です」
いい返事ではない。
だが、正直な返事ではある。
机上の青白い点の周りに、短い線が残っている。さっきまでの格子とは違う。細い糸の切れ端みたいなものが、点から右下へ伸びている。
「描画の残骸候補」
MICA が言った。
「描画の残骸なら、再描画で消える」
「試しますか」
「表示だけ」
「確認」
俺は再描画処理を走らせた。
画面上の投影状態は空。
出力リストも空。
机上の線は、少し形を変えただけで残った。
「残骸の形が変わった」
「破棄順序の影響があります」
「もう一度。今度はアンカーを先に無効化」
「推奨度は低いです」
「表示だけだ。入力も破棄も触らない」
「実行ログを細かく残します」
アンカーを無効化する。
レシートの角とクリップの先端に貼りついていた基準が消える。
青白い点の近くの残骸は、今度は半円のように曲がった。
俺は息を止めた。
形が変わる。
つまり、こちらの破棄処理に反応している。
完全に無関係な汚れでも、単なる反射でもない。
「表示レイヤの残骸だけでは説明しきれない」
「候補を更新します。外部参照に紐づく表示残骸」
「まだ外部参照とは断定しない」
「候補名です」
俺に似てきたな、と思った。
悪い意味で。
「物理影響を見る」
「推奨しません」
「動かさない。触らない。近くに置くだけ」
「対象」
「クリップ」
「金属反射が候補に混ざります」
「だからいい。反射なら反射で説明できる」
俺は銀色のクリップを、青白い点から五センチ離れた位置へ置いた。
何も起きない。
四センチ。
何も起きない。
三センチ。
クリップの下に、細い影が落ちた。
照明の方向とは合わない。
机の模様とも合わない。
時間にして、一秒もない。
影はすぐ消えた。
「録画」
「確認中」
「見間違いか」
「複数フレームで暗化を確認。ただし反射、圧縮、露出補正の候補は残ります」
「もう一回」
「推奨しません」
「一回だけ」
「それは二回目です」
「数え方が厳しい」
「表示だけでも物理兆候が出ています」
それを言われると、手が止まる。
表示だけ。
見るだけ。
そう言いながら、クリップに影が落ちた。
物体は動いていない。
熱もない。
音もない。
だが、光だけが一瞬曲がったように見えた。
「MICA、今のは物体操作じゃない」
「はい。物体位置の変化はありません」
「でも、表示だけでもない」
「その可能性があります」
俺はクリップを元の位置へ戻した。
これ以上近づけない。
面白い。
面白すぎる。
だから危ない。
「切り分ける。座標値だけをコピーする」
「知らない点を直接参照しない、という意味ですね」
「そう。座標の数字だけ。点そのものは触らない」
出力リストには存在しない。
だが、観測上の座標は読めている。
`x=112, y=37`
数字だけを別レイヤに描く。
青白い点そのものには触れない。
結果、残骸は出なかった。
「座標値だけなら安全寄り」
「現時点では」
「次。知らない点の参照を表示対象として指定する」
「推奨しません」
「消さない。読むだけ」
「読むことも参照です」
「分かってる」
分かっているから、怖い。
それでも、原因を知らなければ隔離できない。
俺は、知らない点の実体ではなく、参照ハンドルだけを表示レイヤに渡した。
瞬間、青白い点の周りに細い残骸が出た。
さっきより濃い。
クリップは離してある。
影は出ない。
だが、線は明らかに残った。
「これだ」
「座標値ではなく、参照が残骸を生んでいます」
「知らない点じゃない。知らない参照」
「仮称として記録します」
「今回は気に入らない」
「その方が安全です」
俺は知らない参照を隔離リストへ入れた。
隔離といっても、消すわけではない。
読み取り対象から外し、描画対象から外し、破棄処理の対象からも外す。
見つけたからといって触らない。
見えているからといって所有しない。
分からない参照を勝手に閉じない。
それが、今できる一番まともな対処だった。
「投影を終了します」
MICA が言った。
「待て。順番は」
「知らない参照を除外。隔離表示を削除。ログ重ね合わせを削除。格子を削除。アンカーを解除。投影本体を終了」
「実行」
机上の線が、順番に消えた。
青白い点も、最後には見えなくなった。
ただし、消えたとは言わない。
見えなくなっただけだ。
俺はクリップを持ち上げた。
影はない。
動いた跡もない。
それでも、録画には一秒未満の暗い線が残っている。
「透」
MICA が、珍しく名字でも敬称でもなく呼んだ。
「何だ」
「使用制限を提案します」
軽口はなかった。
「投影、入力、外部参照の読み取りを、いったん停止。通常業務の報告と、観測ログの整理を優先してください」
「分かってる」
「本当に?」
俺はすぐには答えなかった。
分かっている。
だが、見たい。
もっと分解したい。
知らない参照の先を追えば、誰が使っているのか分かるかもしれない。
まだ誰も名前を付けていない何かに、俺だけが先に届けるかもしれない。
そう思った瞬間、俺は自分が危ないところにいると分かった。
「停止する」
声に出した。
「記録しました」
「通常業務の報告に戻る」
「記録しました」
俺は作業ログの最後に、今日二度目の強い文を書いた。
触るな。
その下に、もう一行足す。
消せなかったのは、俺が作った表示ではない。
書いてから、自分の手が止まっているのに気づいた。
止める理由は十分にある。影。残骸。所有者の分からない参照。他人の職場に届く請求書。理屈は全部、停止を指している。間違いなく、これが正しい。
四日前の俺なら、たぶん即答で止めていた。怪しいものには近づかない。それが普通のエンジニアだ。
今の俺は、画面の前で三秒、動けなかった。
世界の裏側に定規を当てて、空中のキーを押して、誰も解けない謎を半日で解いて——その全部を、今、自分の手で棚に上げた。
正しい。正しいんだが。
「……悔しいな」
「記録しますか」
「するな」
「了解しました。記録しません」
一拍おいて、MICA が続けた。
「ただし、私見を一件。悔しいと感じられる状態は、停止判断の信頼性を高めます」
「どういう理屈だ」
「失うものを正しく数えられている、という意味です」
俺は返事をしなかった。
代わりに、投影コードのウィンドウを閉じた。
■ 技術メモ
【破棄処理】
破棄処理は、使い終わった表示、データ、参照などを片づける処理です。
順番を間違えると、消したはずの表示や参照が残ることがあります。
【表示レイヤ】
表示レイヤは、複数の表示を重ねるための層です。
どの層を先に消すかによって、残り方が変わることがあります。
【外部参照】
外部参照は、自分の操作範囲に混ざって見える、自分以外の状態への参照です。
見えていることと、触ってよいことは別です。




