成功した予防は記憶から消える

Share

何も起きなかった。橋は落ちなかった。飛行機は墜ちなかった。サーバーは止まらなかった。あなたは今日も病気にならなかった。

おめでとう。そのことに、誰も気づかない。

予防が成功すると、予防は不要だったように見える。これは公衆衛生の文脈では「予防のパラドックス」として知られている。疫学者ジェフリー・ローズがこの語を最初に用いたとき、彼が指していたのは「集団全体への予防策は個々人にとっての恩恵が小さい」という構造だった(Rose, 1981)。しかし予防が抱える問題はそれだけではない。もっと厄介な構造が、その奥に潜んでいる。成功した予防は、自分が必要だった証拠ごと消してしまうのだ。

崩落しなかった橋

橋が落ちなかったのは、定期点検のおかげかもしれない。しかし橋が落ちなかったという事実は、「点検がなくても落ちなかった」という解釈を同時に許してしまう。

これは因果推論の根本問題だ。私たちは「予防しなかった世界」を観察できない。予防した世界しか存在しない以上、比較対象はどこにもない。哲学ではこの問題を反事実条件文の検証不可能性と呼ぶ。「もしXしなかったらYが起きていた」という命題は、原理的に真偽を確かめる手段を持たない。

何も確かではないで書いたように、私たちの知識は最終的にはどこにも着地できない。予防の効果については、その不確実性がさらに一段深い。確かめようとする出発点そのものが、存在しないのだから。

英雄は嘲笑される

2000年問題。Y2K。1990年代後半、コンピュータの日付処理が西暦2000年を正しく扱えないという問題に対し、世界中の政府と企業が数千億ドルを投じて修正作業を行った。

2000年1月1日、何も起きなかった。

何も起きなかったので、人々はこう言った。「最初から大した問題ではなかった」、「専門家が予算を引き出すために煽った」、「壮大な無駄遣いだった」。修正に奔走したエンジニアたちは英雄になるはずだった。しかし英雄が救った災厄は、どこにも残っていなかった。災厄が残っていない以上、彼らが救ったものは何もない、とみなされた。

修正が成功したから何も起きなかったのか。最初から何も起きるはずがなかったのか。この問いに答える手段は、永久に失われている。修正された世界しか存在しないのだから。

新型コロナウイルスのパンデミックでも、まったく同じ力学が動いた。感染拡大を抑えるためにロックダウンする。感染が抑えられれば「過剰反応だった」と非難される。抑えられなければ「対応が遅すぎた」と非難される。どちらに転んでも批判を免れない。予防とは、構造的に報われない営みなのかもしれない。

ワクチンもそうだ。天然痘が根絶されたことで「もうワクチンは不要だ」という声が上がる。予防接種の成功が、予防接種そのものの正当性を蝕む。病が消えた世界では、病を消した手段の価値を実感する手がかりが残されていない。

見えないものの値段

この構造は、日常のいたるところに沈んでいる。

健康診断を毎年受けて病気にならなかった人は、「健康診断は不要だったのでは」と考えがちだ。保険料を払い続けて事故に遭わなかった人は、「無駄金だった」と感じる。耐震工事を施した建物が地震に耐えたとき、「工事のおかげ」と実感できる人は少ない。倒れなかったことは、ただの日常に溶ける。

ITセキュリティの世界では、この問題がさらに切実だ。セキュリティ対策に多額の投資をしてインシデントが起きなかった場合、「投資は過剰だった」と判断されるリスクがある。セキュリティ担当者にとっての最大の成果は、何事もなかった一日だ。そしてその一日は、誰の業績にもならない。

努力できない仕組みの分析で触れたように、人間は報酬が目に見えない行動を持続することが極端に苦手だ。予防は、まさにそういう行動だ。効果は「何も起きないこと」としてしか現れない。報酬は永遠に不可視のまま、ただ日常がもう一日続くだけ。

測れないものは存在しないのか

予防の効果が見えにくいのは、人間の認知的な限界だけの問題ではない。もっと根の深い問題がある。予防の効果は、原理的に測定できない。

「何件の事故を防いだか」。この問いに正確に答えることは、論理的に不可能だ。防がれた事故は、この世界のどこにも痕跡を残さない。存在しなかった出来事の件数を数える方法はない。

誰も学びを測れないで論じたように、本質的に測定不可能なものを無理に数値化しようとすると、指標そのものが目的にすり替わる。永遠の素振りが描いたように、手段はいつのまにか目的に転倒する。予防もまた、続けているうちに「何のための予防か」が忘れ去られ、形だけの手続きとして残りうる。

しかし予防をやめた瞬間に脅威は帰ってくるかもしれない。帰ってこないかもしれない。確かめる方法はない。

存在しなかった世界との比較

教育にも同じ構造がある。なぜ勉強をしなければならないのかで書いたように、教育の効果は「教育を受けなかった場合のあなた」との比較でしか測定できない。しかしその比較対象は存在しない。あなたは教育を受けたあなたしか知りえない。教育を受けなかったもう一人のあなたは、どこにもいない。

予防も、教育も、保険も、すべて同じ構造を共有している。それらの価値は、存在しなかった世界との差分としてしか定義できない。しかし存在しなかった世界は、定義上、観察不可能だ。

ここにあるのは、単なる実務上の不便ではない。もっと深い問いだ。「起きなかったこと」に意味はあるのか。見えないものに価値を認めることは可能なのか。存在しない世界と比較して「この世界のほうがまし」と言い切れるだけの根拠を、私たちは持っているのか。

嫌いなものに支えられて生きているで論じたように、私たちの生活は見えない構造によって維持されている。見えないから忘れる。忘れるから軽んじる。しかしそれが消えたとき初めて、それが存在していたことに気づく。気づいたときには、もう遅い。


予防は、成功すれば自分の痕跡を消す。完璧な予防は、何もしなかった日と区別がつかない。

あなたが今日無事だったことの裏に、どれだけの見えない介入があったか。それを知る方法はない。知る方法がない以上、感謝することもできない。感謝できない以上、それは最初からなかったのと同じだ。

何も起きなかった。それが最高の結果だったのかもしれないし、本当に何もなかっただけかもしれない。あなたにはそれを区別する手段がない。永久に。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu