組み込みエンジニアの現場力養成ドリル(2)
「仕様に潜むバグ」を見つける、たった1つの心掛け(2/2 ページ)
『どんな三角形かな』の仕様書に潜むバグは以下の2つです(この他にもあるかもしれませんが、筆者が意図したのは、この2個です)。
その1:終了ボタンがない
冷蔵庫以外の全ての電気製品には、「オン」と「オフ」のスイッチがあります(冷蔵庫は、途中で電源をオフにしない前提なので、電源プラグを差し込んだ瞬間に動作します)。この『どんな三角形かな』は、『算数で遊ぼう』の中のアイコンをクリックすると起動し、図1の初期画面を全画面で表示します。
つまり、この画面から『算数で遊ぼう』へ戻りたい場合、どうすればよいか、この仕様書では分かりません。Webブラウザの「前に戻る」的なボタンが必要です。「タスクマネージャーを起動して、『どんな三角かな』のプロセスを殺せばいい」は乱暴ですね。ただ、このバグは統合デバッグで必ず見つかるので、それほど悪質なバグではありません。
その2:直角二等辺三角形にならない
このバグは非常にシリアスです。直角二等辺三角形は、3辺の比が「1:1:√2」の時にしかできません。√2を整数や少数で表すことはできず、この画面でどんな数値を入れても、直角二等辺三角形にはなりません。これに気が付いた人は多いと思います。では、どう修正すればいいでしょうか? 以下の2案を考えましょう。
解決案1:「有理数で無理数は表せない。よって、これはバグではなく仕様であり、直角二等辺三角形はできない」と、袈裟懸けに斬って捨てる。
解決案2:√2のような入力を許す。
解決案1は、いわゆる「子供のお使い」的な解決法ですね。小学生は、三角定規として、直角二等辺三角形と、辺の比が1:2:√3の直角三角形の2枚を必ずセットで持っています(それプラス、分度器がランドセルに入っているはずです)。
*初出時、三角定規に関しての記述に誤りがありましたので当該カ所を訂正致しました(2018/03/16)
自分の持っている直角二等辺三角形の定規の3辺をミリ単位で測り、この『どんな三角形かな』へ入力したのに、「不等辺三角形」と表示されては、頭の中が「???」となります。このアプリケーション・プログラムの最大の目的が、「小学生に幾何学への興味を持たせる」なのに、それに反するのは、最大のバグです。
解決案2は、飢餓で暴動を起こした農民に、マリー・アントワネットが「パンがなければケーキ(正確にはブリオッシュ)を食べればいいのに」と言ったのと似ています。√2のような無理数の考え方ができない小学生に対し、「少数点で表示できなければ√を使え」とはいえません。
いろいろな解決策があるでしょう。その一つを以下に示します。
解決案3:三角形の3辺の比が、ほぼ「1:1:√2」になっていれば、直角二等辺三角形と見なす。
この「ほぼ」をプログラムの中でどう扱うか、簡単ではありません。例えば、小学生の持っている三角定規の辺の長さが、10cm、10cm、14.1cmの直角二等辺三角形だとしたら、100:100:141~142の範囲なら直角二等辺三角形と見なすのも1つの方法です。「正確な比率のプラスマイナス1%以内なら、直角二等辺三角形と判定する」でもいいでしょう。これで直角二等辺三角形の問題は解決です。「無事、仕様上と使用上のバグが見つかって修正でき、めでたしめでたし」ではありません。話はここから始まります。
この「ほぼ」は、他の三角形にも適用しなければなりません。直角三角形の判定にはピタゴラスの定理を使いますが、「3:4:5」や「5:12:13」のような整数になるものはごく少数です。「√2:√3:√5」も直角三角形です。「バグが見つかったら、他の箇所に同類のバグがないかチェックする」必要があります。これは、品質制御の基本です。96.8cm、96.7cm、96.8cmなら、「正三角形」と判定せねばなりません。
全種類の三角形に対し、「ほぼ」の概念を盛り込む必要があります。ソフトウェア開発の難しいところは、「ほぼ」という曖昧な概念をプログラム中では正確に表記する必要があることで、「±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をフォロー