目次
おお プログラマーよ バグをだすとは なにごとじゃ
プログラミング学習をしていて、急にエラーが表示されて焦った><という経験はありますか?
何やら怪しい文字列が出てきて、まるで自分が犯罪を犯してしまったような気がしてしまいますよね。
おそらく初学者のほとんどの方は、バグが出るのは悪いことだと思っていると思います。
もちろん、本番で運用している時にバグが出るのは問題です!
ですが、開発中はバグを見ながら修正していくので、むしろバグは良いものなのです◎
今回の記事では、バグが出た時にどう対処していくのか、現役のプログラマーのノウハウを余すことなく書いていこうと思います。
今後の学習や、仕事で活きるテクニックや考え方が満載なので、是非参考にしていただければと思います。
不具合調査をする時は探偵のように
まず結論から言うと、バグ調査をする時には自分は探偵になったと思ってください。
とにかく原因となる可能性を列挙して、容疑者を増やしていきます。
想定する数が多いほど、解決出来る可能性が高まります。
原因となりそうなものを列挙できたら、時間制限をかけて調査をします。
だいたい1つの調査に10分前後が目安です。
ここで解決出来ないかも知れませんが、何となく当たりをつけてください。
「ここは問題なさそうだな」
「あ、ここはもう少し詳しく調査する必要があるかも」
「ここは○○さんも触っていたらか、後で聞いてみようかな」
というように、まるで事情聴取をするように少しずつ調査を進めていきます。
気をつけて欲しいことは、この段階では1つの問題にたくさんの時間は使わないでください。
もしかすると、全く検討違いの場所を調査しているかも知れないからです。
その理由が分かるように、図を使って説明します。
タイムカプセルを早く見つけるには?
学生の時に、タイムカプセルを埋めた経験はありますか?
思い出を箱の中に詰めて、10年後などにまた集まって掘り起こすというやつです。
この作業をバグ調査の例として考えてみましょう!
あなたは、タイムカプセルを掘ろうとしています。
場所は忘れてしまったのですが、10箇所に絞ることができています。
1箇所あたり、10分あれば掘れるほどの深さに埋めたことは覚えています。
図にすると下記のようになります。
※ツールの問題で、0〜9という数字になってます><
今は、「5」にタイムカプセルが埋まっているとします。
1つの場所に10分かけるので、どんなに長くかかっても100分あればタイムカプセルは見つかりますね。
ここでもし、あなたが「たしか9の場所に埋めたはずだ」と勘違いしていたらどうでしょう。
9の場所に、30分も40分も時間を使います。
そして、気づけば100分経ってもまだタイムカプセルは見つからない・・・
調査をしていて、ずっと解決出来ない時は、同じ現象がよく起こっています。
バグの8割はケアレスミス
ここまで読んで、こう言った疑問を持つ方がいるかもしれません。
「10分でバグの原因なんて分かるの?」
確かに、不具合が出ているのだから、それはもう1日2日かかるようなものをイメージするかも知れません。
ですが、僕の経験上、8割以上の不具合はケアレスミスです。
まれにすごく大変なバグがあるのですが、ほとんどはすぐに解決出来ます。
いくつか、実際にあった原因を列挙します。
- ファイルを保存してなかった
- タイプミスをしていた
- 同名の別のファイルを修正していた
- 全角スペースが空いていた
- アップロードするディレクトリが間違えていた
- コピペでミスをしていた
- ダウンロードするバージョンが古かった
- MacではなくWindowsのツールをダウンロードしていた
大体が、気づくと笑ってしまうケアレスミスです。
自分の作業を振り返って、ケアレスミスがないかは確認しましょう。
もしもケアレスミスでなければ、知識不足かもしれないので調べましょう。
正しい使い方が分かれば解決するかも知れません。
これでも分からなければ、先輩エンジニアに質問しましょう。
身近に先輩エンジニアがいなければ、MENTAのようなサービスを活用しましょう◎
15分悩んで分からなければ聞く
ケアレスミスではなく、調査をしてもバグが直らない。
そうなったら質問をしましょう。
目安としては、15分と言われています。
僕の場合は、「全ての可能性を調べてもまだ解決しない時」に質問することにしています。
これは、先程のタイムカプセルの例でいくと
- 掘る穴が間違っていないか
- 別の穴があるのではないか
を先輩エンジニアに確認してもらうために質問します。
違う穴を掘り続けても、時間の無駄になってしまいます。
調査をする時と質問する時。
この2つのバランスをとりながら、学習を進めていきましょう。
まとめ
それではこの記事のまとめです。
今回は、バグが出た時の対処法について解説しました。
まずは、原因となる可能性を列挙します。
そして、1つずつ10分くらいかけて調査します。
ケアレスミスがないかを確認し、分からない事があれば調べます。
それでも分からなければ、先輩エンジニアに相談しましょう。
慣れてくると、エラーメッセージを読んですぐに答えに辿り着けるようになります。
バグが出ても焦らずに対応することで、確実に成長していきます。
一歩ずつプログラミングの道のりを歩んでいきましょう。
今後もプログラミングに役立つ記事を作成していきますので、気に入っていただけた方はブックマークをしていただければ幸いです♪
ここまで読んでいただき、ありがとうございました^^