組み込みエンジニアの現場力養成ドリル(7)
組み込みソフトの不具合、その問題の原因は「ウイルス」か「バグ」か(2/2 ページ)
解答編
結論から述べると、入退室セキュリティ制御システムはウイルスに感染していませんでした。動作不良はシステムの「うるう年計算」に不良があったことが原因でした。
1992年は2月29日まであるうるう年ですが、セキュリティ・システムは、2月28日の次は3月1日としために曜日がズレてしまいました。システムは3月6日を金曜日ではなく、土曜日と認識してドアをロックしてしまったのです。翌週の月曜日(システムは火曜日と認識)には平日モードとなり、ドアは正常に開閉したのです。
このセキュリティ制御システムとって3月6日はミケランジェロの誕生日ではなく、「2月29日の次の最初の金曜日」だったのです。そして、次の「13日の金曜日」を土曜日と認識し、ドアを休日モードにしてロックしました。
ボストンのオフィスで働く50人以上の「最強プログラマー軍団」が、この不可解な動作の原因を解明しようと、仕事をそっちのけで挑戦したのですが誰にも分からず、セキュリティシステムの入れ替えが必要かと諦めかけていました。
そんな折、私の夢の中に「ひょっとして、うるう年の計算ミスではないのか?」とのイメージが現れました。興奮のあまり、夜中に車を飛ばして確かめに行きました。確認してみると、推測通り、日が1日進んでいました。分かってみれば非常に簡単な原因ですが、「ミケランジェロ・ウイルス」「13日の金曜日」などミスリードさせる要素が多かったため、50人の最強プログラマーにとっても真相に近づくことは困難だったのです。
クルマが動かないときはガソリン残量を確認せよ
後日談ですが、その朝、ドアが開かなかった原因をまとめ、最後に「Now, the doors open, and the case closed」と結んだメールをオフィスの全員に送りました。送信してから1時間、「おめでとう」「よく見つけたね」の激励メールがぞくぞくと届き、エンジニアとしてとてもうれしく思いました。
ソフトウェア動作不良の解決は容易ではありません。ウイルスが絡むと、問題はさらに複雑になります。いろいろな可能性を1つずつ検証し、原因を解明しなければなりません。
自動車のエンジンがかからない時、まずはガソリンが入っているかをチェックするように、プログラマーは「基本」や「当たり前」の事象や条件から疑い、チェックして原因を見つけようとします。ですが、「ミケランジェロ・ウイルス」のような思い込みが混じると、原因の究明に思わぬ時間がかかります。
不思議な動作、不可解な出力をするバグも、原因が分かれば、「あぁ、そういうことか……」と、詰まったパイプに水が通るようにスッキリした気分になります。この「スッキリ感」こそが、「バグの原因解決の本当の証拠」と思っています。
補足その1:うるう年の計算方法
蛇足ながら、うるう年を計算で求める際の条件は以下の通りです。
- (1) 4で割り切れる年はうるう年
- (2) ただし、100で割り切れる年は平年
- (3) 400で割り切れる年はうるう年
補足その2:東京オリンピックの年も?
上記のように、ミケランジェロの誕生日である3月6日が、うるう日(2月29日)以降の最初の金曜日となり、また、翌週が(自動的に)13日の金曜日になるのが、東京オリンピック開催の2020年です。単なるうるう年の計算バグなのに、ミケランジェロ・ウイルスが原因と誤認する可能性があります。逆に、うるう年のバグが出るとしたら、2020年3月6日でしょう。
補足その3:1年のはじめは?
うるう年の計算が面倒なのは、2月という(ある意味)中途半端な月で1日が増えることにあります。そこで、発想を転換し、プログラム的な1年の始まりを1月1日ではなく、3月1日にすれば、最後の1日が「増える・増えない」という単純な問題に変えることができますね。
Copyright © ITmedia, Inc. All Rights Reserved.
組み込みエンジニアの現場力養成ドリル
このコラムでは、組み込みエンジニアが日々の開発で実際に遭遇する「小さなトラブルを」取り上げ、演習形式で解説します。
この記事の著者
新着ホワイトペーパー PR
-
製品資料
[株式会社 Green AI] AIで脱炭素計画を最適化、初年度からエネルギーコストとCO2を削減する方法 -
市場調査・トレンド
[スマートジャパン編集部] 「ペロブスカイト太陽電池」の普及戦略が公表 政府が目指すコスト・導入量のロードマップを解説 -
市場調査・トレンド
[スマートジャパン編集部] 導入が加速する再エネ・系統向け蓄電システム コスト・収益性の現状分析 -
技術文書・技術解説
[スマートジャパン編集部] いまさら聞けない「ペロブスカイト太陽電池」の基礎知識と政策動向 -
技術文書・技術解説
[スマートジャパン編集部] 「ペロブスカイト太陽電池」の開発動向、日本の投資戦略やコスト目標の見通しは?
関連記事
こんなメディアも見られています
TechFactoryに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
特集
- マテリアルズ・インフォマティクスの動向調査
- 研究・開発職のデジタル活用調査
- 設計・解析業務におけるAI活用
- 3Dプリンタ利用動向調査
- CAD利用動向調査
- つながる工場の現状と課題
- 製造業におけるAI開発および活用の実態
- 設計・製造現場における品質管理
ホワイトペーパーランキング PR
-
1
EE Times Japan×EDN Japan 統合電子版:フィジカルAIが生み出す新たな「設計思想」――電子版2026年8月号
-
2
半導体装置メーカー 業績まとめ【2027年3月期第1四半期】
-
3
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part4)
-
4
一時は時価総額トヨタ超え キオクシア2026年度の動向
-
5
微細配線間の絶縁劣化をどう捉える? 先端パッケージ評価の最前線
-
6
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part1)
-
7
EE Times Japan×EDN Japan 統合電子版:2026年上半期の半導体業界を振り返る――電子版2026年7月号
-
8
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part3)
-
9
CADツールの見直しは本当に必要? 切り替えの理由と効果を7つの質問で検証
-
10
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part2)
TechFactory SNS
インフォメーション
注目情報をチェック
TechFactoryをフォロー