ソフトウェア技術者のためのバグ百科事典(4)Excelがバグの原因に!?:山浦恒央の“くみこみ”な話(125)(3/3 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第4回は、前回に続き「データ入力ミスのバグ」について解説します。Excelのように日頃使う開発ツールもバグの原因になり得るのです。
6.対策と兆候
対策と兆候を以下に示します。
6.1 バグの対策
6.1.1 設定値をよく確認する
当たり前ですが、設定値をよく確認しましょう。今回の例に限定しますと、円周率は「無理数」ですから、3.14で「終わることはおかしい」とプログラムにハードコードする前に確認する必要があるでしょう。ただし、身近でない数値を設定する場合は、値を間違えているかどうかが不明の場合があります。その時は、担当者に確認しましょう。
6.1.2 セルの書式を確認する
Excelの各セルには、さまざまな設定項目が潜んでいます。それをしっかり確認し、場合によっては再設定しましょう。今回の場合、セルの幅を広げ、表示桁以下の数値が入っているか確認すべきでした。また、指数表記の場合、表示形式を変更するなどして、再度確認しなければなりません。
6.1.3 ツールの習熟度を上げる
今回の原因の大部分は、Excelの知識不足が原因です。仕様記述、モデリング技法、プログラミング言語などを学ぶことも大事ですが、身の回りのツールにもしっかり目を配らねばなりません。特に、Excelは、奥深い便利な機能が多くあります。
6.2 バグの兆候
今回の例のような、小数の値の間違いを実行結果から見つけることは非常に困難です。筆者は、本例題のバグは、設定値に間違いがないか、もう一度見直した時に検出できました。つまり、プログラムを見ても分からず、データを見直さなければ見つからないバグでした。それを考慮すると、このバグの兆候は、「結果が期待値と大幅に異なっている」です。また、「より精度の高い結果を出したい」場合も、データのバグを疑いましょう。
「より精度の高い結果を出したい」とは、例えば、ロボットカーを使って、コースを20秒で走行するプログラムを作成することとしましょう。より良いタイムを出すための方法の1つが、設定値を再確認することです。良いタイムが出ない可能性として、「データの設定バグ」が考えられます。これ以外にも、「車体の重量を減らす」「タイヤの種類を変更する」など、早く走行するにはさまざまな方法があります。
7.まとめ
今回のまとめを以下に示します。
- データのバグとは、GUIからの入力、ハードコード、外部入力ファイルなどから設定値を間違えた時に発生する
- 外部のツールに基づいて設定値を入力する場合は、設定値をよく確認し、ツールの仕様を把握して設定すること。また、使用するツールの仕様を理解しておくこと
- 小数の値の間違いを見つけることは非常に困難であるが、「結果が想定通りでない」「より精度の高い結果を出したい」と考える場合は、設定値を見直すこと
8.おわりに
今回は、前回に引き続きデータのバグのケーススタディーを紹介しました。データのバグは、軽視されがちですが、間違った値を設定すると正しく動作しない可能性があります。今回は、昔、筆者が経験したExcelによるデータのバグを紹介しました。Excelの「セルの書式設定」には、さまざまな設定項目があり便利なのですが、設定値が一目で分かりにくいデメリットがあります。「バグの素」として、認識していただければと思います。
Excelに関連した問題は、筆者の最新著「ソフトウェア技術者のためのバグ検出ドリル」にも「練習問題」として掲載していますので、挑戦してみてください。
エンジニアは、Excel以外にも、さまざまなツールを使用してソフトウェア開発します。プログラミング手法、設計技法、テスト技法などを学ぶことも重要ですが、身の回りのツールにも目を向けてみてください。
山浦先生執筆の書籍「ソフトウェア技術者のためのバグ検出ドリル」が発売!
2019年11月27日に、山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売されました。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。
内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- ソフトウェア技術者のためのバグ百科事典(3)意外に厄介なデータ入力ミスのバグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第3回は、ある意味プログラマーにとって理不尽で、意外に厄介でもある「データ入力ミスのバグ」について解説します。 - ソフトウェア技術者のためのバグ百科事典(2)まだあるぞ、うるう年バグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。第2回は、前回に続き「うるう年バグ」について解説します。 - ソフトウェア技術者のためのバグ百科事典(1)うるう年
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。記念すべき第1回は、超常連バグである「うるう年バグ」を取り上げます。 - バグ検出ドリル(21)「三角形判定」のテスト項目を設計できますか【解答編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。前回の出題編から、今回は解答編になります。 - バグ検出ドリル(20)「三角形判定」のテスト項目を設計できますか【出題編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。まずは今回の出題編を読んで、じっくり問題に取り組んでみてください。