表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
現実世界にゼロデイを見つけたので、こっそり修正しています  作者: せい | 健康優良不良プログラマ


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

PR
11/25

第11話 全部止めたのに、何かが残っている

止めたら終わり。


そういう設計なら、世の中の不具合はもっと少ない。


投影は止めた。


入力も止めた。


外部参照の読み取りも止めた。


知らない点は見えない。


机上の格子もない。


クリップの下に影もない。


それでも、部屋は元に戻った感じがしなかった。


「MICA、残っているものを出せ」


「一覧化します」


画面に項目が並ぶ。


観測ログ。


録画ファイル。


一時画像。


投影座標の変換表。


破棄順序の実行ログ。


隔離リスト。


NEXTPULSE 向け報告メモ。


「多いな」


「あなたが増やしました」


「正論を短く刺すな」


「長く刺しますか」


「やめろ」


俺は椅子の背にもたれた。


止めたはずなのに、片づけるものは残る。


プログラムでも同じだ。


処理が終わったのに、使ったメモリを返し忘れる。開いたファイルを閉じ忘れる。タイマーを止め忘れる。イベントの監視を外し忘れる。


一つ一つは小さい。


だが、積もる。


最初は少し重いだけ。


次に画面が引っかかる。


そのうち落ちる。


そういう不具合を、メモリリークと呼ぶ。


「今回は、部屋がリークしてるみたいだな」


「比喩としては不穏ですが、近いです」


「近いのか」


「少なくとも、停止後も観測値が完全には基準へ戻っていません」


MICA がグラフを出す。


照度ログは通常値へ戻っている。


だが、戻り方が遅い。


机上の録画も、肉眼では普通に見える。けれど、フレーム差分を取ると、クリップを置いた周辺だけ暗さの戻りが数フレーム遅れていた。


「数フレーム」


「はい」


「誤差で片づけられるか」


「単独なら片づけられます」


「単独じゃない」


「はい」


小さな違和感が一つだけなら、無視していい。


小さな違和感が同じ場所に積もるなら、無視しない。


それがログを見る仕事だ。


なら、やることは決まっている。


「MICA、残留を数値にする」


「定義から始めますか」


「そうする。気持ち悪い、で管理はできない」


俺たちは残留を三つの数字に割った。


照度の戻り遅れ。基準時刻からのミリ秒。


ログの時刻差。正常時の分布からの偏差。


痕の濃さ。角度差検出での面積と濃度。


昨日までの全記録を流し込み、正常な時間帯の分布を取る。平均。ばらつき。それを物差しにして、今の部屋を測り直す。


「現在の残留量。照度の戻り遅れ、正常分布から二・一シグマ。ログ時刻差、一・四シグマ。痕、検出限界近傍」


「つまり、確かに残ってるが、増えてはいない」


「過去四十八時間で漸減傾向です」


「閾値を決める。三シグマを超えたら異常。あらゆる作業を止めて隔離を見直す。二シグマ台は監視強化。それ以下は許容」


「安全閾値として登録します。命名は」


「leak_threshold」


「気に入りそうな名前です」


「今回は実用だ」


止まっている間にも、武器は作れる。どこまでなら大丈夫で、どこからが危険か。それを数字で言えるようになった。気持ち悪さを物差しに変えた。


この物差しは、いつか使用を再開する日が来るなら、そのときの境界線になる。


「でも、新しい検証はしない」


俺は先に言った。


「確認しました」


「言われる前に言った」


「評価します」


「少し腹立つな」


「止まれたことは評価対象です」


軽口の形はしている。


だが、MICA の声はいつもより硬い。


俺は作業ログを閉じずに、NEXTPULSE 向けの報告メモを開いた。


現実側の言葉は使わない。


外部参照も書かない。


知らない点も、影も、格子も、全部書かない。


書けるのは、通常の不具合として説明できる範囲だけだ。


表示ズレ。


古い値の一瞬表示。


環境差分。


ログ粒度不足。


再現条件。


三枝さんからメッセージが届いた。


相馬さん、顧客向けには「一部環境で古い状態が短時間表示される」で進めてよいですか?


俺は返信欄を開いた。


「MICA、候補」


「顧客向けには、現時点ではその表現が安全です。ただし、再現条件が限定的であること、恒久対応にはログ追加が必要であることを添えるべきです」


「そのまま送ると硬い」


「柔らかくします」


画面に文面が出る。


現時点では「一部環境で古い状態が短時間表示される」で問題ありません。再現条件がまだ狭いため、暫定対応としてログ粒度を上げ、環境差分を確認する方針でお願いします。


悪くない。


俺は少し直して送った。


すぐ既読が付く。


ありがとうございます。午前中の報告はそれでまとめます。


仕事が進む。


普通の仕事が。


そのことに、少しだけ救われる。


「相馬さん」


続けて届いた。


こちらの端末位置変更でも、照度ログに微小な揺れはあります。ただ、やはり報告に入れるほどではありません。


俺は画面を見たまま止まった。


「MICA」


「新しい検証はしない約束です」


「分かってる。読むだけだ」


「読むだけ、は先ほど危険候補になりました」


「……通常ログだ」


「通常ログとして扱える範囲に限定してください」


俺は息を吐き、三枝さんへの返信を書いた。


了解です。微小な揺れは内部メモとして残してください。顧客向けには含めなくて大丈夫です。


送信。


返信は、すぐに来た。


了解です。あ、あと全然関係ない話なんですけど。


一拍おいて、続きが届く。


顧客の一社から「端末の反応がたまに妙だ」って話が来てるらしいです。表示の件とは別口で。サポート経由なので詳細は分からないんですけど、まあ、初期設置の問題だと思います。


俺は画面を見たまま、動きを止めた。


端末の反応が、妙。


表示の件とは、別口。


三枝さんにとっては雑談だ。サポート案件の九割は、設置ミスと設定ミスと再起動で直る何かだ。俺だって、昨日までならそう流していた。


昨日までなら。


「MICA」


「新しい検証はしない約束です」


「分かってる」


俺は「設置の件、何かあれば声かけてください」とだけ返した。


嘘はない。全部も言っていない。


これでいい。


顧客に出せる情報と、こちらで抱える情報は違う。


ただし、抱えるなら責任がある。


面白いから見る。


見えたから触る。


触れたから試す。


その流れを止めないと、ログはすぐ汚れる。


「ログ汚染」


俺が呟くと、MICA が即座に拾った。


「現在の最大リスクです」


「顧客ログに、俺の遊びの副作用を混ぜるわけにはいかない」


「はい」


「部屋のログにもだ」


「はい」


「MICA の権限にも」


「特にそこです」


俺は眉を上げた。


「強調したな」


「あなたは自分の手で試す危険には敏感ですが、私に調査を任せる危険には甘くなる傾向があります」


「あるか?」


「あります」


即答だった。


「私は現実を直接見られません。あなたが渡したログ、画像、コードをもとに処理します。もし渡されたデータに外部参照の残骸が混ざっていれば、それを普通の入力として扱う可能性があります」


「MICA 側に食わせるな、か」


「はい」


それは、かなり嫌な話だった。


俺が危ないだけなら、まだ止められる。


だが、MICA は速い。


速いものに汚れた入力を渡すと、速く広がる。


便利な道具ほど、間違った入力を遠くまで運ぶ。


「隔離フォルダを分ける」


「作成済みです」


「権限」


「読み取りはあなたのみ。私は要約対象から除外されます」


「いい」


「不満そうです」


「便利じゃない」


「安全です」


「分かってる」


便利じゃないことは、だいたい安全側だ。


全部ではないが、今はその経験則に乗る。


俺は観測ログを三つに分けた。


顧客向けに使えるログ。


内部調査の通常ログ。


触らないログ。


最後の名前は、そのままにした。


触らないログ。


分かりやすい名前は、未来の自分を少しだけ止める。


「部屋の違和感は」


「基準値へ戻りつつあります。ただし、完全なゼロではありません」


「メモリリークなら、プロセスを落とす」


「部屋はプロセスではありません」


「知ってる」


「寝てください」


「急だな」


「急ではありません。過去五日間のあなたの平均睡眠時間は三時間十二分です」


画面の時計を見る。


夕方だった。


最初の深夜から、五日。レシートが動いた夜から、ほとんど止まらずに続いている。


情報量が多すぎる。


判断が荒くなっている。


俺は最強でも、睡眠不足に強いわけじゃない。


「分かった。今日は寝る」


「明日の朝まで、を推奨します」


「……それでいく」


「記録します。五日ぶりの妥当な判断です」


「一言多い」


俺は机の上を見た。


レシート。


クリップ。


方眼紙。


何も光っていない。


何も動いていない。


それでも、完全に片づいたとは思えない。


だから、閉じる。


触らないログを閉じる。


投影コードを閉じる。


入力コードを閉じる。


最後に、作業ログを保存する。


保存直前、カーソルが末尾で一度だけ止まった。


俺は何も入力していない。


それでも、末尾に空白行が一つ増えていた。


たった一行。


文字もない。


意味もない。


だが、俺はすぐに削除しなかった。


「MICA」


「記録しました」


「触らないログへ」


「移動します」


俺は画面を閉じ、立ち上がった。膝が固まっていて、伸ばすと骨が鳴った。カーテンの隙間から入る光が、深夜のものでも明け方のものでもなく、夕方の色をしているのが妙に新鮮だった。


ベッドに倒れ込む直前、頭の隅で、この五日間の異物が順番に流れた。


動く痕。


俺のじゃない入力。


無人の事務所の、四回の揺れ。


反応が妙だという、どこかの端末。


そして、いま増えた空白行。


俺は止まった。投影も、入力も、読み取りも、全部止めた。


——止まったのは、俺だけかもしれない。


そこまで考えたところで、意識が落ちた。


■ 技術メモ


【メモリリーク】


メモリリークは、使い終わったメモリを解放し忘れ、少しずつ使用量が増えていく不具合です。


最初は小さな問題でも、積み重なると動作が重くなったり停止したりします。


【リソース解放】


リソース解放は、使い終わったファイル、通信、メモリ、監視処理などを片づけることです。


後始末を忘れると、不要な処理や状態が残り続けます。


【ログ汚染】


ログ汚染は、調査対象ではない操作や副作用がログに混ざり、原因の切り分けを難しくする状態です。


【しきい値と監視】


異常を「気持ち悪い」という感覚のままにせず、数値で測って基準を決めると、いつ対応すべきかを判断できるようになります。


作中のシグマ(σ)は、ばらつきの大きさを表す統計の単位です。正常時の分布から大きく外れた値ほど、偶然では起きにくい異常と見なせます。実際の運用監視でも、平常時の分布を基準にしきい値を決める方法が使われています。


評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ