最初に
僕はエラーが凄く嫌いです。僕はまだまだ初心者レベルですが、自分の中で一生懸命作ったものに、エラーが出たときの絶望感は計り知れません。ですが、エラーはコードを書いていく上では絶対に避けては通れない道です。腹を括ってエラーと向き合ったら、少し前向きに取り組むようにできてきましたので、まだ初心者である自分がどこに気をつけたかをまとめました。
エラーと向き合うことの重要性について
エラーの見方として大事なことは、エラーの種類、エラーの詳細、エラーの発生場所です。これが一番大事であると取り組む内に思いました。僕は最初はエラーの種類だけしか見ていませんでした。
なぜなら、エラーの画面は英語ばかりで理解するのが嫌だったからです。ですが、エラーの種類だけを見て検索して色々見ますが、何が自分のものに適応できるかと言いうのがわからなくなって、どんどん調べていって試すけれど、解決しないでやる気が減少していきます。
やっと自分のものと合うものを見つけてもすぐにエラーが起きてやる気が無くなっていって、パソコンの前に座ることが減っていきました。またパソコンの前に座ろうとするけれどまたエラーでわからないことがあることを思うと気が重くなります。やめていく大半の人はこのように辞めていく方が多いのではないかと思います。僕も何度か諦めたことがあります。
エラーについてちゃんと理解するように努めたら、わからないことがわからないという無駄な時間が減り、調べている時にみるべき場所がしっかりしていきました。
エラー解決のためにまずやるべきこと
エラーが出たときに大事なことはエラー画面をしっかりみることです。経験を積んでいる方は当たり前のことだと思いますが、初心者はまずなんで起きたのか知る必要があると思います。
見るべき場所はエラーの種類、エラーの詳細、エラーが起きた場所です。
例えば車両事故が起きたときに、事故の種類は人身事故なのか物損事故なのか、事故の詳細は脇見運転なのか居眠り運転なのか持病が悪化したのか、事故の発生場所は東京であればどこなのかどこの交差点なのかどこの道路なのかなどがなど事故の詳細を知る必要があります。そうしないと、また同じようなことが起きたときに同じミスをするからです。
-
エラーの種類
エラーの種類は、一番上にある太文字で書いてあることです。TypeError
とかNameError
とかです。エラーの型を教えてくれます。ここはよく見て、ここからキーワード検索して調べていく方が多いと思います。 -
エラーの詳細
エラーの詳細は、エラーの種類のすぐ下にある文章です。TypeErrorのすぐ下に文章が書かれていますが、ここにどんなエラーが起きたのか教えてくれます。Google翻訳をかけると大体理解できます。この時に気をつけるべきことは翻訳をかけるとそのままの意味で翻訳することがあります。例えばindex() missing 1 required positional argument
というエラーの詳細が実際にありました。これをそのままGoogle翻訳にかけるとindex()に必要な位置引数が1つありません
となります。ですがpositional argument
は調べるとキーワード引数と出てきます。index()に必要なキーワード引数が1つありません`と理解がしやすくなったと思います。このようにプログラミング用語もあるかもしれないのでワードに関しても調べていくとスムーズに理解が進むとおもいます。 -
エラーの発生場所
そして最後にエラー発生場所については、ルーティングを理解しどこでエラーが出ているのか把握することが大事です。
ここの時に重要なことがルーティング(HTTPリクエストがあったときにどのようにしてHTTPレスポンスを返しているのか)を、そのフレームワークごとに知る必要があります。僕はDjangoしか勉強していないので他のフレームワークがどう違うのか知りません。
そして何となくチュートリアルだけをしているとここが抜け落ちやすいと思います。僕も実際そうでした。クラスとかインスタンスとか勉強するのにフレームワークの勉強をちゃんとしていませんでした。
チュートリアルをする前にルーティングについて調べて、図を紙に書くか、タブに置いてすぐに見れるようにすると良いと思います。
僕はすぐに忘れてしまうので、紙にこの三つの事項を書いてから調べるようにしています。紙に書くだけで頭の中が整理しますし、わからないことが多く枝葉のように色々と調べていっても紙に書いてあると目的を見失うことがなくなるからです。
キーワード検索する
これらの背景を基にネットで調べます。3つの事項をしっかり頭に入れるだけで、キーワード検索をかけるときに違いますし、記事を読んでいるときの見方も変わります。
質問する
これらを調べて知識をつけて、エラーが解決するときもありますが、解決しないときもあります。そうした場合は質問サイトで質問してみるといいと思います。質問文を書いているときに客観的になるので、意外とこういう時に解決することもあります。
どうしてもわからない時は明日にする
わからない時は分かりません。自分の固定観念に囚われていることもあるからです。そしたら、その日はやめて違うことをする。例えば、初心者であれば就職したいと思う方もいると思うので、ブログに自分の記事を書いて、少しでも就職に有利なように動くとか、気分をリフレッシュさせるために散歩などしてみたり、もう寝てみたりしてみるといいかと思います。明日もう一度見ると意外とすんなりエラーが解決することもあります。
それでもわからないものは出てくる
自分でできる限りやっていてもわからないときはお金はかかりますが、質問に答えてくれるオンライン家庭教師などで単発で依頼することも一つの解決策だと思います。
最後に
以上で自分が現在エラーに対して取り組むようにしていることです。上記のことを意識することでエラーに対して少し強くなれたと思います。そしてコードを書くようになってから強く思うようになったのは、思い込みがエラー解決の道を大きく阻むということです。プログラミングを始めて自分は思い込みが強いということを自覚できたことは、プログラミングだけでなく私生活でも役立てていきたい思いました。