フェールセーフとは何か

〜壊れないのではなく「壊れても安全」にする考え方〜

プログラミングを学び始めると、

  • エラーが出る
  • アプリが落ちる
  • 思った通りに動かない

という経験を必ずします。

ここで大切なのは、

エラーをゼロにすることではなく、

エラーが起きても安全に止めること

この考え方を フェールセーフ(Fail-Safe) といいます。


フェールセーフの意味

フェールセーフとは

故障(Fail)しても

安全(Safe)になる設計

つまり、

異常が起きたときに

「危険な方向」に進まず

「安全な方向」に倒れる設計のことです。


日常生活のフェールセーフ

エレベーター

  • ワイヤーが切れたら → 自動ブレーキ
  • 扉に人がいたら → 閉まらない
  • 異常があれば → 停止

壊れたら落ちるのではなく、

壊れたら止まる設計になっています。


ガスコンロ

  • 火が消えたら → ガスが止まる
  • 空焚きしたら → 自動停止

「異常=止まる」設計です。


踏切

信号に異常が出たらどうなると思いますか?

青ではなく  になります。

つまり、

異常=進め

ではなく

異常=止まれ

これがフェールセーフです。


プログラミングでのフェールセーフ

TryParseを使う

int number;
if (int.TryParse(textBox1.Text, out number))
{
    MessageBox.Show("変換成功");
}
else
{
    MessageBox.Show("数字を入力してください");
}

もし入力が文字だった場合、

  • TryParseを使わない → アプリが落ちる
  • TryParseを使う → メッセージを出して安全に止まる

これがフェールセーフです。


nullチェック

if (student != null)
{
    student.Show();
}

nullのまま使うとクラッシュします。

使う前に確認する。

これもフェールセーフです。


例外処理

try
{
    ReadFromFile();
}
catch
{
    MessageBox.Show("ファイルが存在しません");
}

ファイルが無かった場合、

例外処理がない → 強制終了

例外処理がある → メッセージ表示

安全に止める設計です。


よくある危険な書き方

int number = int.Parse(textBox1.Text);

数字以外が入力されたらどうなりますか?

→ 例外が発生してアプリが落ちます。

これはフェールセーフではありません。


初学者が意識すべきこと

フェールセーフとは

  • 完璧なコードを書くことではない
  • エラーをゼロにすることではない

大事なのは

エラーが起きたときにどう動くかを設計すること


自分に問いかけてみよう

  • 入力が空だったら?
  • ファイルが無かったら?
  • データがnullだったら?
  • 配列が空だったら?

あなたのコードは安全ですか?


まとめ

フェールセーフとは

壊れない設計ではなく

壊れても安全な設計

プロになる人ほど、

「うまく動くコード」より

「失敗したときに安全なコード」を大切にします。

プログラムを書くときは、

正常系だけでなく

異常系も必ず考えてみましょう。

それが一歩上のエンジニアへの道です。

訪問数 6 回, 今日の訪問数 6回

C#,例外

Posted by hidepon