2016.2.1 (Mon)
キーマンズボイス(第11回)
株式会社デジタルハーツ 代表取締役社長 河野 亮 氏概要
デバッグとは、コンピューターのプログラム内にある不具合や結果を発見し、修復して取り除く作業を指す。
プログラムが開発者の意図通りではなく、誤った動作をする際に、誤動作を引き起こすプログラム上の欠陥、誤りをバグ(bug=虫)と呼んでいる。デバッグ(debug)は「虫を取り除く」という言葉である。
種類
デバッグは、大きく分けて2種類の作業方法がある。
ひとつは「机上デバッグ」と呼ばれるもので、ソースコードと呼ばれるプログラム用の言語を記述した文字列を印刷し、人間がバグを探し出す方式を指す。ソースコードを1行ずつ追い、ペンなどで印をつけたり、メモを書いたりしながら、記述の誤りや矛盾などを探し出す。この方法は、コンピューターの処理速度が遅かった時代に使われていたものだ。コンピューター上では、ひとつひとつの作業の実行に時間がかかっていたため、ソフトウェアによるデバッグの前段階に行う作業として、よく実施されていた。
ふたつ目は、デバッガというバグを探すソフトウェア(プログラムの自動修正は行わない)を用いて、コンピューター上で行う「マシンデバッグ」である。
前述の机上デバッグは、コンピューターの処理速が向上したため、主流ではなくなった。しかし、机上デバッグが完全に使われなくなったわけではない。人がソースコードを把握するには適している作業なので、マシンバッグと併用すると、問題箇所の特定が比較的短時間で済むことがある。
シーン
デバッグ作業では、まずバグが、プログラムのどこに潜んでいるのかを認識することから始まる。バグはエラーなどが発生した箇所にあるとは限らない。誤ったプログラミングが行われた箇所の処理を行うと、別の箇所で致命的なエラーが発生して、プログラム自体が停止するということもある。
バグの箇所が特定された後は、なぜそのような誤りが生じたのか、バグの実際の原因を調べる必要がある。単純な誤記によるものもあるが、システムを熟知していないと発見できないような複雑な原因だったとき、特定まで時間を要する。
原因が特定されると修正が行われるが、修正によってシステムの動作そのものを変更してしまい、予期しない結果につながる可能性もある。そのため必ず修正を行うとは限らない。修正によって、さらに新たなバグが発生したり、別の箇所に潜んでいたバグを顕在化させたりすることがあるからだ。
修正したプログラムはほかへの影響も含めて入念にテストされることが多く、デバッグ作業は地道かつ慎重に行う必要がある。