フールプルーフ

フールプルーフが目指す「誤用されない設計」とは、本質的に防御的な設計 () となる。これは、「人間は往々にして間違いを犯すものである」という前提に立った考え方に基づいているフールプルーフ（foolproof）とは - IT用語辞典 e-Words。特に生産現場では、ちょっとしたミスが人命にかかわる致命的な事故につながる可能性があることから、労働災害を防止するために、安全衛生の観点からも機器や環境のフールプルーフ化を推進することが望ましい職場のあんぜんサイト：フールプルーフ[安全衛生キーワード]。

 例 
 全自動洗濯機で蓋が開放のままスタート操作をしても動作（巻き込みの危険性がある回転動作）を開始しないような設計。脱水槽が完全停止しないと蓋が開けられない設計。
 ATの自動車で、誤発進を防ぐため、「レンジがP (駐車) もしくはN (ニュートラル) の状態」で、かつ「ブレーキを踏んでいる状態」のときのみイグニッションキーが回せる（他の状態でエンジン始動しない）設計AT車は「P」や「N」じゃなきゃ始動しないのになぜ？ ブレーキを踏まないとクルマのエンジンがかからないワケ | 自動車情報・ニュース WEB CARTOP。

 ロボット工学 
日本産業規格（旧称：日本工業規格）では、JIS B 0187「サービスロボット－用語」において、フールプルーフとは、「人為的に不適切な行為，過失などが起こっても，ロボット及びロボットシステムの要素が危険な状態に至らないようにする機能又は性質」と定義されている。

 ソフトウェア工学 
ソフトウェア工学およびコンピュータプログラミングの分野では、間違ったソフトウェアの使い方をしても、危険な動作や間違った動作、意図しない動作をしないようにするための「防御的プログラミング」という技法がある。不正な入力データが来るかもしれないことを想定してプログラムを記述することで、不測のバグ（不具合）やセキュリティホール（脆弱性）が発生することを防止する第1回　良いコードを書くための5つの習慣［前編］| 良いコ－ドへの道―普通のプログラマのためのステップアップガイド | gihyo.jp (技術評論社)。これはフールプルーフと同様の考え方である。

防御的プログラミングは、オペレーティングシステムやデバイスドライバ、ライブラリやアプリケーションソフトウェアなど、様々な層で適用される可能性があるが、プログラムに含まれるすべてのサブルーチンにおいて防御的プログラミングを完全に適用しようとすると膨大な作業工数がかかることになるし、またプログラムの安全性と実行速度はトレードオフの関係になる。そのため、サブルーチンの呼び出し元あるいは呼び出し先でのパラメータチェックなど、どの層が安全性について責任を持つべきか、ということに注目した「契約プログラミング」（契約による設計）といった技法も同時に用いられる。プログラミング言語の仕様として自動化されたチェック機構を設けることで安全性を担保することもある。

 脚注 
 注釈 

 出典 

 関連項目 
 ポカヨケ
 安全装置
 フェイルセーフ
 安全工学
 インターロック (安全技術) - フールプルーフの下位概念
 :en:Idiot-proof

 外部リンク 



Category:ユーザインタフェース
Category:ヒューマンエラー
Category:安全
Category:信頼性工学