プログラミングの勉強には本が欠かせません。しかし、本で学んでいる人が挫折するポイントは、「本に書いてあることを理解できない」「どこまで分かれば、理解できたと言えるのかが分からない」と感じることです。
プログラミングスキルは、積み上げ型のスキルです。1つ前の内容が分からない場合、次の内容も分からない可能性が高くなります。
分かったつもりが続くと、ある時急にチンプンカンプンになってしまいます。そして分からないが続くと、何が分からないのかも分からなくなり、勉強する意欲が薄れて二度と本を開くことはなくなってしまうでしょう。
学び初めの段階ですぐに挫折するのはもったいないです。
もしもあなたに野球選手を目指す子どもがいて、その子が初めて出場した練習試合の第一打席を空振り三振で終わったとしましょう。グラウンドに応援に行っていたあなたも少しがっかりするかもしれませんが、そこで私の子どもは野球選手に向いていないとは思わないでしょう。まだ決めつけるには早すぎます。
学習についても同じことが言えます。
ただし、野球であれば監督やコーチもいるため、正しいバットの振り方を教えてもらってうまくなれると思えますが、教えてくれる人もいないプログラミングの勉強でつまづいた際にどうすれば良いのか分からずに不安になると思います。
そのため、今回は本の内容を理解するためにどのような勉強をするのか、具体的な方法を提示していきたいと思います。
実際にコードを書いて動かしてみる
本を読んだだけで理解できることは、この業界に限らずほとんどありません。書いてある通りに体験して初めて、こういうことだったのかと理解できることは多々あります。
プログラミングについても同じことが言えます。
本に書いてあるコードを読んで内容を理解するのは、この業界で長く働いている人でも難しいことが多いです。そういうときは、実際にそのままコードを書き写して実行してみましょう。理解できなくてもOKです。とりあえず本と同じように書きます。1文字たりとも間違えず、正確に書き写して実行すれば、実際に動くプログラムが手に入ります。
大事なのは、動くプログラムが手元にあるということです。
動くことで初めて、筆者の言いたいことが分かる場合もあります。1ステップずつ動かすことで、こういう順番で処理が実行されているのかということを知ることもできるでしょう。いつ値を代入しているのかも目で見て分かるようになります。
実際のプログラムでどのような動きをするかが分かったら、そこで終わりというわけではありません。ここまでであなたが分かっていることは、「本にあるプログラムがどう動くのか」だけです。実際に使える知識にはまだなっていません。
これは、プログラミングの勉強でよくある誤りの一つです。「コードの内容を理解した」=「コードの書き方や使い方を身につけた」と勘違いしている人が非常に多いです。
当然ですが、そんなわけはありません。ホームランの打ち方の解説を聞いて理解はできても、実際にできるわけではありません。小説を読んで理解はできても、自分で書けるわけではありません。分かるとできるは違うのと同じように、読めると書けるも違います。
プログラミングの勉強では、本に書いてあるコードを読めることは第一ステップにすぎません。あなたがコードを書けるようになるには、次のステップが必要になります。
プログラムの内容を、一つずつ書き換えてみる
コードの動き方を理解したら、次は自分で使えるようになることを目指しましょう。コードを使えるという状態とは、以下のような状態を指します。
- 本に沿って書き写したプログラムで書かれている内容を、1行ずつ説明できること
- 本に沿って書き写したプログラムの一部を変えたときに、最終結果を予想できること
- 本に沿って書き写したプログラムにひと手間加えたプログラムを自分で書けること
1については、たとえば「int型のpriceにint型のcountをかけている」「文字列を連結している」といった、ただコードをそのまま読んだだけの言葉よりは、「単価と数量をかけて合計金額を計算している」「ログに処理結果を出力するために、処理結果を連結している」などの「なぜそれをやっているのか?」と合わせて説明できれば、さらにGoodです。
2については、たとえば1~10までの合計を計算するプログラムを書いた場合、10を100に変えたら結果がどうなるのか、足し算を掛け算に変えたらどうなるのか、実際にコードを書き変えながら結果を予測してみることです。自分がコードの内容を正しく理解できているかを確認できるとともに、変数や引数というものの理解が深まることでしょう。
3については2とも似ていますが、たとえば1~10までの合計を計算するプログラムを書いた場合、1~10までの奇数の合計を計算する、1~指定された数字までの合計を計算する、などコードにひと手間加える変更をしてみることです。もちろん、本を見ながら書いてOKですが、もとの本のコードをコピペせずに一から書いていくことをお勧めします。
この3つができれば、そのプログラムについては読み方も書き方も理解したと言って良いでしょう。
身につけたスキルは、積極的に使ってみる
せっかく理解した内容も、使わなければ忘れてしまいます。理解出来たタイミングで、「ふ~ん、こんなもんか」のようなそっけない反応をしてその後一切そのスキルを使わなければ、3日もすれば勉強する前の状態に戻ってしまうでしょう。
そうならないためにも、身につけたスキルは積極的に使いましょう。と言っても、実際にプロジェクトに参画していない方は使う場面も少なくて難しいと思っているかもしれません。
しかし、本当にそうでしょうか。本を読み進めながら、「あ!ここはこの前学んだループを使う場面だ」「ここはif文で書けそうだ」と考えるだけでも、身につけたスキルを使っていることにはなります。すぐ後に本のサンプルコードが登場するため、自分の考えが合っているかを確認することにもつながるでしょう。
プログラミングのスキルというのは、何もコードを直接書くことだけではありません。
プログラムの書き方を考えることも、プログラミングスキルを高める良い練習になります。つまり、パソコンの前に座っていなくてもどこでも練習はできます。「これをプログラムで表現するにはどうすればよいのか?」という思考を常に持ち続け、自分が学んだことを積極的に活用することで、初めは何とか使えていたスキルが、いつしか当たり前に使えるスキルへと変わっていきます。
まとめ
最初にもお伝えしましたが、プログラミングの学習は積み重ねです。前のステップでつまづくと、次のステップには進めません。
初めはすべてを理解しようとしなくても良いかもしれませんが、プログラミングの基礎と言われる、分岐やループについては少なくとも使えるようになっておきましょう。
それに対して、継承やインターフェイスといった複雑な部分については、使うシーンの想像もなかなかつかないでしょうから、まだ理解できなくても問題ありません。私も初めはこの辺りの単元に入った際に理解しようと思うことは一旦脇に置きました。
それでも、最後のページまではパラパラとめくったことを覚えています。理解できなくても良いですが、用語だけは知っておこうと考えたからです。知らなければ調べることもできませんし、プログラムでできることとして想像する範囲も狭くなってしまいます。難しいところであっても、用語は聞いたことはある程度にはしておきましょう。