プログラミング初心者に教えたいデバッグのコツ【すぐ使える】
プログラミングには慣れてきたけどデバッグに時間がかかりすぎて進みが遅い、書いてもエラーを吐いたり何も起こらなかったりで、デバッグのコツとかってあるのかな
こんな悩みに答える記事になります。
本記事では、プログラミングで使えるデバッグのコツについて解説しています。独学中の方や初心者の方は是非読んでみてください、コードをぬるぬると書けるようになります(問題を特定するスピードも身に付く)
「デバッグを制す者は、プログラミングを制す」
この記事を読んで身に付くスキル
- プログラミングにおけるデバックの基礎
- デバッグにかかる時間の短縮
- エラー・問題の特定方法(手順)
[デバッグが上手い = プログラミンが上手い]
とも言えます、なぜならプログラミングする時間のほとんどをデバッグ作業が占めるからです。
つまり、プログラマーにとってデバッグの上達は自身の成長でもあります、この記事を読んで是非デバッグのコツを身に付けて下さい。
初心者がデバッグでハマる原因は1つだけ【ほぼこれ】
私自身、プログラミングを学ぼうとする学生さんや初心者の方を指導する事がありますが、やはりほとんどの人がデバッグ作業で手が止まります。
それぞれ詳しく話を聞いてみると、面白い事にほぼ全員に共通している点がありました。
それは、自分が感じた事をそのまま疑い続けるということ。
自分が感じた事をそのまま疑い続ける
例えば、「クリックした際に変数に値を入れて処理させて吐き出す」といった処理の場合。
つまり、他に問題があるのかを考えていません。その結果いつまでたっても動かないプログラムを眺めては時間を浪費するわけです。
デバッグで大事なのは視野を広くしてコードと向き合うことです、「ここが原因!」と予想するのはいいですが、動かない事実がある以上、予想は予想でしかありません。
「そこは値を入れてるだけだから大丈夫」「問題ないはず」、こういう人はデバッグでハマリ安いので気を付けましょう。
プログラミングにおけるデバッグの基礎3点
デバッグに時間がかかる人はテンプレートを押さえておけばOKです、最初のうちは原因を考えるより確認した方が早い。
下記になります。
- 値を確認する
- 処理が実行されているか確認する
- エラーは単語区切りで読み解く
上記3つを押さえておきましょう、①と②は特に重要です。
値を確認する
デバッグのコツその1:値を確認する
例えば上のような処理でクリックしても何も反応がなかった場合、イベントやアクションを疑うのではなくそもそも値を取れているかどうかの確認をすべき。
なぜなら、処理は動いているけど値を持って来れていないだけかもしれません、更に値を見ればどこが原因か突き止めやすいというメリットもあります。
値を操作する処理が絡む場合はその値をまず確認する、これを徹底しましょう、値をログなどでチェックできる関数を上手く使えるようになると便利です。
javascropt:値を確認する方法
var sample = "中身を確認します";
console.log(sample);
// ログ表示 → 中身を確認します
javascriptであればとりあえずconsole.log()
でチェックと習慣付けましょう。
PHP:値を確認する方法
$sample = "中身を確認します";
var_dump($sample);
PHPではvar_dump()
を使って値を確認することができます、ざっくりと確認したい場合はecho
で表示させて確認するのもあり。
他の言語にも記述は違えど値を確認する方法は必ずあります、iOSで有名なSwiftであればprint()
、環境に合わせて調べつつ使ってみてください。
処理が実行されているか確認する
先ほどは値を確認することの重要性について解説しましたが、処理は正常に実行されているかどうか、ロジックが通っているかどうか確認することも大事です。
分岐処理(if文など)は正しく動作しているか、実行前で処理が止まっていないかを確認しましょう。
これもログを出力して確認する方法が便利です、分岐処理であれば処理の中にログ出力を追加して確認でします、処理の前後にログを出力させることでタイミングの切り分けも可能です。
エラーは単語区切りで読み解く
エラーコードが表示された場合は分かりやすいものから英単語区切りで読み解くと解決に繋がりやすいです。
よく見るのは構文エラーや値取得時のエラーですね、慣れてくるとパターンが分かってくるようになります。
最初のうちはエラーコードを検索し調べるか、重要そうな部分を取り出して辞書を引いて意味を調べて関連性を探るのがいいと思います。
まとめ:デバッグ時はまずログを確認する
いかがでしたでしょうか。
イマイチよく分からなかった方は、「デバッグではログ出力をうまく使えばいい」と覚えてもらえればなと思います。
- 値が取れているかログで確認
- 分岐処理が通っているかログで確認
- エラーのタイミングをログで確認
こんな感じでログ出力をうまく使えばデバッグも上達します。
解決しないにしろある程度原因を特定できていれば質問もしやすいです、質問された側も答えやすいので助けになりやすくなるので良いことしかありません。
是非うまく活用してみてください、以上になります。
他の人が読んでいる記事
飲食→派遣→IT系ベンチャーに転職。
本業をベーシックインカムとし、やりたい事に挑戦するWebエンジニア。