「プログラミングが少しずつ出来るようになってきたけど、エラーが出たときの対処や思うように動かなくて時間がかかる。デバッグのコツってあるのか」な。
今回はそういった悩みを解決します。
本記事で分かること
- プログラミングにおけるデバッグの大切さが理解できる
- プログラミング初心者が知っておくべきデバッグのコツ3つ
- デバッグスキルを伸ばすために合わせてやっておきたいこと
記事の信頼性
この記事を書いている私はエンジニア歴8年で、今も開発現場でプログラミングをしています。
デバッグを嫌というほど行ってきた経験から、デバッグの大切さやコツをお伝えすることができます。
今回は「プログラミングのデバッグ」というテーマについて解説します。
プログラミングにおいてデバッグスキルはめちゃくちゃ大切で、デバッグを制すものはプログラミングを制すといっても過言ではないです。
そこで本記事では、知っておくべきデバッグのコツ3つと、スキル上達のために合わせてやっておきたいことを紹介します。
プログラミング初心者の方がこの記事を読むことでデバッグスキルを上達させ、作業時間を短縮することができるようになります。
デバッグを制すものはプログラミングを制す
プログラミングにおいてデバッグはめちゃくちゃ重要で、デバッグが上手い=プログラミングが上手いと言えるぐらい大切なスキルです。
なぜなら、プログラミングをしていると思ったように動かなかったりエラーに出会うことがたくさんあり、いかに早く対処できるかが作業効率に直結するからです。
僕もプログラミングを始めたばかりの頃はエラーの対処に1日かかってしまうこともザラにありました。
今では体感的にはコードを書く時間の1/4~1/2程度がデバッグしているぐらいなので、1日かかっていたデバッグが半日以上短縮できている計算ですね。
こういった感じでデバッグスキルを上達させることは作業時間の短縮につながります。
プログラミングにおいてデバッグは避けられない作業なので、しっかりスキルを磨きましょう。
プログラミング初心者に伝えたいデバッグのコツ3つ
プログラミング初心者の方はデバッグの基礎となる次の3つのコツを抑えましょう。
- 自分を疑う
- 変数の値を確認する
- コードのどこを通っているかを確認する
順に解説します。
自分を疑う
思ったようにプログラミングが動かないときは、まずは自分を疑ってください。
コードは自分が思ったようには動かなくて、書かれた通りにしか動きません。コードを書けば誰しも間違いを起こすので、まずは自分の思い込みをなくしすことが大切です。
例えば、データベースから値を取得して画面に表示させるプログラムがうまく動かないとき、
データベースから値が正しく取得できていないのでは?という固定概念に囚われて怪しんでいた
→実は画面に表示する変数を間違えていただけだった
実際、上記のような単純なオチがよくあって、結果が分かるとめちゃくちゃ単純な理由なのですが、プログラミング初心者がすごくハマりやすい典型例です。
デバッグするときは勝手な思い込みをやめて自分を疑うようにしましょう。
変数の値を確認する
思ったとおりにプログラムが動かないときは変数の値を確認するようにしましょう。
プログラムには多くの変数が使われていて、何かの処理がうまく動かないときは処理の前後で使っている変数の値を確認することで問題が解決できることが多いです。
例えば先ほどと同様のデータベースから値を取得して画面に表示させるプログラムであれば、
- 接続文字列などのデータベース接続で使う変数
- データベースから取得した値を格納する変数
- 画面表示に使う変数
思ったとおりにプログラムが動かないときは変数の値を確認することがデバッグの基本です。
変数の値を確認する具体的な方法
変数の値を確認する方法も少し補足しておきます。
JavaScript
var test = "確認したい値を表示します"; console.log(test); // ログ表示 → 確認したい値を表示します
JavaScriptの場合はconsole.log(変数)とすれば変数の値を確認することができます
Python
test = "確認したい値を表示します” print(test) # 確認したい値を表示します # 配列やタプルも同じように表示して確認できる
Pythonの場合はprint関数を使うことで確認ができます。
同じように、C言語系であればprint関数やConsole.WriteLineメソッドで出力が可能です。どの言語でも値を確認する方法は用意されているので、開発環境に合わせて調べつつ使ってみてください。
コードのどこを通っているかを確認する
コードのどこを通っているか、意図したとおりに処理が実行されているかを確認することも大切です。
if文による条件分岐が正しく処理できているか、想定しているところを通っているか確認しましょう。検討違いのところを見ていては何も解決しません。
例えばif文の条件分岐であれば、先ほどのログ出力の仕組みを使うことで
if(何かの条件) { console.log('条件がtrueのとき'); } else { console.log('条件がfalseのとき'); }
上記のようにログを埋め込めむことでコード上のどこを通っているか確認できますよね。
他にもいろんな処理の前後でログを挟んだり、処理の開始と終了でログを付けたりと様々な使い方があるので、いろいろと試してみてください。
統合開発環境(IDE)のデバッグ機能が強力
さらにいうと、Visual Studioなどの統合開発環境(IDE)を使っている人であれば、ブレークポイントを貼ることで実行中のコードを一時停止させることができます。
めちゃくちゃ強力なデバッグ機能なので、積極的に活用しましょう。
デバッグスキルを伸ばすために合わせてやっておきたいこと
ここまでにデバッグのコツについてお伝えしてきました。
逆に考えると、デバッグしやすいようにプログラミングをすることで効率的なデバッグが出来るようになるということです。
【真髄】デバッグしやすいようにプログラミングする
値の確認や条件分岐の実行など、あとで正しく処理できているか確認が必要そうだなと思う部分はログを埋め込んでおく癖をつけましょう。
他にも処理が確認しやすいようにメソッドを分割しておいたり、ログ出力機能をつけた変数格納クラスにしておくなどのテクニックも使えます。
このあたりはリーダブルコードという本を読むと参考になる知識が身につくので、プログラミング初心者の方はぜひ読んでおくと良いでしょう。
いずれにせよ、デバッグがしやすいプログラムを組んでおくことでデバッグ作業を効率化できます。デバッグスキルと合わせて上達させるようにしましょう。