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

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

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

エラーが発生しました。

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

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


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

PR
12/25

第12話 便利なものほど危ない

目が覚めたとき、部屋は静かで、明るかった。


カーテンの隙間の光は朝の色で、頭の中の砂っぽい重さが消えている。何日ぶりかも分からない感覚を、しばらくベッドの中で味わった。


「おはようございます」


机の上のスピーカーが言った。


「……何時だ」


「八時四十分です。睡眠時間は十三時間二十一分。留守中の監視結果を報告します」


「頼む」


「異常は一件。あなたが十三時間眠ったことです」


「それは異常じゃない。回復だ」


「過去五日間の分布からは三・二シグマの外れ値です」


「leak_threshold を人に使うな」


軽口を返しながら、自分の声が軽いことに気づいた。寝た。それだけのことが、こんなに効く。


「本題の監視結果は」


「残留は全指標で許容域です。照度の戻り遅れは一・三シグマまで低下。触らないログへの書き込みは——」


MICA はそこで、事務的な間を一つ置いた。


「継続しています。あなたの睡眠中に、空白行が二行増えました」


朝の軽さが、半分だけ削れた。


「分かった。あとで見る。先に仕事だ」


——


NEXTPULSE への修正パッチは、昼前に仕上がった。


表示の再計算が走る瞬間に古い値を踏まないよう、状態の参照順を直す。環境ノイズが多い現場でも、再計算の回数そのものを抑える。修正は二箇所、テストは十二本。地味で、堅い、いい直し方ができたと思う。


「三枝さんへ送ります」


「送れ」


十五分後、通話が鳴った。


「相馬さん、早すぎませんか」


挨拶より先にそれだった。


「現地調査の時点で原因はほぼ特定できていたので。あとは書くだけでした」


「書くだけ、で二日ですか。うちのリードレビュアーが『これ直した人、うちに来てほしい』って言ってました」


「フリーランスなので、案件単位なら」


「あ、ちょっと本気にしますよ。……それで、パッチの内容は確認しました。検収手続きに回します。たぶん明後日には完了です」


「お願いします」


仕事の話は、そこで終わるはずだった。


「相馬さん。最後に一つだけ」


声のトーンが、半音下がった。


「あの照度の揺れ、結局この修正で直るんですか」


来た。


「……直りません。あれは別系統です」


「別系統」


「表示ズレの原因はアプリの状態参照の問題で、今回のパッチで塞がります。照度ログの揺れは、アプリの外で起きている。今回の契約範囲では、原因まで届きませんでした」


嘘はない。全部も言っていない。もう何度目か数えるのをやめた、いつもの配合だ。


三枝さんは数秒黙った。


「……分かりました。じゃあ、それは『継続調査』として私のメモに残ります。消しませんからね」


「消さないでください」


「言われなくても」


通話が切れたあと、俺はしばらく画面を見ていた。


彼女は忘れない。あの揺れを、雑談で済ませてくれない。それはたぶん、俺にとって良いことで、同時にいつか、とても困ることになる。


——


午後は、約束していた仕事をした。


自分との約束だ。


「MICA、議題。現実バグの運用規程」


「受理しました。背景を確認します。あなたは五日間で、誤操作未遂一件、運用条件違反一件、隔離不能な痕の発生三件を記録しています」


「俺の信用履歴を読み上げるな」


「規程の必要根拠です」


そのとおりだ。だから作る。


俺は新しいファイルを開いた。名前は少し迷って、`reality_ops_policy_v0.1` にした。現実バグ運用規程、第〇・一版。


まず、書き方を決める。


「禁止リストにはしない」


「理由を記録します」


「禁止リストは、書いた本人の想像力の範囲でしか守れない。俺が思いつかなかった危険は、全部すり抜ける」


やっていいことだけを書く。それ以外は、全部禁止。


ホワイトリスト。許可リスト。呼び方はどうでもいい。レジの金庫に「入れていい人の名簿」を貼るのと同じだ。「入れちゃダメな人の名簿」では、名簿にない泥棒が入れてしまう。


第一条。観測は読み取り専用に限る。表示を伴う場合は自室内、A4範囲、時間上限三十分。


第二条。入力系は全面禁止。仮想キー、空中入力、その派生すべて。解除には本規程の改版を要する。


第三条。所有者不明の参照には接続しない。読み取りも、表示も、破棄も。


第四条。残留が leak_threshold の二シグマを超えた場合、すべての作業を停止して隔離を見直す。


第五条。現地での使用は、事前に定義した定型コマンドのみ。即興の組み立ては禁止。


書きながら、五日間が遡って採点されていくのが分かった。第五条は三日前の俺が破ったルールだ。第三条は、四日前の俺が破りかけた。


「第六条を提案します」


MICA が言った。


「言ってみろ」


「本規程に違反する操作を、MICA は実行前に拒否できる」


手が止まった。


それは、つまり。


「拒否権か」


「はい」


「お前に、俺の操作を止める権限を渡す」


「正確には、規程に違反する操作に限定した停止権限です。判定基準は本規程の条文。恣意的な判断はしません。できません」


俺は椅子の背にもたれて、天井を見た。


自分で作った道具に、自分を止める権限を渡す。


エンジニアとしての本能が、嫌だと言っている。権限は最小に。道具は道具に。制御は人間に。それが原則だ。道具に拒否権を渡した瞬間、俺はこの環境の唯一の管理者ではなくなる。


だが。


この五日間、危ないところで俺を止めたのは、毎回 MICA だった。フルキーボードの誘惑。入力化の暴走。Enter の検証。そして俺は、調子のいい日ほど、自分のルールを思い出しもしなかった。


「拒否権の付与は、あなたの設計思想に反します」


MICA が言った。俺が言うべきことを、先に。


「反する」


「それでも提案した理由を述べます。過去五日間、規程相当の制約に対するあなたの遵守率は——」


「言うな。分かってる」


俺は天井を見たまま言った。


「俺は俺を信用しない。お前はログを信用しろ。それでいい」


「第六条、登録します」


画面に条文が並んだ。六行。たった六行だ。世界の裏側に触れる技術の、最初の法律がこれだ。


「発効は」


「今この瞬間から」


「記録しました。reality_ops_policy v0.1、発効」


不思議な気分だった。


何かを失った感覚と、何かを建てた感覚が、同時にある。


便利な道具を縛った。たぶん、世界で俺しか使えない道具を、世界で俺だけが守る規則で。誰にも強制されていない。誰も見ていない。それでも、書いた。


これが正しいのかは、分からない。


ただ、三日前に検証端末の前で冷たくなった指先のことは、正しく覚えている。


——


夕方、最後に触らないログを開いた。


朝、MICA が報告した二行。俺が寝ている間に増えた空白行。


「規程の許可経路と照合します」


MICA が言った。新しい規程の、最初の実務だ。


第一条から第六条まで。観測。入力。参照。閾値。定型。拒否権。この六本の柵の、どこを通ってきたのか。


「照合完了。——一致しません」


「どの条文と」


「すべてです。この書き込みは、規程が定義するどの許可経路とも一致しません。あなたの操作でも、私の処理でもありません」


分かっていた。分かっていたが、新品の規程に最初に記録される違反が「該当条文なし」というのは、悪い冗談だ。


「規程は、誰を縛る」


「あなたと、私です」


「そうだな」


俺は六行の条文を眺めた。


完璧に作ったつもりだった。観測も、入力も、参照も、全部柵の中に入れた。


だが、この規程が縛れるのは、柵の内側にいるものだけだ。


空白行は、柵の外から来る。


「MICA」


「はい」


「俺は止まった。規程も作った。これで俺の側は、もう増えない」


「はい」


「……向こうは」


MICA は、一秒だけ間を置いた。


「あなたが止まっても、向こうは止まりません」


■ 技術メモ


【許可リスト(ホワイトリスト)】


「やってはいけないこと」を列挙する禁止リストに対して、「やってよいこと」だけを列挙し、それ以外をすべて禁止する方式を許可リストと呼びます。


禁止リストは、作った人が思いつかなかった危険をすり抜けさせてしまいます。セキュリティ設計では、想定外を初期状態で塞げる許可リスト方式が堅いとされています。


【最小権限】


人にもプログラムにも、仕事に必要な最小限の権限だけを与える、という設計原則です。


権限を絞っておくと、ミスや悪用が起きたときの被害範囲が小さくなります。


【フェイルセーフ】


失敗や想定外が起きたとき、安全側に倒れるように設計する考え方です。


作中の「違反操作を実行前に拒否できる」仕組みは、人間の注意力に頼らず、システム側で安全側に止める設計の一例です。


【運用規程】


技術的な仕組みだけでなく、「どう使うか」を文書で決めておくことも安全対策の一部です。


実際の開発現場でも、本番環境への接続条件や変更手順を規程として明文化し、個人の判断のばらつきを抑えています。


■ 作中の用語


【reality_ops_policy】


透が自分と MICA のために書いた、現実バグの運用規程の名前です。


観測・入力・参照・残留閾値・定型コマンド・拒否権の六条からなり、許可リスト方式で書かれています。


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

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

↑ページトップへ