警報が鳴れば電源を切る

夏の風物詩といえば、「教師によるプールの水出しっぱなしと高額請求」ではないだろうか。
IT業界の人々は「警告だせばいい」とか「満タンになったら自動で止めればいい」とかいうのだけれど、ことはそう単純でもなかったりする。特に昨年川崎で発生した事例は、そんな手法では解決できなかったのだ。

川崎市の報告書

2023年の8月に川崎市で発生した「プール水止め忘れ」問題は非常に興味深い事例だった。
資料はこちら
https://www.city.kawasaki.jp/templates/press/cmsfiles/contents/0000153/153608/houdouhappyou.pdf

簡単に言えば、
①プールの水入れ操作(電動)を実行した
②(別要因で)警報が鳴った
③警報止めるためにブレーカー落とした
④プールの水止め操作(電動)を行ったが、ブレーカー落としていたため、水止め操作が実行されなかった

この事例の結論はこうだ。
「どんなに頑張ってエラー防ごうとしたって、電源切られたらお手上げ」

コンパイルエラー、ランタイムエラー

プログラミングを行っている時、よほどの天才でない限りはエラーを経験する。この時に、エラーメッセージが発生するのだけれど、プログラミングの初学者によくみられる傾向として、「エラーメッセージが出たら、そのメッセージを真っ先に閉じる」という行動がある*1。これはエラーメッセージは警報の一種で、警報は人間にストレスを与えるため、ストレスを回避するための行動だろう。

今年の4月にtwitter上で、こんな話が合った。
「エンジニアって一生エラーと付き合っていくの、、、、?耐えられる、、、、?」→「プログラミング苦手な理由として、自分が責められてるみたいだからエラーメッセージ読むのがストレスみたいなこと言ってた人が昔いたんだけど、たぶんこのタイプの人たち人間同士でも「率直に問題点を議論する」みたいな時にめちゃくちゃ配慮必要そうでめんどくさいな、と思った。」 - Togetter [トゥギャッター]
やはり、警報はストレスを与えるし、回避できるのであれば回避したいのだ。

警報音

IT業界でまれに怪談として語られるのが、「毎日かならず17時に停止するサーバ」だ。CPU使用率が特に高くなるわけでもなく、特に温度センサーに異常も発生していないのに、毎日のようにサーバが停止してしまう。どうしても原因がわからないので、17時にサーバの前まで行って確認したら、清掃担当がサーバのコンセントを抜いて、掃除機のコンセントをさしていた。
という笑い話だ。

これに似た話として、1年ほど前に話題になったのが、以下の事例だ。
清掃員がうっかり冷凍庫の電源オフ、25年の大学研究成果が消える - ネット「えっぐ」「考えただけでおそろしい」 | マイナビニュース
冷凍庫のエラー音がうるさいので、清掃業者が電源をOFFしてしまった。

「自分の仕事の妨げになるようなことは、その人の常識内で回避されてしまう。」ということだ。

じゃあどうすりゃいいのって話

考えるべきは「電源切られないような警報の出し方」「簡単に電源切れない仕組み」になる。たとえばトラックの中にはバックの際に、「ピーピー、バックします」という警告音声を出すようになっているものがある。警告音だけでは何の警告なのかわからないから、音声になったのだろう。つまりは「警報がなんの警報なのか、ちゃんとわかるようにする」という対策が最低限必要になる。電源が切られたときの対策としては、UPSのように「電源が切られたという警告」が出力されることが必要になる。


ということまで考えたうえで思うことは、電源喪失まで考えたシステム構築するより、年1回か2回の水出しっぱなしは許容する方がトータルコストは少なくなるんじゃないだろうか。

だから、警告出したり、自動ストップみたいな対策を行うのは良いけれど
①警告は何の警告で、どう対処すればわかるような警告とすること
②損失が数億円になるとか、生命が脅かされるとかいうケースにいつては、電源喪失警告をだす
③トータルコストがかさむならリスクは許容するのも一つの手だよ

というようなことは考慮するべきなんじゃないかなと思った次第であった。

*1:ちなみにベテランになると、エラーメッセージが出ないと不安になるという傾向がみられる(笑)