arrow 若葉プログラミング塾 > 知識の玉手箱 > ねこでもわかるIT用語辞典 >
用語  

一般的マーフィーの法則

 もともとは、ジョセフ・マーフィーによって一見逆説に聞こえるフレーズをことわざ風に表現したものであり、含蓄に富み、特にソフトウェア開発者の間で喜んで交換された。

例えば、有名なものでは

失敗する可能性のあるものは、失敗する。
トーストのバターを塗った面が下に向いて落ちる確率は、カーペットの値段に比例する。

などがある。

 これを自分で作ってみようという人間が多いのは当然であるが、決して「マーフィーの法則」をインターネットで検索しない方がいいだろう。「XX版マーフィーの法則」が山のように現れ、 しかも新しい法則を募集している。多くは、「ある、ある」という程度であるので期待しないように。

 ともあれ、「常識を裏切ることを、言い切る」という法則さえ知っていれば、私版マーフィーの法則はいくらでもできる。

病院にいくと熱は下がっている

IT世界のマーフィーの法則

話をソフトウェア開発に戻そう。

まず例を挙げる。

バックアップする直前に、ハードディスクは必ずクラッシュする。
クラッシュする前にとってあるバックアップは、必ず壊れている。

  大体、大事なデータをディスクに保存するような年頃になると、ディスクのクラッシュは必ず何度か経験するのである。「ディスククラッシュで泣かずに一生を終える人など一人もいない。」のである。
 しかし、面白い反証もある。

定期的なバックアップを保存している管理者のディスクは決してクラッシュしない。

さらにもうひとつ。

 「システムは成長し、成長しながら侵害する」という原則がある。
言い換えると、複雑なシステムにしてしまうと何が起きているかわからない、ということである。
社会に目を向ければ、経済活動というシステムは、複雑すぎて何が次に起きるか学者にもよくわからないところがある。常に、経済評論家には、 日本経済について全く逆のことをいっている人たちがいて、それぞれを信用する人たちもまた数多く存在するのである(詳しく知りたい人は「ケインズ」を調べよう)。

つまるところ、複雑すぎるシステムには「絶対」はない、ということだ。

  ソフトウェアでは、この原則がもっと端的に現れる。小さいシステムは、エラーが入りにくいし発見しやすいので個人で作成することができるが、中規模のシステムは、複数人で作り、 しかもちゃんとエラーを発見するためにテストをする人も必要になる。大規模なシステムは、社会と同じで一見うまく動いているように見えて、隅のほうではとんでもないエラーが起き、エラーは絶対になくなることはない。

ソフトウェア開発における教訓

「1つのプログラム単位(モジュール)は、ソースコードを一目で見渡せる規模にすべし」

マーフィーの法則
arrow 若葉プログラミング塾 > 知識の玉手箱 > ねこでもわかるIT用語辞典 >
KC