プログラミングがブームなので、本を買ってきて勉強しようと始めた人も多いと思います。
がんばって続けようとしたものの、勉強や仕事が忙しくなって熱が冷めて静かにフェードアウトした経験のある人も多いのではないでしょうか。
それでも、めげずに読了したことがある人は本当に素晴らしいと思います。私は無いですね。。。いつも途中で飽きてしまいます。
でも。。。ですよ。
頑張って読了したとしても、いざ自分のプロジェクトで使おうとしたらスムーズに手が動くか。。。というとそうはいかないと思います。
なぜか?
本の著者と自分とではモノを考える道筋が同じではありません。扱うプロジェクトによっても取り掛かる場所も道筋も違うでしょう。書籍などで学習した内容や流れがピッタリ当てはまることは稀だからでしょう。そもそも全部読んだからといって完全に理解したことにはなりません。
では、どーするか?
書籍などで扱っている完成コードから自分のイメージしたアプリに必要な部分を切り出して、少しずつ加えていくんですね。
コピー元は書籍の著者が作ったコードかもしれませんが、断片を組み合わせたコードは自分のコードでありアプリでもあります。
コピーする範囲を選択するには、コードの意味や役割をしっかり理解していなければならないでしょうし、理解が曖昧だと、自分のコードと組み合わせたときに自信を持って動かすことができません。曖昧なら書籍を読み直せばいいでしょうし、もし書籍に答えが書かれていなければぐぐればいいんです。そうやって自分のコードに対する理解が深まります。自信も持てるようになります。
そうして、自分がしっかり理解しているコードを少しずつ組み上げていくんです。
ちょっと伝わりにくいかもしれませんが、個人的な体験として。。。ちょっと横道に逸れます。
私は会社ではC言語とC++を使ってきました。支援ツールの開発にはVBもしくはVBAを使いました。もちろん、独学です。
その後、大学に赴任して2,3年はC言語を教えていましたが、数年後くらいにJavaに切り替わったため勉強せざるを得ませんでした。もちろん、Javaも個人的に勉強はしていましたが。。。真面目に使う機会がなかったので本腰は入れていませんでした。
C++の経験があったのであまり心配はしていませんでしたが、いざ勉強してみると表面上にポインタが現れないコードの仕組みを理解するのにとても苦労した覚えがあります。わかってしまえば大した問題ではなかったのですが。。。それでも「授業で教える」という用事ができたので本気に勉強ができてよかったな。。。と思います。
RubyはRailsが出始めの頃に本をたくさん買い込んでは動かす。。。をしていました。
その後、企業との研究でサクッとプロトタイプを作る必要があったため、サーバー側のコードにRubyを採用して本気で学ぶ理由付けを自ら課しました。本当に学びたいなら学ぶ環境を作る。。。これ大事です。「英語を学びたいので外国からの旅行者の通訳をする」という前職の先輩の教え?に似ています。
C++を学んだときには経典だったC++プライマーを片手に、わからないコードは小さなテストコードを書いて動作を確認しました。Rubyも同様に覚えました。Javaでいうこういうことできないかな。。。とRubyの公式ドキュメントを参照しつつ、テストコードをirbなどで試して理解してから自分のコードに追加していきました。
こんなエントリーを書こうと思ったのは、まさに今、私自身がこれをやろうとしているからなんですね。。。
数日前からp5.jsでちょっとしたゲームを作ろうとしています。
Coding Shooter v 0.03 - memorandums
なんとなくやりたいことを見えてきたので対戦できるようにしたいな。。。とググっていたら以下の記事を見つけました。
nodeはもちろん遊んだことがありますが、自分のアプリを作った経験はありませんでした。
この記事で示されているコードは完成して動作するコードですが、このコードから必要な部分を抜き出してはp5.jsと組み合わせる作業をこれからしようとしています。
たぶん、このやり方は1つの練習方法だな。。。と思ったわけです。
サンプルコードを改変していくというやり方も当然ありますが。。。私が思うに、これでは「自分がアプリを作った」という感覚にはなれないんじゃないかな。。。と思います。全体的な理解も曖昧なままになるはずです。
以下、練習方法をまとめます。
(1)完全に動作するコードを入手する
(2)そのコードをベースとするのではなく、空の状態からコード作成を始めます。
(3)上記(1)のコードから必要な箇所を見極めて自分のコードにコピペします。コピペするときに理解が曖昧なところがあれば元記事などを振り返ります。それでもわからなければググって調べてコードに書かれている内容を完全に理解します。
(4)完全に理解した上記(3)のコードを動かし、期待した通りに動作することを確かめます。足元をしっかり踏み固める感じです。
(5)あとは上記の(3)〜(4)を繰り返していきます。足りない機能があれば、さらにググって参考となる別のコードを探し追加していきます。
こんな感じでしょうかね。。。全くの初心者の方にはオススメできませんが。
プログラミングに慣れてきてそろそろ自分でコードを作りたいな。。。と感じたらぜひ試していただきたい練習法です。