フールプルーフ

フールプルーフ () とは、安全工学における用語のひとつで、工業製品やシステムを設計する際、誤操作や誤設定などの間違った使い方をしても、少なくとも使用者や周囲にとって危険な動作をしないように、あるいはそもそも間違った使い方ができないように配慮する設計手法のこと。英語では「壊したり間違えたりすることなく、誰でも簡単に使える」という意味を持つ、という言葉が使われることもある。またフールプルーフと同じ概念として、日本語のポカヨケを直訳したが用いられることもある。
フールプルーフが目指す「誤用されない設計」とは、本質的に防御的な設計 () となる。これは、「人間は往々にして間違いを犯すものである」という前提に立った考え方に基づいている。特に生産現場では、ちょっとしたミスが人命にかかわる致命的な事故につながる可能性があることから、労働災害を防止するために、安全衛生の観点からも機器や環境のフールプルーフ化を推進することが望ましい。
ロボット工学.
日本産業規格（旧称：日本工業規格）では、JIS B 0187「サービスロボット－用語」において、フールプルーフとは、「人為的に不適切な行為，過失などが起こっても，ロボット及びロボットシステムの要素が危険な状態に至らないようにする機能又は性質」と定義されている。
ソフトウェア工学.
ソフトウェア工学およびコンピュータプログラミングの分野では、間違ったソフトウェアの使い方をしても、危険な動作や間違った動作、意図しない動作をしないようにするための「防御的プログラミング」という技法がある。不正な入力データが来るかもしれないことを想定してプログラムを記述することで、不測のバグ（不具合）やセキュリティホール（脆弱性）が発生することを防止する。これはフールプルーフと同様の考え方である。
防御的プログラミングは、オペレーティングシステムやデバイスドライバ、ライブラリやアプリケーションソフトウェアなど、様々な層で適用される可能性があるが、プログラムに含まれるすべてのサブルーチンにおいて防御的プログラミングを完全に適用しようとすると膨大な作業工数がかかることになるし、またプログラムの安全性と実行速度はトレードオフの関係になる。そのため、サブルーチンの呼び出し元あるいは呼び出し先でのパラメータチェックなど、どの層が安全性について責任を持つべきか、ということに注目した「契約プログラミング」（契約による設計）といった技法も同時に用いられる。プログラミング言語の仕様として自動化されたチェック機構を設けることで安全性を担保することもある。