Instant Engineering

エンジニアの仕事効率を上げる知識をシェアするWeb記事/機械設計/TPS/QC品質管理

フォールトトレラントとは?フェールソフトとの違い

「システムが止まったら、工場全体が止まる」──製造業の生産ラインでは、たった1つの装置の故障が数千万円規模の損失に直結することも珍しくありません。

こうしたリスクに対処するために生まれた設計思想が「フォールトトレラント」です。
故障が発生してもシステム全体の機能を維持し続けることを目指す考え方です。

よく混同される「フェールソフト」や「フェールセーフ」とは、故障時の対処方針が根本的に異なります。
正しく使い分けることが設計品質の鍵を握ります。

本記事では、フォールトトレラントの定義から類似用語との違い、冗長化の具体的手法、稼働率計算、製造現場での適用事例までを体系的に解説します。

 

1. フォールトトレラントとは

フォールトトレラント(Fault Tolerant)とは、システムを構成する一部の要素に故障(フォールト)が発生しても、全体の機能を停止させずに正常動作を継続する設計思想のことです。
日本語では「耐障害性」とも訳されます。

ここでいう「フォールト(Fault)」とは、ハードウェアの物理的な故障だけを指すのではありません。
ソフトウェアのバグ、通信回線の断線、オペレーターの操作ミスなど、システムが正常状態から逸脱する原因を広く含みます。

たとえば、製造ラインの制御コンピュータが突然フリーズした場面を想像してください。
フォールトトレラントに設計されていないシステムでは、ライン全体が停止して大量の仕掛品が不良化します。
一方、フォールトトレラントなシステムでは、予備のコンピュータが瞬時に制御を引き継ぎ、ラインは何事もなかったかのように稼働を続けます。

 

フォールトトレランスの基本的な考え方

フォールトトレランス(Fault Tolerance)は「障害許容」を意味し、フォールトトレラントはその形容詞形です。
この設計思想の核心は、故障を完全に防ぐことは不可能であるという前提に立つ点にあります。

従来の設計では「故障を起こさない」ことに全力を注いでいました。
しかし現実には、部品には寿命があり、環境変動は避けられず、人的ミスもゼロにはできません。

フォールトトレラント設計は、「故障は必ず起こる」ことを織り込んだうえで、故障してもサービスを継続できる仕組みを構築するというアプローチです。
この発想の転換こそが、高い可用性を実現する鍵となります。

たとえばエレベーターのワイヤーロープを考えてみましょう。
乗客や積載物の荷重を支えるには1本のロープで十分な強度がありますが、実際には複数本のロープが使われています。
仮に1本が破断しても残りのロープで荷重を支えられるようにする──これもフォールトトレランスの一種です。

 

フォールトトレランスの3段階プロセス

フォールトトレラントシステムが障害に対処する流れは、大きく3段階に分かれます。

第1段階:故障検出(Fault Detection)
冗長化された構成要素の出力を常時比較し、異常を検知します。
たとえば二重化されたプロセッサの演算結果が不一致になった場合、いずれかに故障が発生したと判定します。
検出方法にはウォッチドッグタイマー、チェックサム照合、入出力比較などがあります。

第2段階:故障隔離(Fault Isolation)
検出された障害箇所をシステムから切り離し、正常な部分に影響が波及しないよう遮断します。
物理的なスイッチング回路やソフトウェアによるフェイルオーバー処理がこれに該当します。
この段階のスピードがシステムのダウンタイムを決定づけるため、ミリ秒単位の切替速度が求められる場合もあります。

第3段階:故障回復(Fault Recovery)
障害箇所を隔離した後、予備系統に切り替えてシステム全体の正常動作を維持します。
必要に応じて障害が発生した部品をオンラインで交換(ホットスワップ)し、冗長度を回復させます。
冗長度の回復は極めて重要です。回復しないまま運用を続けると、次の故障でシステムが完全停止するリスクが高まります。

 

フォールトトレラントが求められる場面

この設計思想が特に重要となるのは、システムの停止が人命や巨額の損失に直結する場面です。

  • 航空機のフライトコントロールシステム(三重・四重の冗長構成が一般的)
  • 原子力発電所の制御系統(安全系は多重化が法令で義務化)
  • 銀行や証券取引所のオンラインシステム(ダウンタイムが経済的損失に直結)
  • 製造業の連続稼働ライン(24時間操業では1分の停止も許容されない場合がある)
  • 医療機器(人工心肺装置や生命維持装置は停止が許されない)

いずれの場面も、「故障したら止める」のではなく「故障しても動かし続ける」ことが最優先課題となります。
このようにフォールトトレラント設計は、システムの重要度に応じて適用レベルを判断するものです。

 

2. フォールトトレラントとフェールソフトの違い

フォールトトレラントとフェールソフトは、どちらも故障発生後にシステムを停止させずに運用を継続するという点では共通しています。
しかし、故障後に維持する機能レベルが根本的に異なります。

この違いを理解していないと、設計仕様書に「フォールトトレラント対応」と書いたつもりで実際にはフェールソフト止まりだった、というミスマッチが起こりかねません。
正確な用語理解は、設計品質の出発点です。

 

フェールソフトの定義

フェールソフト(Fail Soft)とは、システムの一部に故障が発生した際、故障した機能を切り離して性能を縮退させながらも運用を継続する設計思想です。
「縮退運転(デグレード運転)」とも呼ばれます。

たとえば、4基のエンジンを搭載した航空機で1基が停止した場合を考えます。
残る3基で飛行を継続し、最寄りの空港まで安全にたどり着くことを目指す──これがフェールソフトの発想です。

この場合、最高速度や上昇力は低下しますが、飛行自体は継続できます。
つまり、100%の性能は諦めるが、0%(完全停止)にはしないという判断です。

もう1つ身近な例を挙げましょう。
複数のCPUコアを搭載したサーバで1コアが異常動作を始めた場合、そのコアだけを無効化して残りのコアで処理を継続する──これもフェールソフトの典型例です。
処理性能は低下しますが、サービスは継続できます。

 

両者の決定的な違い

フォールトトレラントとフェールソフトの違いを端的にまとめると、以下の通りです。

比較項目 フォールトトレラント フェールソフト
故障後の機能レベル 100%維持(利用者に影響なし) 一部を犠牲にして継続(性能低下)
実現手段 冗長化+自動切替 故障部の切り離し+縮退運転
コスト 高い(予備系統が必要) 比較的低い
典型例 二重化サーバ、TMR制御 マルチエンジン航空機の片発飛行
設計目標 無停止・無影響 最低限の機能維持

 

最も重要な違いは、利用者から見て故障の影響が「見えるか見えないか」です。
フォールトトレラントでは、内部で障害が起きていても利用者はそれに気づきません。
一方、フェールソフトでは性能低下という形で影響が顕在化します。

技術的に表現すれば、フォールトトレラントはフェールソフトの「上位互換」に近い概念です。
フェールソフトが「止めない」ことを目標とするのに対し、フォールトトレラントは「影響させない」ことまで踏み込んでいます。

 

使い分けの判断基準

どちらの設計を採用するかは、システムに求められる可用性要件とコストのバランスで決まります。

たとえば金融取引システムでは、1秒の処理遅延が数億円の損失を生みかねないため、フォールトトレラント設計が必須です。
対して、社内の情報共有ポータルであれば、一部機能の縮退を許容するフェールソフト設計で十分な場合が多いでしょう。

製造業においても同様の判断が求められます。
たとえば自動車塗装ラインの制御システムは、塗りムラが不良品を大量に生むため、高いフォールトトレランスが要求されます。
一方、生産実績の集計システムであれば、一時的な縮退運転を許容できるケースが多いでしょう。

判断の目安として、「このシステムが1時間止まったら損失はいくらか」を金額換算する方法があります。
時間あたり損失額がシステム冗長化コストの年額を上回るなら、フォールトトレラント設計の投資は十分に正当化されます。

 

3. フォールトアボイダンスとの関係

信頼性設計を語るうえで、フォールトトレランスと並んで欠かせない概念がフォールトアボイダンス(Fault Avoidance)です。
この2つは対立する概念ではなく、信頼性向上のための「両輪」として機能します。

 

フォールトアボイダンスの定義

フォールトアボイダンスとは、そもそも故障を発生させないように設計段階から対策を講じるアプローチです。
日本語では「故障回避」と訳されます。

具体的には、高品質な部品の選定、十分な設計マージンの確保、厳格な環境管理、定期的な予防保全などが含まれます。
故障が起きてから対処するのではなく、故障の芽を事前に摘み取る発想です。

たとえば、動作温度範囲が-10〜60℃の電子部品を使用する場合に、実際の使用環境の上限が40℃だとしても、60℃まで耐えられる部品を選ぶ──これがフォールトアボイダンスの典型です。
温度マージンを確保することで、想定外の温度上昇が起きても部品が即座に故障するリスクを下げています。

 

2つのアプローチの位置づけ

システムの信頼性向上戦略は、大きく次の2つに分類されます。

フォールトアボイダンス(予防的アプローチ)
故障そのものの発生確率を極限まで下げる戦略です。
高信頼性の電子部品を選定する、動作環境の温度・湿度・振動を管理する、定期点検で劣化部品を交換するなどの手法が該当します。
品質管理の世界で用いられるデミング・サイクル(PDCA)や、工程能力指数による管理も、広い意味ではフォールトアボイダンスの一部と言えるでしょう。

フォールトトレランス(事後的アプローチ)
故障が発生しても、システムレベルでの機能を維持する戦略です。
冗長構成、自動切替機構、エラー訂正符号などの手法が該当します。
故障をゼロにすることは不可能だという現実を受け入れ、「壊れても動く」仕組みを作ることに注力します。

 

実際の設計では、この2つを組み合わせることで高い信頼性を実現します。
たとえば航空機のフライトコンピュータは、宇宙線耐性の高いプロセッサを採用(フォールトアボイダンス)しながら、三重冗長構成(フォールトトレランス)も同時に適用しています。

フォールトアボイダンスだけでは故障確率をゼロにはできません。
フォールトトレランスだけでは冗長系すべてが同時に故障するリスクを排除できません。
両方を適切に組み合わせることが、システム全体の信頼性を最大化する鍵です。

 

ディペンダビリティの全体像

信頼性工学では、システムの「頼りがい」を表す総合概念としてディペンダビリティ(Dependability)が用いられます。
この概念は、信頼性(Reliability)・可用性(Availability)・保全性(Maintainability)・安全性(Safety)を包含する上位概念です。

フォールトアボイダンスは主に信頼性の向上に寄与します。
故障そのものが発生しにくくなるため、MTBF(平均故障間隔)が延びます。

フォールトトレランスは主に可用性の向上に寄与します。
故障が起きてもシステムが停止しないため、サービス提供時間の割合が高まります。

両者が協調することで、ディペンダビリティ全体が底上げされるのです。
設計の上流段階で「この装置にはどちらの戦略をどの程度適用するか」を明確にしておくことが、合理的なシステム設計の出発点となります。

 

4. 冗長化の種類と仕組み

フォールトトレラント設計を具体的に実現する最も基本的な手法が冗長化(Redundancy)です。
冗長化とは、システムの構成要素を二重・三重に持たせることで、1つが故障しても予備で機能を補う仕組みを指します。

冗長化にはいくつかの代表的な方式があり、それぞれにコスト・切替速度・適用領域が異なります。
自社のシステムに最適な方式を選定するためには、各方式の特性を正確に理解しておく必要があります。

 

デュアルシステム

デュアルシステム(Dual System)は、2つの同一システムを同時に稼働させ、両方の処理結果を常時照合する構成です。
結果が一致していれば正常と判定し、不一致が検出された場合は故障したほうを切り離して残りの1系統で運用を継続します。

この方式の強みは、故障検出と継続運転を同時に実現できる点にあります。
銀行の勘定系システムや航空管制システムなど、特に高い可用性が要求される領域で広く採用されています。

ただし、2系統のうちどちらが故障したかを正確に判定できない場面が生じ得ます。
「両者の結果が違う」ことはわかっても、「どちらが正しいか」を2つだけでは決められないのです。
この問題を解決するために、後述するTMR(三重冗長)が生まれました。

コスト面では、同一システムを2セット用意する必要があるため、単純計算でハードウェアコストは2倍になります。
しかし、ダウンタイムによる損失が大きいシステムでは、この投資は十分に回収可能です。

 

デュプレックスシステム

デュプレックスシステム(Duplex System)は、1台を本番系(現用系)として稼働させ、もう1台を待機系として控えさせる構成です。
本番系に障害が発生した場合に、待機系に切り替えて処理を引き継ぎます。

デュアルシステムとの最大の違いは、通常時に稼働しているのが1系統だけという点です。
もう1系統は「いざという時のための備え」として待機しています。

待機系の運用状態によって、さらに2つの方式に分かれます。

ホットスタンバイ
待機系を本番系と同じ状態で常時起動しておく方式です。
切り替え時のダウンタイムが極めて短い(秒単位〜分単位)ことが最大の利点です。
データの同期も常時行われているため、切替時にデータの欠損が発生しにくい特長があります。
ただし、待機系も常に稼働しているため電力コストと保守コストが高くなります。

コールドスタンバイ
待機系は通常時には停止させておき、障害発生時に起動する方式です。
コストは低いものの、切り替えに時間がかかる(数十分〜数時間)ため、即応性が求められるシステムには不向きです。
バッチ処理システムや、数時間程度のダウンタイムを許容できる業務システムに適しています。

待機系の稼働コストを抑えつつ、切替時間を最小化する「ウォームスタンバイ」という中間的な方式もあります。
OSやミドルウェアまでは起動しておき、アプリケーションの起動とデータ同期だけを切替時に行う構成です。

 

TMR(三重冗長多数決)

TMR(Triple Modular Redundancy)は、3つの同一モジュールを並列稼働させ、多数決で出力を決定する方式です。
3つのうち1つが誤った結果を出しても、残り2つが一致していればそちらを正解として採用します。

 

 \text{TMR} : \text{出力} = \text{多数決}(M_1,\; M_2,\; M_3)

 

この方式の最大の利点は、故障の検出と正しい出力の決定を同時に行える点です。
デュアルシステムでは「どちらが正しいか」を判別できない場面がありましたが、TMRでは多数決原理によって即座に判定できます。

航空機のフライトコントロールコンピュータや原子力発電所の安全制御系では、TMRやそれ以上の冗長度が標準的に採用されています。
スペースシャトルのコンピュータは、5系統の冗長構成が採用されていたことでも知られています。

TMRの弱点は、3系統分のコストが必要になることと、多数決回路自体が単一障害点になり得ることです。
そのため、多数決回路の信頼性を極めて高くするか、多数決回路自体を冗長化するといった追加対策が施されます。

 

冗長化の分類まとめ

方式 構成 切替時間 コスト 適用例
デュアルシステム 2系統同時稼働・照合 即時 銀行勘定系
ホットスタンバイ 本番1+待機1(常時起動) 秒〜分 中〜高 Webサービス
ウォームスタンバイ 本番1+待機1(OS起動済み) 分〜十分 業務サーバ
コールドスタンバイ 本番1+待機1(停止) 数十分〜時間 バッチ処理系
TMR 3系統同時稼働・多数決 即時 最高 航空・原子力

 

冗長化の方式選定は、求められるダウンタイム許容量とコストの兼ね合いで決まります。
冗長設計の基本を押さえたうえで、自社のシステムに最適な構成を検討しましょう。

 

5. 稼働率の計算方法

フォールトトレラント設計の効果を定量的に評価するために欠かせないのが、稼働率の計算です。
稼働率は、システムが正常に動作している時間の割合を表す指標であり、冗長構成の有無によって大きく変わります。

この章では、基本式から複合システムの計算まで、ステップを踏んで解説します。

 

稼働率の基本式

1台の装置の稼働率は、MTBF(平均故障間隔)とMTTR(平均修復時間)を用いて次のように定義されます。

 

 A = \dfrac{MTBF}{MTBF + MTTR}

 

ここで  A は稼働率(Availability)です。
MTBFは「正常に動作している平均時間」、MTTRは「故障から復旧までの平均時間」を意味します。

たとえばMTBFが990時間、MTTRが10時間の装置であれば、稼働率は次のように計算できます。

 

 A = \dfrac{990}{990 + 10} = \dfrac{990}{1000} = 0.99

 

稼働率0.99は、「100時間のうち99時間は正常に稼働している」ことを意味します。
言い換えれば、100時間に1時間の停止が見込まれるということです。

 

直列システムの稼働率

直列構成とは、すべての構成要素が正常に動作しなければシステム全体が停止する構成です。
製造ラインの「前工程→後工程」のような直列的な依存関係がこれに該当します。

装置A(稼働率  A_1)と装置B(稼働率  A_2)が直列に接続されたシステムの全体稼働率は、次のように計算されます。

 

 A_{\text{直列}} = A_1 \times A_2

 

Step 1:直列システムの計算例

装置Aの稼働率が0.95、装置Bの稼働率が0.90の場合を計算します。

 

 A_{\text{直列}} = 0.95 \times 0.90 = 0.855

 

個々の装置は高い稼働率であっても、直列接続すると全体の稼働率は掛け算で低下します。
装置の数が増えるほどこの低下は顕著になります。

たとえば稼働率0.95の装置を5台直列接続すると、全体の稼働率は次のようになります。

 

 A = 0.95^5 = 0.7738

 

個々は95%の稼働率であっても、5台直列にするだけで全体は約77%まで低下してしまいます。
直列構成は信頼性の観点では不利であり、だからこそ冗長化が重要になるのです。

 

並列システムの稼働率

並列構成とは、複数の構成要素のうち少なくとも1つが動作していればシステム全体が機能する構成です。
これがフォールトトレラント設計における冗長化の基本形です。

2台の装置を並列に接続したシステムの全体稼働率は、次のように求められます。

 

 A_{\text{並列}} = 1 - (1 - A_1)(1 - A_2)

 

この式の意味を直感的に理解するポイントは、「両方が同時に故障する確率」を1から引いていることです。
装置Aの故障確率  (1 - A_1) と装置Bの故障確率  (1 - A_2) の積が「同時故障確率」であり、これが起きない確率が並列システムの稼働率です。

 

Step 2:並列システムの計算例

2台とも稼働率0.90の装置を並列接続した場合を計算します。

 

 A_{\text{並列}} = 1 - (1 - 0.90)(1 - 0.90) = 1 - 0.10 \times 0.10 = 1 - 0.01 = 0.99

 

1台だけなら稼働率0.90だった装置が、並列冗長化によって0.99まで向上しました。
これが冗長化の効果を如実に示す数値的根拠です。

0.90→0.99という向上は、「100時間あたりの停止時間が10時間から1時間に激減する」ことを意味します。
追加コストは装置1台分ですが、ダウンタイムの削減効果は劇的です。

 

Step 3:直列+並列の複合システム

実際のシステムは、直列と並列が組み合わさった複合構成をとります。
たとえば、並列冗長化された前段装置(稼働率0.99)と、単体の後段装置(稼働率0.95)が直列接続されたシステムの場合を考えます。

 

 A_{\text{全体}} = A_{\text{並列}} \times A_{\text{後段}} = 0.99 \times 0.95 = 0.9405

 

このように、全体を直列で概算し、ボトルネック箇所を並列化するのが冗長設計の定石です。
最も稼働率が低い箇所に投資することで、全体の信頼性を効率的に高めることができます。

上記の例でいえば、後段装置(0.95)がボトルネックです。
後段も並列冗長化すれば  1-(1-0.95)^2 = 0.9975 となり、全体は  0.99 \times 0.9975 = 0.9875 まで向上します。

 

冗長化台数と稼働率の関係

並列台数を増やすほど稼働率は向上しますが、効果は逓減します。
以下は個々の装置の稼働率が0.90の場合の計算結果です。

並列台数 全体稼働率 向上幅
1台(冗長なし) 0.9000
2台(二重化) 0.9900 +0.0900
3台(三重化) 0.9990 +0.0090
4台(四重化) 0.9999 +0.0009

 

2台→3台の向上幅は0.009であり、1台→2台の向上幅0.090に比べると10分の1です。
3台目以降は追加コストに対する信頼性向上の効果が小さくなります。

このため、コスト対効果の観点から最適な冗長度を判断する必要があります。
多くの産業用システムでは二重化(2台並列)が最もバランスの良い選択肢となっていますが、人命に関わるシステムでは三重化以上が標準です。

可用性と稼働率の考え方と合わせて理解すると、より実践的な設計判断が可能になります。

 

6. フォールトトレラント設計の実例

フォールトトレラント設計は理論だけではなく、さまざまな産業分野で実際に運用されています。
ここでは代表的な適用事例を通じて、設計の具体像を解説します。

 

航空宇宙分野

航空機のフライトコントロールシステムは、フォールトトレラント設計の最も代表的な適用例です。
ボーイング777のフライ・バイ・ワイヤシステムでは、3系統の独立したフライトコンピュータが搭載されています。

各コンピュータは異なるメーカーの異なるハードウェア上で、異なるプログラミング言語を使って設計されています。
これは異種冗長(Dissimilar Redundancy)と呼ばれ、共通原因故障(同じ設計ミスで全系統が同時に故障するリスク)を排除するための手法です。

3系統の出力は多数決ロジックで統合され、1系統が異常値を出しても残り2系統の一致した値が採用されます。
パイロットはシステム内部の故障に気づくことなく、正常な飛行を継続できるのです。

宇宙開発の分野でも、国際宇宙ステーション(ISS)の電力システムや姿勢制御システムには多重冗長構成が適用されています。
地上から修理に向かうことが容易ではない宇宙空間では、フォールトトレランスの重要性がさらに高まります。

 

製造業のプロセス制御

石油化学プラントや半導体工場などの連続プロセスでは、制御システムの停止は即座に大規模な損害につながります。
そのため、DCS(分散制御システム)やPLC(プログラマブルロジックコントローラ)の冗長化が標準的に行われています。

たとえば、プロセスコントローラを二重化し、本番系に異常が検知された瞬間に待機系へバンプレス切替(出力変動なしの切替)を行います。
制御対象であるバルブやポンプへの指令値は途切れることなく出力され続けるため、プロセスの安定性が維持されます。

通信ネットワークについても、制御LAN(ローカルエリアネットワーク)を二重化してリングトポロジーを構成し、一方のケーブルが断線してもデータが迂回経路で伝達される仕組みが一般的です。

自動車の組立ラインでは、溶接ロボットの制御コントローラを二重化するケースもあります。
溶接不良は車体強度に直結するため、制御の途切れは絶対に避けなければなりません。

 

データセンター・クラウドサービス

Webサービスの世界では、99.99%(フォーナイン)や99.999%(ファイブナイン)の可用性がSLA(サービスレベル合意)で要求されることがあります。

99.99%の可用性は年間で約52分のダウンタイムしか許容されないことを意味します。
99.999%になると年間約5分です。
この水準を達成するために、サーバ・ストレージ・ネットワーク機器のすべてを冗長化するのが一般的です。

さらに、地理的に離れた複数のデータセンターにシステムを分散配置する地理冗長(Geo-Redundancy)も広く採用されています。
たとえば東京と大阪の2拠点にデータセンターを持ち、片方が災害で使用不能になっても他方がサービスを継続する──これもフォールトトレラント設計の応用です。

 

RAID(ストレージの冗長化)

身近なフォールトトレラント技術として、ハードディスクの冗長化であるRAID(Redundant Arrays of Independent Disks)があります。

RAID 1(ミラーリング)では同じデータを2台のディスクに同時書き込みし、1台が故障してもデータを保全します。
書き込み速度は変わりませんが、読み出しは2台から並列に行えるため高速化も見込めます。

RAID 5ではパリティ情報を分散配置し、任意の1台が故障してもデータを再構築できます。
RAID 6ではパリティを二重に持ち、同時2台の故障にも耐えられるようになっています。
これらはいずれも、ストレージレベルでフォールトトレランスを実現する技術です。

 

7. フェールセーフ・フールプルーフとの比較

信頼性設計の用語には、フォールトトレラント以外にもフェールセーフやフールプルーフなど多数の概念があります。
それぞれの違いを正確に理解することで、設計仕様を適切に記述できるようになります。

ここでは主要な6つの概念を整理し、体系的に比較します。

 

フェールセーフ(Fail Safe)

フェールセーフとは、システムに障害が発生した際、安全な状態に移行して停止する設計思想です。
「壊れたら安全側に倒れる」ことを最優先とするアプローチであり、稼働の継続ではなく安全の確保を目的とします。

身近な例としては、鉄道の信号機が挙げられます。
信号機の制御回路が故障した場合、信号は自動的に赤(停止)を表示するよう設計されています。
これにより、故障が衝突事故につながるリスクを回避しています。

もう1つの例はガスコンロの立ち消え安全装置です。
炎が消えたことをセンサーが検知すると、ガスの供給バルブが自動的に閉じます。
機能は停止しますが、ガス漏れという危険な状態は回避できます。

フォールトトレラントとフェールセーフの根本的な違いは、「故障後に動き続けるか、止まるか」です。
人命に直接関わるシステムでは、動き続けること自体がリスクになる場合があり、そのような場面ではフェールセーフが適切です。

 

フールプルーフ(Fool Proof)

フールプルーフとは、人間の操作ミスや誤使用があってもシステムが危険な状態にならないように設計する思想です。
「ポカヨケ」として製造業では広く知られています。

電子レンジのドアを開けるとマグネトロンが停止する仕組みや、ATの車でブレーキを踏まないとギアが入らない仕組みは、いずれもフールプルーフの典型です。

製造現場では、部品の向きを間違えると治具にセットできない構造や、2つのボタンを同時に押さないとプレス機が作動しない両手操作ボタンなどが該当します。
故障ではなく人間の誤操作を対象としている点が、他の信頼性設計概念との最大の違いです。

 

フォールトマスキング(Fault Masking)

フォールトマスキングとは、故障が発生してもその影響がシステムの出力に現れないようにする技術です。
TMRの多数決ロジックはフォールトマスキングの代表例です。

3系統のうち1系統が誤出力しても、多数決で正しい結果が選択されるため、外部から見れば故障は「隠蔽(マスク)」されています。
フォールトトレランスを実現するための下位技術の1つと位置づけられます。

 

フェイルオーバー(Failover)

フェイルオーバーとは、稼働中のシステム(本番系)に障害が発生した際、自動的に待機系に切り替えて処理を継続する仕組みです。
フォールトトレラント設計やフェールソフト設計を実現するための具体的な実装技術の1つという位置づけです。

たとえば、データベースサーバのプライマリノードが停止した場合に、セカンダリノードが自動的にプライマリに昇格してサービスを継続する──これがフェイルオーバーの動作です。
切替にかかる時間を「フェイルオーバー時間」と呼び、この時間が短いほど可用性が高いシステムと言えます。

 

6つの概念の体系的整理

概念 対象 故障後の動作 設計目標
フォールトトレラント システム障害 機能100%維持 無停止
フェールソフト システム障害 縮退運転で継続 最低限稼働
フェールセーフ システム障害 安全側に停止 安全確保
フォールトアボイダンス 故障原因 (故障を予防) 故障防止
フールプルーフ 人間の誤操作 危険動作を阻止 誤操作防止
フェイルオーバー 系統切替 予備系に自動切替 継続運転

 

このように整理すると、「何に対して」「どう対処するか」という2軸で各概念を明確に区別できます。
設計仕様書を作成する際は、これらの用語を正確に使い分けることで、関係者間の認識齟齬を防ぐことができます。

たとえば「本システムはフォールトトレラント設計とする」と記載する場合、それは「故障しても機能を100%維持する」ことを約束しています。
「縮退運転で継続する」のであれば、正しくは「フェールソフト設計」と記載すべきです。
この一語の違いが、設計要件を大きく左右します。

 

8. フォールトトレラント設計の導入ポイント

フォールトトレラント設計の導入は、単に「すべてを二重化すればよい」というものではありません。
コスト・複雑性・保守性のバランスを考慮した戦略的な意思決定が求められます。

ここでは、導入を成功させるために押さえておくべき5つのポイントを解説します。

 

リスクベースアプローチ

導入の第一歩は、システム全体のリスク分析です。
すべての構成要素を一律に冗長化するのはコスト的に現実的ではないため、故障の影響度が大きい箇所から優先的に対策する必要があります。

FMEA(故障モード影響解析)FTA(故障の木解析)を活用して、各構成要素の故障モードとその影響を体系的に洗い出しましょう。

具体的には、故障発生時の影響を「安全」「経済損失」「環境」「評判」の4つの軸で評価し、総合リスクの高い箇所を特定します。
リスクの大きい箇所にリソースを集中させることで、限られた予算で最大の効果を得ることができます。

たとえば製造ラインにおいて、制御コンピュータの故障はライン全停止を引き起こしますが、生産実績表示モニターの故障は生産に影響しません。
前者を優先的に冗長化すべきであることは明白です。

 

共通原因故障への対策

冗長化で最も注意すべき落とし穴が共通原因故障(Common Cause Failure:CCF)です。
同一設計の機器を複数台並べただけでは、設計上の欠陥や環境要因によってすべてが同時に故障するリスクが残ります。

たとえば、同じメーカーの同じロットの電源ユニットを2台使った場合、部品の品質不良が原因で2台同時に故障する可能性があります。
また、同じソフトウェアのバグによって全系統が同時に誤動作するケースも共通原因故障に該当します。

これを防ぐためには、以下の対策が有効です。

  • 異種冗長(Dissimilar Redundancy):異なるメーカーや異なる設計の機器を組み合わせる
  • 物理的分離:冗長系統を異なる電源系統や異なる筐体に配置する
  • ソフトウェア多様性:同じ仕様を異なるチームが独立して実装する
  • 環境条件の分離:温度・振動・電磁ノイズの影響を分散する

共通原因故障は冗長設計の「アキレス腱」とも言える弱点です。
冗長構成の検討時には、必ず「この冗長系が同時に壊れるシナリオはないか」を自問するようにしましょう。

 

保守性の確保

フォールトトレラントシステムは、故障した部品を速やかに交換して冗長度を回復することが不可欠です。
冗長構成のまま放置すると、次の故障が発生した際にシステム全体が停止するリスクが高まります。

これを「単一障害点(Single Point of Failure)が発生した状態」と呼びます。
二重化されたシステムで1台が故障した場合、残る1台が壊れればシステム全体が停止します。
つまり、故障部品の修復が完了するまでの間、システムはフォールトトレラントではなくなっているのです。

予防保全の計画と組み合わせ、故障部品の即時交換と定期的な状態監視を実施することが重要です。
ホットスワップ対応の機器を選定すれば、システムを停止することなく部品交換が可能になります。

保守体制として、予備部品の在庫管理、保守員の即応体制、自動アラート通知の仕組みを整備しておくことも欠かせません。

 

テストと検証

冗長構成が本当に機能するかどうかは、定期的な障害模擬テスト(フェイルオーバーテスト)で検証する必要があります。
「冗長化したから安心」と放置してしまうと、いざ本番の故障が発生した際に切替が正常に動作しないケースがあります。

たとえば、長期間待機状態にあった予備系統のハードディスクが経年劣化で故障していたというケースは決して珍しくありません。
「予備がある」と思っていたのに、実は予備が使えない状態だった──この事態を防ぐためにテストが必要です。

切替テストの実施頻度はシステムの重要度に応じて設定し、テスト結果を記録して傾向分析を行いましょう。
切替に要する時間が徐々に長くなっているなどの兆候が見られた場合は、早期に原因を調査する必要があります。

 

コスト判断のフレームワーク

冗長化の投資判断には、ダウンタイムコストとの比較が基本です。
システム停止が1時間あたりどの程度の損失を生むかを金額換算し、冗長化の追加コストと比較します。

 

 \text{投資回収年数} = \dfrac{\text{冗長化追加コスト}}{\text{年間ダウンタイム削減時間} \times \text{時間あたり損失額}}

 

この計算結果が許容範囲内であれば、冗長化の投資は合理的と判断できます。

たとえば、冗長化に500万円の追加投資が必要で、年間のダウンタイムが10時間削減され、時間あたり損失額が100万円の場合を計算します。

 

 \text{投資回収年数} = \dfrac{500\text{万円}}{10\text{時間} \times 100\text{万円/時間}} = 0.5\text{年}

 

わずか半年で投資回収できる計算です。
バスタブ曲線の知識を活用すれば、部品の故障率の経時変化も考慮した精密な分析が可能です。

このように、フォールトトレラント設計の導入は感覚的な判断ではなく、定量的なリスク評価とコスト分析に基づいて意思決定すべきです。
「とりあえず全部冗長化」も「コストがかかるから何もしない」も、いずれも最適解ではありません。

 

関連記事

instant.engineer

 

関連記事

instant.engineer

 

まとめ

本記事では、フォールトトレラントの定義から関連用語との違い、冗長化の具体的手法、稼働率の計算方法、そして製造現場での適用事例までを体系的に解説しました。

フォールトトレラントとは、故障が発生しても機能を停止させず、正常動作を継続する設計思想です。
フェールソフトが「性能を落として継続」、フェールセーフが「安全側に停止」であるのに対し、フォールトトレラントは「機能を100%維持」する点が最大の特徴です。

冗長化はフォールトトレランスを実現するための中核技術であり、デュアルシステム・デュプレックスシステム・TMRなどの方式があります。
それぞれコストと切替速度が異なるため、システムの要求仕様に応じて最適な方式を選定する必要があります。

稼働率の計算を通じて、冗長化の効果を定量的に評価できます。
単体稼働率0.90の装置でも、二重化すれば0.99に向上するという計算結果は、冗長化の投資を判断するうえで強力な根拠となります。

信頼性設計は「壊れないようにする」フォールトアボイダンスと「壊れても大丈夫にする」フォールトトレランスの両輪で成り立ちます。
システムの重要度とコストのバランスを見極め、最適な信頼性設計を追求していきましょう。