写経で身につけるプログラミングの基本

とある学生さんがプログラミングの勉強をしたいということで、良い自習の方法はないか?という相談をしていました。初心者が「自習」でプログラミングを学ぶことは、どうすれば効率的なのかを、改めて考えて回答しました。

私のおすすめ学習法は「写経」という方法です。プログラマの間では今となっては割とポピュラーな学習法ですが、初心者にとってもすごく効果的だと思うので紹介しておきます。

プログラミングは知識と身体の両方が必要

まず、プログラミングをしたことのある人ならわかると思いますが、プログラミングは知識だけを身につければ出来るようになるものではありません。学校教育における歴史や地理のように猛勉強で覚えれば出来るようになる訳ではないです。

もちろん、学ぶプログラミング言語の文法や基本的なAPIについては覚えているにこしたことはありませんが、それらを覚えることはそこまで重要ではありません。

プログラミングは、自転車や自動車に乗るといったような身体性の技術に近いと思っています。動かしてみて、試してみて初めて身に付く感覚です。通勤の電車の中で一生懸命、プログラミングの本を読んだとしても、さほど効果は薄いでしょう。

そんなプログラミングを身につける効率のいい方法は、自分自身でプログラムを書くことですが、そうは言っても初心者にとっていきなりプログラムを作ることは難しいです。プログラミングの難しさには、「何を作るか」と「どうやって作るか」の2つの問題が隠されているからです。その辺りについてはプログラマと漫画家〜「何を作る」のか考えたいプログラマと「どう作る」を追求するプログラマで書きました。

プログラミング初心者はまず「どうやって作るか」を身につけるべきです。そのために出来ることは、チュートリアルのように実際にプログラムを作っていく内容の本を買って、そこに書いてあることを、自分自身の手で打ち込んでみることです。プログラマの間では、それを「写経」と呼んでいます。

写経しながら少しずつ変えていく

写経の大事なポイントは、自分の手でソースコードを打ってみて、実行してみるということです。そうすることで、プログラムが動く感動も味わえますし、もし動かなければどこが悪ければ動かないのかを知るきっかけになるからです。

おそらく多くの人が、どんな言語を学ぶときに最初は”Hello World”を表示することから始めたはずです。そのプログラムの表示する文字列の部分を変更していくことで、どこを変えれば、どこの振る舞いが変わるのか、を学ぶことができたはずです。

同じように写経をしながら、ソースコードの一部を変えながら、動きがどう変わっていくかを試していくと、より良いでしょう。プログラミングの良いところは、どんな失敗をしても、そこで損失する物質的なコストはゼロなことです。失敗を恐れず、どんどん試すと良いでしょう。

どのプログラミング言語を選ぶ?

最初はソースコードの全ての意味がわからないことがあっても、何度も写経していくことで、そこに書かれたソースコードの意味を理解していき、最終的に見本を見なくても同じソースコードを書けるようになることが最初の目標です。

プログラミング言語は好きなもの、好みや今後の就職先などを考慮して選べば良いと思います。もし私に聞かれれば、Rubyをオススメしています。Rubyの良いところは表現力が豊かなので、初心者は初心者なりの書き方、上級者は上級者なりの書き方が出来るところです。ただ沢山のライブラリを覚えれば良い訳ではなく、慣れてくれば慣れてくるほど自分自身で上達した感じを持てることが私が好きなところです。

とはいえ、プログラミング言語は宗教論争にも喩えられるほど好みの問題でもあるので、必ずしもどれがベストということは言えません。

写経を続けていきながら、並行して、自分で作りたいプログラムを作っていくと、理解がより進みます。いずれオリジナルのプログラムを作っていくときも、わからないところや参考にしたいソースコードを必要とする場面が出てきますが、その際にも自分で写経したプログラムがサンプルになります。

プログラミングの初級者のうちは、自分のストックとして沢山のサンプルコードを持っておいた方が良いでしょう。また、自分で作りだすと、どう作ればよいか難しいところが出てきます。そういうときの為にTips本を手元に置いておくのも良いでしょう。

写経の次は、レビューを受けること

自分でプログラムが書けるようになってきたら、その先本当にレベルアップをしたいのであれば、自習だけで続けるのは難しいかもしれません。その理由は以下の通りです。

ソースコードの書き方に正解はありません。正しい書き方というのはないのですが、熟練者であれば、保守性の高いソースコードや、可読性の高いソースコードなどの観点からは優劣を付けることはできます。

初心者のうちは、その優れた書き方を知る術はありませんが、自分で作ったソースコードを、熟練者からコードレビューをしてもらうことで「良いお作法」を身につけることはできます。

もし身近にコードレビューをしてくれる熟練者がいない場合は、勉強会などに参加して、題材に自分のソースコードを出してみるのも良いかもしれません。

写経と「守・破・離」

この学習法は、いわゆる「守・破・離」の「守」を実践する方法です。

まずは、お手本の通りに打ち込んでみる。それもお手本を見るだけでなく、自ら実践してお手本通りに出来るようになる。そこから、少しずつソースコードを変えていき、自分の理解を深めていく、というやり方です。

ただ、プログラミングの学習としての写経の良さは、そんなご大層なものでもなく、ベーシックマガジンという雑誌を知ってる世代であれば、印刷されて掲載されているソースコードを目で見ながら、自分のMSXなどのパソコンに打ち込んだ経験があるはずで、その時の経験って、とても良いプログラミングの勉強になってたと思いませんか?

***

【ソニックガーデンキャンプのご案内】

私たちソニックガーデンでは、プログラミングスキルを磨きたい方、エンジニアとしてより一層成長したい方向けに、仲間と一緒にゼロからWebアプリを制作する「ソニックガーデンキャンプ」を実施しています。

これは講師が手取り足取り教えるスクール形式ではなく、参加者同士がコミュニケーションを密に取り合いながら開発・学習を進めていく形式です。

自分だけでは成長に限界を感じていたり、どうすればエンジニアとして働けるかわからず悩んでいる方がいたら、ぜひチャレンジしてみてください。

ソニックガーデンキャンプ → https://camp.sonicgarden.jp/

倉貫 義人

株式会社ソニックガーデン代表取締役社長。経営を通じた自身の体験と思考をログとして残しています。「こんな経営もあるんだ」と、新たな視点を得てもらえるとうれしいです。

ニュースレター

ブログの更新情報や、ここだけの執筆裏話など、3ヶ月に1度のペースでお届けします。

購読する
書影: 私はロボットではありません
倉貫書房の新刊

私はロボットではありません

長瀬光弘 著

「嫌な未来なら変えればいい」

あなたの毎日にも、きっと繋がる。株式会社ソニックガーデン代表倉貫義人のブログ「Social Change!」のノベライズ化第一弾。

BASEで注文する
ページ上部へ