プログラミングの写経は意味があるのか

写経——本や動画に出てくるコードを、自分の手で書き写す学習法です。「意味がある」「時間の無駄」と評価が分かれますが、分かれているのはやりかたのほうで、写経そのものの良し悪しではない、というのが実感に近いところです。

同じ「書き写す」でも、画面を見ながら文字を追うだけの写経と、一行ずつ何をしているか確かめながら進める写経では、残るものがまったく違います。この記事では、写経が効く場面と効きにくい場面、そして効かせるための手順を整理します。

写経が効くのは「手が動かない」段階

写経がいちばん効くのは、頭では何となくわかっているのに手が止まる時期です。

プログラミングを始めたばかりのころ、真っ白なファイルを前にすると、最初の一行が書けません。何を書けばいいかではなく、どう書き出すのかがわからないという状態です。ここは説明を読んでも埋まりにくく、実際に書いた回数でしか縮まらない部分があります。

写経がそこを埋めてくれます。

  • ファイルの冒頭に何を書くのか、という決まりごとが身につく
  • かっこや記号の対応、インデント(行頭の字下げ)の感覚が手に残る
  • 打ち間違いでエラーが出るので、エラー画面に慣れる

3つ目は見落とされがちですが、初心者にとってはかなり大きい効果です。写経中のエラーは原因がほぼ打ち間違いなので、エラーが出たときの調べかた・直しかたの基本で書いたような読みかたを、低いリスクで練習できます。

効きにくいのは「わかったつもり」になるとき

一方で、写経が空回りしやすい場面もあります。写し終えて動いたときの達成感が大きいぶん、理解した感覚だけが先に来てしまうことです。

見分けかたはかんたんで、写経したファイルを閉じて、同じものをもう一度ゼロから書けるかどうか。書けなければ、そのときの写経では「打つ練習」しか起きていなかった、ということになります。それ自体が無駄なわけではありませんが、そこで止めると次に進みません。

もうひとつ効きにくいのは、内容が今の自分から遠すぎるときです。仕組みの見当がまったくつかないコードを何百行も写しても、記号の並びが手に残るだけで終わりがちです。

「ただ写す」で終わらせない3つの手順

写経を学びに変えるために、次の3つを足すだけでかなり変わります。

  1. 写す前に、これから何が起きるか予想する。1行ずつでなくてかまいません。「このかたまりで画面に文字が出るはず」くらいで十分です。予想が外れたところが、いま自分がわかっていない場所です。
  2. 写し終えたら、必ず壊す。数字を変える、行を1つ消す、順番を入れ替える。動かなくなった理由を確かめると、その行が何をしていたのかがはっきりします。動くコードより、壊してみたコードのほうが記憶に残ります。
  3. 翌日、見ないで書き直す。全部でなく、一部分でかまいません。手が止まった箇所が、次に読み返すべきところです。

とくに2つ目が要です。写経は「正しく写すこと」が目的になりやすいのですが、学習として見るとわざと間違えて確かめる時間のほうが濃いという考えかたがあります。

写経から自分のコードへ移るタイミング

写経はずっと続ける学習法ではなく、次に渡すための踏み台です。目安として、次のような感覚が出てきたら移りどきです。

  • サンプルを見て「ここを変えたらどうなるんだろう」と思う
  • 写している途中で先の行が予想できる
  • 作りたいものが具体的に浮かんでいる

このあたりまで来たら、写経の量を減らして、自分で作る側に時間を寄せていきます。作る対象の決めかたは「作りたいもの」から逆算する学習の進めかたにまとめました。写経で覚えた書きかたを、自分の目的に向けて組み替える段階です。

移ったあとも、新しい分野に入るたびに短い写経を挟むと立ち上がりが速くなります。Web制作ならHTMLとCSSの範囲を一度写して全体像をつかんでから作りはじめる、といった使いかたです(範囲の線引きはHTMLとCSSで何ができるのか、最初の全体像を参照)。

まとめ

  • 写経は「手が動かない」時期にはよく効く。打つ練習とエラー慣れが同時に進む
  • 写しただけで理解した気になりやすいので、閉じてから書けるか確かめる
  • 予想する・壊す・翌日書き直す、の3つを足すと学びに変わる
  • 「変えたらどうなる?」が浮かんだら、自分で作る側へ移る合図

写経で詰まるところは、多くの人が同じ場所で詰まります。声に出して説明してみると自分の理解の穴が見えることも多いので、人が集まる場を使うのも手です。デジタルラボ金沢では初心者からOK・一人一人が主役という考えかたでワークショップや勉強会を開いていますので、気になった方はお問い合わせからどうぞ。

← 記事一覧へ戻る コミュニティに参加する