バグ検出ドリル(5)「小さな親切、大きなお世話」な問題山浦恒央の“くみこみ”な話(105)(1/3 ページ)

「バグ検出ドリル」の第5回で出題するのは「思い込み」にまつわるバグの問題です。タイトルの「小さな親切、大きなお世話」とは一体何なのでしょうか。問題文から、どこにバグがありそうか見つけ出してみよう!

» 2018年04月12日 10時00分 公開

1.はじめに

 ソフトウェアのバグは、原因が分かればごく単純なミスがほとんどです。原因が単純であるほど、バグの外部的な現象は不可解で、大混乱しますね。

 バグが出た場合、冷静に、そして、システマチックに原因を究明する力を養いましょう。バグを嗅ぎ出す能力を鍛えましょう。今回も、問題文を読んで、どこにバグがあるか推察してください。

2.単純なバグほど見つからない

子どもの遊び ※写真はイメージです

 問題文に入る前に、今から20年前に体験した不思議なトラブルの話をします。ある朝、会社へ行こうと8時にクルマに乗り込み、キーを回したのですがエンジンがかかりません。前日はクルマに何の問題もなく夜の8時に帰宅しました。

 「昨夜8時から今朝8時の12時間で何があったのだろう? 今日は午後1時からプロジェクトの進捗会議があるので、早く原因を見つけて会社へ行かなきゃ」と焦りました(大事な用事がある時に限って、トラブルが起きます。いわゆる、「マーフィーの法則」ですね)。

 ヘッドランプは点灯するし、セルモーターも動いているので、バッテリーは問題ない、オイルも漏れていない……と1つずつチェックして原因を探ろうとするのですが、気が焦るばかりで全く見当がつかず、時間だけが過ぎていきます。エンジンの深い部分が故障していたら、手に負えません。

 30分、格闘した結果、自力解決は諦め、修理工場に電話してメカニックに来てもらいました。エンジニアが到着して30秒で原因が判明しました。ガス欠です。さすが、プロはトラブルシューティングの手順表を持っていて、それに従って「バグ」を一瞬で見つけたのです。「バグ」があまりに単純だったので自分自身に腹が立ちましたが、それと同時に簡単に治ってよかったとも感じ複雑な思いでした。

 手品やマジックでも同じで、単純なタネほど、不思議感が大きくなります。今でも印象に残っているのは、目の前でマジシャンが手の平の100円玉を見せ、「これが消えます」と言って手を上げて下ろした瞬間、100円玉が消えたことです。マジシャンは、指を開いて見せて得意そう。マジシャンはTシャツ姿なので、袖の中へ隠すことはできません。もう一度、手を上げ下げすると100円玉が現れました。不思議でたまりません。

 あとでタネ明かしをしてくれたのですが、手を上げた瞬間、100円玉を自然な動作で側頭部(額の右側)に貼り付けていたのです。「なんだ、そんなことか」と拍子抜けしたのですが、この時から、「手品はタネではなく見せ方が重要」と思うようになりました。

 それでは次ページに問題を示します。5分程度考えて分からない場合、自身の環境で実行することをお勧めします。実行すると、不思議な部分が必ず見つかるはずです。なお、本シリーズのプログラムは、全て「Visual Studio2010」コンソールアプリケーションで実行を確認したものを使用しています。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.