ソフトウェア技術者のためのバグ百科事典(1)うるう年:山浦恒央の“くみこみ”な話(122)(1/3 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。記念すべき第1回は、超常連バグである「うるう年バグ」を取り上げます。
1.はじめに
これまで約2年に渡り、バグ検出能力向上問題集となる「バグ検出ドリル」シリーズとして、合計21個のバグを見つけていただきました。今回から新シリーズ、「ソフトウェア技術者のためのバグ百科事典」をお送りいたします。
2.バグ百科事典とは
これまでの「バグ検出ドリル」は、将棋、チェス、囲碁でいえば「次の一手問題」です。難解な局面を理解し最善手を選ぶように、ソースコードを読み、バグをピンポイントで見つけて修正していただきました。ある意味、実践力の養成であり、「バグを見つける嗅覚」と、長手数の詰将棋を解く場合のような「必ず解くという強靭な精神力」を鍛えるものでした。
新シリーズでは、「うるう年のバグ」「デッドロックの発生」「メモリ破壊のバグ」など、バグの種類別に詳しく解説します。将棋なら「角換わり」「四間飛車」の戦法、チェスなら「クイーンズ・ギャンビット」「ルイ・ロペス」のオープニング、囲碁なら「厚み優先」「地にからい」「模様」みたいな戦略ごとに、詳細を解説するものです。
「バグ検出ドリル」が実践力を鍛えるなら、「バグ百科事典」は、基礎知識を増やすことを目的にしています。両方を読んでいただければ、バグを未然に防ぐとともに、バグを作らない能力が高くなるでしょう。
ソフトウェア技術者の日頃の悩みとして、「バグの原因が見つからない」で困る場合が少なくありません。新シリーズの目的は、「ある特定のバグに関する知識を増やす」ことにあります。筆者が毎回、1つのバグに注目し、解説します。「そのバグの特定」や「そのバグの未然防止」に役立てば幸いです。
バグの原因を特定することは非常に大変です。限られた時間内で標準出力やログを解析し、原因を見つけようとしますが、非常につらい時間ですね。「一生見つからないかもしれない」とくじけることもあります。
自分が困っていることは、他の人も困っているはずです。そんな時に「バグの種類別」に百科事典的にまとめたものがあると便利だと考えました。特に、「常連バグ」「過去に話題となったバグ」が大きなヒントになる可能性があります。
3.バグ百科事典の目的
新シリーズの「バグ百科事典」で筆者が意図している目的を以下に示します。
- (1)バグの種類の把握
- (2)バグ発生時のトラブルシュート
- (3)バグの未然防止
(1)バグの種類の把握
ソフトウェア技術者には、想像力が非常に重要です。想像できないバグは防げませんし、検出できません。バグの未然防止は、まず、どんなバグがあるか知ることです。なお、本バグ百科事典は、「あいうえお」順に掲載できないため、最終的に、ソートした形でまとめる予定です。
(2)バグ発生時のトラブルシュート
バグが発生して最も苦しい時間が、バグの原因を見つけることです。場合によっては、数日から1週間、最悪は見つからないまま出荷することになります。「バグ百科事典」で取り上げた知識を持ち、原因を見つけるヒントになればうれしく思います。また、顧客にバグの原因を説明する際の理論武装にも使えます。
(3)バグの未然防止
プログラムを作ってから「ある特定のバグ」で悩むのではなく、設計段階で、「ある特定のバグ」を作り込まないようにしましょう。そのための対策や方策を示します。
Copyright © ITmedia, Inc. All Rights Reserved.