【なかなか覚えられない…】耐障害設計用語（フェールセーフ、フォールトアボイダンスetc）

# サマリ
フェールセーフやフォールトアボイダンスなどの耐障害設計用語をまとめました。
（何度もまとめられた話かもしれませんが、自分の理解のためもありご容赦ください。。）

# 背景
IPA試験の勉強をしているのですが、**フェイ**とか**フォイ**とか**フー**とか**プー**とか耐障害設計に関する用語って紛らわしい言葉だらけでなかなか覚えられないですよね～～
基本情報を受けた約10年前からIPA試験の受験のたびに覚え直しており、
このいたちごっこを終わらせるため、
やっと向き合うことにしました。

# 対象読者
- IPA試験受験者
- 障害設計用語について理解したい方

# フェール(fail)・フォールト(fault)とは
まず、言葉の頭の単語を英英辞典で調べました。
（英和辞典で調べてもいいのですが、どちらも障害・欠陥・失敗というような似た意味が出てイメージしにくいです）

https://www.ldoceonline.com/jp/dictionary/fail

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/58b62fb7-111c-47f7-8828-9d87f563c882.png)

NOT SUCCEED、つまり失敗ということですね。

https://www.ldoceonline.com/jp/dictionary/fault

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/cab83ee9-5307-4dfb-b368-4690262a0fb9.png)

3のa)がまさにそうだと思うのですが、
>  something that is wrong with a machine, system, design etc, which prevents it from working properly

ちょっと難しいですが
「機械、システム、設計などにある欠点（間違い）で、それ（機械、システム、設計）が適切に機能することを妨げるもの」
ぐらいでしょうか。。

これらを整理すると、
**failは失敗（故障）で結果そのもの**、**faultは失敗（故障）の原因となるもの**と理解しました。
（厳密にはやっぱりどちらも失敗（故障）なのかもしれませんが、<font color="red">理解のしやすさからそう解釈します</font>（おい））

時系列的にはfault→failみたいなイメージですかね。
というわけでそれを踏まえて、フォールト〇〇→フェール〇〇の順で触れたいと思います。

# フォールト
上述の通り、どちらかというと故障の前段としての設計です。
（そもそも起こさない、あるいは起きても問題ないようにする）

### フォールトアボイダンス（Fault Avoidance）
アボイダンス：回避

何か起きることをそもそも避ける方法です。
具体的には、
- 高品質や信頼性の高い製品でシステム構築する
- 試験や検証を重ねる
等


https://e-words.jp/w/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB%E3%83%88%E3%82%A2%E3%83%9C%E3%82%A4%E3%83%80%E3%83%B3%E3%82%B9.html


### フォールトトレランス（Fault Tolerance）
トレランス：耐久力・耐性・包容力、等


何かあっても耐えられる状態にしておくことですね。
- 冗長構成をとっておく
- 通信経路の複数経路化
等

https://e-words.jp/w/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB%E3%83%88%E3%83%88%E3%83%AC%E3%83%A9%E3%83%B3%E3%82%B9.html

### フォールトマスキング（Fault Masking）
マスキング：覆い隠すこと

- 何か起こった際に外部に影響を与えないようにすること
- 外部から気づかないようにすること

https://e-words.jp/w/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB%E3%83%88%E3%83%9E%E3%82%B9%E3%82%AD%E3%83%B3%E3%82%B0.html#google_vignette

これ外部に影響を与えないという意味ではフォールトトレランスに近い気してややこしいと思ったのですが、
上記のe-wordsの解説がわかりやすかったです。

> 同じ処理を実行する３つ以上の独立したシステムを同時に稼働させ、それらの処理結果を比較して最も多い結果を出力として採用する、といった手法がある。

つまり、１つのシステムが不具合により異常な結果になっても、多数決により正しい結果が出力され、
外部に影響を与えない、外部から異常に気付かれないということですね。

# フェール
何か起こった際の設計についてです。

### フェールセーフ（Fail Safe）
セーフ：安全

ドラクエでいう「いのちだいじに」ですね。
障害発生時に、安全側に倒すことです。

- 石油ストーブが転倒時に自動で火が消える
- 踏切（停電時など、電力がないような事態でも自然と重力で下がるので侵入防止になる）
　->水栓レバーの下げ止め式も踏切と近いですね。

https://e-words.jp/w/%E3%83%95%E3%82%A7%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%BC%E3%83%95.html

### フェールソフト（Fail Soft）
ソフト：やわらかい、柔軟な

障害発生時に一部の機能や性能を縮退しても何とか（柔軟に）運用できるようにすることです。

- 飛行機のエンジンが片方壊れても残ったエンジンで飛行する
等

https://e-words.jp/w/%E3%83%95%E3%82%A7%E3%82%A4%E3%83%AB%E3%82%BD%E3%83%95%E3%83%88.html

フォールトトレランスに似ててややこしいです。。（飛行機のたとえが微妙なのかもしれませんが）
フェールソフトとは一部の機能・性能を落とした縮退運転、フォールトトレランスは機能・性能は維持したまま
みたいな理解をしています。


### フェールオーバー（Fail Over）
フェールソフトの関連用語です。
オーバー：超えて、わたって

障害発生時に、代替系統が処理を引き継いで運用を継続することです。
職場の同僚が急遽休んだ時に他の人が仕事を引き継いで何とか業務を回す的な感じですかね。
フェールオーバーから元の状態に戻すことをフェールバックというようです。

https://e-words.jp/w/%E3%83%95%E3%82%A7%E3%82%A4%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC.html

# フール
### フールプルーフ（Fool Proof）

これだけ最後別の言葉ですがよく出てくるので…
フール：愚か者
プルーフ：耐える（パッとイメージするのは証明とか証拠ですが、形容詞的にはこのような意味もあるようです）

愚か者にも耐える設計にするということですね。（すごい名前だ。。

- 蓋を閉めないと動作しない電子レンジ・洗濯機
- 座らないと動作しないウォシュレット
等

https://e-words.jp/w/%E3%83%95%E3%83%BC%E3%83%AB%E3%83%97%E3%83%AB%E3%83%BC%E3%83%95.html

# まとめ
今回自分なりの解釈をしてなんだかわかった気になったものの、
やはり意味的にはかなり似ていて紛らわしいのには変わりないですし、
一年後覚えているか怪しいですね（おい
もう少しアウトプットして咀嚼するとか、
語呂合わせで無理やり覚えるとかしないと忘れそうです…笑