工学の大惨事
工学の大惨事
Therac-25・Ariane 5・Mars Climate Orbiter… ソフトウェアの欠陥が人命やロケット、巨額の資産を奪った歴史的惨事を解剖し、二度と繰り返さないための教訓を学ぶ。
理解度チェック
障害推理クイズ — 症状だけから根本原因を当てられる?
Ariane 5・Therac-25・Pentium FDIVなど実在の事故12件。当時見えていた症状だけで推理する。
解説記事
解剖した大惨事
何が起きたか→技術的な根本原因→教訓。ソフトウェアが現実世界に及ぼした被害から学ぶ。
2003年北米大停電:アラームを止めたレース条件
たった一つのレース条件がアラームを黙らせ、5000万人規模の停電へ連鎖した2003年北米大停電を追い、監視システム自身の信頼性と「沈黙を検知する」設計の要点を、ソフトウェア工学の教訓として押さえられる。
2012年うるう秒バグ:1秒がサーバーを落とした
わずか1秒のうるう秒がLinuxサーバー群のCPUを暴走させ、Reddit・LinkedInを巻き込んだ2012年の障害を解剖。時刻は単調増加しない前提で設計する勘所と、うるう秒スミアなどの回避策を学べる。
Ariane 5:型変換オーバーフローで自爆したロケット
初飛行のAriane 5が離陸40秒で自爆した事故を型変換オーバーフローから解剖。例外処理の欠陥と冗長系が同一コードで共倒れした理由を知れば、コード再利用に潜む前提崩れの落とし穴を回避できる。
AT&T 1990年の崩壊:1つのbreakが電話網を止めた
電話網を9時間止めたのは、たった1つの制御フローの誤りだった。AT&T 1990年の崩壊から、エラー回復コードとカスケード障害、同一ソフト一斉展開の危うさを学べる。
Knight Capital:45分で4.6億ドルを溶かしたデプロイ事故
新しい取引システムのデプロイ不備が、わずか45分で約4.6億ドルを溶かしKnight Capitalを破綻寸前へ追い込んだ。8台中1台への配置漏れと古いフラグの再利用が招いた暴走から、リリース検証とkill switchの要点を学べる。
Mars Climate Orbiter:単位の取り違えで消えた火星探査機
3億ドル規模の火星探査機が軌道投入に失敗して消えた原因は、単位系の取り違えだった。ヤードポンド法とSIが混在した実話から、システム境界のインターフェース契約を明示し検証する重要性を学べる。
Pentium FDIVバグ:CPUの割り算が間違っていた
CPUという「絶対に正しい」はずの計算機が割り算を間違えた1994年の事件を解剖。SRT除算テーブルの欠損という根本原因と、ユーザー影響を軽視して約4.75億ドルを失ったリスク対応の教訓まで一気に掴める。
Therac-25:放射線治療器が患者を殺した並行処理バグ
安全機構をソフトウェアだけに委ねた放射線治療器Therac-25は、レース条件という並行処理バグで複数の患者を死傷させた。ハードインターロック撤去の顛末を追い、再発を防ぐソフトウェア工学の教訓を学べる。