初心者のためのプログラミング上達の勉強のコツ

2018年8月11日

プログラミングが出来るようになるには論理的思考が大切だ、なんて話をよく聞きますが具体的に何なのそれ?となるわけです。なので論理的思考を極めましょうとか練習しましょう、という話はしたくありません。

もっと具体的な話ででじゃぁどんなプログラミング言語でもいいから上達するコツは何なのか、というのをここで整理してみたいと思います。この記事は超初心者を対象としています。

入門書のサンプルを自分の手で打つ

まず入門書を手に入れましょう。今どきのプログラミング学習は書籍じゃなくてWEB上にも学習サイトやサービスが多数ありますので、必ずしも書籍じゃなくても構いません。重要なのは著者や配信元がどこなのか明示され誤記、不具合、アフターフォローがされているものを選ぶと良いです。

WEBサービスの場合は情報が最新化されている場合が多いですが書籍の場合は発行年月が古かったりしないようになるべく新しいものを手に取るようお勧めします。

入門書を読み進め、かつ実際に自分の手でサンプルコードの真似をして書くことが大事です。(このことを「写経」と呼ぶ人が多いですが、私は本来の写経とは意味とは違うのでこの呼び方は好きではありません)

教材を読んだだけではあまり理解の助けになりません。自分でコードを書いてテストアプリを動かして教材と同じような挙動になることを確認して次に進むことが大事です。

紙とペンを使う

パソコンの学習なのになぜ紙とペンを使うの?!と思うかもしれませんが、PCモニターの表示範囲は限られていますし階層の深いコードを追っていくのは大変です。そんなときに紙に出力して「挙動やロジックの絵を書いたり」「ソースコードに注釈、矢印、赤ペン」などを入れることで読みにくいソースが読みやすくなったりするものです。紙のほうが一覧性があるし俯瞰して全体を見やすいです。

私自身何年も前ですがソースコードレビューをしてたときは紙に出してそれを突き合わせたり、ホワイトボードに絵を書いたりして皆で不明点を洗い出したりしたものです。

もし教材の中で理解ができないソースコードがあれば紙ペンで追っていくことをお勧めします。これはかなりプログラミング上達の役に立つのではないかと思います

どういう挙動になっているのか、したいのかを仲間に表現出来る能力の向上にも役立つでしょう。

検索する、検索力をつける

プログラミングを上達したいという方なので日々「検索する」という行為を行ったり調べ物を良くしていることでしょう。

プログラミングを学習したりアプリを作ったりする中で不明点や課題に直面することは非常に多くあります。そのときに「答えや情報を探す」という能力が必要になってきます。

いまやプログラミングでどうしたい、問題が解決しない、ということは誰かしら同じ症状に直面して解決している場合があります。そこでWEBで検索すると解決策が書かれたページを発見出来ることもあります。

気をつけたいのは以下の点です。

・プログラミング言語のバージョンや環境が自分と一致しているか
・書かれている情報が古くないか
・書かれている情報の正確性

古くないかを確認するのは難しいです。例えば5年も前の記事が出てくる場合もあるので、その都度コードに写して動きを確認して駄目だったら次の参考ページを探すようにしましょう。

これらの点を確認して問題なければ取り入れることですね。

公式のリファレンスを読む

何はともあれ情報を探す際に最も信頼性が高いのは「公式」です。WEB上の匿名の誰かが書いた情報ではなくまず最初に「公式」に触れるようにします。例えばiPhoneアプリを作ろうと思えばswift言語ですがリファレンスはappleのサイトや、開発環境から開けるヘルプマニュアルです。

リファレンスを見ればどんなクラスがあり、どんなメソッド(関数)が用意されていて、どんな引数を渡せば良いか、返り値は何なのか、わかるようになっています。リファレンスを読むには言語により構成が異なると思うのでそれぞれの言語のリファレンスの見方に慣れるようにする必要があるでしょう。

サンプルコードを探し試す、メモを残す

以前講師に言われたことがあります。「プログラミング上達のためにはサンプルコード集を作ると良い」と。

どういうことかというと、プログラミングの目的は最終的には何かしらのアプリを作ることです。個人で作る人もいるし会社の中で組織で作る場合もありますがアプリを作るのが目的ですよね。教材を読み進めるだけではそこまでの技術力は身につかないのは当然です。自分で書いたコードやWEB上から拾ったコードは動かしてみて残しておきましょう。

サンプルコード集を作るというのは以下の点でメリットとなります。

・確実に動くエラーが出ないコードなので正確性がアップ
・コードをコピペ、転載することでスピードアップになる

Excelでもメモ帳でもクラウド上でも自分のブログでも構わないので「使えそうだな!」と思ったソースコードがあれば保存しておくことをお勧めします。

参考書を1冊は買っておく

これもプログラミング上達におすすめです。正引きと逆引きが出来る書籍があると良いかと思います。正引きというのは「○○したい」で探すことです。例えば「ユーザーに選択ボックスを表示したい」とか「画面をAからBに遷移させたい」とか目次を見て自分がやりたいことをスグに探せると良いです。逆引きは「用語の索引」です。「printメソッドってどうやって記述するんだっけ」と思ったときにA, B, C…順にならんだ索引からprintを見つけて何ページにあるかを探すような引き方です。

これを手元に置いておくと簡単な調べ物にとても役に立ってくれます。いちいちWEBで検索したり、ヘルプを探したりといった手間が省ける可能性が高いです。手元に開いて置きながらキーボードを触れるのもいいですね。またサンプルコードも書かれていればそのまま流用できるのも評価したいですね。

質問できる環境をつくる

プログラミングの上達のために欠かせないものは「挫折しないこと」だと思います。人はどんなときに挫折するか、それは課題、問題、疑問が解決しないときです。1個の疑問が解決せずに次に進み、また課題が出てきて、また問題に直面して、またエラーが解決しなくて‥となるとかなり厳しくて上達どころか何をやってるのかわからなくなってきます。

課題は自分で調べて解決出来ることが望ましいですが、必ずしもそうとは限りません。(むしろ解決出来ないことのほうが多いかも?)何時間もかけて最終的に海外の英語のQ&Aサイトで解を見つけることだってあります。

どこでも構いません。Stack over flowのようなQ&Aサイトでもいいし、会社の先輩でもいいし、Yahoo知恵袋でもいいし、それこそ有料のプログラミングスクールでも良いでしょう。1対1で答えが返ってくるところがいいです。疑問を疑問のままにしておくと真の理解には到達しません。

どの言語にも共通な部分から把握する

プログラミング言語はだいたいどの言語でも同じような処理ができるメソッド(関数)が用意されています。例えば文字を表示するだけのprint文とか。C言語だったらprintfだし、swiftならprintだし、Rubyならputsだし。

基本的なキーワードを紹介します。まずここを理解してから先に進む感じです。逆に言うとここを理解すればどの言語でも入り口の部分は対応可能になります。

変数、定数、代入、演算子(+ – / * %)、真偽値、整数、文字列、配列、辞書型(ハッシュ)、if文、for文、while文、switch文。

どの言語にもだいたいこれらが備わっています。この辺をじっくり何度も繰り返して意味と挙動を把握してみてください。入門書でもなんでも最初はここから取り組み、このあと膨大な量のクラスやメソッド(関数)を理解していくようになるはずです。

初心者がプログラミングの上達のために必要な最初に通る部分です。

自分が作りたいアプリを見つける

入門書を読みながら手打ちしながらプログラミングへの理解を深めていくと思いますが、そんな中で小さくてもいいので書籍には無いアプリを作ってみると良いでしょう。

一からアプリを作る作業をすることでプログラミング上達が加速します。

自分が理解していない部分が露見したり、教材通りに進めていたのでは遭遇しないエラーにも遭遇するでしょう。そのときにアレコレ調べたり検索したりして新たな発見、自分で解決する力がついていきます。

そのためには自分が作りたいアプリを見つけることが大事。例えば「じゃんけんゲーム」とか「○×ゲーム」とか「押したらキャラが動くだけ」のアプリとか。最初から作りたいアプリがある方はいいですが、無い方は教材を進めていく中で「この処理がプログラミングで出来るんだったら、合わせ技でこんなアプリを作ってみよう」とかそういう感じで見つけていきます。

本当に簡単なアプリでよいので。

英語に諦めない

プログラミングの中では「英語」にぶち当たるシーンがよくあります。もともと英語が達者な方は良いのですが、私などは英語のエラーやヘルプが出てきただけでうんざりしてしまいます。

英語が大嫌いでもプログラミングとは切っても切り離せない関係なので英語で諦めないようにしてください。Google翻訳を使えば一応は翻訳して日本語で読めますので内容の理解が苦痛でも読み進めてみましょう。

例えばエラーメッセージは英語で出力されることでしょう。どんなエラーなのか、どうすればエラーが出ないのか、英語で出てくるので戸惑うこともあります。エラーメッセージに何が書かれているのかGoogle翻訳を使って訳してみたり、英語のメッセージをそのまま検索窓に打ち込んで検索してみたりすると良いです。しかし残念な事実としてエラーメッセージはそのままでは意味不明なことが多いのです。諦めずに答えにたどり着ける情報を角度を変えて探してみましょう

以上です。

プログラミング上達のコツまとめ

重要な点をまとめますと、まずは教材通りに自分の手で書いて動きを確認していくことです。書かれているコードの理解や、実現したいことを紙とペンでお絵かきすることも理解に繋がります。そしてプログラミングを読めるけど書けないという方が非常に多いそうで、そんな方はサンプルコード集を作ること、自分のオリジナルアプリを作ってみることです。

このようにしてプログラミングを練習していけば上達が早くなることでしょう!

おまけ:プログラミング上達のコツを15人にアンケート

英語を覚えること。誰もが知っている当たり前のことだとは思うが、プログラミング言語はすべて英語である。また、もちろんエラー文も英語であり、それらの意味が分からなくて検索をかけたとしても英語のページがよく出てくる。別にわからなければ全くできたいというわけではないが、もちろんわかっているほうが良い。そしてプログラミングには「真似」が必要。とりあえずインターネットでも本からでもなんでもいいので、そこからソースコードをコピーしてどこがどう動いているのか確かめる。

プログラミングをしている別の人に、自分のつくったコードを見せるといいと思います。「このような目的のコードを書いてみました」と、他の人に見せます。すると、「もっといい関数があるよ」と、反応が返ってくれば、新しい関数を知る可能性につながります。 他の人のプログラミングコードを見せてもらうことも勉強になります。プログラミングは作る人の性格やこだわりが現れます。一気に計算するようにする人もいれば、回りくどくても、ひとつひとつ段階に分けて計算するようにする人もいます。つくった人のこだわりを感じ、必要に応じてそのこだわりを自分のこだわりとして吸収すると上達すると思います。

プログラミングを始めてみようと思うけどどうやって学び上達するか分からないという方は、まず本屋に行って書籍を買ってみましょう。古本でも構いません。書籍があれば、一人でプログラミングのことを勉強することができ、分からないところを自分で調べていくので、上達するスピードも速くなります。私も最初はプログラミングの入門書から勉強を始めました。また、スクールに通うのもオススメです。疑問があればすぐに先生に聞くことができて、時間を有効活用でき、非常にオススメです。

プログラミング上達のコツは、まず紙にフローチャートを書くことです。そのフローチャートを見ながらプログラムを作成すると驚くほど簡単にプログラムが書けます。本当はPCがフローチャートをスキャンするだけで理解してくれればいいのですが、まだその段階まで行っていません。また、結局はコンピュータは0と1の羅列しか認識できないので、プログラムを書いても翻訳して0と1の羅列に変換する必要があるという事を覚えておくといいでしょう。つまりプログラミング言語というのは人間が書きやすい様に作られたものにすぎず、たいしたものでは無いのです。論点がずれてしまいましたが、まずフローチャートを書きましょう。

教科書的な本は一冊だけ。アレコレ手を出さない。本は初心者の自分が選ばず、先輩に聞いて購入。その本読みながら、ひたすら真似して書く。目の前にあるコードをブロック図にかきながら、各ブロックのつながりや動きが説明できるくらいまで、頭で理解する。先輩が書いたコード読み漁る。コードを書き始める前に、ブロック図やチャート図などを書く。自分なりの型をできるまで、何度も同じコードをお腹いっぱいになるまでたくさん書く。これに尽きる。

一番手っ取り早くてコスパとしてもいいのは、まずは独学で勉強してみる。そのままコードを入力してプログラムをデバッグして実際に起動してる様子を確認する。それに自信ができたら、実務経験不要のプログラマーのアルバイトの募集を探して実際に経験すれば丁寧に教えてくれる会社も有ります。もちろんアルバイト以外でも「初期研修」として契約社員か正社員にしてくれる会社も十分にございます。それなりに給与もよくて、本当に好きならば勉強して実際に仕事にするのもスキルを上昇させるコツだと思います。

プログラムが上達する一番のコツは、とにかくアウトプットしまくることです。書籍を参考にしたり、ネットで調べたり、動画を見たり、インプットはなんでもいいのですが、インプットした分の倍はアウトプットするつもりでとにかく書いてみる。参考にしたものをそのまま写すだけでもアリですし、ある程度慣れてきたら何か簡単なマクロやアプリ、サイトなどを完成させることを目標に作成してみる。最初は難しいですが、何か一つでも完成させることができればそれが自信になります。リアルで周りに聞ける人がいれば上達も早いのですが、今の時代は一人で独学でもなんとかなります。オンラインの授業もあります。誰もが最初は初心者です。みんなそこをくぐり抜けてプログラムが組めるようになってるので、頑張ってくぐり抜けましょう。

プログラミングで上達するためには「正しく動く」コードと環境の設定を「正確に」知ることです。本やサンプルコードなどでは、自分の環境では期待通りには動かない事は多々あります。正しく動かなければコードは意味が無いので、正しいコードを入手する事が一番重要です。しかしそれは難しいです。 前述の通り、コードが書いてあるサイトはたくさんありますが、その通りにやっても上手く行かない事は多いので、正しいコードと設定のセットに出会えるまでとにかく「正しく動く」かどうかをひたすらチェックし続けます。間違ったコードが圧倒的に多いのに対して、正しいコードはごく一部ですから。動く事が確認できたコードを編集して、どこが間違っていたのかをチェックしていきます…そのようにして、コードの「正しさ」を保証している要件が何であるのかを勉強していきます。

もともと文系出身でプログラマーになりましたが、最初は書籍を読んで仕組みを理解しようとしたり講義を聞いたりしても全く理解できないレベルでした。自分でコードを書くようになると段々と理解できるようになっていきましたが、一番効果的だったのは作られたコードを読んで紐解いてみることでした。例えばこういう機能を作りたいとか目的があると思いますが、実際にその作られたコードをデバッグしてどこに何の値を入れて、ここのクラスでは何をして、と追っていくと段々書籍などで得た知識と実際の構造が繋がっていきます。よく考えられたコードは複雑な処理をシンプルにしていたりするので、実際に自分が開発する際に、For文やIf文などを使っていかにコード数を少なくバグが少なくなるような構造にできるか考える土台になります。自分で全く開発できない段階であれば、既にあるものを紐解いていくことをお勧めします。

出来るだけ読みやすい基本書を1冊購入して、プログラムの基本的な仕組みやプログラム言語の文法を体系的に把握する。この段階では、あまり厳密性は考慮せず、大まかな流れを把握することに努める。次の段階では、スクールあるいは仕事を通じて、実際に例文を書きながら、誤っていた知識の修正や新たな知識の肉付けを行っていく。大切なことは、正解することよりも、どんどん誤りをあぶりだして、その誤りを正していくことが肝心である。プログラムの世界は日々進化していくので、古いものにこだわらず、絶えず新しい知識を加えて行く好奇心と努力が大切である。

教師あり学習か、教師なし学習かを選んでください。教師ありとは、学校に通うなどして先生に勉強を教えてもらって学ぶ方法です。教師なし学習とは、自分で自ら勉強していくことです。プログラムを学ぶ点だけ言うと教師あり学習の方が、効率が良くすぐに成績が伸びるでしょう。しかし、金銭面では負担があり、スクールに通う通勤時間や学費が必要となってきます。その反面、教師なし学習では、効率性は悪い(自分が学びたいものだけ学べる)がお金がかからないのでよいです。私は、無料動画を見て独学で勉強しました。これは教師あり学習だがお金もかからなくて良いですよ。

私がプログラミングを上達していったのは、言語を覚えるのほかに、どう動くプログラムを作りたいかを決めてから、思い道理に動作するようにプログラムを試行錯誤していったからです。初めは非常に簡単な、「挨拶を返す」「OOという結果が出たらXXする」のようなものでしたが、次第に複雑な命令を目標にしても、自分の思い通りにプログラミングが完成し、不都合もなくテストすることができるようになったので、成長を実感できてうれしかったのと同時に、やる気がこみあげてきました。自分のモチベーションを維持できるので、この方法はお勧めです。

関数や変数等の書き方を覚える前に、本やインターネット上に掲載されているサンプルコードを打ってみる事が上達のコツです。実際にサンプルコードを打ち、実行して指示通りに動けば、プログラミングで得られる達成感を味わえます。その小さな成功体験がプログラミング学習を意欲的にさせてくれます。打ったサンプルコードについては、プログラミング学習の中で出会うコードが多いため、サンプルコードを打つだけで実は身の有る学習になっているのです。

サンプルコートを見ながら,プログラムを実行しその出力結果を確認する。そこでプログラムの一行一行がどのような意味を持つのかを確認しながら見ていくことが大事。もし初めて見るようなプログラムの命令文だった場合書籍やウェブを使って命令文の意図を理解していく。このような過程で多様なプログラムの命令文を覚えていく。もしくは実践的に課題に取り組み自分が想像する実行コマンドをウェブ上のサンプルコードから探し出し適用することでプログラムが上達すると思います。

・入門書を読み全てを一通りを試す・他人が書いたコードを読んで理解できるようにする・リファレンスで調べらるようにする・ソースの読み書きだけでなく環境設定をすることによりプログラムの繋がりを理解する・何かを作るか明確な目標を決めてそれに向かってコードを書く・ネットなどを利用し書いたコードをレビューをしてもらう・入門レベルが理解できたら次のレベルの参考書を読み理解を深める・複数のプログラム言語を使えるようにする。