S-2.エラー内容、検索の極意

1

そもそも、プログラミングエラーとは、なぜ起きるのでしょうか? 

また、エラーとはなんでしょうか? 

・エラー →エラーとは、プログラミグにおけるソースコードの記述の誤りから発生するもの。 

エラーの種類やスペルミスといった単純なものから、プログラムを出力する際のソースコード間の複雑な競合による問題など様々なものがあります。 

例えば、「実行時エラー」はプログラムを実行した時に起こるエラーです。 

エラーメッセージが出力され、プログラムは基本的に停止します。 

「論理エラー」は、プログラムが、想定した結果を出さないエラーです。 

 プログラムは正常に実行されますが、プログラムのアルゴリズムやロジックが 

 間違っているときに起こるため、原因が分かりにくい場合が多いです。 

「コンパイル・ビルドエラー」はコンパイルやビルド時に発生するエラーです。 

C言語やJavaでおこなう処理になります。 

・コンパイル →コンパイルとは、コンピュータが直接実行可能な形式のプログラム(オブジェクトコード)に変換すること。 

・ビルド →ビルドとは、ソースコードなどを元に実行可能ファイルやパッケージにして提供すること。 

プログラミングやコーディングで、エラーや動かない謎の現象は必ず起こります。 

ところで、エラーはなぜおきるのでしょうか? 

原因は様々あります。 

・認知不足 

・判断不足 

・ロジックの違い 

・仕様理解 

・見落とし 

などです。 

このように色々な原因が考えられますが、すべての原因を解消して想定通りの動作をするようにしなければなりません。 

エラーは、ユーザにとって致命的な商品と判断されますし、利用してもらえなくなるリスクにもなりますので、これらを解消してからはじめて公開します。 

仕様の漏れをなくして組み込むだけでなく、エラーがあるかを探して解決することも、プログラミングの作業では必須になります。

 

それでは、エラーになったときの解決方法はどうすればいいでしょうか? 

以下のようなアプローチで解決する方法があります。 

これらのようなアプローチができます。 

次に、これらについて具体的にお話します。

まずは、コーディングにロジックの漏れや抜けが無いか、確認しましょう。 

データの呼び出しが抜けていないか 

変数宣言が違っていないかについては、例えば整数型の型や、文字変数の型などがあって 

るかを確認します。 

仕様にそったロジックで、途中で間違っていないか 

などを確認しておく必要があります。 

次は全角スペース、スペルミスがないか確認しましょう。 

全角スペースは日本語表記です。ソースコードではエラー扱いになります。 

文字の間に極端な隙間がある時は、全角スペースが入っている可能性があります。 

IDE統合開発環境のエディタですと、全角スペースの箇所は色を変えて表示する設定ができます。 

またスペルミスはよくありますので、コピー&ペーストで防げることも考えましょう。

 

 エラーメッセージから原因を突き止めることもできます。 

エラーが発生した時は、エラーメッセージに目を通していきましょう。エラーメッセージは、英語でわかりにくい印象がありますが、慣れれば簡単で読みやすいです。 

例えば画像のようなエラーメッセージが、エラーログから見ることができます。 

この場合、ファイルのパーミッション(権限)がなくファイルの読み込みに失敗していることを示しています。 

パーミッション ディファイン 権限拒否という表記が記載れています。 

エラー文が出た時は、まずはそのままエラー文をコピペして検索しましょう。 
 

また、 

ログのメッセージに出力させるために、デバッグ用のコメントをソースコードに埋め込んでおくことも効果的です。 

どこまでが正常に動作しているかを調査することで原因を突き止める方法もあります。 

どこから動いていないか確認し、該当箇所以外を消してみましょう。 

先程のように、エラーメッセージからどこまで動いているかを確認し、 

どこから動いていないか段階的にチェックしていきましょう。 

それでも原因がわからない場合は、 

動いて欲しいところ以外をコメントアウトしてみます。 

コメントアウトして、動いている部分から徐々に範囲を広げていくと原因が掴めるようになります。 

編集前の正常に動いていたときと差分を確認しましょう。 

エラーが出ている現在のファイルと編集前のファイルを比較します。 

GitHubやdiffコマンドを使って差分を比較して見ましょう。 

・diffコマンド 

→diffコマンドとは、2つのファイルを比較して違いを出力するコマンド 

変な修正をしてしまっていないかを確認すると、エラーが見つかることもあります。 

それでもだめなら、最初からやりなおしましょう。 

だからと言って、ゼロからまたコードを書くというわけではありません。 

別のファイルを作成してエラーが起こっている部分だけで動かし、 

正常の部分だけをつなぎ合わせて確認し、該当箇所以外を全部消すというやり方で行ってみましょう。

 

さらにわからないときは、Googleで検索しましょう。 

エラー内容がわからない、エラーメッセージが見当違い、という場合はググります。 

エラーコードを検索するとエラー内容と解決方法が見つかったりします。 

それでもわからないという場合は、すごくできる人に聞きましょう。 

職場の上司や同業担当者、技術コミュニティの上級者に聞いてみることです。

 

10

Googleでの検索では、ただ単に、ワンフレーズだけで探しても、ほしい内容は一発では得られません。 

エラーにおいては、どう解決すればいいかを 

検索するにもポイントがあり、エンジニアにとって必要な検索方法です。 

そこで使用するのがGoogleの検索です。Googleの検索は技術情報に強い検索エンジンなので、技術情報はGoogleで検索することが多いです 。

11

検索に便利なテクニックを示していきます。 

・フレーズの検索の場合、フレーズを二重引用符というダブルクォーテーションで囲むことです。 

例えば 

“javascript”と、一つの文字で検索することができます 

このように検索するとjavascriptだけで検索できます。 

複数の語句を含みたい場合は、A OR Bのように、ORの文を使いましょう。 

例えば、javascript と java の違いを調べたいのなら、 

javascript OR java OR 違い 

と検索しましょう。 

また、同じ命令分で、半角縦文字の(パイプ)というのを使う方法もあります。 

並列検索は、複数の用語を必ず含むサイトを検索できます。 

例えば、javascriptとphpの内容が両方載っているサイトを調べたい場合や、 

javascriptとphpの違いが載っているのを調べたい場合は、 

javascriptとphpの語を両方必ず入れましょう。 

邪魔な語句を排除して検索をしたい場合は、除外したい語句にマイナスを付けます 

ここでは「マイナス広告」と記載することで、広告を除外した検索を行います。 

キーワードが本文に全て含まれる場合の記述はこのような、 

オールインテキスト コロン 調べたい用語をいれることで、 

検索することができます。 

他にもいくつかありますが、これくらいで、ほぼ検索はカバーできます。 

12

また期間指定をすることも必要です。 

記述された日時が古い記事の場合は、アプリの開発においてバージョンが古く実行できない命令文がありますので、最新の検索結果を拾うようにして検索を行いましょう。 

またエラーや警告メッセージが出た場合は、出力されたエラーメッセージを、 

フレーズ検索で検索窓に貼り付けるということもあります。 

掲載者が、同じエラー文言がでてしまい、解決方法を載せたサイトがありますので、 

そのページを確認して解決することもできます。 

ここでの検索方法は、開発言語にプラスして知りたい内容を記載することによって解決方法を見つけることができます。 

13

また、もし検索しても見つからない場合は、 

似たフレーズで検索してみてください 

フレーズとは、日本語表現を少し変えた表現で検索することで、 

例えば、「JavaScript + 使い方」 

を 

「javascript + 分からない人のために」のように表現を変えます。 

フレーズを駆使して検索してみると解決のヒントがあったりしますので、よく調べてみてください。 

検索結果のほとんどは、日本語で記載されていますが、最新のエラーや、複雑なエラーの場合は、どうしても英文サイトを見る必要もあります。 

この場合は翻訳するなどして、英文を読む必要がありますが、それで解決するという方法もあります。 

このように、最新のバグや、経験者すら今までみたこともないエラーは、英語で記載しているものを探すという場合もあります。 

それ以外、検索してもやはり見つからない、もしくはいろんなヒントを見て解決できなかったという場合は、投稿サイトの投稿者に聞いてみるということもあります。 

あまりにも解決できない、もしくはそのエラーが一度も出たことがない、という状況の場合につかうことができます。 

これはあくまで誰かが投稿してくれないと、 

解決できないので、あまりお勧めはできないかもしれません。