プログラムがうまく動かない――そんな時に確認して欲しい方法とマインドセット

これからプログラミングを学ぼうと思っている方は、すべてのコードがパーフェクトに動作し、バラ色の未来が見えているかも知れません。しかし、多くの場合そうはうまくいきません。プログラミングはむしろ、うまく動かないことの方が多いかも知れません。これは何も初学者に限った話ではなく、どれだけ上達したとしてもずっと悩み続けて、トライ&エラーを繰り返さなければならないのです。

はじめてみて、すぐに躓くかも知れません。そこで心が折れそうになってしまう人も多いでしょう。そんな時に備えて読んでおいて欲しいのがこの記事になります。うまく動かない時にどう対応したらいいのか、そんな心構えと対処法を紹介します。

小さくはじめよう

いきなり大きなものを作らないことはとても大事です。エラーが出た時に、どこでエラーが出たのか分からなくなってしまいます。一つエラーを解消しても別なエラーが出て、さらに直してもエラー…と何度も繰り返していると投げ出したくなってしまうはずです。それを避けるためには、ごくごく小さなコードを書いて実行し、うまく動かす体験を積み重ねていきましょう。

プログラミングコードを書いていると、書いては消して、書いては消してを繰り返すことになると思います。そうすると、どこかで突然動かなくなったりします。うまく動いていた時まで巻き戻せればいいのですが、うまくいかない場合もあるでしょう。そうした事態を防ぐためにバージョン管理があるのですが、使い方を覚えるのは大変です。せめてうまくいったコードは消さず、コメントアウトで残しておくようにしましょう。そしてちゃんと動いていたコードを残しつつ、コピーして修正するようにすれば、いざとなった時に巻き戻せます。

エラーメッセージをよく読もう

プログラミングはうまく動かない時にはエラーメッセージを出すものです。そのメッセージをよく読むことが解決への糸口です。多くの場合、エラーメッセージは英語ですが、Google翻訳なりを使えば意味は分かるはずです。そのエラーメッセージを読んでも分からなければ、Google検索を使ってみてもいいでしょう。検索する際のコツとしては「自分で書いているコードの部分は除く」ということです。「クラス名××はありません」といったエラーメッセージだった場合、××を検索条件に入れてしまうと望んだ結果が出ないかも知れません。同様にコードの行数、ファイルのパスなども不要な情報です。

プログラミングに適したエディタを使おう

ちょっとしたコードだからとコンピュータに標準で入っているテキストエディタやメモ帳などを使ったりしてはいけません。IDE(統合開発環境)やプログラミングエディタを使うようにしましょう。IDEはプログラミング言語によって異なりますが、Android Studio/Xcode/Visual Studio/Unity/Eclipseなどがあります。プログラミングエディタは数多くありますが、最近ではVisual Studio CodeAtomが人気です。

これらのエディタを使うと、例えば全角スペース「 」がコードの中に入っている場合に可視化してくれます。プログラミングコードは一部の例外を除いてTabまたはスペースでインデント(整形のようなもの)をします。全角スペースが入っているためにエラーになるのはよくあるケースです。専用エディタを使うことで、より開発しやすく、ミスなく進められるようになるでしょう。

インデントをちゃんとしよう

プログラミングで煮詰まる人たちのコードは総じて汚いことが多いです。コードの汚さがどこで区別されるかといえば、まず第一にインデントが整っているかどうかが問題です。コピペしたコードなどは最初はインデントが揃っていないこともあります。それらを丁寧に整えてあげると、どこで何をしているのかが分かるようになります。

さらにいえば、あまり長大なコードは処理全体を把握するのが困難になります。プログラミング言語には関数やクラスと呼ばれるものがあり、処理をまとめたり、一つ一つの処理の独立性を高めてくれる仕組みがあります。それらを学ぶことで問題の切り分けを容易にしたり、解決しやすくなります。

コピペしたコードがバッティングしていないか

プログラミング初学者がやりがちな操作に、インターネット上で見つけたコードをコピペで動かすというのがあります。コピペが必ずしも悪いわけではありませんが、そこで行っている内容を把握していないとエラーになりがちです。コードを公開している人の環境と、あなたの環境が異なるためです。例えばコードを公開している人の環境ではあらかじめ定義されている変数がなかったり、ライブラリが足りていないこともあります。

もっと悪いのは複数人のコードをコピペした結果、それぞれの環境で定義されている変数がバッティングしている場合です。変数が上書きできないようになっていればいいのですが、プログラミング言語によっては許容している場合もあります。そうするとコピペした途端に動作が変わったりします。コードを公開した人にとっても原因が分かりづらいので、外部からコードを持ってくる際には注意してください。

Q&Aサイトで聞く

いよいよ分からない場合にはQ&Aサイトで聞くこともできます。日本ではTeratail、海外ではStack Overflowというサービスが有名です。ただし、聞く際の姿勢も大事です。なんだかよく分からないけど動きません、では誰も助けてくれないでしょう。何をしたいのか、何をしたのか、なぜ動かないのか、自分なりにどう調べたのかといった情報が不可欠です。

他の人にコードを見てもらうと、実はごく単純な理由だったというのはよくあることです。例えば行末に「;」を入れ忘れる、変数名のタイポ(入力ミス)などです。回答者からすれば、そんな指摘をするのは嫌かも知れません。あくまでもボランティアで答えてもらっているという意識を忘れずに、丁寧に質問するようにしましょう。

ぬいぐるみに説明する

ぬいぐるみにプログラミングの説明をする、という姿は端から見れば怖いかも知れません。しかし、これはベアプログラミングというれっきとした(?)プログラミング手法として知られています。本来は人でもいいのですが、ぬいぐるみであれば相手の状態を気にすることなく、いつでも話しかけられるのがメリットです。

ここで大事なのはぬいぐるみに対して自分が書いているコードを説明することで、第三者的な意識を持つことです。先に挙げたちょっとしたミスは、自分ではなかなか気付かないものです。それに対して人のコードだとすぐに気付いたりします。そうやって説明することで自分自身のコードに対して俯瞰的な意識を持ち、ミスや考えが至らなかった部分に気付けるのです。

まとめ

プログラミングは何年経験を積んでも難しく、頭を悩ませるものです。もちろん慣れれば「なぜ動かないのか」という悩みではなく「なぜ思った通りに動かないのか」「なぜパフォーマンスが悪いのか」といった悩みに変わるかも知れません。いずれにしてもプログラマーは常に問題に取り組んでいます。

つまりちょっとした躓きで諦めたり、投げ出してしまっていたらプログラミングは続けられないということです。これからずっと躓き続けるのです。大事なのはそうした問題に直面した時に、どう素早く解決して次の課題に取り組めるかではないでしょうか。

]]>

上部へスクロール