Posted at

プログラミングにおけるエラー解決のための考え方(入門編)

More than 3 years have passed since last update.

みなさんがプログラミングをしていて何らかの問題(エラー)にぶつかることはよくあることと思います。

そんな時はどういうプロセスで問題解決に勤めれば良いのかを紹介していきます。


考え方

問題(エラー)を解決するうえではロジカルシンキングで定番の「空・雨・傘」という考え方を使うと便利です。


空・雨・傘とは

ここでの空・雨・傘の意味は以下になります

空 → Fact(事実)に基づく状況把握

雨 → その状況に対する自分なりの解釈

傘 → その状況から導き出される行動

あなたが外出する日の朝に空模様を見たとしましょう。

すると、

「西の空が暗く、雲行きも怪しかった。」

これがFact(事実)に基づく状況の把握です。
そこで、あなたはこう考えると思います。

「ひと雨来そうだ」

これは、空模様という状況からあなたが導き出した解釈です。
そして、あなたは次にこう考えるでしょう。

「傘を持って出かけたほうが良さそうだ」

これは解釈に基いてあなたが選択した行動です。

私たちはいろいろなシチュエーションで無意識にこの状況把握(空)・解釈(雨)・行動(傘)という考え方をしているはずです。


プログラミングにおける「空・雨・傘」

次にエンジニアが直面する「空・雨・傘」について考えます。

空 → 自分で書いたプログラムを実行したがエラーが出力されて上手く動かない。。。

雨 → このエラーが出力されたってことはこの部分が間違ってそうだ!

傘 → 間違っていそうな部分の文法をもう一度確認しよう。

これがエラーに直面した時の正しいエラー解決のプロセスです。

しかし、初心者のエンジニアがエラーに直面した時には以下のパターンの様に考えることがほとんどです。

症状
  空  
  雨  
  傘  

症状1:「空」のみ

×
×

症状2:「空・雨」止まり


×

症状3:「空・傘」短絡

×

症状1

空 → 「E_ERROR / Fatal」というエラーが出ています!!

雨 → ×

傘 → ×

A君「こんなエラーが出てますが何も分からないので誰か解決してください!」

プログラミングを始めたばかりの頃はほとんどの人が症状1に当てはまりますが、始めたばかりで本当に何も分からいので多めに見て上司などがが正解を教えてくれるでしょう。

しかし、いつまでもこの考え方では全く成長しません。

症状2

空 → 「Missing Database Table」ってエラーが出ました。

雨 → データベースへの接続を行っている記述が間違ってるんじゃないかな?

傘 → ×

A君「データベースへの接続を行っている記述が間違ってると思うのですがどうしたいいですか?」

エラーの意味を読み取って何が原因でどうすれば解決できそうなのかまでは分かっているものの、具体的な解決方法が分からない。

初心者から抜け出すには自分でコードを修正してみる(傘)という行動を積み重ねるしかありません。

症状3

空 → 「500 InternalServerError」ってエラーが出ました。

雨 → ×

傘 → とりあえず怪しそうな箇所を書き直す。

A君「エラーが出たので原因っぽいところを書き直しておきましたー」

何も考えずにとりあえずやってみるタイプです。

やってみるということは必要なのですが、この場合具体的にどこをどう修正するかは自分の直感と経験により決定されます。

プログラミング歴10年ですみたいな熟練者はこの方法でも上手くいくと思うのですが、経験の少ない初心者には向かない考え方です。


正しい考え方


空 → 「500 InternalServerError」ってエラーが出ました。

雨 → このエラーはどうやら「.htaccess」の設定を間違えてる時に出てくるみたいだ。

傘 → 「.htaccess」の設定のし方を調べなおしてから修正しよう。

正しい考え方は原因に対して自分なりの仮設を立ててその実行方法を考えます。

ここまでやって分からなかったらしょうがないです。

分かる人に聞いてみましょう。


まとめ

今回紹介した「空・雨・傘」の考え方は繰り返し使うことによって自分の中に経験・ノウハウが溜まっていきます。

初めのうちはこの考え方を使っても解決出来ないことが多いと思いますが使い続けることがあなたの成長スピードを早めるので、諦めずにまずは「空・雨・傘」の考え方で問題(エラー)解決にあたってみてください。