~挫折しないプログラミング~プログラミングが分からない時の緊急マニュアル

初心者がプログラミングで挫折する一番の理由は、プログラミングで発生するエラーなどの問題。プログラミング中のエラーは、慣れてしまえば解決方法もわかりますが、最初のうちは何が何だか分からないことだらけ!

今回はそんなプログラミング学習初心者の方向けに、プログラミングが分からない時の対処法をご紹介します!

今回はプログラミングで発生する疑問を

  1. プログラムはわかっているが、上手く実行できない
  2. 流れは大まかに理解できているが、プログラムの組み方が分からない
  3. 何をどう書いたら良いのか、全く分からない

の3つに分け、それぞれの対処法をご紹介します!

プログラミングでわからないことがあったときの対処法

処理の流れをどう組むのか分からない

処理の流れはわかっているが、それをどう実装すればよいのか分からない。そんな時の対処法は、とにかく実装したい処理について検索をかけること!

例えば生年月日を入力してもらい、その生年月日をもと年齢を計算するという処理を書きたい時には、『プログラミング 生年月日 計算』と入力し検索をかけてみてください。

プログラミングの部分には、勉強している言語の名前を入れても良いでしょう。こちらの方がより直結的な解決につながりますが、上手く検索結果が表示されない時は検索範囲を広げてみるのも手です。

Googleでの検索結果です。2種類のサイトを上手く利用して問題を解決しましょう

処理の流れすら分からない

実装したいシステム実現のために何をどう書いたら良いのかもわからない状態です。この場合はまず、テキストやインターネット上で公開されている類似のコードを読んでみることから始めましょう。

処理の流れを明確にするために便利なのが『フローチャート』です。フローチャートはアルゴリズムやプロセスを表現するのに利用される図で、ここで紹介する図では

・楕円:処理の開始・終了
・長方形:処理
・判断:ひし形

の3つの部品が登場し、処理をわかりやすく図解しています。流れとしては

  1. nに1を代入する
  2. 10とnを比較する。1回目ではn=1なので10<nは「NO」に進む
  3. nにsを加算し、それをsと新しく定義する
  4. nに1を加算し、それをnと新しく定義する(n=2になる)
  5. 2~4までの処理をn>10が成立するまで繰り返す

上記のような処理になります。

Wikipediaより参照

プログラムが上手く動かない

最後に処理の流れもわかっていて、実際にコードを書いたはいいが、いざ実行しようとしてもできない時の対処法をご紹介。こちらは少しプログラミングが理解できてきた初心者~実際に現場で働くプログラマーまで、プログラマーにとって一番やっかいなエラーです。

こちらは少し長くなるため、段落を変えて詳しく解説していきましょう。

現役プログラマーもミスをする!ありがちなミスの例+解決方法

失敗例 ポイント
スペルミス 最も多いミス。あらかじめ登録されている予約語以外にも、自ら宣言した変数などを誤る場合も
全角スペース 日本人にありがちな半角スペースを全角スペースで入力してしまうミス
文法ミス 変数の未宣言などで処理が実行できない場合はエラーとなります
インデントミス 不適切な部分でインデントがあったり、もしくはインデントが適切に行われていない場合に発生します
セミコロン 言語によっては文の最後にセミコロン(;)を必要とするものも。ひとつでも書き忘れるとエラーが発生します

スペルミス

スペルミスはプログラミングで最も起こりやすいミスです。エラーが発生し、上手く実行できない場合は、まずはこのスペルミスを疑いましょう

以下の画像は、Pythonであえてスペルミスを発生させた例です。先頭の変数宣言でnum1とnum2を定義し、引数2つを足し算する関数を宣言しています。

しかし関数を呼び出す際、引数に宣言されていないnum3を入れてしまいました。(num1, num2)と書くはずでしたが、プログラマーのミスでnum2がnum3と書かれてしまったのです。

当然実行しても例外が発生し、処理を終えることはできません。ここでは『例外』として、わかりやすく明示されていますが、時折指摘されないスペルミスもあるので、十分に注意しましょう。

Pythonでのスペルミス例
NameError例外が発生し、「num3が定義されていません」と表示されています。

全角スペース

意外とありがちなのが、半角スペースを全角で入力してしまいエラーとなる例です。日本語入力のままスペースを打ち込んでしまい、そのまま気付かずに実行。しかし上手く動作せず、何がエラーの原因になっているかわからない。

しかしこの全角スペースのミスを極力抑える方法があります!それはエディターの半角スペース表示機能を使用すること。全角スペースを打ち込んだ場合は、一目でわかるようになっているため、全角スペースミスを極力抑えられるのです。

Visual Studio Codeでの半角設定
ファイル>ユーザ設定>設定>editor.renderWhitespaceでall(すべての半角文字を描画する)を選択

文法ミス

こちらもありがちなミスです。エディターによっては実行前に破線でエラーを知らせてくれるものもあり、予測しやすいミスでもあります。

破線が表示された場合は、大概英語のメッセージが表示されるので、Google翻訳などにかけておおまかなエラー内容を把握し、対処しましょう。

インデントミス

インデントとは行頭に空白を挿入すること。プログラミングにとってインデントはかなり重要な要素です。プログラミング言語はそれぞれ書き方が異なり、文末にセミコロン(;)を入れなければならないもの、中括弧({})で処理の内容を区切らなければならないものなど、さまざまなスタイルがあります。

しかしPythonはセミコロンも不必要で、条件分岐やループ処理でも中括弧もいりません。ただしインデントの位置で処理の内容を判断するため、インデントが不適切だとエラーが発生してしまうのです。

処理が複雑で長い入れ子構造になればなるほど、インデントや中括弧の見分けが難しくなりますが、かなり重要な部分でもあるので、しっかり注意しながらプログラミングを行いましょう。

セミコロン

こちらもインデントミスと同じように、人間にとってはあってもなくても関係ないが、コンピュータにとってはなければならない重要な要素。エラーとして特定しにくい部分でもあるので、一つ処理を書くごとにチェックしたほうが良いでしょう。

プログラマーには検索がつきもの

ここでは

  • 処理の流れが分からない
  • エラーの内容がまったくわからない
  • エラー表示が理解できない

など、自分の知識を超えたエラーや不明点が発生した場合の対処方法をご紹介します。

どの場合も適用できるのが、まずは検索をかけてみるということ。検索はプログラマーにとって必須のスキルです。ネット上にはすでに同様のエラーとの戦歴が残っているため、それを参考に自分のコードの問題も解決していきます。

エラーメッセージが表示されていればGoogle翻訳で簡単に翻訳し、それで解決できそうなら対処を。翻訳後のエラーメッセージを見ても対処できなさそうであれば検索を。日本語のページが見つからなければ海外のページを翻訳しながら閲覧します。

例えばこちらのエラー例。

このまま実行しようとすると、Exception in thread “main” java.lang.Error: Unresolved compilation problem:Type mismatch: cannot convert from int to Stringというエラーメッセージが表示されます。慣れてしまえばこのまま解読できますが、慣れないうちはコピー&ペーストで翻訳にかけてしまいましょう!

Javaでのエラーメッセージ例。
関数を定義した際に、String(文字列)を返すと定義しましたが、引数はint型の整数で、処理も計算なので、intからStringに変換できないことを表示しています。

まとめ

いかがでしたか?自分の行き詰っていたポイントは解決できたでしょうか?まずはチェックリストをもとに、ひとつひとつ自分の作成したプログラムを熟読していきましょう。

重大なエラーが潜んでいるかと思いきや、実はスペルミスや定義し忘れ等、案外単純なミスであることも。

またこういった多くの課題と向き合っていくためにも、休息や休憩はとても大事。挫折する前に適度な休憩をとって、プログラミングすることの楽しさを維持していきましょう。

参考文献:
ルイーダの酒場
@IT
キヨシはこう考えた。~KIYOTHINK~