ディテイルを疎かにして良い場面・ダメな場面

実験に失敗した博士のイラスト
下書きに入ったままだったものをサルベージしてみるシリーズ。こちらは2018年5月6日にいいたいことほとんど書き終わっていたのになぜか下書きに突っ込まれていた記事です。なんで公開されていないのか謎ですが、WordPress移行前に書いたものなのでそのあたりの作業の中で忘れられてしまったのかも知れません。せっかくなので仕上げて公開しておきます。






「失敗する可能性のあるものは必ず失敗する」という思いを念頭にブログを書こうと思ったらもう既に何年も前に書いてました。この中で特に言いたいことはここ。


確かに、「タッパーを取り出す」という1回の試行における雪崩が起きる確率は10%とかそんなものかもしれません。でも、タッパーを取る作業というのは仕事中に数限りなく生じるものですし、明日も明後日も続きます。「雪崩が起きない確率」が90%だったとした場合、10回試行して1回も雪崩が起きない確率はいくつか?答えは、34.9%です。つまり6割以上の確率で雪崩が起きる。「雪崩が起きない確率」が99%だったとしても、100回の試行すれば1回も雪崩が起きない確率は36.6%になってしまいます。

失敗する可能性のあるものは失敗する – NOBODY:PLACE



「失敗」しないかどうかを考えるのに必要な要素

「90%の確率で成功する」「10%の確率で失敗する」ことがあったとき、普通の人は「ほとんど成功するんだな」と思うでしょう。僕が「だし巻きを綺麗に巻ける確率が99%になったよ」といえば「ああこの人はだし巻きマスターなんだな」と思うと思います。失敗なんかしないんだと。それが普通の感覚であり直感だと思うのですが、そのことと実際に「失敗」しないかどうかを考えるには実はまだ必要な要素があります。それは、

  • それは何回行うことなのか?
  • 1回の失敗が許されるのか許されないのか?

です。



それは何回行うことなのか?

僕がだし巻きに成功する確率が99%だったとして、今日1本だし巻きを巻きましょうとなったとき、成功する確率はもちろん99%です。今日は4本巻きましょうとなって、4本とも成功する確率は、


0.99 ^ 4 = 0.961 → 96.1%


となってそれもたぶんほぼ成功するでしょう。でも「その日成功するかどうか」を問うのではなくて、「毎日1本ずつ巻いていって1年間失敗無くまいていけるかどうか」を問うと話が違ってきます。

僕が99%の確率で成功するとして1日10本10日間だし巻きを巻き続けたとき、1本も失敗しない確率はこちらです。


0.99 ^ 100 = 0.366 → 36.6%


60%以上の確率で失敗します。先ほど書いた「毎日1本365日」ならこうなります。


0.99 ^ 365 = 0.0255 → 2.55%


なんと97%以上の確率で1回は失敗します。失敗をしないというのはそれだけ難しい。どんなに成功する確率が高かったとしても、試行回数を重ねれば必ずどこかで失敗してしまうのです。たかだか10日間巻き続けたぐらいで失敗しているようではプロの職人とは言えませんから、本当のプロの人たちの「精度」はものすごいということですね。



1回の失敗が許されるのか許されないのか?

さらに失敗が許容されるかどうかでも、イメージが変わってきます。だし巻きであれば失敗して取り返しが付かないというのはなかなかないと思いますが、例えば航空機の着陸とか。万に一つも失敗してはならない、一度失敗したら大きな被害が出るという場合には、99%であっても決して高い確率ではありません。より高い精度が求められますし、細心の注意を払う必要があります。

このあたりの話は技術屋の世界では「サーバの稼動率」といったような話でもよく語られます。例えば「稼動率99%」のサーバというとほとんど故障しないというイメージがありますが、実際にはこんな感じです。


実際、停止時間は、
31536000×0.01=315360 秒で、
315360÷3600=87.6
となります。

1ヶ月あたり 7.3 時間停止することに相当します。

稼働率 99%は一見高そうに見えますが、毎月 7 時間以上停止するシステムやサーバの信頼性が高いとは言いづらいですね。

稼働率(可用性)99%、99.9%などの停止時間はいくらか – 具体例で学ぶ数学


サーバの世界では「ファイブナイン」という言葉があり信頼性の目安になっています。「ファイブナイン」とはすなわち稼動率99.999%。「万に一つ」は99.99%のことですからそれよりもさらに精度が高くもはや限りなく100%に近いように見えますがこれでも年間5.256分は停止する計算になり、停止が許されないシステムやサービスを支えるにはもっと別の機構が必要になってきます。






場合によって使い分けを

高い精度を獲得するにははだし巻きの場合であれば長い修練が、飛行機の離着陸の場合であれば修練に加えて機械的なサポートが、サーバの場合であれば技術の開発が必要になってきます。つまりコストが上がっていきます。なんでもかんでも高い精度を求めればよいというわけではなくコストと「どの程度失敗が許されのか」ということとのバランスを取りながら、失敗が許される場合には失敗した場合にどうするかも考慮に入れて精度を求めていく必要があります。

ディテイルをどの程度まで疎かにしていいかということは、そういったことと関連して決まることです。「ルールとしてこう決まってるんだからこうする」ではなくそういうことまで目配りしながら手順を決めていけると、色んなことがもっと円滑に進むんじゃないのかなと思います。







初稿:2018年5月6日 16:35