自分は地道にデバッグするの好きなんだけど、少数派なのかもしれないと思ってきた。アプリが動作しないと設定を初期化したりすぐ(Nodeとか)バージョンアップしようとする人が意外と多い。
— もふもふ (@froakie0021) 2022年5月27日
これは新卒のときの自分もそうだったやつ↓
あとコードが動かないときにあれこれ書き換えたりするとか、すぐデバッガーを開くとかありがち。それよりもまず正常系の動きと現状の差分を比較して「どこに」原因がありそうか突き止める方が解決も早いと思う。
— もふもふ (@froakie0021) 2022年5月27日
デバッグするとき初めに考えること
- 100%再現する手順はあるか
- 正常系(やりたい/やってほしい)処理はどのような内容なのか
- 目の前の状態は正常系とどのくらい離れているのか = 今何がどこまでできているのか
- どの処理(設定 etc...)でエラーになったのか
- スタックトレース または エラーログの エラー行番号 を読む
- エラー行番号の処理内容を把握し、正常系通りになっているか
このあたりが整理できた後、初めてデバッグツールなどで流れを追いかける。闇雲に何か変えてみるとうまくいっていない状態が再現できない。そうすると「なんか変えたら直った」となりやすい。根本解決していないので問題は再発しやすい。
デバッグするときやめた方が良いこと
- まずスタックトレースを開く /
console
デバッグする- あるべき姿を把握していない状態でデータフローを追っても得るものは少ない
- バージョンアップしてみる
- 特に
Node.js
のバージョンアップとかやりがち - さらに依存関係が絡まって複雑になる。大体のバグはバージョン関係ないのでやめた方が良い
- 特に
- とりあえず削除して再登録してみる
- コンピューターは設定した通りにしか動作しない
- エラー文で検索する
- フレームワークのエラー文が出ている場合、誰が悪いのか突き止めづらい
新卒のとき「基盤は設定した通りにしか動かない。エラーを読んで設定を見直せ」というのをすごく指導されたので、そういう経験の差があるのかもしれない。
— もふもふ (@froakie0021) 2022年5月27日
アプリケーションも同じで、書いた通りにしか動かない。闇雲に対応するのではなく、まずは理想と現実の差分を出して理解しろ、という話だった。良い指導に恵まれたと思う。あとミドルウェア設定が最初の仕事だったのもラッキーだった。
デバッグ方法について語る会とかないのかな?システム開発に関わる人全員に知見が溜まってそうなものと思うんだけどな。
— もふもふ (@froakie0021) 2022年5月27日
特に初学者とかに役立ちそうなもんだけどな。