2007/09/20(木) [n年前の日記]
#1 [prog][zatta][jiji] _命にかかわるプログラミング (CodeZine編集部ブログ)
例えばWeb系と組み込み系のプロジェクトを比べると、細かい点では違うところが多いのですが、プロジェクトの進め方や設計手法など、大まかな点ではそこまで大差はないように思います。ただ、Web系と組み込み系には決定的な違いがあります。
それは「プログラムが人の生死にかかわる」ということです。
組み込みエンジニアの方にに教えてもらったのですが、電車のシステムは何か異常があった際に、必ず「止まる」ように作られているそうです。信号故障があったら全線止まる、踏切が下りなかったら全列車止まる。スピードオーバーしたら急停止する。(中略)こういう設計を「安全側に倒れるシステム」と言うんだそうですが、「倒れる」という(個人的には)聞き慣れない表現を当たり前に使う彼らを見ていると、そこに組み込み業界の常識というか、「絶対に事故を起こしたくない」という意地があるんだろうな、と感じたのでした。となると、何かしら問題が起きたときに電車が止まってしまうというのは、良いシステムの証拠、なのだろうな。止まらずに動いてしまうほうが危険なシステム。
その手のトラブルが起きた際に、「何で電車止まってるんだよー」とお客さんから文句を言われるかもしれんけど。それは、貴方の命をできる限り守れるように意識した作りのシステムだからこそ、止まってるのです。みたいな。…まあ、急いでる人は、そこまで思考を巡らす余裕はないだろうけど。それに急停止することでかえって怪我したりするかもしれんし。脱線したら制御できんし。
壁を取っ払った電車を時々走らせるのはどうか。カーブにさしかかると乗客全員が命懸け。「俺達って、こんな怖いもんにいつも乗ってたんだな…」と再認識できること間違いなし。嘘。
◎ _asahi.com:ベビーカー140m宙づり、電車のドアに挟まれ 堺 - 社会 :
感心(?)した矢先にこんな事故が。うーん。
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
以上です。
仕事で工場の生産設備とか関わってますが、ラインに所々設置されてる非常停止ボタン、
これは基本的にB接点で使われます。つまり通常接点が閉じてて電気が流れて正常運転。
ボタンを押して接点が開いて電気が途切れて異常運転となります。
まぁ、電気制御的にはA接点で信号を拾っても、処理を逆にするだけで、
同じ動作(非常停止ボタンを押す→機械停止)なのですが、ハード的な信頼度が違います。
具体的には、もし電線路が破損等で切断されてた時、A接点では非常停止は効きませんが、
B接点なら断線した時点で異常となり未然に事故を防げます。
電車とかもそうだけど、動く設備等は、「停止中」は人にとって近づいてても安全な状態です。
「稼動中」は危険だけど、離れていれば安全です。
そして、突然設備が突然「稼動→停止」するのは、まだ安全ですが、
逆に「停止→稼動」するのは一番危険です。
だから、稼動してる設備は異常があれば止める方向に、停止してる設備は異常がないと動かないように制御します。
これが「安全側に倒れるシステム」って考え方です。
例えば、ドアの施錠方法に電子錠ってのがあります。暗証番号をテンキーで入力して開錠するアレです。
このドアが停電した場合、鍵は「開けっぱなし」or「閉まりっぱなし」どちらになると思いますか?
> 鍵は「開けっぱなし」or「閉まりっぱなし」どちらになると思いますか?
うわ。これはどっちなんだろう…。
鍵である以上、開けっ放しになったらマズイ気もするけど、
しかし閉まりっぱなしでは人が閉じ込められたりして人命に関わりそうな。
すると、停電→開けっ放し=安全側、なのか…?
いやいや、しかし、鍵なんだから閉まってなかったら
商品として根本的に成立しない気もする。どっちなんだ…。
たしか映画のダイハードでは、停電になると金庫が開いたような記憶が。
でも、手塚治虫のBJでは、停電になると金庫に閉じ込められてたような。
漫画・映画の中における
「停電になると金庫はどうなるか」の描き方によっても、
人命を優先する国なのか、人命を優先しない国なのか、
てな違いが浮き彫りに…。てのはちょっとこじつけ過ぎですかな。
(そもそもBJのソレって停電じゃなかった気がしてきた…)