デバッグ

デバッグ

デバッグとは、プログラミング中のバグを発見して修正して、本来定めた仕様通りの形にするための作業のことです。

デバッグの語源は諸説ありますが、1940年代にグレース・ホッパーというエンジニアが、デバッグの走りであるという説があります。ホッパーが書紀のコンピュータ開発に携わっていた際、コンピュータのリレーに蛾が入り、コンピュータに不具合を引き起こすのをみました。その蛾の死骸を取り除く作業から派生して、プログラムのエラーを取り除く作業を「デバッグ」と言い始めたという説が有力です。

※本ページにはPRが含まれます。

デバッグの手順

デバッグをどのように行うのか、デバッグの手順から確認していきましょう。デバッグが終わらないと、ソフトウェアの開発は終わったとは言えません。確かにプログラムの修正作業は面倒ですが、ソフトウェア開発を早めるためにも、デバッグ作業をしっかりと行いましょう。

バグの存在を確かめる

まずは、バグの存在を確かめないことには、デバッグがはじまりません。

ベテランのプログラマならば、デバッグ以前に経験でどの当たりにバグがあるのか、直感で理解することができます。しかし新米のプログラマならば、後にも説明しますが、ログの深読みなど初歩的な部分からのデバッグを始めなくてはなりません。

バグの発生源を確かめて分離する

このステップでは、システム内のどこがバグを引き起こしているのか、バグの発生源を特定する段階です。どこでバグが発生しているのか確かめるためには、繰り返しシステムをテストする必要がある場合があります。

できればローカルで、本番と同じ状況でテストすることで、バグの発生源を確かめやすくなるでしょう。

バグの原因を特定

バグの発生源を確かめたなら、次はバグの原因を特定します。バグの原因が何なのか、熟練のエンジニアならば、原因の追求も難しくないでしょう。システム開発への深い知識が、原因究明を行う際に役立つのです。

バグの修正

バグの発生源、バグの原因究明が済んだなら、次はいよいよバグの修正に入ります。

実際にバグを修正する前に、どのようにバグを修正するのか、バグの修正方法を決めるところから始めます。

バグを修正することで新たなバグを発生させるなど、バグを修正する際にも慎重さをきする必要があります。修正が済んだとしても、もう再び同じようなバグが発生しないかどうか、繰り返しテストを行う必要があります。

このテストでバグが発生しない事が確かめられない限り、デバッグ作業は終わりません。

デバッグの際心がけること

ここからは、特に新米のデバッガが、気をつけておくべきデバッグの際心がけることを紹介します。プログラマーがソフトウェア開発において避けて通れない「デバッグ」。プログラマーにとって最初の関門とも言えるこのデバッグ。デバッグのコツやノウハウを早めに身に着けないと、デバッグに携わる期間ばかりいたずらに伸びてしまい、プログラマーとしてのスキルも上がりません。

早めに自分なりの、デバッグのノウハウを身につけておきましょう。

自身の判断でバグの原因を予測しない

特に新人プログラマがやりがちなのが、自分の判断でバグの原因を短絡的に判断して、問題を単純化して対処しようとすることです。まったく見当違いな予想をすると、間違った方法でのデバッグを行いかねません。デバッグに無駄な時間を費やしてしまう程度の損なら良いのですが、その間違ったデバッグがまた別のバグを引き起こしてしまう可能性もあります。

きちんとログをみる

ソフトウェアはログどおりに動くもの。つまり、ログを見れば、どこにバグがあるのか必ずわかるということ。

新人プログラマは自分の判断でバグを予想しがちですが、この初歩の初歩、「ログをしっかり読み返す」ことをまずは徹底してください。

デバッグで役立つのが「デバッガ」

デバッグを行う際には、「デバッガ」が役に立ちます。デバッガには「デバッグを行う人」という使い方をする場合もありますが、ここで言うのは、デバッグで役に立つツールのことを指します。

デバッグツールには、バグの位置を特定するための、動作状況の解析などを行ってくれる機能がついているものがあります。

デバッガには、機械語レベルでバグを検証する「アブソリュートデバッガ」と、ソースコードレベルでの検証を行う「シンボリックデバッガ」の2種類が存在します。

まとめ

プログラマの最初の難関でもあるのが「デバッグ」です。プログラム内の不具合を見つけて、その不具合を修正すること、そしてその不具合が再び起こらないことをテストして確かめるまでが一連の流れです。

デバッグ作業は面倒ですが、ソフトウェア開発の上では避けて通れない地点です。ソフトウェア開発を無事終わらせるためにも、急がば回れの意識で、デバッグを行ってください。