こんにちは!侍ブログ編集部(@samuraijuku)です。
プログラミング学習では、エラーはつきものですよね。
エラーが解決できなくて一向に学習がすすまない…
などとお困りではありませんか?先日、侍エンジニアOnlineの毎月恒例イベントにて「つまづき時間を半分に!エンジニア必須のエラー解決力養成講座」を実施しました!
今回は具体的なエラー解決法について解説していきます。
エラーが起こる原因とバグとエラーの違い
そもそも、なぜエラーって起こるの?
これは、「エラーが全く起きない場合」のことを考えると理解ができます。エラーが全く起きないと、どういう不都合があるでしょうか?
実は、エラーが起きないと
- コードが正常に動いているかどうかが分からない
- コードが間違っていても、そもそも間違っているかどうかがまず分からない
- 間違っている場所がわからないので、原因を探すことが難しい
などの不都合が生じます。また、異常なコードがあるのにそのまま放置して動作を続けると、ハッキングの対象となる「セキュリティホール」の原因にもなります。エラーが起きないことは非常に危険なことだったのです。
エラーとバグの違い
「エラー」はよく使われる言葉ですが、実際の開発では「バグ」という言葉がよく使われます。実は、エラーは「例外」ともいって、プログラミング言語に標準で組み込まれた仕組みのことなのです。
ですので、意図的に特定のエラーを起こすこともできますし、エラーが起こった時の挙動を変更することもできます。エラーはプログラミングにおいて、必要不可欠なものです。
一方、バグというのは意図していない動作のことを指します。
急にアプリが動かなくなった…
など、意図してしない動作が起こることは日常茶飯事ですよね。実はほとんどの人が解決できないのは、エラーではなく、このバグです。バグが起きた結果エラーが発生しただけなのです。
プログラミングを習得するためには、「バグを解決するスキル」を身につける必要があります。では、バグを解決するためには、どんなスキルが必要になるのでしょうか?
本当に必要なスキルを知ろう
バグは意図していない動作なので、原因を突き止める必要があります。そのために必要になってくる作業は「調査」です。調査を行うために本当に必要なスキルは「検索力」だといえます。
バグの原因は当然わかりません。わからないことは調べて、何が原因なのか、なぜバグが起きたのか情報を集めないといけません。幸い、ネット上にはすでに解決法やヒントがたくさんあります。ネットで情報を探すことが一番効率の良い調査です。
つまり、「自分の知らない情報を知るための検索力」がもとめられることになります。しかし、具体的にどうやって検索をすれば、自分の欲しい情報が手にはいるのでしょうか?
問題を定義して、具体化してみよう
検索のコツは、「問題を正しく定義して言葉を具体化すること」です。どんな時に、どのようなことが、どんな風に起こったのかを具体化するほど、情報は見つけやすくなります。
たとえば、好きな芸能人がいたらどうやって検索しますか?「芸能人の名前」で検索する方がほとんどではないでしょうか。名前というのはものすごく具体的な言葉ですね!
同性同名の芸能人がいない限り、ほとんどの場合は1回の検索で見つかるでしょう。しかし、まだ名前を知らない気になる芸能人を探す場合は、「特徴」から検索しないといけません。その時どのような情報を欲しいと思いますか?
「背が高い」「髪が黒い」などの一般的な特徴より、「どの映画に出ていた」「あの曲を歌っている」などの具体的な特徴を知りたいと思うでしょう。その方が情報を特定して見つけやすいからですよね。
バグを解決する場合も同じです。「Rails エラー」「Java エラー」などで検索するより、「Railsのサーバー起動時に起きた〇〇というエラー」「Javaでコンパイル時に起きた〇〇というエラー」といったように、できるだけ具体的な特徴で検索する必要があります。
例をあげると、「Railsのサーバー起動時に起きた〇〇というエラー」であれば「Rails サーバー 起動 〇〇」といった具合です。
次の記事では実際にエンジニアが実践している検索テクニックを詳しく紹介しています。プログラミングをより上達させたい人は、ぜひ参考にしてください。
バグの原因を素早く突き止めるデバッグを覚えよう
エラーは画面に出るのでわかりやすいですが、なぜかうまく動作しないというバグを解決することは難しいでしょう。「なぜか意図したとおりのレイアウトにならない」「エラーは出ないけど、なぜか最終的な結果が変」といった場合です。
このようなバグを見つけて原因を解決するを「デバッグ」といいます。デバッグをできるかどうかが、一人前のエンジニアになれるかどうかの境界線だともいえるでしょう。一般的に使われているデバッグのテクニックをご紹介します。
プリントデバッグ
これは、プログラムを処理している途中で利用されている値などを出力して、正常に動作しているかどうか確認する方法です。プログラミング言語には「デバッグメソッド」というデバッグするための命令が用意されています。
試しに、学習しているプログラミング言語で検索してみるといいでしょう。デバッグメソッドを使うことで、7割以上のバグを解決できるといっても過言ではありません。
コメントデバッグ
プログラミング言語を学習すると、必ずと言っていいほど最初に「コメントの書き方」を学ぶでしょう。「こんなの何に使うの?」と思われている方も多いのではないでしょうか?実は、コメントは非常に便利な機能なのです。
メモを残しておくことに使うことが多いですが、デバッグする際にも活用できます。コメントされたコードはプログラムとして実行されないため、原因がありそうな部分のコードをコメントにすることで原因を絞っていくことができます。
一部のコードをコメントにして正常に動作をしたなら、コメントした部分に原因があるということがわかるからです。
最後に
いかがでしたでしょうか。ここまでエラーに関する正しい知識や具体的なエラー解決方法をご紹介してきました。エラーを解決することで、つまづく時間を減らし学習のモチベーションも高められるでしょう。
この機会に、エラーと友達になってうまくつきあっていけるように、デバッグをマスターしましょう!
なお、エラーの解決には時間をかければかけるほど、プログラミングへのモチベーションが下がりがちです。下の記事では、プログラミングのモチベーションを維持する方法を詳しく解説しているので、よければ参考にしてください。
以上、イベントで講義した具体的な技術の解説でした! 今後も様々な実践的イベントを実施していきます!
次回以降の直近の実施予定は
- 9/18「【プログラミング基礎・応用力向上】JSゲーム制作で楽しくアルゴリズム学習!【初心者歓迎】」
- 9/24「速攻フリーランスエンジニアデビュー!?実際に案件獲得まで行う実践セミナー」
と、なっております!おたのしみに!
他にも
- ポケモンGOを作ろう!AR開発体験
- 未経験からエンジニアになった人のパネルディスカッション
- Google 最新API!自然言語翻訳を活用するハッカソン!
などなど、多くのイベント案が出ています! 今回ご参加できなかった方も、実用的なスキルを身につけるためにも、ぜひご参加していただければと思います! 次回のイベントもお楽しみに!