orangeitems’s diary

クラウドで働くインフラエンジニアの日々の感想です(ほぼ毎日更新)。

フェイルセーフ、フールプルーフ、とても大事な概念

f:id:orangeitems:20200628121329j:plain

 

ポケットティッシュを誤って洗濯しないために 

今、フェイルセーフ、フールプルーフの議論で盛り上がっているようで。

 

anond.hatelabo.jp

詳しい方でなくてもありがたいです

「ポケットにティッシュ入れたまま洗濯」

を未然に防止したい

本人には何度もお願いしたけど「気を付ける」では無理

対象は小学生

学校で指示されるので身に付けている必要はあるらしい(ティッシュ持ち歩かないが最強だと思ったんだけど)

ランドセルに入れっぱなしは本人が拒否(ポケットにモノを入れなきゃいいんだろと思ったんだけど)

脱衣所が狭いので脱いだ洋服をそのまま洗濯機に入れることになっている(ここは出来れば変えたくない)

本人は一人で風呂に入る

脱衣所に貼り紙をしたけどスルー

声かけをしても生返事で動かないお年頃

現状はほぼ50%の確率でポケットにハンカチとティッシュを入れたまま洗濯してしまっている

さらに運が悪いとポケットから出たティッシュで洗濯物全滅

おそらく本人への働きかけはすべて無駄なのでシステム的になんとかする案をいただきたいです

ポケットの中身を片付けないと服が脱げないない呪いが欲しい

 

いいですね。フェイルセーフ、フールプルーフ、大好きな言葉です。

 

www.i-learning.jp

フールプルーフ=

「何も知らない人が使っても大丈夫なように証明されているもの」「使用方法を知らない、もしくは間違った使い方をしても大事に至らないような設計」のことです。

フェイルセーフ=

「操作方法を間違ったり、部品が壊れたり、誤作動したりした場合に、危ない方向ではなく、安全な方向へ向かう」ように設計することをいいます。

 

似たような言葉なので、情報処理試験でも度々出題されますね。おぼえておきましょう。

 

考察

フールプルーフと言葉は、fool proofですが、foolとは「バカ」って意味ですね。proofとは一番目の意味は証拠・証明ですが、二番目の意味として標準強度という意味があるそうです。バカでも壊れねえ、みたいな感じで、よくよく考えるとなんて容赦ない表現だろうなと思います。

意外と、システムの世界でもフールプルーフ考えろや!って場面はあって、「有効」「無効」「削除」というボタンを並べている管理画面をよく見かけます。

機能の有効/無効は運用でもよく使うので避けて通れないのですが、よせばいいのに削除ボタンを何でその隣に平気で置くのかなあ・・、と思うことがよくあります。

無効にしようとしたら設定削除しちゃった!、っていうミスオペをやると、システム障害の引き金になります。しかも設定は複雑なので、削除してしまうとすぐに戻せません。

「いや~、いくらなんでも、無効と削除は間違わないでしょ」って思っているあなた、いや、そもそもフールプルーフって、「バカ」って意味が入ってますからね。

人間はどんなに優秀でも、10000回に1回くらいはバカやっちゃうもんです。

バカが管理画面を触ってもいいように、削除ボタンはユーザーインターフェースの中でもすごく遠ざけておいて、しかも一度押してもおどろおどろしい確認画面を表示し、それでも念押しし、みたいな作りにしなければいけないということですね。

たまーに、削除ボタンを押しても「削除されました」なんてAmazonの1 Clickボタン並みに塩対応で削除してくるシステムもありますので、システムを構築される方はこのフールプルーフをよく考えてほしいものです。

バカにも人生があるので、重大事故に巻き込ませないようにシステム側でフールプルーフをちゃんと考えてほしいな(私だってバカやるかもしれんし)。

 

あと、フェイルセーフの話。フェイルセーフ=冗長化と思っている人、案外多い。冗長化はフェイルセーフを実装する一つの方法でしかありません。

失敗しても安全に倒す。例えば昔から水素自動車という概念はあったのですが、もし万が一事故を起こしてどこかに車がクラッシュした場合、水素が爆発反応を起こして大爆発を起こすという有名な話がありました。このあたりは克服されているそうです。

 

business.nikkei.com

F:燃料電池自動車(FCV)は水素を燃料としています。水素は火が着けば簡単に燃える危険物です。それが最大700気圧もの高圧でクルマの下に収まっている。素人考えだと、これはずいぶん怖い話です。例えばMIRAIが崖から転がり落ちたり、時速100キロで壁に激突したりしても爆発はしないのですか。

田中(以下、田):ああもう全く心配いりません。どうぞ安心して突っ込んで……とは言えませんけれど(笑)。

 

万が一失敗しても、安全に倒す。

フールプルーフはバカ向けですが、フェイルセーフはシステム自体が失敗しても安全にするという思想です。

で、冗長化してるからフェイルセーフだというのは私は雑な議論だと思います。

1つのデータセンターの1つの仮想基盤にありとあらゆるシステムを全部閉じ込めて、そしてインターネット自体は共有インターネットを使う、なんてやったとします。

もしインターネットが止まったら・・システムは全部停止します。

いくらインターネット設備を冗長化しておいたって、両方落ちる場合もありますし障害時に待機系に切り替わらないことだってよくあります。

システム全部を、1つのインターネットの下に置くことによって、大障害発生、ということになりかねません。

フェイルセーフの考え方を踏まえると、できるだけ複数のシステムは、複数の独立したインフラ基盤に分けておいた方が安全です。

絶対停止しないインフラ基盤はありませんから、停止したとしても局所的なトラブルに済ませると、慌てて対応する必要はなくなります。

今はAWSやAzureにパブリッククラウドの人気が集中する傾向にありますが、AWSごと、Azureごと落ちちゃうということもあり得ます。したがって、複数のクラウドを利用しようなんて言う発想もフェイルセーフかもしれません。

フールプルーフ、フェイルセーフ、どっちも本当に重要で、業界全体で気を付けてほしいです。

 

そういえばティッシュ洗濯の話

冒頭のティッシュ洗濯の話。

フールプルーフの概念から言えば、子供がバカだと仮定してティッシュをポケットに入れたまま洗濯機に入れても安全にしたいということですよね。これは、ティッシュを入れたまま選択してもティッシュが洗濯機に散らばらなければいい。

ということは、「水の要らない洗濯機」の登場ですね。昔は合ったんですよ本当に。

そこが知りたい家電の新技術

もちろん、売れなくてなくなりましたけど。「ただし、このエアウォッシュでは汚れそのものは落ちないので注意が必要だ。」・・っておい、という感じで。

あとは、バカだと仮定するなら、洗濯機に直接ものを入れさせないのは良策ですね。ただ前提条件でそれが拒否されているのでこれはできない・・。

さて、フェイルセーフですが、子供の洗濯機と、それ以外の家族の洗濯機を別にするということですかねえ・・。子供の服がティッシュまみれになってもそのまま使わせればいいんじゃないでしょうか(暴論)。なにを安全とするかでこれは考え方が180度変わります。もしくは、子供の選択だけ手洗いにすれば、手洗いする前に洗う人がポケットを確認するので気づきますよね。

ちなみに子供にティッシュを持たせないのも、前提条件でダメ。

ティッシュをハードケースにして水洗いしても飛び出さないようにする・・、というのは子供が嫌がりそうですし、そんなに水をはじくハードケースなんてあるのでしょうか。ポケットにそもそも入らない気がしますね、そんなゴツイやつ。

ということで、多分フールプルーフとかフェイルセーフとかじゃなく、単に洗濯機に直接洗濯物を入れさせないで、専用の箱に入れさせて、事前チェックする案が一番いいんでしょうね(普通)。