詰んだ時の解決法
📆04/21/2021🔖 開発
詰んだ時の解決方法
1.現状を正しく把握する
デバッグやログを元にしっかり現状を把握します。
railsの場合
binding.pry
rails c
ログの確認
tail -f log/development.log
logger
http://qiita.com/chocoken517/items/88ce05f546048a60780c
binding.pryはコードの特定箇所で止めていろいろ確認したい時、
loggerは例えばaction全体の中のどこで問題発生してるかわからない時とかに、いちいちbinding.pryで止めまくってるとしんどいのでloggerで確認したりします。
JSの場合
http://qiita.com/snoguchi/items/8f6bb62a3166eca23ac3
・その他
debuggerも便利
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/debugger
reactの場合
React Developer Toolは必須です。
JS、HTML,CSS
https://developer.mozilla.org
ここに公式の情報がいろいろ載ってます。
現状把握が大切なことくらいわかっているはずなのですが、「こうに違いない」という思い込みで見当違いな解決方法を繰り返してしまうことは非常に良くあります。
2.闇雲にたくさんの解決策を打たない
1の現状把握と被るが、作業量ではなく、思考量が重要だという話です。
集中力が100%だと落ち着いて的確な解決策が打てるが、70%くらいの集中力の時だと、なんとなく思いついた解決策をなんとなく実施してしまう(コードを書いてしまう)ことがあります。それを3,4回繰り返していくと、何が何かわからなくなり、集中力も20%くらいになって何も進まなくなったりします。
そこそこ難易度の高い問題の場合、なんとなくで行った施策で問題が解決することはほとんどありません。宝くじを当てるようなものです。
まずは落ち着いて、そもそも問題の原因を考えたり、現状をもっとしっかりと把握したり、解決策(アイデア)をブレストしてみたりすると、何時間もかかった問題が5分で終わった、ということもザラにあります。
3.比較する
実際に動いている具体的なコードを見つけてきて、それを現状のコードを比較します。
プロセスを細分化して、それぞれで動いてるコードとの差は何か?を考えます。
プログラミングに限らず、比較の威力は強力です。
4.英語でググる
謎のエラーが出た場合は、ググり尽くすのが早いと思います。
英語でググると基本的には情報が出てきます。
もちろん、変なエラーが出るから別の解決策で目的を達成する、とかでも可能です。
5.全体像をしっかりと理解する、整理する
取り組むタスクが自分にとってそこそこ複雑だと思うなら、全体像をしっかりと把握します。
その後文字に起こして整理して、各実装でやり方を調べたり勉強したりして、一つ一つクリアしていけばいい。
6.具体と抽象の行き来を意識する
↑抽象的
・そもそもこの機能によって達成したい目的は?
・この機能の仕様、満たすべき要件は?
・この機能の全体像は?細分化するとどうなる?今どこをやってる?
・今触ってる部分は一般化するとrailsのactiverecordだからそこを勉強しよう
・このコード群は意味合いとしては同じなので一つの関数にまとめよう。
・このファイルの53行目でこのオブジェクトの状態はどうなってるのか?
↓具体的
自然にやっているようなことではあるが、意識的にやると解決に結びつくこともある。
7.長い時間詰まった状態で作業を続けない
夜遅くまでやっても解決しなかった問題が朝5分で解決した、なんてこともあります。
それくらい集中力によって生産性が左右されるので、詰まりすぎてつらい時は別の簡単なタスクを進めたり、寝て次の日の朝に続きをやったりしましょう。