ホーム/ 工学の大惨事

工学の大惨事

工学の大惨事

Therac-25・Ariane 5・Mars Climate Orbiter… ソフトウェアの欠陥が人命やロケット、巨額の資産を奪った歴史的惨事を解剖し、二度と繰り返さないための教訓を学ぶ。

理解度チェック

障害推理クイズ — 症状だけから根本原因を当てられる?

Ariane 5・Therac-25・Pentium FDIVなど実在の事故12件。当時見えていた症状だけで推理する。

解説記事

解剖した大惨事

何が起きたか→技術的な根本原因→教訓。ソフトウェアが現実世界に及ぼした被害から学ぶ。

3つの要点応用

2003年北米大停電:アラームを止めたレース条件

たった一つのレース条件がアラームを黙らせ、5000万人規模の停電へ連鎖した2003年北米大停電を追い、監視システム自身の信頼性と「沈黙を検知する」設計の要点を、ソフトウェア工学の教訓として押さえられる。

3つの要点応用

2012年うるう秒バグ:1秒がサーバーを落とした

わずか1秒のうるう秒がLinuxサーバー群のCPUを暴走させ、Reddit・LinkedInを巻き込んだ2012年の障害を解剖。時刻は単調増加しない前提で設計する勘所と、うるう秒スミアなどの回避策を学べる。

3つの要点応用

Ariane 5:型変換オーバーフローで自爆したロケット

初飛行のAriane 5が離陸40秒で自爆した事故を型変換オーバーフローから解剖。例外処理の欠陥と冗長系が同一コードで共倒れした理由を知れば、コード再利用に潜む前提崩れの落とし穴を回避できる。

3つの要点応用

AT&T 1990年の崩壊:1つのbreakが電話網を止めた

電話網を9時間止めたのは、たった1つの制御フローの誤りだった。AT&T 1990年の崩壊から、エラー回復コードとカスケード障害、同一ソフト一斉展開の危うさを学べる。

3つの要点応用

Knight Capital:45分で4.6億ドルを溶かしたデプロイ事故

新しい取引システムのデプロイ不備が、わずか45分で約4.6億ドルを溶かしKnight Capitalを破綻寸前へ追い込んだ。8台中1台への配置漏れと古いフラグの再利用が招いた暴走から、リリース検証とkill switchの要点を学べる。

3つの要点応用

Mars Climate Orbiter:単位の取り違えで消えた火星探査機

3億ドル規模の火星探査機が軌道投入に失敗して消えた原因は、単位系の取り違えだった。ヤードポンド法とSIが混在した実話から、システム境界のインターフェース契約を明示し検証する重要性を学べる。

3つの要点応用

Pentium FDIVバグ:CPUの割り算が間違っていた

CPUという「絶対に正しい」はずの計算機が割り算を間違えた1994年の事件を解剖。SRT除算テーブルの欠損という根本原因と、ユーザー影響を軽視して約4.75億ドルを失ったリスク対応の教訓まで一気に掴める。

3つの要点応用

Therac-25:放射線治療器が患者を殺した並行処理バグ

安全機構をソフトウェアだけに委ねた放射線治療器Therac-25は、レース条件という並行処理バグで複数の患者を死傷させた。ハードインターロック撤去の顛末を追い、再発を防ぐソフトウェア工学の教訓を学べる。