プログラミングでハマったときの対処方法

プログラミングでハマったときの対処方法

プログラミングを勉強している人は、必ずハマってしまうことがあると思います。ハマるというのは、没頭するという意味ではなく(それもいいですけどね)、エラーが解消できないという意味で使われます。

プログラミングのスキルレベルを決めるのは知識ではなく、このハマった状態からいかに早く抜け出せるかというくらい、ハマってしまうというのは厄介な存在なのです。

今ハマっているエラーを解消してあげることはできないのですが、今まで僕なりに実践してきた、ハマったときの対処方法をお伝えすることならできます。エラーが解消できずにプログラミングをやめたいと思ってしまっている人は、もう少しだけ頑張ってみましょう。

まずはGoogle検索

エラーが出たら、エラー文をGoogle検索しましょう。日本語情報ならQiita、英語情報なら、stack over flowがおすすめです。というか、たいていの検索では、この2サイトが上位に出てきます。

初心者が引っかかるエラーだと、おそらくGoogle検索だけで解決することがほとんどだと思います。

公式ドキュメントも有効

Qiitaやstack over flowに載っている情報は、バージョンが古かったりして使えない場合があります。その時は、公式ドキュメントを参考にしましょう。

公式ドキュメントなら、最新の情報が載っていますし、一番正確です。1つ難点なのが、読みにくいことです。PHPのLaravelのドキュメントはとても読みやすいのですが、Ruby on Railsの公式ドキュメントはごちゃごちゃしています。

もう一度コードを読み返す

Google検索でも出てこないエラーというのは基本的にはないのですが、どうしても欲しい情報が見つからない場合、コードをもう一度読み返してみましょう。

単なるタイポ(誤字)の可能性があります。まじで結構な割合でタイポです。。

エディタにデバッグを導入する

お使いのエディタによっては、デバッグ機能というものが付いています。タイポを検出したり、コードの書き間違いを警告してくれます。

もしエディタにデバッグが付いていないなら、デバッグをインストールするか、デバッグ付きのエディタを導入してみましょう。

おすすめのエディタはVScodeです。有料でもよければ、Jetbrain社製のエディタもおすすめです。

質問サイトで質問してみる

もう解決できない。世界中で自分が最初にこのエラーに出くわした。と思うくらいまで悩み抜いたら、質問をしてみましょう。

英語で質問できるなら、stack over flow、日本語なら、teratailがおすすめです。僕もteratailで質問をしたことがありますが、すぐに返信がきます。

デバッグ情報を記載する

「ここがわかりません。—エラー文—」だけの質問では、回答者から厳しい言葉が返ってきます。質問をするときは、ログやデバッグ、バージョン情報など細かく記載するようにしましょう。

返信をもらったらすぐに試してみて、解決したら感謝の言葉を忘れずに。

やり方を変える

ここまでやってきて、それでも解決しない場合、あなたのやっている方法自体が間違っている場合があります。やり方を変えてみましょう。

例えば、Herokuというインフラ環境にRailsを反映させるというよくある構成でプログラムを作ろうとしているとします。Herokuは、データベースにPostgresしか使えないので、MySQLで作っていると、エラーになってしまいます。

この場合、データベースを作り変えるか、インフラ環境を作り変える必要があります。コードをいくら修正しても、解決しません。このくらいなら検索や質問で気づくかもしれませんが、こういった根本的に間違った構成になっていることがあるので、最初から見直してみましょう。

一つ一つの仕組みを理解していきましょう

僕も含めてなんですが、大学とかでコンピュータサイエンスを学んでいない人は、コンピュータの仕組みを理解せずにプログラムを作っている場合があります。

コンピュータが生まれた歴史とか、Webがどうやって通信しているかなど、細かいことはわからないかもしれません。最近のプログラミング言語は、コマンド1つで全部やってくれるから、知らなくてもできてしまうんですね。

でも、スキルレベルが上がってくるにつれて、そうした基礎の知識が重要になっていると感じています。コマンドを打つと、裏で何が起こっているのか、このサービスはどうやって動いているのかを1つ1つ確かめるクセを身につけましょう。

裏の仕組みがわかってくると、分からないことやエラーに遭遇しても、なんとなく原因が特定できるようになります。

最新の技術を追いかけることも大事ですが、それらは全て同じ基礎の上に成り立っています。これからプログラマーになる人は、プログラミングの勉強を優先すべきだとは思います。でも、ある程度仕事ができるようになってきたら、一度基礎の勉強に立ち返ってみましょう。