2022年6月21日火曜日

写経 最高のプログラミング学習方法




最近、写経してプログラミングを勉強しています。
 

なぜプログラミング能力向上に役立つのか。


まずは私が勝手に師匠と考えている清水亮氏の記事を見てみてほしいと思います。

実際、同じコードを毎回、何千回と写経した僕はいまや目をつぶっていても正確なプログラムが頭に浮かぶ。
頭の中にPythonの処理系があり、眠っていてもソースコードを検討できる。

このあたりは、本当にすごい。

実際に何千回も書いていらっしゃると思うので、

この領域になると寝ていても考えられるらしいですね。。。。


これだけ読んでも

プログラミング学習には写経が効果的であることは実感出来るでしょう。

、、、


でも、

清水氏は「天才プログラマー」の称号を得ており、

在学中にプレステのゲームを作ったり、

米国マイクロソフトで次世代ゲーム機のOS開発に携わったり、

「普通」ではない人だ。

もしかしたら、彼以外は適用されないものかもしれない。


ということで、自称「普通の人」である、このブログ管理人の私が、もう少し噛み砕いて、写経の良さを考えてみたいと思います。

写経のよさ

ちょっとだけ間違えられる

写経するときは、いわゆる「答えのプログラム」を見ながら

プログラミングしていきます。

その答えと、一字一句間違わず書ければ、ちゃんと動くはず。

しかし、完成させて動かしてみると動かない 

普通であれば、「イラッ」とくるところです。
せっかく書いたプログラムが
動かないんですもの!

そして、動かない原因のご紹介、
わけのわからないエラーメッセージが画面に出てきます。

この時点で
「よし、なにが原因か調べてやるぞ」
となる人は、かなり少なくなってしまいます。

これがプログラミング挫折の主な要因です。

でも待ってください。

タイプミスがなかったら「動いていたはず」のプログラムです。

ミスの数は、限りなく少ないはず。

じつは、あとちょっとで動くんです。

最初から最後まで、お手本のソースコードをじっくり見ていくと、

「・・・あった。ここが違う」

とわかり、やっと動く、と。


人間は、困った時や緊急事態になると、脳が活性化します。

動かないプログラムを何とかして動かそうとして、脳が活性化することを利用した勉強法です。

これは、単にプログラムのソースコードを見るだけでは体験できないもの。

見るだけでは、どうしても「失敗」できないので、

脳が活性化しないんですね。


文法からロジックまで総合的に学べる  


お手本のソースコードには、

そのプログラム言語で使えるループや変数、用意された関数を紹介するものがあります。

それだけでなく、ゲームや日記などの「動く」アプリケーションを

作るためのソースコードもあるでしょう。

「動く」アプリケーションは、文法だけでなく、敵や味方の定義やデータの持ち方、変数名のつけ方、画面表示テクニック、など、さまざまな点を写経で学ぶことができます。

当然、最初は訳が分からず写すだけなのですが、

なんどもやっていくうちに、「慣れて」いくんです。

いつもなんか同じこと、ここで書いているな。
敵キャラを動かすときは、まずこれを準備しておこうか。

といった具合に、少しずつ、書き方がわかってきます。

師匠の動きをまねて学ぶ弟子のような感じでしょうか。


完成した後「楽しめる」気持ちで頑張れる

特にゲームや便利系アプリを写経しているときに思うのですが、

「これができたら自分で楽しめる!」

という未来像が自分の中でできてきます。

単に文法を学ぶだけだとつまらないので

自分で作りたいものを写経すると、

いつもとは違ったモチベーションが出ます。

今はプログラミングをバリバリされているかたも、

昔の話を聞くと

「意味も分からず雑誌のソースコードを書き写していた」

という記載があるのを見たのは、一度や二度ではありません。

意味も分からず書き写すのは、その行為だけだと苦痛以外の何物でもないのですが、

その先に、雑誌で紹介しているアプリが動くようになる、ということだけで

頑張れるのです。



最後に

写経はプログラミングの勉強法の中でもとても効果がある方法です。

天才プログラマーの清水亮氏も

写経でプログラミングを学んでいらっしゃいます。

是非、これからプログラミングを学ぼうとするかたは、

「写経」してみてはいかがでしょうか。


ちなみに、もし、写経以外に学ぶべきことがある、とするなら、

写経を終えて、プログラムが「わかってきた」ときに次にどうするか、

どんな心構えが必要なのか、をしることです。

おすすめなのはこちらの2冊


何かを学ぶときは、それを極めた人に聞くのが一番。

最近第2版が出て、最近のプログラミング事情にも合わせて書かれた名著