Rso's Jotter

日々の開発の知見のメモやその他雑記

プログラミング初学者に伝えたい汎用的なデバッグ技法

プログラミング初学者はその知識量が少ないために、様々なところで躓きます。

訳のわからないエラーメッセージに遭遇し、ネットで調べてもさっぱり分からずに途方に暮れてしまいます。そして試行錯誤するも進んでいるの更に悪化してるのかも分からずに、ストレスがたまります。誰しもこのような経験を乗り越えて詳しくなって行くと思いますが、とりわけ初学者は原因の分からない問題に対処するノウハウが蓄積されていないのが、躓きの原因かと思います。

そこで、時間はかかりますが、原因が全く分からない問題に対処していける一つの手法を紹介します。

 ここで取り上げるケースは、以下の前提に基づきます。

  • トラブルの原因箇所は1つだけとするが原因は全く不明
  • 同じコードであればいつ実行しても同じ結果を返すとする(実行タイミングによる結果の変動はない)
  • 開発中のプロダクトを想定し、短期間で何度でも実行できる。
  • フロントエンド、バックエンド、プログラミング言語などは問わない

 

オススメのデバッグ方法

以下の3ステップです。

  1. 動く状態、またはHelloworldなど自分が理解できる動く小さなコードまで戻る
  2. そこから少しづつコード変更を加えていき、動いていた最終の状態と、動かなくなった最小の変更が何かを知る。
  3. 「動いていたこの最終の状態から、この変更を加えたら動かなくなりました。」と、先輩や詳しい人に聞いて助言を求める。  

動く状態まで戻る。これが全てなのですが、まずは自分の期待通りに動かせる最小、または最初の状態に戻ります。

リポジトリで管理していれば、最後に動作したコードにチェックアウトするがよいです。新しいライブラリやフレームワークを試しているのであれば、それが動作する最小のHelloWorldコードを実行するところまで戻ります。意外に気づくことがあるのですが、最小の動くコードに戻したと思ったらまだ対象のエラーに遭遇していて、エラーの箇所が調べていたところと全然異なっていたということもあります。

想定どおりに動かせる(コントロールできる)ところまで戻ることで精神的な余裕も生まれます。

この方法は限定した状況でのみ使える地味な方法ですが、確実に一歩一歩すすめますので、お試しください。