雨宿りとWEBの小噺 EP.XX:「バグの歴史 - ソフトウェア史上最も高くついた失敗たち」

オープニング

「雨宿りとWEBの小噺」パーソナリティの Keeth こと桑原です。

この番組では,目まぐるしく変化するWeb業界の中,ちょっと一息つける裏話や小噺などをお届けします.

今日は窓の外で雨が降っていますが、プログラマーの世界では毎日「バグ」との格闘が繰り広げられています。 「バグ」という言葉、皆さんも日常的に使いますよね。「スマホにバグがある」「このアプリはバグってる」など。

今回のテーマは「バグの歴史 - ソフトウェア史上最も高くついた失敗たち」です。実は「バグ」という言葉自体にも面白い由来があるんですよ。それでは、雨音を聴きながら、ソフトウェアの失敗談に思いを馳せてみましょう。

本編

Part 1: バグという言葉の由来 - 本当に虫だった

まずは「バグ」という言葉の由来から。

1947年9月9日、アメリカのハーバード大学でマーク2というコンピュータが動作不良を起こしました。技術者たちが原因を調査したところ、リレー回路に蛾(ガ)が挟まっていたのです。

(少し笑いながら) この蛾を取り除いたところ、コンピュータは正常に動き始めました。この出来事を担当していたグレース・ホッパー(女性の計算機科学者で海軍の准将でもあった方)のチームは、実際にその蛾をテープで実験ノートに貼り付け、「最初の実際のバグが見つかった」と記録したんです。

この「実際のバグ(虫)」という表現から、コンピュータの不具合を「バグ」と呼ぶようになったと言われています。

実はそれ以前から機械の不具合を「バグ」と呼ぶことはあったようですが、この蛾の事件によって、特にコンピュータの世界でこの言葉が定着したと考えられています。

ちなみに、このノートは現在、スミソニアン博物館に保存されているそうです。

Part 2: Y2K問題 - 2000年問題の大騒動

次に紹介するのは、多くの方がご記憶かもしれない「Y2K問題」、いわゆる「2000年問題」です。

(懐かしむような声で) 1990年代後半、世界中が新しい千年紀の到来に湧く一方で、IT業界では大パニックが起きていました。多くのコンピュータシステムで、年号を下2桁だけで表していたため、「99」の次が「00」になると、コンピュータが1900年と誤認識するという問題でした。

銀行の取引や航空管制、電力網など、社会インフラに大混乱が起きるのではないかと懸念されました。世界中の企業や政府が総額約3000億ドル(約30兆円)を投じて対策に取り組みました。

結果的には大きな問題は起きませんでしたが、これは対策が成功したからとも言えます。ただ、一部では「脅威が誇張されていた」という見方もあります。

(雨音が少し強くなる)

Y2K問題の教訓は、「短期的な解決策が長期的な問題を生む」ということ。メモリが貴重だった時代に、年号の下2桁だけを保存するという選択は理にかなっていました。しかし、そのシステムが何十年も使われ続けることは想定されていなかったのです。

現在のプログラマーも、「今書いているコードが20年後も動いているかもしれない」ということを意識する必要があるんですよね。

Part 3: マリナー1号 - たった一文字で宇宙船が墜落

さて、もっと昔の話を一つ。1962年、NASAのマリナー1号という金星探査機が打ち上げ直後に墜落するという事件が起きました。

原因は何だったのか。なんと、制御プログラムの中の「一つのバー(横線)」が抜けていたことでした。

(驚いたような声で) 具体的には、平滑化処理を行う数式の中の「R-dot-bar」(平均値を表す記号の上にバーを引くもの)のバーが抜けていたため、ロケットが予定外の動きをし始め、地上からの自爆命令で破壊されました。

この探査機の費用は約1800万ドル(当時のレートで約65億円)。当時としては途方もない金額でした。このバグは「史上最も高価な句読点」と呼ばれることもあります。

一文字のミスが巨大なプロジェクトを台無しにした例として、プログラマー教育でもよく引き合いに出される事例です。

Part 4: アリアン5型ロケット - 再利用コードの落とし穴

1996年、ヨーロッパ宇宙機関(ESA)のアリアン5型ロケットが打ち上げ約40秒後に爆発するという事故が起きました。

原因は何だったのでしょうか。

(しっとりとした声で) アリアン4型で問題なく動いていたコードをアリアン5型に再利用したのですが、アリアン5型は前モデルより初速が速く、64ビット浮動小数点数を16ビット整数に変換する際にオーバーフローが発生したのです。

簡単に言うと、「前のロケットでは問題なかった計算が、新しいロケットでは処理しきれなかった」ということです。

この事故による損失は約5億ドル(約500億円)。再利用というソフトウェア開発の基本原則が、皮肉にも大惨事を招いた例です。

雨の日に昨日の傘を使うように、以前のコードを再利用することは効率的ですが、状況が変わっていないか確認することも重要だという教訓ですね。

Part 5: 東京証券取引所のシステム障害 - 身近な大規模バグ

日本でも大きなバグによる障害は起きています。2020年10月1日、東京証券取引所で全銘柄の取引が終日停止するという前代未聞の事態が発生しました。

(少し声のトーンを下げて) 原因は、株式売買システム「arrowhead」のバックアップ機能の不具合でした。メモリに障害が発生した際、本来なら自動的にバックアップ機器に切り替わるはずが、その仕組みに不具合があったのです。

日本の金融市場の中心がまるまる1日止まることで、推定で数十億円の経済的損失が生じたとされています。

このケースは「想定外の状況のテスト」がいかに重要かを教えてくれます。日常的に雨が降らない地域でも、いざというときのために傘は必要なのです。

Part 6: インテルのペンティアムFDIVバグ - 計算ミスが招いた巨額損失

1994年、インテルのペンティアムプロセッサに浮動小数点数の除算に関するバグが発見されました。

(教えるような口調で) 例えば、4,195,835を3,145,727で割ると、正しくは 1.33382... となるべきところ、プロセッサの計算では 1.33374... という誤った結果が出ました。

一般的な用途ではほとんど問題にならないレベルのエラーでしたが、科学計算や金融計算には致命的でした。インテルは当初「一般ユーザーには影響がない」と主張しましたが、最終的には全チップの交換に応じることになりました。

この判断の遅れによって、インテルは約4億7500万ドル(約475億円)の損失を出しました。

このケースが教えてくれるのは、「小さなバグでも、対応を誤ると大きな損失になる」ということ。雨漏りは最初は小さな一滴ですが、放置すれば家全体を傷めるのと同じですね。

Part 7: スピードメーターのバグ - 身近な製品のバグ

もっと身近な例も見てみましょう。2014年、ある日本の自動車メーカーのバイクのスピードメーターに不具合が見つかりました。

実際の速度より速く表示してしまうというバグでした。例えば、実際には時速100kmなのに、メーターでは時速106kmと表示されてしまうのです。

(優しく説明するように) このバグの面白いところは、「規制に適合するため」に意図的に設定された誤差だった点です。バイクの速度計は安全のため、実速度より高めに表示するように設計されていたのですが、その誤差の計算式に間違いがあり、想定以上に高く表示されていたのです。

このケースでは人命に関わる事故は起きませんでしたが、約12万台のリコールとなり、メーカーの信頼性を損なう結果となりました。

「安全のためのバグ」という皮肉な例ですね。雨具は雨を防ぐためのものですが、使い方を間違えると逆に不快になることがあるのと似ています。

Part 8: 現代のバグ対策 - テスト文化の進化

最後に、こうした歴史的な失敗から、現代のソフトウェア開発はどう進化したのかをお話しします。

(明るい声で) 今日のソフトウェア開発では、「テスト駆動開発」や「継続的インテグレーション」など、バグを早期に発見するプラクティスが定着しています。

また、「静的解析ツール」という、コードを実行せずに問題を見つける技術も進化しています。さらに「形式的検証」という、数学的にプログラムの正しさを証明する方法も、特に重要なシステムでは使われています。

それでも完璧なソフトウェアは存在しません。複雑なシステムでは、思いもよらない相互作用が起きることがあります。

それでも開発者たちは、過去の失敗から学び続け、より安全で信頼性の高いシステムを作るために日々努力しています。

(雨音が小さくなる)

クロージング

(雨上がりの音)

さて、今日はソフトウェア史上の有名なバグについてお話ししました。

バグという言葉が実際の虫に由来すること、小さなミスが時に巨額の損失を招くこと、そして開発者たちがそれらの失敗から学び続けていることをご紹介しました。

現代社会はソフトウェアに支えられています。その陰には、無数の試行錯誤と失敗の歴史があるのです。雨宿りをしながら振り返る「バグの歴史」、いかがでしたでしょうか。

この番組面白かったよーという方は,ぜひチャンネル登録もお願いします.もし聴いていて気になることや、話してほしいトピック,感想などありましたら、概要欄のフォームや,𝕏 でハッシュタグ「WEB 小噺」でつぶやいてください!web はアルファベット,「小噺」は漢字でもひらがなでも大丈夫です!

今回もお聴きくださりありがとうございました!雨宿りをしながら考える技術の変遷.次回もどうぞお楽しみに.「雨宿りと WEB の小噺」お相手は Keeth でした。さようなら!

次回予告

次回は「アイコンの秘密 - 日常で使うシンボルの意外な起源」をお送りする予定です。保存ボタンがなぜフロッピーディスクの形なのか、電源ボタンの記号の意味など、デジタル世界のビジュアル言語の秘密に迫ります。お楽しみに!

エンドクレジット

今回のBGM: Rainy Bug Blues 効果音: Gentle Rain 編集: 雨宿りスタジオ

results matching ""

    No results matching ""