2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「開発エラー時のデバッグフロー」と「煮詰まったときの対処法」についてまとめてみた。

Last updated at Posted at 2019-02-05

前置き

「そもそもどうやってデバッグすればいいの」という質問に答えるために、自身がデバッグしているときの思考やフローを的まとめて見ました。
煮詰まったときの対処法もまとめてます。
※ webアプリケーションを想定してます。

#【開発エラー時 対処フロー】

  • 原因が直感的(経験的)にわかるとき => そのまま修正
  • 直感的にわからないとき
    • エラーメッセージが表示されているとき
      • エラーメッセージをよく読んで意味を理解する
      • 理解できない場合はググって理解する
      • 必要とあれば、書き方があっているかをドキュメントなどを見て確認する。
      • 上記でわかれば、修正。できなければ、下に進む
    • エラーメッセージ出ないエラー(ex. 画面に想定のものが表示されない等) or エラーメッセージの発生原因を探る必要があるとき
      • ブレークポイントを張る or プリントデバック
        • 予期せぬデータが入っている場所、原因となっている場所を特定する
      • コード差分から原因の推定を行う
      • 正常に動作する入力と、異常動作してしまう入力の差分を見つける
      • 必要とあれば、書き方があっているかをドキュメントなどを見て確認する
      • XX分(ex. 10分)かけてもわからないときは、一度冷静になって別の視点で探す ※ 煮詰まったときは 参照
      • YY分(ex. 20分)かけてもわからないときは、周りの人に相談する
        • 相談の際は、「現在行おうとしていること」「現状起こっている問題(エラー)」「現状の状態・変更点(コード)」「調査でわかっていること(わからないこと)」 を簡単に伝える。 (※基本的には対話で伝わっていくので、整理にめちゃめちゃ時間掛ける必要はなし)

煮詰まったときは

煮詰まったときに意識したいこと - そもそもなぜ煮詰まるのか

基本的に煮詰まったときは、原因は大きく分けて2つ。
本質的に難しい課題を解いてているか、もしくは、課題設定が間違っているか
前者は、例えば、既存アルゴリズムの高速化や、大規模設計など。
後者は、例えば、自身がエラーと推定している部分以外の部分がエラーに関係しているなどの場合。

特に後者の場合は、難しくない問題を自身で難しくしてしまっている場合がある。(というか経験的には殆ど後者)
バグがなかなか解決しない場合、自身が後者の罠にハマっていないか、意識する。

下記の手法が「煮詰まり」には有効なことが多い。

煮詰まったときに手助けとなる手法

  • ラバーダッキング = 問題点をテディベアに話してみる
    参: http://www.aoky.net/articles/john_graham_cumming/talking_to_porgy.htm

  • コード差分を考える。(動くところまで戻る)

  • 二分探索法: コードを半分コメントアウトしてバグが起こるかを繰り返し試す

  • 一回寝て(時間をおいて)リセットする!

  • 人に相談する

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?