お知らせ
Qiitaに「プログラミング初心者歓迎!『エラーが出ました。どうすればいいですか?』から卒業するための基本と極意(解説動画付き)」という記事を書きました。
タイトルにあるとおり、今回も解説動画が付いています。
というよりむしろ、解説動画がメインで記事の本文がオマケです。
プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意
最初は動画の内容を丁寧に文章として書き起こしていこうと思ったのですが、あまりにも時間がかかりそうだったので諦め、本文は要点をまとめるだけにしました。
Railsの赤いエラー画面(下図)に遭遇しても右往左往しないように、エラー画面の見方やスタックトレースの読み方、デバッグするときの心構えなど、プログラミング初心者が独学ではなかなか身につけられない「エラー解決のノウハウ」を解説しています。
動画と合わせて読むと学習効果百倍です。
ぜひ動画と合わせて読んでやってください。
この記事を書こうと思ったきっかけ
この記事を書こうと思った直接のきっかけは、Qiita記事にも書いてあるとおり、スタック・オーバーフローで次のような質問を見かけたからです。
Railsで知恵袋のようなBA機能を実装しようと奮闘していますが、アソシエーションに対しての理解ができておらずに、はまっています。
(中略)
ActiveRecord::AssociationTypeMismatch (Comment(#70182053951140) expected, got Fixnum(#15377440)):
app/controllers/best_answers_controller.rb:5:in `best'
ここで、エラーがでるのですが、どうすればいいでしょうか?
よろしくお願いします。
Ruby On Railsで質問に対してのBA機能 - スタック・オーバーフロー
質問者の方は自分でエラーの原因と解決策を見つけられず、「ここで、エラーがでるのですが、どうすればいいでしょうか?」で終わってしまっています。
ただ、スタック・オーバーフローの質問を見ていると、この質問に限らず、昔から「エラーが出ました。どうすればいいですか?」系の質問を非常によく見かけるんですよね。
厳しい言い方をするなら「僕のデバッグ手伝ってください」と言っているに等しい質問が結構多いです。
よっぽど難しいエラーなら話は別ですが、そういった質問の場合、エラーメッセージやスタックトレースを読めばすぐに解決しそうなエラーが大半です。
「僕のデバッグ手伝ってください」系の質問を見ると正直な話、僕は回答者として「いや、それぐらいがんばって自分で解決してよ」と思ってしまいます。
なぜなら、そういった質問は以下のような点で、回答しても自分の頑張りがムダになりやすいからです。
- 質問の内容がそのプログラム固有の問題になりがちなので、他の人が同じ問題に遭遇する可能性が低い(つまり、質問が解決しても質問者以外の人の役に立たない)
- その質問に回答してエラーを解決したとしても、同じ人から「今度はこんなエラーが出ました。どうしたらいいですか?」という質問が繰り返し挙がってくる(自力で問題を解決するスキルが身に付かない)
なので、自分のデバッグは自分自身で解決してもらうのが一番いいと思っています。
(身近にいる人に質問するのは全然アリですが、ネットで不特定多数の人に回答を求めるのはちょっとね、という感じです。)
とはいえ、独学でプログラミングをやっている人だと、「わっ、エラーが出た!わからん!助けて!!」になってしまう理由もわからなくはありません。
プログラミングを始めたばっかりの状態で、こんな英語と記号の羅列で画面を埋め尽くされたら、そりゃ「なんじゃこりゃあ!!」になってしまいますよね。
しかし、「なんじゃこりゃあ!!」とずっと言い続けているようでは、いつまでたっても一人前のプログラマになれません。
そこで独学&初心者プログラマの方も、なんとかして自力でエラーを解決できるようになってもらおう、と思ってこの記事を書くことにしました。(というか、前々からこういう記事を書こうと思っていました)
ちなみに、Q&A系のサイトで質問をするのであれば、「こういうことを実現したいと思っているんですが、どうすればいいでしょうか?」という質問の方が、他の人に役立ちやすい(=同じ疑問を持っている人が多い)と思います。
まとめ
というわけで今回はQiitaに投稿した「プログラミング初心者歓迎!『エラーが出ました。どうすればいいですか?』から卒業するための基本と極意(解説動画付き)」という記事を紹介しました。
基本的にプログラミング初心者向けの記事ですが、中級者以上の方でも「へ~、知らなかった」と思うようなテクニックや考え方が載っているかもしれません。
みなさん、ぜひ動画と合わせてご覧くださいませ~。