ソフトウェア技術者のためのバグ百科事典(4)Excelがバグの原因に!?山浦恒央の“くみこみ”な話(125)(3/3 ページ)

» 2020年01月14日 11時00分 公開
前のページへ 1|2|3       
※本記事はアフィリエイトプログラムによる収益を得ています

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や書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.