見出し画像

プログラミング中に出たエラー・動かない原因の解決策9選【初心者向け】

こんにちは。BugFix LLC エンジニアのセイトです。

今回は、プログラミング初学者向けに「コーディング中、エラーが出たときの対処法」を9選、紹介したいと思います。

はじめに

普段YouTubeでプログラミングの動画を発信しているのですが、よくコメント欄で

「ここで動かなくなっちゃいました」
「何かわからないけど動かなくなっちゃいました

というようなコメントをする方がいらっしゃいます。
このような問題は、じつはコツさえ知っていれば初心者でも自分で簡単に解決できる場合がほとんどです。

またほかにも「よくミスやエラーで詰まってしまう…」といった悩みをお持ちの方には、ぜひこの記事を読むことで「自分で解決する方法」を知ることができるかと思います。

実際、エンジニアの1日の仕事の半分以上は自己解決に費やされているという説もあるくらい、「自分で解決する方法」を知ることは重要であり、これができるとより効率的に作業することもできるようになります。

今のうちから、この記事の内容を普段の学習中に実践することで、エンジニア力もガンガン上がっていくと思います!

1. 全角スペースを疑う

当たり前ですが、プログラミング言語は「半角英数字」で書くので、全角で書いたものは受け付けません。
そのため、「全角英数字・全角スペース」はもちろん使えないのですが、これらの打ち間違いは、非常に気づきにくいです。

最近のエディターは、「サジェスト機能」が入っているものがほとんどですので、それを使っていれば割と気づきやすいのですが、それでも気づかなかった場合や、そういった機能が入ってないエディターを使っていると、見落としてしまうことが多いので、気を付けてください。

※「サジェスト機能」:全角英数字・スペースが含まれているとエラーを出してくれる機能

2. スペルミスを疑う

これもかなり見落としがちなのですが、当然英語のスペルが一文字でも間違えていたらプログラムは動きませんし、大文字と小文字が違っても動きません

これも最近のエディタであれば、スペルミスを教えてくれるものが多いのですが、その機能が入ってないエディタを使っていると気付かないことが多いので、ここも確認してみることをおすすめします。

また、できるだけ「コピペをする」ことやエディターの補完機能の「予測変換を活用する」こともおすすめです。

これらを駆使することで打ち間違いも減らせますし、作業効率も上げることができるからです!

3. エラーメッセージを読む

これはすごい当たり前のように聞こえますが、エラーメッセージはたいてい英語で書かれているので、

「あぁ…なんだ英語だ…飛ばそ…」

という具合に飛ばしてしまうことがよくあります。
しかし、実はエラーメッセージってそんなに難しい英語はあまり使われていません。ていないのです。

例えば、よく出るものとして、

「○○ is not defined」というのがありますが、これは「○○という変数はないよ(変数名間違えてるんじゃない?)」といった意味合いのモノなのです。

このようなエラーメッセージが出てきたら「とりあえず読んでみる」ことが大切です。
そしてそれでも分からなければ、「Google translate」等の翻訳機能を使ってください。

今の「Google translate」の性能なら、エラーメッセージの特殊な俗語を使っていない限り、大抵は「綺麗な日本語」に変換されます。

4. ググる

4つ目は、「ググる(検索する)」です。

ググる方法に関しては、大きく2つおすすめのやり方があります。
まず1つ目は、「エラーメッセージをそのままコピペして検索する」ことです。

というのも、大抵のエラーや不具合というのは「同じことで困っている人」がけっこういるものです。
なので検索してみると、「Stack Overflow」や「teratail」といったQ&Aサイトで似たような悩みを投稿している記事がヒットするので、まずは「自分と同じ状況の人を探す」気持ちで、エラーメッセージをコピペして探してみてください。

2つ目の方法は、「シンプルに状況を入力して検索する」ことです。
例えば、Javascriptが○○の事情で動かないのであれば、「Javascript ○○ 動かない」で検索します。

また、もしそれでも出てこないのであれば、「英語にして検索してみる」と、圧倒的に情報量が増えます。
例えば、「Javascript ○○ 動かない」の場合は、「Javascript ○○ doesn’t work」という具合に英語で検索するだけで劇的に検索ヒット数が変わるのです。

この辺の英語は「中3レベルのそこまで難しくない英語で事足りる」ことが多いので、これらの「動かない=doesn’t work」であったり、「定義されてない=is not defined」というようなワードを覚えておくと、最低限エラーハンドリングのときに役立つかと思います。

5. Diffツールを使う

Diffツールは、別名「ファイル比較ツール」と呼ばれたりもするのですが、
要は「ファイル1とファイル2を見比べて、何行目に差分があるのかを教えてくれるもの」です。

最近はエディターの中に内包されていることも多く、
「VS code」であれば、コマンドパレットを開いて、「compare ファイル名」と入力すると、2つのファイルを見比べてくれます。

この機能は例えば、オンライン教材(Progateなど)の中で使われているコードをコピペして、「自分のコードとコピペしたコードをDiffツールで比較する」という風に使うことができます。

基本的に「動かない」ということは、「自分では変えてるつもりであっても、どこかに差分が生じている」ということですが、Diffツールはそういった間違っている点を指摘してくれます。

そうすると、一目で「あ、この辺書き間違えたな」ということに気づけるので、オンライン教材を使って勉強してる人は特にこのDiffツールがおすすめです。

6. 該当箇所以外、全部コメントアウト/消す

6つ目は、「該当箇所以外全部コメントアウト、あるいはファイルを消す」という方法です。

例えば、100行のコードを書いて実行した時に、全く動かなかったとします。
その場合、100行あるコードのどこにエラーがあるのか、一個一個チェックするのってすごく大変ですよね。

そういった時に、「上半分のコードをコメントアウト」して実行します。
もしここで意図したとおりに動いたら、上半分に問題があるということが分かりますよね。

これで動かなくても、今度は「下半分をコメントアウト」してみて治ったら、下半分のどこかにあるということが分かります。

こういう風に行うと、まずエラーの箇所を「100分の1」から「50分の1」に絞ることができます。
その後、また同じことを繰り返せば良いわけです。

たとえば下半分にエラーがあると分かったら、さらにその中でも「上半分」「下半分」をそれぞれコメントアウトしてみて実行してみる。
こんな感じでやっていくと、どんどん半分、半分、半分というふうに絞れていきます。
これでどこに原因があるかを「段階的に特定していく」わけです。

また、この方法は一つのファイルで完結している場合のやり方ですが、
3〜4つなどの複数のファイルのプログラムで実行されている場合は、この「複数のファイルの内の1個」を削除、あるいは読み込みを外して、実行してみます。

もしこれで正常に動いたら、「外した1個のファイルの中に原因がある」というふうに絞れるので、そこからまた同じように「コメントアウトを繰り返す」というやり方ができます。

7. 段階的にチェックする

例えばJavaScriptであれば「console.log」、PHPやRuby、Pythonであれば「print」と呼ばれる、「コンソール上にメッセージを出すだけの命令」があります。

これを処理と処理の間に書くことで、「段階的にチェックポイントを設けて、どの辺で処理がおかしくなってるのか」ということをチェックすることができます。

console.logを用いたデバッグ例

具体的には上の画像のように、関数を3つ書いておいて、
「ステップ1,2,3で命令を実行してみたが、エラーが出て動かない、どこに原因があるかも分からない」という場合は、

この「console.log」や「print」を「関数1つ目と2つ目の間に仕込む」または「関数2つ目と3つ目の間に仕込む」などとしてみます。

これらを3つ仕込んで実行したときに、「1つ目と2つ目は正常に動いたけど、3つ目が表示されない」という場合は、「3つ目の付近に原因がある」ということがわかるわけです。

プログラミング初心者の人は、例えば100行のコードで完成する場合、「1~100行まで一気に書くのが正解」と思う方もいらっしゃると思いますが、実際現役のエンジニアの人は本当に慎重に、

「1~5行目まで書いて、console.logを見る」

「動いた!」

「次は6~10行目まで書いてみる」

「動かない!」

「なんでだろう…Console.logを見る」

「7行目が間違ってた!治してみる」

「動いた!」

という具合に、段階的に書くパターンがほとんどです。
ぜひこの「段階的にチェックする」という技を覚えておいてください!

8. Gitを使う

Gitというのは、「バージョン管理システム」のことです。
チーム開発のために使われることが多いのですが、1人で勉強する上でも十分役立つツールです。

もし、「Gitについてもう少し詳しく知りたい!」という方はYouTubeの動画で解説していますので、ぜひそちらを見てみてください。
Gitとは?GitHubとは?10分で仕組み・使い方を解説!【超入門編】

このGitのメリットは、「セーブポイントをたくさん設けられる」こと、そして「自由にそのセーブポイントを行き来できる」という点です。

たとえばRPGゲームで、「レベル1からスタートしてラスボスまで1回もセーブしないでいく」ことなんてないですよね。
ボスの前でセーブして、ダメだったらやり直して、というのを繰り返していくと思います。

これと同じように、Gitの場合も、自分次第で自由にセーブポイントを設けられます。

例えば、「セーブポイント1〜10」まで作って、
「気づいたらコード実行しても動かなくなっちゃった」
という場合には…

「セーブポイント9に戻って実行してみよう」→動かない
「じゃあ5まで戻ってみよう」→動く

つまり、「セーブポイント6〜8のどこかにエラーがある」ということが特定できますよね。

こんな感じで、Gitは「エラーが起きたりとか、よくわからないトラブルに見舞われたときに、セーブポイントを行ったり来たりすることができる」というメリットがあるので、原因の特定に非常に役に立ちます。

9. バリデート、Lintツールを使う

プログラミングをやってると「Lintツール」というものを耳にすることもあるかと思います。
Lintツールは、ターミナル上で実行すると自動でプログラムが、「ここちょっとエラーにするぞ」という風に事前に教えてくれるものです。

そのため自分で気をつけなくても、間違った書き方をしたら、この「Lintツール」が自動的に指摘してくれます。

これを入れておくと、日頃から綺麗なコードが書けるようになるのでぜひやってみるといいかなと思います。

また、HTMLやCSSであれば、「バリデーションツール」がインターネット上に公開されてます。

ここに自分の書いたコードをコピペして「実行」するとエラーやトラブルの指摘をしてくれます。
HTMLやCSSに関しては、基本的にエラーメッセージが出ないので、こういう「バリデーションツール」を使うと、どこで間違えてるか分かりやすいと思うのでぜひ使ってみてください!

さいごに

というわけで、この記事では「プログラミング初学者の人が詰まったときにエラーの対処をする方法9選」というテーマで話していきました。

また、BugFix LLCでは下記のサービスを展開しています。ご興味ある方はぜひ、お気軽にお問い合わせください!

YouTube・LINE・メルマガでも情報発信中です。

この記事が気に入ったらサポートをしてみませんか?