バグが歴史に残した足跡

# バグが歴史に残した足跡

こんにちは、@JeongYJです。
この記事では世界における印象的なバグ事例を辿ってみたいと思います。

今回は重篤な問題を中心に取り扱いますが、たった一つのエラーが大きな事故に繋がる恐れがあることを再認識しつつ、今後の活動に活かせたらと思います。

### 1. バグとは？

説明するまでもないかもしれませんが、ソフトウェアが設計された通りに動かないなどの問題を引き起こす、プログラムの欠陥のことです。

入念に品質管理（QA）を行っても、全ての問題を事前に見つけ出し対処することは不可能であり、効率的ではありません。
IT技術を使うあらゆる業界で避けられない問題なので、本当に悩ましいですね。


### 2. バグの歴史

##### (1) Excel操作のミスが一国の経済を揺るがす

2008年に始まったIMF（国際通貨基金）の危機は、ギリシャをはじめとするヨーロッパ諸国に深刻な影響を及ぼしました。2023年末現在、ようやく回復の兆しが見え始めています。ギリシャの経済状況や採用された緊縮政策も問題でしたが、その背景にはハーバード大学の研究論文における重大なデータエラーがありました。この論文でのエラーは、Excelでの計算範囲指定ミスによるものでした。

この誤りに基づいて、ギリシャを含むユーロ圏の国々は、本来必要以上に厳しい緊縮政策を選択してしまい、これがヨーロッパ全体への追加的なダメージの一因とされています。このため、2008年以降のギリシャの経済危機は「The Excel Depression」と呼ばれることもあります。


##### (2) たった1つのバグが会社を消滅に追い込む

Knight Capital Groupというアメリカの投資会社があり、アルゴリズムを用いた金融資産の売買を主な事業としていました。
2012年まで業績が順調でしたが、たった1つののバグが会社に致命的な打撃を与えることになりました。
このバグは「購入価格よりも低い価格で売却してしまう」というもので、この欠陥を含むプログラムがサーバーにインストールされ、気付かないうちに大きな損害をもたらしました。
結果、40分後には4億ドル以上の損失に至っています。

これは、資産の損失に加えて、企業の信頼も回復できず、最終的にはM&Aによって会社が消滅するという結末につながりました。
この事件は、技術的なエラーがいかに大きな影響を及ぼす可能性があるかを示す事例として知られています。

##### (3) 人命に関わる重篤なバグ

最新技術の医療活用は現代のトレンドですが、医療技術がいくら進歩しても、バグ確認・エラー検証ができないと技術が人間の命に脅威を与えることもあります。
1985年、カナダのALEC社が開発した「Therac-25」は放射線照射を通じて腫瘍を治療する医療設備です。
ですが、装備の起動を制御するOSのバグにより、制御されない放射線が患者を襲い、３名が命を落としました。
原因が把握できが後、再発防止をためにFDAは「General Principles of Software Validation」と呼ばれる医療機器ソフトウェア向けの検証ルールを作り上げました。

##### (4) ヒューマンエラーの例

システムのバグではありませんが、システム利用時のヒューマンエラーで会社が致命傷を負うこともあります。

韓国のHanmag Securities Corporation(한맥투자증권、ハンメク投資証券)はかつで韓国トップの証券会社でした。
その会社は2013年、ヒューマンエラーによる致命傷で破産しています。
エラーにより想定外の数値で売買されてしまい、莫大な損失を回復できずに破産したのです。事件後になってやっと、ヒューマンエラーを防ぐための法律が作り上げられました。

日本では2005年、ジェイコム株大量誤発注事件がありました。
原因は同じく、ヒューマンエラーの防止策がなかったのですが
今回はTSEが防止策の設計を「システムのオーバードライブ」の原因で断ったのが原因の一つであったのが分かったこととなります。
事件後、みずほを含む日本の証券の信用が損失を受けてしまいました。

今申し上げた数件の致命傷の歴史で我々は特にお金の流れとその政策を扱うシステムには十分な注意を注ぎ、システムとしてはヒューマンエラーも想定する必要があるでしょう。

そして設計構築と同じく大事なものは、「エラーを防ぐためのマネジメント」も必要でしょう。


##### (5) 人類滅亡の危機をもたらすバグ

第2次世界大戦後から「ベルリンの壁崩壊」までの数十年間の「冷戦」期間の話です。
この時期のアメリカとロシア（ソ連）は数多くの原爆を持ち、いざとなったらお互いを絶滅させようとしていました。
当然、両国は原爆システムを制御するプロトコルを維持補修するために力を入れました。

そして1983年、ソ連の探知衛星から「アメリカから原爆が発射された」という警告がシステムから発せられました。

人類存亡の選択肢を持つ人はソ連の「スタニスラフ・ペトロフ」中佐。

彼は状況分析に入り、ある結論を出しました。
そして発射シーケンスをキャンセルし、上官に報告しました。

>「コンピューターのエラーのようです。」

システムが警報を出した本当の原因は日光をミサイル発射の閃光として認識した探知衛星の認識エラーでした。

幸い事前にシステムエラーと認識できたので核戦争が勃発の最悪の選択を避けられました。
この事件だけではなく冷戦期の時期の際、「探知システムエラーによる核戦争」の危機は約150件にも達するそうです．

この例に見るように、我々は「人類が生み出すシステムに完璧は絶対あり得ない」ことを認識する必要があるでしょう。


##### (6) バグがポジティブに働いた珍事例

最後は「バグは意外と面白い側面も持っている」という話です。
「ストリートファイター2」（以下、SF2）は世界のゲーム歴史に激変を呼んだ偉大な作品です。
今もユーザー同士での対戦を行うすべてのゲームにはSF2のバグによる遺産が残されています。

それは「動作キャンセル」。つまり動作中に動作演出をキャンセルし、新しい動作に移ることができるものです。
本来は設計外のバグでしたが、CAPCOMは正式システムとして採用しました。
この決断がプレイヤーにコンボの成功と便利な操作の楽しさを与えてユーザー対戦ゲームに激変を起こし、今も対戦ゲームの基本となっています。

SF2以外にもバグが正式システムとして認められたり、バグが逆にゲームのゲインコンテンツとなっている場合も数々あります。

バグはたまに利用者を楽しませる場合もあります！


### 3. まとめ
以上、バグの歴史について触れてみました。
今回はとりわけ重篤なものを中心に扱いましたが、システム開発に携わるものは常にこのようなリスクと隣り合わせであり、決して他人事ではありません。


バグ事象を「めんどくさいもの」として捉えるのではなく、一つ一つに興味を持って行くことが大切だと考えます。

何か1つでも参考にしていただけたら幸いです。

### 4. 参考

The excel depression
1.https://www.nytimes.com/2013/04/19/opinion/krugman-the-excel-depression.html
2.https://en.wikipedia.org/wiki/Greek_government-debt_crisis

Knight Capital Group
1.https://agnozingdays.hatenablog.com/entry/2019/09/03/220515
2.https://en.wikipedia.org/wiki/Knight_Capital_Group

Hanmag Securities Corporation
1.http://www.financialreview.co.kr/news/articleView.html?idxno=23243
2.https://www.koreatimes.co.kr/www/tech/2023/11/129_147953.html
3.https://www.risk.net/exchanges/2331225/korea-clearing-structure-question-after-hanmag-trading-error

ジェイコム株大量誤発注事件
1.https://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%A7%E3%82%A4%E3%82%B3%E3%83%A0%E6%A0%AA%E5%A4%A7%E9%87%8F%E8%AA%A4%E7%99%BA%E6%B3%A8%E4%BA%8B%E4%BB%B6
2.https://long-term-investment.com/mis-ordering/
3.https://atmarkit.itmedia.co.jp/ait/articles/1405/22/news101.html

Therac-25
1.https://ecompliance.co.jp/MedicalDevice/SW/Therac-25.html
2.https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%A9%E3%83%83%E3%82%AF25

Stanislav Petrov - Officer who saved the world
1.https://www.sankei.com/article/20170920-7TTPVFJJKVLYNDY4F7LF4TVQDQ/
2.https://wired.jp/2017/09/27/officer-who-saved-the-world/
3.https://www.seoul.co.kr/news/newsView.php?id=20220927500216

Street fighter - Motion cancel system. Akira Nishitani
1.https://news.denfaminicogamer.jp/interview/171212
2.https://www.gameple.co.kr/news/articleView.html?idxno=131836