私にも経験がある。
参考書を買ってひたすらコードを打ち込むのだがまるで頭に入ってこない。
参考書が悪いのではないか、自分に向いてないのではないかと思い、別の参考書を買い、気づいたら家の本棚が参考書だらけになっているのだが、結局プログラムは書けないままなのである。
今になってみると上記の行動はある一定の意味があったとは思うが、本質的に意味も理解せずに写経をしているのと変わらない行為だったと思う。
どんな環境が良いのか?
私はJavaScriptを奨めたいと思う。
理由はブラウザとテキストエディタがあれば開発環境が揃うからだ。良くわからない複雑な環境設定で消耗する必要はない。
またブラウザをリロードすれば実行結果がすぐわかるのも手軽で良い。
尚、外部のライブラリの使用はオススメしない。車輪の再発明上等である。
目的の設定:
ブラウザ上で動くブロック崩しを作ることを一旦の目的としよう。別にぷよぷよでも良いしテトリスでも良い。
作り方:
・画面にブロックを表示する
・ボールを表示する
・自機を表示する
この段階では動かなくて良い。HTMLでそれっぽく表示されていれば良い。
次に自機を動かすことを考えよう。
キーボードのWを押したら左に、Dを押したら右に動くようにしよう。キー入力を受け付けて描画している自機を何ピクセルか横に移動させる。同様にボールを動かす、壁に当たったボールが跳ね返る、ブロックと衝突を判定する、ブロックを消滅させるなどなど一つずつ解決しよう。結果はブラウザにすぐに表示されるから逐一チェックできる筈だ。
おそらく上記を実装する時に上手くいかない事が沢山出てくる筈だ。なぜ上手くいかないかを考えて調べてみよう。もしかすると考え方が間違っているかもしれない。可能な限り実装したい動作を分解して考える事がポイントだと思う。そして解決策は必ずあるということも忘れないでほしい。
さて、それっぽく動く物はできただろうか。
ある程度動くものが出来たとしたらとても苦労したことだと思う。そして飛躍的にプログラミングが出来るようになったという実感がある筈だ。
・実装したい動きを分解して考える癖をつける事
・進歩が分かりやすい形で表示される事(モチベーションに繋がる)
プログラミングの話となると言語選択や作法の話になりがちだが、最初は全くそんな事を気にする必要ない。コードは汚くて良いし、動けば正義だ。動作が速ければ尚良い。自分がやりたいことをコードで表現出来て楽しめる事が何より重要だ。