プログラミングをしていて、エラーが出て作業が止まってしまった、という経験はおそらくほとんどの方がしているのではないでしょうか。初心者の頃から一度もエラーを経験していないという人は、逆にいないでしょう。
そんなプログラミングの仕事や勉強の手を止めてしまう、困った「エラー」は、どのように解決すれば良いのでしょうか。また大きな2つの原因をご紹介します。
プログラミングエラーが出たらなぜ困る?
プログラミングをしている最中にエラーが出たら、どうして困ってしまうのでしょうか。根本的なことからチェックしていきましょう。
解決するのに時間がかかってしまうから
プログラミングをしている最中にエラーが出ると、今行っている作業を中断して、まずはエラーの解決をしなければなりません。せっかく集中してコーディングをしていたのに、集中が切れてしまいますし、作業は進まずイライラしますよね。
面白くなってきた、というところでエラーが出るといった「あるある」も経験したことがある人も多いようです。
どこがエラーを起こしているのかわかりにくいから
気を取り直してエラーを解決しようとしても、どこがエラーを起こしているのかを見つけることは、非常に手間がかかります。延々と打ち続けたコーディングをもう一度読み直し、どこで何が間違えているのか、1文字1文字チェックをしていかなければなりません。
プログラミング言語のフォントによって、また大きさによっては数字の1と小文字のL、小文字のaとdのように、見分けにくい文字もたくさんあります。また意外と分かりづらいのがスペースです。ズラリと並んだ数字とアルファベットの羅列の中から、スペースを探し出すことは至難の業です。
自分では意外とミスに気づけなくて困る
また、自分で打ち込んだコードは、「正しい」という意識のもとで打っているので、意外とミスに気づきにくいという特徴があります。自分で打ち込んだ時点で勘違いしたまま打っていて、そのことに気づかないままだと、何度読み返してもミスに気づくことができないでしょう。
また、実はコーディングにミスがないのにエラーが出るというケースもあるため、ミスに気づくことができずに作業が中断し、途方に暮れてしまうということも多いのです。
プログラミングが動かない2つの大きな原因
それでは、なぜプログラミングが動かないというエラーが出てしまうのでしょうか。プログラミングが動かなくなる2つの大きな原因をご紹介します。
コーディングが間違っている
まずは、ほとんどの人が最初に疑ってみるであろう「コーディングの間違い」です。打ち間違いもあれば、勘違いからの間違いもあります。コーディングが間違っているのであれば、これまで打ち込んだコードをすべて見直さなければなりません。
手間と時間がかかり、何回か繰り返してもエラーが出続けたりするため、かなり根気のいる仕事になります。
バグが起こっている
もうひとつ考えられる原因が、【バグ】です。コーディングやプログラミングミスなどが無いのに、「なぜか動かない」という状態です。「そんなもの見分けられないし、分からない!」と思うかもしれませんが、ちゃんとエラーとバグには見分け方があります。
次項では、プログラミングで起こりやすい【エラー】と【バグ】の違いについて詳しく解説していきます。
プログラミングのエラーとバグってどう違う?
プログラミングのエラーとバグは、どう違うのでしょうか。いずれにしてもトラブルには変わりないのですが、実はちょっと違うものなのです。
エラーはコーディングやプログラミングミスの事
「エラー」とは、プログラミングを行っている際に、コーディングやプログラミングミスを犯してしまったために起きるトラブルのことです。
つまり、原因がはっきりとしており、そしてその原因は、人的ミスということになります。エラーを犯すと欠陥が生じ、欠陥が生じるとフォルトが生じるため、エラー(コーディングやプログラミングの誤り)はさまざまなトラブルを引き起こす恐れがあります。
バグはコードにミスが無いのに動かない事
バグは、コードやプログラミングにミスが無いのに、きちんと作動しない事態を一般的に呼んでいます。「バグ」とはもともと「虫」を指す英語です。実はエジソンの時代から、原因不明の機会の不具合のことを「バグ」と呼んでいたことがわかっています。 その昔、第二次世界大戦中にアメリカではじめて電気機械式計算機ハーバード マークⅠが開発されました。
その女性プログラマー、グレース・ホッパーが、マークⅡの開発に携わっている時、あるバグが挟まった蛾によって引き起こされたものだと知り、ノートに「バグを起こしたバグ」といったメモを書きました。これは今でもスミソニアン博物館に保管されているそうですよ。
といっても本当に「虫」が問題を引き起こしているわけではありません。またバグという言葉は「虫」という意味の他に、スラングで「イライラさせる、ムカつかせる」という意味もあるそうです。
バグは複雑化している現在のプログラミングにおいて、「バグのないプログラミングはない」と言われるほど、コンピュータの中に潜んでいると言われます。さらに「バグは出ない事しかわからない」とも言われ、バグを完全にゼロにすることは不可能であり、バグが「出るものを消す」ようにすることしかできないのが現状です。
またバグの中には、あっても正常に作動するもの、ある場所のバグを消したことにより別の作動にバグが起きるものもあるため、非常にやっかいです。
エラーの場合はエラーメッセージが出る
エラーとバグの見分け方のひとつとして、エラーの場合はエラーメッセージが出る、という点が挙げられます。もともと、ソフトウェアで起きる不具合を、コンピュータ業界のテクニカルタームのひとつとして「バグ」と呼んでおり、実は今も混同されることが少なくありません。
しかし最近は「バグ」という言葉には「原因不明の(人的ミスではない)エラー」というニュアンスが込められているため、「バグ」という言い方をやめて、ちゃんと理由を持つ「エラー」という呼び方をしようという動きもあります。
バグの場合はエラーメッセージが出ない
バグの場合は、エラーメッセージが出ないため、エラーではない、つまりエラーとされるプログラミングやコーディングのミスが原因ではない、という事が分かります。それでは、バグやプログラミングエラーが起きた時にどう対処すれば良いのか、詳しくご紹介します。
プログラミングエラーが起こった時の対処
プログラミングエラーが起きた時の対処法をご紹介します。エラーメッセージが出た場合、どうすれば良いのでしょうか。
エラーメッセージをチェックする
まずは落ち着いてエラーメッセージをチェックします。エラーメッセージは大量に突き付けられることもあり、英文なので、余計に混乱するかもしれません。「エラーメッセージは上から読む」「エラーメッセージはどんなに大量でもそれぞれは短文」という特徴があります。
一番上のエラーメッセージは、ソースコードの中でより上の方で見つかっているという法則があります。つまり、上から直していくことで、下で指摘されている同じエラーや関連して起きているエラーが修正される可能性が高く、それだけ手間が省ける可能性があるからです。
エラーメッセージの意味を調べる
エラーメッセージで一瞬「クラッ」とくるのが、英文で、しかも大量に書かれている事ですよね。普段英語を使っていないと、それだけで逃げ腰になるものです。しかし、大丈夫です。よく眺めてみると、’a’や’}’など、「’●’」と囲われている文字があることに気づきます。
さらに「undefined(宣言された)」「error(エラー)」「identifier(識別子)」などの単語もよく出てきます。
- 識別子…プログラムの変数や関数などの名前
- 宣言…識別子の名前を定義すること
つまり、undefinedとidentifierが出てきたら、「変数や関数の識別子が定義されていません」といったエラーになります。
また「’●’」とある文字は、関数や変数で使用されるべきなのに、抜けている、パースエラーが起きているといった指摘かもしれません。高校時代に使った辞書でも、ネットの辞書でも構いません。実はとても簡単な単語しか使われていないので、慣れてしまえばすぐに読めるようになります。
エラーメッセージが出ない場合はバグをチェック
エラーメッセージが出ていないのに不具合が起きた時にはバグをチェックします。手練れのプログラマーやエンジニアになると、どこでバグが起きやすいかを熟知しているため、勘で見つけられることもあります。
それ以外の場合は、デバッグという「虫退治」作業を行う必要があります。デバッグについて次にご紹介します。
デバッグを行ってエラーを解決する
デバッグを行う事で、バグの存在を見つけ、発生源を発見し、原因と特定して修正することが可能になります。修正するかどうかを決めることもデバッグの重要なポイントです。修正すると新たなバグを生み出すこともあるため、テストを行って確認します。
ゲームなどの大掛かりなソフトウェアを世に出す際は、大勢でデバッグを徹夜で行うこともあったそうですよ。
【まとめ】スキルを身につけて迅速に対応しよう!
エラーやバグは、経験を積むことで素早く対処することができるようになってきます。逆に初めての場合はおろおろしてしまうかもしれません。そのため、慣れていないうちはスクールなどに通い、プロの修正や解決方法を身近で学ぶこともおすすめです。
経験を積んでスキルが身についてくれば、迅速な対応も可能になります。どこで起きているエラーかパッと思いつけるよう、日々プログラミングを行って学びましょう。