プログラミングが出来るようになるには論理的思考が大切だ、なんて話をよく聞きますが具体的に何なのそれ?となるわけです。なので論理的思考を極めましょうとか練習しましょう、という話はしたくありません。
もっと具体的な話ででじゃぁどんなプログラミング言語でもいいから上達するコツは何なのか、というのをここで整理してみたいと思います。この記事は超初心者を対象としています。
入門書のサンプルを自分の手で打つ
まず入門書を手に入れましょう。今どきのプログラミング学習は書籍じゃなくてWEB上にも学習サイトやサービスが多数ありますので、必ずしも書籍じゃなくても構いません。重要なのは著者や配信元がどこなのか明示され誤記、不具合、アフターフォローがされているものを選ぶと良いです。
WEBサービスの場合は情報が最新化されている場合が多いですが書籍の場合は発行年月が古かったりしないようになるべく新しいものを手に取るようお勧めします。最近では、Progateやドットインストールのようなインタラクティブな学習プラットフォームも人気がありますね。動画で解説を見ながら、実際にコードを書いて実行できるので、初心者には特におすすめです。
入門書を読み進め、かつ実際に自分の手でサンプルコードの真似をして書くことが大事です。(このことを「写経」と呼ぶ人が多いですが、私は本来の写経とは意味とは違うのでこの呼び方は好きではありません)ただ、ただ写すだけでなく、一行一行の意味を理解しながら書くことが重要です。コメントアウトを積極的に活用して、コードの意図を自分なりに説明を加えてみましょう。
教材を読んだだけではあまり理解の助けになりません。自分でコードを書いてテストアプリを動かして教材と同じような挙動になることを確認して次に進むことが大事です。例えば、簡単な計算機アプリや、Hello Worldを表示するプログラムなど、小さな成功体験を積み重ねていくことがモチベーション維持に繋がります。
紙とペンを使う
パソコンの学習なのになぜ紙とペンを使うの?!と思うかもしれませんが、PCモニターの表示範囲は限られていますし階層の深いコードを追っていくのは大変です。そんなときに紙に出力して「挙動やロジックの絵を書いたり」「ソースコードに注釈、矢印、赤ペン」などを入れることで読みにくいソースが読みやすくなったりするものです。紙のほうが一覧性があるし俯瞰して全体を見やすいです。
私自身何年も前ですがソースコードレビューをしてたときは紙に出してそれを突き合わせたり、ホワイトボードに絵を書いたりして皆で不明点を洗い出したりしたものです。UML図やフローチャートを描くのも効果的です。複雑な処理の流れを視覚的に理解することで、コードの構造をより深く理解できます。
もし教材の中で理解ができないソースコードがあれば紙ペンで追っていくことをお勧めします。これはかなりプログラミング上達の役に立つのではないかと思います。
どういう挙動になっているのか、したいのかを仲間に表現出来る能力の向上にも役立つでしょう。例えば、ペアプログラミングをする際に、紙に書いた図を使って説明することで、相手に意図を伝えやすくなります。
検索する、検索力をつける
プログラミングを上達したいという方なので日々「検索する」という行為を行ったり調べ物を良くしていることでしょう。
プログラミングを学習したりアプリを作ったりする中で不明点や課題に直面することは非常に多くあります。そのときに「答えや情報を探す」という能力が必要になってきます。
いまやプログラミングでどうしたい、問題が解決しない、ということは誰かしら同じ症状に直面して解決している場合があります。そこでWEBで検索すると解決策が書かれたページを発見出来ることもあります。Stack OverflowやteratailといったQ&Aサイトは非常に役立ちます。エラーメッセージをそのまま検索してみるのがおすすめです。
気をつけたいのは以下の点です。
・書かれている情報が古くないか
・書かれている情報の正確性
古くないかを確認するのは難しいです。例えば5年も前の記事が出てくる場合もあるので、その都度コードに写して動きを確認して駄目だったら次の参考ページを探すようにしましょう。ChatGPTのようなAIツールも、コードの解説やデバッグに役立つ場合がありますが、出力されたコードを鵜呑みにせず、必ず自分で検証するようにしましょう。
これらの点を確認して問題なければ取り入れることですね。
公式のリファレンスを読む
何はともあれ情報を探す際に最も信頼性が高いのは「公式」です。WEB上の匿名の誰かが書いた情報ではなくまず最初に「公式」に触れるようにします。例えばiPhoneアプリを作ろうと思えばswift言語ですがリファレンスはappleのサイトや、開発環境から開けるヘルプマニュアルです。
リファレンスを見ればどんなクラスがあり、どんなメソッド(関数)が用意されていて、どんな引数を渡せば良いか、返り値は何なのか、わかるようになっています。リファレンスを読むには言語により構成が異なると思うのでそれぞれの言語のリファレンスの見方に慣れるようにする必要があるでしょう。リファレンスは、APIドキュメントとも呼ばれます。API(Application Programming Interface)とは、ソフトウェア同士が連携するためのインターフェースのことです。
サンプルコードを探し試す、メモを残す
以前講師に言われたことがあります。「プログラミング上達のためにはサンプルコード集を作ると良い」と。
どういうことかというと、プログラミングの目的は最終的には何かしらのアプリを作ることです。個人で作る人もいるし会社の中で組織で作る場合もありますがアプリを作るのが目的ですよね。教材を読み進めるだけではそこまでの技術力は身につかないのは当然です。自分で書いたコードやWEB上から拾ったコードは動かしてみて残しておきましょう。GitHubなどのバージョン管理システムを利用すると、コードの変更履歴を管理したり、他の人と共同で開発したりするのに便利です。
サンプルコード集を作るというのは以下の点でメリットとなります。
・確実に動くエラーが出ないコードなので正確性がアップ
・コードをコピペ、転載することでスピードアップになる
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だし。
基本的なキーワードを紹介します。まずここを理解してから先に進む感じです。逆に言うとここを理解すればどの言語でも入り口の部分は対応可能になります。
どの言語にもだいたいこれらが備わっています。この辺をじっくり何度も繰り返して意味と挙動を把握してみてください。入門書でもなんでも最初はここから取り組み、このあと膨大な量のクラスやメソッド(関数)を理解していくようになるはずです。
初心者がプログラミングの上達のために必要な最初に通る部分です。
自分が作りたいアプリを見つける
入門書を読みながら手打ちしながらプログラミングへの理解を深めていくと思いますが、そんな中で小さくてもいいので書籍には無いアプリを作ってみると良いでしょう。
一からアプリを作る作業をすることでプログラミング上達が加速します。
自分が理解していない部分が露見したり、教材通りに進めていたのでは遭遇しないエラーにも遭遇するでしょう。そのときにアレコレ調べたり検索したりして新たな発見、自分で解決する力がついていきます。
そのためには自分が作りたいアプリを見つけることが大事。例えば「じゃんけんゲーム」とか「○×ゲーム」とか「押したらキャラが動くだけ」のアプリとか。最初から作りたいアプリがある方はいいですが、無い方は教材を進めていく中で「この処理がプログラミングで出来るんだったら、合わせ技でこんなアプリを作ってみよう」とかそういう感じで見つけていきます。
本当に簡単なアプリでよいので。
英語に諦めない
プログラミングの中では「英語」にぶち当たるシーンがよくあります。もともと英語が達者な方は良いのですが、私などは英語のエラーやヘルプが出てきただけでうんざりしてしまいます。
英語が大嫌いでもプログラミングとは切っても切り離せない関係なので英語で諦めないようにしてください。Google翻訳を使えば一応は翻訳して日本語で読めますので内容の理解が苦痛でも読み進めてみましょう。
例えばエラーメッセージは英語で出力されることでしょう。どんなエラーなのか、どうすればエラーが出ないのか、英語で出てくるので戸惑うこともあります。エラーメッセージに何が書かれているのかGoogle翻訳を使って訳してみたり、英語のメッセージをそのまま検索窓に打ち込んで検索してみたりすると良いです。しかし残念な事実としてエラーメッセージはそのままでは意味不明なことが多いのです。諦めずに答えにたどり着ける情報を角度を変えて探してみましょう
以上です。
プログラミング上達のコツまとめ
重要な点をまとめますと、まずは教材通りに自分の手で書いて動きを確認していくことです。書かれているコードの理解や、実現したいことを紙とペンでお絵かきすることも理解に繋がります。そしてプログラミングを読めるけど書けないという方が非常に多いそうで、そんな方はサンプルコード集を作ること、自分のオリジナルアプリを作ってみることです。
このようにしてプログラミングを練習していけば上達が早くなることでしょう!
おまけ:プログラミング上達のコツを15人にアンケート
一番手っ取り早くてコスパとしてもいいのは、まずは独学で勉強してみる。そのままコードを入力してプログラムをデバッグして実際に起動してる様子を確認する。それに自信ができたら、実務経験不要のプログラマーのアルバイトの募集を探して実際に経験すれば丁寧に教えてくれる会社も有ります。もちろんアルバイト以外でも「初期研修」として契約社員か正社員にしてくれる会社も十分にございます。それなりに給与もよくて、本当に好きならば勉強して実際に仕事にするのもスキルを上昇させるコツだと思います。
出来るだけ読みやすい基本書を1冊購入して、プログラムの基本的な仕組みやプログラム言語の文法を体系的に把握する。この段階では、あまり厳密性は考慮せず、大まかな流れを把握することに努める。次の段階では、スクールあるいは仕事を通じて、実際に例文を書きながら、誤っていた知識の修正や新たな知識の肉付けを行っていく。大切なことは、正解することよりも、どんどん誤りをあぶりだして、その誤りを正していくことが肝心である。プログラムの世界は日々進化していくので、古いものにこだわらず、絶えず新しい知識を加えて行く好奇心と努力が大切である。
“`html




