フールプルーフ
利用者が誤った操作をしても、システムが危険な状態になったり、誤った処理をしたりしないように設計する考え方。入力データのチェックや、誤操作できない仕組みを組み込む。
イマシルちゃんの解説
人間は、どんなに気をつけていても、うっかり間違えちゃうことがあるよね。
フールプルーフは、「人は間違えるもの」っていう前提で、間違えても大丈夫なように作る考え方なんだ。
たとえば、電子レンジは扉を開けたままだと動かないし、
入力フォームに数字を入れる欄に文字を入れたら、「数字を入れてね」って教えてくれる。
これがフールプルーフだよ!
より深い解説
定義
フールプルーフ(fool proof)は、利用者が操作を誤ったり、想定外のデータを入力したりしても、システムの誤動作や危険な状態を引き起こさないように、あらかじめ設計しておく考え方である。「愚か者(fool)にも耐える(proof)」という意味で、製造業では「ポカヨケ」とも呼ばれる。
具体例
| 分野 | 例 |
|---|---|
| ソフトウェア | 入力されたデータの形式や範囲をチェックし、誤っていればエラーメッセージを表示して再入力を求める |
| ソフトウェア | 削除の前に確認のメッセージを表示する。取り消し(アンドゥ)の機能を用意する |
| ソフトウェア | 選択肢から選ばせる(自由に入力させない)ことで、誤った値を入れられないようにする |
| 機器 | 電子レンジは、扉が閉まっていないと加熱しない |
| 機器 | USBのコネクタやSIMカードは、向きを間違えると挿さらない形になっている |
| 機器 | 自動車は、ブレーキを踏まないとエンジンがかからない |
プログラム設計での考え方
不特定多数の人が使うプログラムほど、利用者がどんな操作をするか予測できないため、フールプルーフを手厚くする必要がある。
- 「こういうデータを入れてください」という約束を、マニュアルに書いておくだけでは守られない
- 約束に合わないデータが来たら、プログラム自身がそれを検出して利用者に知らせ、正しい入力をやり直してもらう
- 利用者が多様になるほど、入力の確認や操作の制限を手厚くする
信頼性・安全性を高める考え方の比較
| 考え方 | 前提とする事態 | 方針 | 例 |
|---|---|---|---|
| フールプルーフ | 人の誤操作 | 誤操作をしても、誤動作や危険が起きないようにする | 入力チェック、扉が開いていると動かない |
| フェールセーフ | 故障 | 故障したら、安全な側に倒れるようにする | 信号機の故障時は赤信号にする |
| フェールソフト | 故障 | 故障しても、機能を縮小して運転を続ける | 一部のサーバが止まっても、残りで縮退運転する |
| フォールトトレランス | 故障 | 故障しても、全体として正常に動き続ける(多重化) | 二重化したサーバ、RAID |
| フォールトアボイダンス | 故障 | そもそも故障しないようにする | 高品質な部品、十分な試験、予防保守 |
フールプルーフだけが、機器の故障ではなく「人の誤り」を対象にしている点が見分けるポイントである。
似た考え方
| 考え方 | 内容 |
|---|---|
| タンパプルーフ | 不正な改ざんや分解をしにくくする(耐タンパ性) |
| エラープルーフ | 作業の誤りを防ぐ工夫の総称。フールプルーフとほぼ同じ意味で使われる |