どこで問題が発生しているのかを見極めることが開発スキルに必須

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

アプリ開発などプログラミングを行っていると、必ずと言っていいほどバグに悩まされる。しかしながら、バグが発生するというのは、どこかで間違った書き方をしていると言えることなので、それを的確に見極めて対処することができるのであれば、バグが入り組んでさえいなければ解決自体はそれほど難しいわけではない。

基本的に、バグが発生した場合の原因の多くは「単純な書き誤り」である。単純な誤字脱字でその意味するところが大幅に変わって、制御が変わってしまうため、見落としてしまうとたちまちバグになってしまう。これについては、問題が発生しているところをブレークポイントやログ吐きデバッグで見つけることで対処することが可能である。

次に、型の使い方を誤っていることによるバグである。これは幾つか古い記事で扱っていたが、大きい型から小さい型へ値をコピーする際に、変数の型で持っているメモリーのサイズが足りずに情報が失われてしまうというパターンである。これは特にポインター演算がからむ部分で致命的な問題を引き起こすが、最近のコンパイラーではそもそも警告が出るので、これも気づけば問題はないだろう。

分かりづらいものとしては、メモリーの参照が違う場合である。これはC言語系列やアセンブリ言語が絡んでいる場合に多いが、ポインターや配列などのサイズが一致していない場合に意図せぬ挙動やクラッシュをするというものが多い。しかも警告が発生しないパターンもあるため、どこで問題が発生しているのかを分析する必要がある。場合によってはデータの解析も必要になるのかもしれない。

問題は、仕様あるいは設計自体にエラッタがある場合である。これは実装段階で発覚する場合が多く、実装した段階で仕様あるいは設計に問題があるということが発覚するのである。これについてはまず本来どうあるべきかを考え直して修正を行い、仕様及び設計のエラッタを直すという対応が必要になる。

大きく分けて、バグとしては上記のようなパターンが多いのではないのかと考えている。分かりづらいバグや対応の困難なバグもあるが、どこでどのように問題が発生しているのか、対応するにはどうすればいいのかをちゃんと把握していれば解決自体は難しいわけではないものが多いため、見極め能力はぜひとも鍛えたいところである。

タイトルとURLをコピーしました