プログラミングのバグの解決方法6つ!原因は意外に単純なことかも
『プログラミングむず…バグった…動かない…意味ワカラン…』
■ネットでエラーの原因を検索してみたものの、どれが自分に当てはまるのかわからない
■直したら今度は別の場所でエラー
…心が折れますよね。
プログラミングをしている時間の中の半分以上は、思うように動かなくて調べたり、バグがとれなくて悩んでいる時間だと思います。
そんなときのために!
これから紹介する6つのことを試して、バグを解消しましょう。どの言語かは関係なく読める内容になっています。
原因は意外に単純だったりするかもしれません。
目次
その1:"そもそも"を疑う
インターネットに繋がらないと思ったらLANケーブルが刺さってなかったとか、ルータの電源が入ってなかったとかよくある話です。
ローカルで開発中にアクセスができないと思ったら、『そもそもサーバが立ち上がってなかった!』とかもあります。
こんな感じで、大前提となる何かが欠けていたりするかもしれません。
書いたコードを疑うより前に、前提がしっかり出来ているのか確認してみましょう。
ここで解決すれば儲けもんですね!
その2:バグを整理する
バグが出たとしても焦らずに、現象(バグの内容)を整理しましょう。
- 何の操作をすると、何というエラーが出るのか
- そのエラーの内容は、何を伝えようとしているのか
- 操作の順番は関係あるか
- 本番環境と開発環境で違いはあるか
- 何が正で、何が誤なのか(ゴールをハッキリさせておく)
といったところに気を付けて、現象を整理していきます。
整理しないと、何が正しく何がダメなのか、ゴールが定まりません。
もし処理が複雑なら、脳内だけでムリに整理せず、メモ帳に書き出したりするのもいいと思います。
バグが起きると焦ってしまい、普段見えている部分でさえ見落としてしまいがちですからね。
まずは落ちついて整理して、それからじっくり考えましょう。
その3:パーツを分けて考える
処理があちこちに飛んで、そのどこかでバグ起きている場合があると思います。
そういうときは、どこまでは正常に動いているのか、どこからおかしいのか、パーツを分けて考えましょう。
原因と思われる箇所を段々と絞っていって、問題を特定します。
この「どこまで正常に動いているか」判断するには、ステップ実行が有効です。
ステップ実行は開発環境によってはできない場合もあります。
もしステップ実行ができない環境なら、途中に処理番号を書いたログを出力すれば、どこまで正常に動いているのかわかりやすいです。
その4:シンプルにする(余計なものを取り除く)
これは環境構築に関するエラーによく効く手法です。
最初は動いてたのに、「コードを足したり、あれこれインストールしていったら動かなくなった」という現象ですね。
どの状態のコードなら動くのか、バージョン管理ツール(Git、SVNなど)を使って前の状態に戻してみたりしましょう。
便利なライブラリをたくさん使っていると、開発時間を短縮できますが、問題が起きたときに原因を探し辛かったりします。
その5:誰かに質問する(しようとする)
ラバーダッグ・デバッグ、またはテディベア効果というデバッグのテクニックがあります。
例えば
バグが起きて先輩に聞きに行き、バグの説明をしている途中で
「あ、あそこが悪いんじゃん」と気づいて、「先輩!やっぱりなんでもないです!解決しました!」
と、先輩からアドバイスをもらう前に解決するやつです。
人にわかるように質問しようとすると、自分の脳内で現象を整理することで解決に繋がるのだと思います。
これをラバーダッグ・デバッグ、またはテディベア効果、といいます。
【参考】Wikipedia - ラバーダック・デバッグ
その6:寝る!!
今日は寝てしまって、一晩置きましょう!
パソコンの再起動のように、一旦忘れて寝ましょう zzZ
そして朝起きたらもう一回見直してみましょう。
「え、ここ抜けてんじゃん…昨日の自分アホかよ!」ということが起こります。
追い詰められてたりバグにハマっている時は、思い込みで視野が狭くなりがちです。
寝逃げでリセットしましょう。
これは意外に効くのでやってみてください。
一番オススメの方法です。仮眠でもオッケー。
簡単で、疲れがとれて、バグもとれて、一石三鳥ですね。
まとめ
- "そもそも"を疑う
- バグを整理する
- パーツを分けて考える。問題の切り分け
- シンプルにする(余計なものを取り除く)
- 誰かに質問する(しようとする)
- 寝る!!一番オススメ
以上、『プログラミングのバグの解決方法6つ』を紹介しました。
私はその6に何度も助けてもらいました。でも6のやり過ぎには注意が必要ですよ!
寝ると間に合わないときもありますからね笑
少しでも、バグにハマって悩んでいる方の力になれれば幸いです。
スポンサードリンク