2007-01-17

信頼性と冗長性 信頼性と冗長性 - Nao_uの日記 を含むブックマーク はてなブックマーク - 信頼性と冗長性 - Nao_uの日記 信頼性と冗長性 - Nao_uの日記 のブックマークコメント

100回に1回故障する機械の信頼性を、1万回に1回レベルにまで向上させようと思ったら、取れる戦略は2つ。

  • 個々の部品の信頼性を上げて、「1万回に1回」を達成する
  • 同じ機械を2台セットで販売して、「壊れたらもうひとつを使ってください」とお願いする

部品一つ一つを改良するのは大変。機械の信頼性は、それを構成する全ての部品の中で、一番壊れやすい物が決定してしまう。機械の信頼性を上げようと思ったら、全部の部品に「高級品」を使わないと、コンポーネントとしての信頼性は上がらない。

冗長性戦略は簡単。同じ製品2台で、値段が2倍になるだけ。


子供の頃にドラクエ2を遊んでいたときのこと。小学生の能力では、復活の呪文をどれほど注意深く書き写したとしても、100%間違えずにメモすることはほぼ不可能。

しかし、あるとき、王様に何度も話しかければ同じデータを再現できる違った内容の呪文を教えてもらえることに気づいた。そのときから、もしかしたら一種類の呪文を時間をかけて注意深く書き写してそれにすべてを賭けるよりも、適当でいいから何回か書き写したほうが楽だったりするのではないか?と考えるようになり、最終的には大幅にチェックを甘くする代わりに呪文を複数回書き写すようになった。

それぞれのやり方の成功確率を簡単に計算してみる。たとえば、手間暇かけて厳密なチェックを行いながら丁寧な文字で書き写したときには95%の確率で成功し、ノーチェックで殴り書きのような適当な写し方だと80%程度まで信頼性が落ちると仮定する。

この場合、ノーチェックで2度メモしたときに両方の呪文が間違っている確率は『(1.0-0.8)*(1.0-0.8)=0.04』。2度書き写せば約96%の成功率になり、これだけでも注意深く1回メモしたときの95%よりも成功率が高い。さらにもう一回分冗長度を増やして3度書き写せば成功率は99.2%に上昇し、現実的にはほぼ失敗することはないレベルの成功率が得られる。*1

「適当に書き写したときの成功率が80%」という仮定は当時の実感から考えるとかなり少なめに見積もった数字であるため、実際には失敗する可能性はさらに低くなる。仮に90%の確率で成功するなら2度写すだけでも99%の成功率が得られるため、実用レベルでは手間を惜しむならチェックなしの2回書き込みでも十分な成功率が得られたような記憶がある。

注意深く時間をかけて1回メモするよりもノーチェックの走り書きで複数回メモするほうが、明らかに時間的にも心理的にもコストが低いため、高効率であることは間違いない。

このやり方のデメリットとして、間違っていたときのパスワード入力回数が増えてしまうという問題はあったものの、実際の失敗頻度はさほど多くないうえに最終的な成功率が高いほうが心理的にも安心できるし、「復活の呪文を効率よく入力すること」をタイムアタック的なミニゲームとして楽しんでいたこともあって、そちらの面での負担増加はあまり感じられなかった。

当時のことはよく覚えていないけれど、このような確率の計算はできなくても、小学生なりに経験的に複数回記録する方が簡単で成功率も高いんだということは理解していたのではないかと思う。今振り返ってみると、これは「冗長性を利用して信頼性を向上させる」手法だったんだなということを、今回のリンク先の文章を見て思い出した。

たぶん、いまどきの子供なら「携帯のカメラで直接撮影」みたいなもっと確実で効率的な手段を取るに違いないけど。

*1:実際にはメモへの写し間違いの確率とは別に、ゲーム再開時に入力ミスする可能性も考慮に入れないと正確ではないけれど、それも考慮すると一発書きの効率はさらに落ちることになる。