デバッグ

デバッグ(debug)とは、プログラムスクリプトの良くない部分を見つけ出して、その間違いを修正すること。

デバッグは、それ専用のソフトウェアであるデバッガを用いたり、ソースコードそのものを見直したりして作業を進める。いわゆるバグの訂正である。

バグは虫という意味がある。この意図で直訳すると、デバッグは虫を取り除くという意味になる。しかし、一般にバグといえばコンピュータで使われるプログラムの不具合や欠陥、誤りなどのことを指す。

基本的にPHPなどのプログラムは、何らかのエラーがあれば、WARNINGやPARSE、NOTICEなどの表示をする。重大なエラーであれば、プログラムそのものが停止する。警告を指すWARNINGや通知のNOTICEでは、error表示されるもののそれほど深刻なものではなく、プログラムがそのまま実行される。

また、errorがあれば、その行数も表示してくるため、その部分を探してデバッグする。しかしこの行数はソースコードの終端を示していることもあり、その場合は他の部分に問題が発生していることが多いため、デバッグするのが少々、困難になる。

他にも、配列から意図したものが取出せなかったり、条件分岐(しきい値)などで反対のリザルトが出力されていて、おかしなことになっている時もデバッグする。PHP7以降は、イニシャライズ(初期化)しなければ、errorを吐くことも。ファイルの中でいきなりechoしても現れる。この場合、emptyやissetなどのビルトイン関数を使い、条件分岐をしてデバッグしなければならない。

デバッグの原因となるミスで比較的多いと考えられるのが、カンマなどのデリミタ(区切り文字)、コードの終端を意味するセミコロン、コード内でクォートの付け忘れなどがある。また、ソースコード内に意図せず全角スペースが入っていたりすることもあるが、エディタによっては全角スペースを色付けするなどして分かるようになっているケースもある。そういうエディタでない場合、慣れてないとデバッグに時間がかかることがある。

初心者にとって少し難易度が高い凡ミスでは、preg系の関数でURLを処理しているパターンがある。スラッシュが入っているため、エスケープされずにうまく実行されない。これに気づかないとデバッグに時間がかかる。この場合は、パターンとして両側にスラッシュを使っているためで、中カッコ(波括弧)やビックリマーク(!)とか、他のものに変換してやるとうまく動くようになる。長いことプログラミンをしている人にとっては当たり前のことだと思うが、初心者にとっては気づくまでに時間がかかることと思う。

入力フォームの内容が適切であるかどうか検証することをバリデーションという。このケースではフォームに入力した内容がバリデーションの対象となる。しかし、裏では正規表現を使って判定している。正規表現は深入りしなければそう難しくはない。深入りすると抜け出せなくなるほどややこしい。複雑になるほどうまく動作しにくくなり、より深みにはいったデバッグが必要となる。

ソースコードを書き換えながらデバックを行うケースだと、いつでもロールバックできる環境を構築しておくことが求められる。これは、一部の修正によって、他の部分に不具合が発生してしまい、誤りをより複雑な形にしてしまうことがあるため。こういった場合は、ロールバック実施によって、もう一度初めから改めて修正への考えを巡らせることが出来るようになる。

デバッグの意味を簡潔に説明すると

バグを発見して修正すること。