プログラムがうまく動かないときの問題解決の考え方

プログラムが想定通りに動かない、環境構築したのにうまく動作しないなど、システムを作る過程ではさまざまな問題に直面します。

そういった問題をいかに早く・適切に解消できるかが、エンジニアの腕の見せ所ですが、問題解決にあたって共通で使える考え方があるのでご紹介します。

問題を切り分けることが重要

うまく動かないことが分かったら、次はどこでうまく動かないのかを知ることが非常に重要です。

あてずっぽうで試行錯誤しても時間を浪費するだけです。

例えば、A->B->C->Dと言う処理をするプログラムを書いて、うまく動かなかったとします。

この時に、どこまではうまくいっているのかを知る必要があります。

各処理(A,B,C,D)の間にデバッグコードを入れるのも良いでしょう。

Cまでうまくいっているのであれば、あとはDだけ見れば良いのです。

これは、プログラムを書く時に限りません。

システム全体の問題をみるときも同じです。

  • ブラウザからリクエスト送る->
  • サーバーサイドでリクエストを受け取る->
  • DBにアクセスして情報を取得する->
  • サーバーサイドでレスポンスを作成する->
  • レスポンスをブラウザに返す

というような基本的なシステムの処理の流れを頭に置き、ネットワークの問題なのか、DBアクセス時の問題なのかなどを切り分けます。

問題が発生した際は、まずはどこがボトルネックになっているのかを調査することがとても大切です。