【全く動かない】プログラミングで躓いた時にやるべきこと【ダメな時はダメ】
プログラミングをやっていると何をしても全く動かなくなることが多々あります。
本当に動かない時はどうしたらいいのか分からなくなりがちですよね。
僕の今までの経験上、丸一日その調査に時間を取られてしまうことがざらにあります。
スケジュールが押してるときほど焦りもあり大変な思いをします。
そういったプログラミングで躓いた時にするとよい解決策を今回は紹介します。
プログラムが動かないケースごとに詳細な対応策は異なります。
今回の話では細かいところまでは触れないので、全般的に言える対応策をお話いたします。
プログラミングで躓いた時にやるべきこと
プログラムの中身を解析する
まずはなぜ動かないのかを判断するようにします。
「ライブラリ系のバグや標準仕様」か「自作部分のバグ」かを切り分けられるといいです。
「ライブラリ系のバグや標準仕様」で動いていなさそうであれば、次の「Googleで対処方法を検索」を確認していけば大丈夫です。
「自作部分のバグ」であれば、経験則が生きてくる部分になるのでGoogle検索では見つけづらいかもしれません。
一つずつ確認していき問題箇所を明確にすることが大切です。
Googleで対処方法を検索
一先ず動かない事象やエラー内容で検索するようにしましょう。
割と有名な事象であれば、参考サイトが出てきます。
全く検索にヒットしない場合は、公式リファレンスやGithubの公式リポジトリを確認するようにします。
リファレンス系はどうしても専門用語が多くなり分かりにくくなっているので避けがちですが、重要な記載があったりします。
使用しているライブラリ等がGithubに公開されていれば、バグ関連が取り上げられているIssueのページを確認してみるといいかもしれません。
大抵英語なので僕みたいに日本語しかできない人には難しいのですが、頼みの綱がここにしかないこともざらにあります。
翻訳サイトを使ってうまいこと理解するようにしましょう。
気分転換に散歩をする
ロジック関連で悩んでいるのであれば、一度気分転換を挟むと思いがけない方法が閃くときがあります。
僕の場合は散歩をすることで頭の中を一度リセットするようにしています。
時間に追われているときこそ一度立ち止まることをお勧めします。
プログラミングをしていると先の方まで考えて記述するので、一度こうだと思ったら他のことが見えづらくなりやすいです。
一度気分転換でリセットを行うと別の視点でも見れるようになるはずです。
ちなみにライブラリ等のバグでどうしようもないのであればこのステップはあまり意味がないかもしれません。
誰かに相談する
会社であれば上司に相談しましょう。
その際はなぜ動かないのかを説明できるといいです。
ライブラリ等のバグや仕様関連であればリファレンス系をロジックで詰まっている場合はどのロジックができていないのかをまとめておきます。
場合によっては作り方を変えた方が良いね。という話しにもなるので一人で悩み続けないことが大切です。
個人で開発をしている場合は質問掲示板などに投稿をし有識者に確認をするようにします。
場合によっては「ココナラ」のような仕事を依頼できるサービスでバグの改善を一緒にやってくれる人もいます。
一人で分からなければ誰かに確認するようにしましょう。
プログラミングで躓いた時にやってはいけないこと
一人で長時間考えこむ
分からないものを一人で考えこんでも、なかなか進まないです。
大体1時間ぐらいが目安かと思います。
解決方法に自分で辿り着くことも勉強になるので時間に余裕があれば2~3時間ほど取ってもいいかもしれません。
そこまでに解決できなければ相当厄介な話であることは間違いないので、上司や有識者に相談するようにしましょう。
力技で解決しようとする
ロジックが難しいから力技で対応する。
ライブラリが変な値を戻してくるから強制的に置換して利用する。
このような対応をした場合のメリットがあまりないです。
後からソースを読む際にも特殊な動きでよく分からなくなりますし、修正する際には似たような直しが大量に発生し検証も大変になることがあります。
考え抜いた結果どうしても無理という場合は仕方ないですが、初めから力技で解決しようとするのはよい判断ではありません。
見なかったことにする
一番楽だけどやってはいけないこと1位の対応が見なかったことにするです。
検証工程で見つかればいいですが、案外素通りしてしまうことも多々あります。
そのままユーザーに届いてしまうと、後々大問題につながりかねません。
不具合があるならば、その時にきちんと報告するようにしましょう。
まとめ
今回はプログラミングで躓いた時にやるべきことでした。
プログラムでバグが発生したりすると解決に時間がかかるものもあり大変です。
経験を積んでくると対応の切り分けや対応策がつらつら出てくるようになるのですが、始めたばかりの頃は大変ですよね。