プログラミング初心者はエラー解決でこんな間違いをしていませんか?

21, 2019-07-01

目次

プログラミングのエラーに遭遇したらまずは自力で解決しよう

こんにちは、narupoです。

プログラミング初心者の方がプログラミングでエラーに遭遇したらどうすればいいのか?
この記事で解説していきたいと思います。


まず言えるのは、プログラミング初心者の方には以下の選択肢があるということです。

  • 自力でエラーを解決する

  • 質問サイトで聞く

長期的に見た場合、経験値を稼げるのは「自力でエラーを解決する」方法です。
質問サイトは基本的には最後の手段です。

先に自力でエラーを解決せずに、いきなり質問サイトに頼るのは間違いです。

この記事では自力でエラーを解決することの意味とその方法をメインに解説していきます。

最初に自力でエラーを解決したほうがいい理由

自力1

プログラミングを長く続ける場合、以下の二通りの生き方があります。

  • なるべく自力でエラーを解決する生き方

  • すぐに他人に聞いてエラーを解決する生き方

この生き方で、将来的に得をするのは前者、つまり

なるべく自分で解決する生き方です。

それはなぜでしょうか?

エラーの解決力が身に付く

まず、出来るだけ自分でエラーを解決するようにすると、エラーの解決力が見についていきます。

たとえ、自力でエラーを解決できなくて、結果的に他人に聞いたとしても、自力で解決しようとした経験は生きるのです。

プログラミングを長く続ける場合、例えば数年とか数十年続ける場合、自力で解決しようとするクセがある人はとても成長します

そういった人は結果的には、質問サイトで質問に答える側にもなれるでしょう。
自力でエラーを解決できるということが資産になり、そういった質問サイトでも活躍できるようになるということです。


しかし、最初から自分で考えず、すぐに他人に聞いてしまうとこの解決力が身に付いていきません。

ですので、例えエラーの内容がわからなくても、自分でエラーを解決しようとする姿勢が大事になってきます。

質問サイトに依存してしまう

質問サイトなどで他人にエラーを聞いていると、その内なんでもかんでも質問するようになります。
たとえ簡単なエラーでも質問してしまうクセが出来てしまいます。

そうなると、もはやその人のエラーの解決力は下がる一方です。
(代わりに、質問の仕方は上達します)

かく言う筆者も、質問サイトの誘惑に負けてろくに自分で考えず人に聞いてしまうことはたまにあります
しかし、それはエラー解決による成長の機会を逃していると言えるでしょう。

さらに言うと、質問することをぐっとこらえて少し自分で考えてみると、案外すぐに解決法が見つかるものです。
これはあるあるですね。

質問しようと質問文をまとめている内に自分で考えがひらめくこともあります。


質問サイトに依存してしまうと、プログラミングが質問サイト依存になり、つまらないものになってしまいます。
そうならないようにも、出来るだけ自分で解決するクセを身に付けましょう。

具体的なエラー解決方法

それでは具体的なエラーの解決方法を見ていきたいと思います。

まず最初に必要になるのがエラーメッセージの解読です。

エラーメッセージの解読

エラーメッセージの解読

プログラミングでエラーが出たときに、まず最初にやるのがエラーメッセージの解読です。

エラーメッセージとは、プログラムがうまく行かなかったときに、プログラムから開発者に表示するメッセージのことです。

「なんかエラー出たよ」
「君のコードなんか変だよ」

プログラムが言っているわけですね。

このエラーメッセージにはプログラムがなぜうまく行かないのかとか、どこの文法が間違っているのかとかの理由が書かれています。


例えばPython(パイソン)のプログラムのエラーを見てみましょう。

$ python sample.py
Traceback (most recent call last):
  File "sample.py", line 1, in <module>
    call_me()
NameError: name 'call_me' is not defined

このエラーはプログラムのsample.pyを実行したときに表示されました。

エラーメッセージが苦手な人はこれだけで拒否反応が出るかもしれませんね。

私も初心者の頃はエラーメッセージを見るのがいやでした ( v_v )ホントニ


このエラーメッセージを解読するにはどうすればいいか?

実はエラーメッセージには急所というものがあります。

エラーメッセージの急所を見極める!

Traceback (most recent call last):
  File "sample.py", line 1, in <module>
    call_me()
NameError: name 'call_me' is not defined

先ほどのPythonのエラーメッセージですが、実はこのエラーメッセージのほとんどはおまけの情報です。

おまけの情報はPythonが親切心で付けてくれた情報で、この情報は無視してもかまいません。
処理系によっては何十行もおまけの情報を付けてくるときもあります。

このエラーメッセージからおまけの情報を取りのぞいてみましょう。

File "sample.py", line 1
name 'call_me' is not defined

だいぶすっきりしましたね。

このエラーメッセージを読めば

「ああ、sample.pyの一行目でcall_meが定義されていないんだな」

ということがわかると思います。
もっとも英語を読めればの話ですが。

実は開発者でも英語が読めない人は意外と多いものです。
そういうときはGoogle翻訳などにエラーメッセージを張り付けて日本語にしちゃいましょう。
私もよく利用しています。


このようにエラーメッセージには急所があります。

急所の部分は、だいたい変化が多い部分です。
つまり、エラーごとに文章が変わるところがそのエラーメッセージの急所です。

先ほどの例では「name 'call_me' is not defined」の部分がエラーごとのメッセージですね。

以上のように、エラーメッセージの急所を見極めるようにしましょう。

エラーメッセージをググる

Google検索 1

次にエラーメッセージをGoogleで検索するやり方です。

さきほどの例でエラーメッセージの急所の押さえ方がわかったと思います。

あとはその急所のメッセージをググればいいのです。


ためしに「name 'call_me' is not defined」でGoogle検索してみましょう。

するとこのエラーメッセージを解説しているサイトが複数ヒットしました。

あとはこの解説サイトを見るだけですが、ここで注意があります。


解決サイトは複数見るようにしましょう。


なぜかというと、解決サイトにも相性があるのです。
開発者と相性がいい解説をしているサイトであればエラーの理解がよく進みます

いっぽう、相性のわるい解説サイトだと理解があまり進まないものです。

効率のいいググり方とは?

さきほどは「name 'call_me' is not defined」でGoogle検索してみましたが、実はこれはあまり良いググり方ではありません。


もっと効率の良いググり方はこうです。

まず最初にエラーという言葉を検索ワードの先頭に加えます。

「エラー name 'call_me' is not defined」


次に処理系の名前を加えます。
今回の例ではPythonですね。

「エラー Python name 'call_me' is not defined」


次に一般的でない名称を消します。
今回の例では「call_me」という自作関数が一般的でないので、これを消します。
するとこうなります。

「エラー Python name is not defined」


これで検索ワードが完成したのでGoogle検索で再度ググってみましょう。


それぞれの検索結果を比較してみます。

  • 「name 'call_me' is not defined」 ... 263,000,000件

  • 「エラー Python name is not defined」 ... 89,700 件

あとの方が検索結果が少なくなってますね。
これは英語のページが除かれたのと、さらに検索結果がPythonのエラーに絞られた結果と言えます。

より具体的な検索になっているということですね。


英語ページも表示したい場合は次のようにします。

「error Python name is not defined」

「エラー」が「error」になっただけですが、これで英語のページも表示されるようになりました。


検索結果を比較してみましょう。

  • 「name 'call_me' is not defined」 ... 263,000,000件

  • 「エラー Python name is not defined」 ... 89,700 件

  • 「error Python name is not defined」 ... 82,800,000 件

比較してみると、日本語の「エラー」では検索結果が他より少ないことがわかります。
英語のページが除かれているので当然と言えますね。


日本語の解説が見つからない場合は、このように英語のページも探すようにすると良いです。
ほとんどのエラーは日本語のページでこと足りることが多いです。

最終手段! 質問サイトで聞く

F&Q 1

自力でエラーを解決しようとして、それでもだめだった場合。


そうなったら最終手段、質問サイトで聞きましょう。


以下が有名な質問サイトです。


質問サイトでは雑な質問には回答が付きにくくなります。

ではどんな質問が好まれるのでしょうか?

どんな質問が好まれるか?

具体性のある質問だと回答が付く確率が高まります。

逆に、回答者から見て情報が不足していたりすると、回答が付きにくくなります。

また、プログラムの実行環境を書くのも大事です。

例を見てみましょう。

残念な質問例

Pythonで関数を書いたらエラーが出てしまいました。だれか助けてください。

この質問にはなんの具体性もありません
つまり、

  • どんなエラーか書いてない

ということです。
エラーの内容、つまりエラーメッセージをちゃんと書きましょう

良い質問例

さっきの質問を直すとこんな感じになります。

Pythonでプログラミングをしている初心者です。
sample.pyでcall_me関数を呼び出したら、エラーが出てしまいました。
このエラーがどういう意味なのかわかりません。
どなたか教えてください。よろしくお願いします。

Traceback (most recent call last):
File "sample.py", line 1, in
call_me()
NameError: name 'call_me' is not defined

さきほどの質問と比べ、具体性があり、エラーメッセージも書かれています。
ここまで書くと回答者は回答しやすくなってきます。


さらに実行環境も付け加えるとなお良いでしょう。

Pythonでプログラミングをしている初心者です。
sample.pyでcall_me関数を呼び出したら、エラーが出てしまいました。
このエラーがどういう意味なのかわかりません。
どなたか教えてください。よろしくお願いします。

Traceback (most recent call last):
File "sample.py", line 1, in
call_me()
NameError: name 'call_me' is not defined

実行環境
OS: Windows10
Python: バージョン3.7

エラーの解決はプログラミングの一部

ラップトップの前で頭を抱える男性 1

デバッグもそうですが、エラーの解決もプログラミングではよく行われることです。
それこそ、毎日のことと言ってもいいでしょう。

つまり、それらはプログラミングの一部か、もしくは大部分を占めると言ってもいいかもしれません。

そんなエラー解決は初心者の内はつらいものですが(私はつらかったです)、慣れるとわりと平気です。

エラー解決と向き合ってエラー解決にさっさと慣れてしまえば、さらにプログラミングが楽しくなると言っていいでしょう。

エラーを解決して、皆さんも良いプログラミング・ライフを送ってください。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク