おすすめの学習法

プログラミングの上達に写経は無駄じゃない!メリットと効果的な学習方法を解説

プログラミング勉強における写経の重要性

「プログラミングを学ぶ上で写経が役立つって聞いたんだけど、どういうことだろう?」

「写経って、要は書き写すだけでしょ? そんなの無駄じゃないの?」

プログラミングの勉強に際して、こんな疑問にぶつかった方もいらっしゃるのではないでしょうか。

写経(しゃきょう)、要は「ただ書き写すだけ」という学習方法で、プログラミングにおいてどれだけの効果があるのか、半信半疑な方も多いと思います。

結論としては、写経はプログラミングの基礎的な学習においては役立ちます。

では、なぜ写経が役立つのか?
役立つとして、どのような進め方をすれば効果的なのか?

この記事では、そういった点について解説していきます。

プログラミングにおける写経とは

プログラミングにおける写経

写経のやり方

そもそも「写経」とは、前述の通り「書き写すこと」です。

プログラミングにおける写経とは、ネットや本に載っているサンプルコードを、テキストエディタやプログラミングツール上にひたすら打ち込む作業のことを指します。

写経は意味のない無駄な行為?

「ただ写すだけ、なんていう行為は無意味じゃないの?」

こう感じる方もいるでしょう。

ですが、思い出してみてください。
学生時代、学校の先生や塾の講師から「ただ教科書や参考書を見ているだけでなく、手を動かしてノートに書き込め」と言われた経験はありませんでしょうか?

これは実に正しい指示です。
人間の脳は、何かを覚えようとする時、ただ目で見ているよりも手を動かすというアクションを伴う方が定着しやすい、という特徴があります。
受験勉強なら手書き、プログラミングならタイピングです。

実際に、初心者の頃は写経でプログラミング学習を行なったというエンジニアもおり、その多くが写経の効果を実感しているようです。

これからプログラミングの勉強を始めようという未経験者や、まだ勉強を始めたばかりという初心者には、写経は有効な学習方法だと言えるでしょう。

プログラミング学習の際の写経によるメリット

写経のメリット

プログラミング学習において、写経することで具体的にどんなメリットがあるかについて解説していきます。

基礎的なことが自然と身に付く

漢字や英単語を覚える時に、ひたすら書いて覚えるという単純作業をこなした記憶があると思います。

同様に、プログラミング言語の基礎的な部分を覚えるということに関しても、ひたすら書くことでしか身に付きません。
ただ本を眺めていても駄目なのです。

コードを丸暗記する必要はありませんが、構文を書き写すことで構造を学ぶことができ、いつの間にか基礎的な知識が身に付いている、という効果に期待できます。

自信やモチベーションに繋がる

特に初心者に言えることですが、写したものであろうがなんだろうが、自分の手で打ち込んだコードによってプログラムが走った時の快感は何とも言えません。

タイプミスや開発環境の設定ミスなどによって、たとえ丸写ししたとしてもプログラムが上手く動かないことは多々あります。

それらを克服して、無事に目的の動作を実現した時の喜びは大きいですし、次の課題へのモチベーションにも繋がります。
また、「四苦八苦しながらも自分の手でプログラムを動かしたのだ」という自信を得ることもできます。

言語ごとの記法に慣れる

プログラミングは、言語によって当然書き方が変わってきます。

特に違うのが変数やクラスの定義ルールで、キャメルケースやスネークケースといったルールが存在します。

記法の例

■キャメルケース : 単語の先頭を大文字にするというルール
■スネークケース : 単語の間をアンダーバーで繋ぐというルール
■ケバブケース :  単語の間をハイフンで繋ぐというルール

例えばRubyの変数名や関数名ならば、スネークケースとなります。

このように、言語によって記法等が異なるのですが、写経の反復によって、自分が習得したいと思っている言語の記法に徐々に慣れていき「こういう場合はこう書く」という考え方が自然に染み付いていきます。

デバッグスキルを学べる

ただ写すだけとはいえ、タイプミスというのは高確率で発生します。
その際に、どこでミスをしたのか探すためにデバッグをする必要が出てくるのですが、エンジニアになればデバッグは必須の作業となりますので、初心者のうちからデバッグに慣れておくのは大変有意義です。

これも、大きなメリットと言えるでしょう。

写経を活かした効果的な勉強法

写経を活かした勉強方法

本やネット上のサンプルコードをタイピングして書き写す写経ですが、ただ丸写ししているだけでは効果が薄く時間を無駄にしてしまいます。

以下では、写経による学習を効果的に進めるための方法を列挙していきます。

コードの意味を考えながら写す

写経をする時、何も考えずにただただサンプルコードを写すというのは非効率的です。
ましてや、ただコピペして貼り付けるなど論外ですので絶対に避けてください。

「このコードはどんな処理を行なっているのか」
「なぜここでこのコードが必要なのか」

といったことを常に考えながら写経することが重要です。

書き写すだけでなく動作確認まで行なう

テキストエディタに書き写すことも写経ですが、写しただけで終わりではありません。
コンパイル⇒実行まで行ない、動作確認が完了して初めて「写経した」と言えます。

「ただ写すだけなのだから簡単だ」と考える方もいるかもしれませんが、初心者が1文字も間違えずに長いサンプルコードを書き写すというのは意外に大変で、かなりの確率でタイプミスが発生します。
書きっぱなしではなく、きちんと動作確認まで行うようにしてください。

お勧めなのは、最初からデバッグが可能なツール上で写経することです。
エラーが発生しても、どこが間違っているのかが一目瞭然であり、効率的に学習を進めることができます。

写経を開始する前に、まずは開発環境をしっかり整えておくのがよいでしょう。

わからない処理を放置しない

サンプルコードを正確に書き写せばプログラムは動きますが、ただ動けばOKということではありません。
「タイプミスで何度かエラーが出たけど、修正したらとりあえず動いたし、もういいや」で済ませてしまっては、プログラミングの上達に繋がりません。
翻訳機を使った英文で英語でのやり取りができたとしても、英語力の上達には繋がらないことと同じです。

処理が理解できない部分については、理解できるまで徹底的に調べましょう。

サンプルコードに自分なりの変化を加える

ある程度写経に慣れてきたら、サンプルコードをそのまま丸写しするのではなく、多少自分なりの変化を加えるという方法も上達への近道です。

例えばフォーム機能を作る際、サンプルコードには「名前・メールアドレス・問い合わせ内容」の3項目しかなかったとしたら、そこに「性別・電話番号」といった項目も追加してみる、といったような形です。

サンプルコードを写せば動くのは当たり前ですが、自分で変化を加えた上でプログラムが意図通りに動いた時は達成感が段違いとなりますのでお勧めです。

写経のサンプルコードとしておすすめの教材

写経のサンプルコードを探す場合は、「動画学習サイト」「参考書」の2つの方法があります。
この2つを比較すると、動画で学ぶ方が断然わかりやすいので、サンプルコードを探す際は動画学習サイトの利用をおすすめします。

写経に役立つ動画学習サイトとしては、以下のようなものがあります。

Udemy

Udemyは、各分野に詳しい人が作成した解説動画が販売されているオンライン学習プラットフォームで、プログラミング未経験者から上級者まで幅広く利用されています。

サブスクではなく買い切り型なので、購入した動画はいつでも好きな時に何度も視聴できます。

■Udemy公式サイト

ドットインストール

ドットインストールは、「3分」というちょっとした空き時間を利用して学べるのが特徴的な学習サイトです。
短い時間で集中的に学べるため、人気があります。

また、言語やスキル別にカリキュラムが分かれていて、合計で6,000本以上もの動画が用意されています。

■ドットインストール公式サイト

Schoo

Schooとは、生放送にて講師と受講生がやりとりする双方向LIVEコミュニティです。
受講生がその場で質問したことに対し、講師が答えるようなシーンも多々あります。

動画は19のカテゴリに分かれており、7,000本以上の授業をいつでも受講可能です。
写経用に活用する場合は、録画された動画を視聴するのが有効でしょう。

■Schoo公式サイト

写経だけでは限界がある

プログラミングの学習

写経は、プログラミング未経験者や初心者にとっては大いに意味のあるものですが、写経だけやっていればいいというものでもありません。
やはり、書き写すという行為だけでは限界があります。

ひたすら写経を繰り返し、一定以上の実力を身に付けた後は、自分が作りたいサービスやアプリを自分の頭で考え、それを設計して実装する、といった次のステップへ進むべきです。

当然、修行中の身で作ったプログラムなどそう簡単に動いてくれません。
きっと失敗に終わるでしょう。

しかし、諦めずにしつこくデバッグをこなし、場合によっては設計の見直しを行ない、その再設計に沿って再び実装し、エラーが出たら修正していく。
こういったトライ&エラーを何度も経験していくことで、本物のプログラミング力を得ることができます。

そして、自分が生み出したサービスやアプリは、ポートフォリオとしても活用できます。

どのようにしてサービスやアプリを設計すればいいのかイメージが湧かない場合は、是非以下の記事を参照してみてください。