「写経」「模写」「車輪の再発明」- 手を動かす学習法の使い分け
この記事は約 5 分で読めます。
「手を動かせ」の先にある選択肢
プログラミングの学習で「手を動かせ」とよく言われます。しかし、手の動かし方にも種類があります。本のコードをそのまま打ち込む「写経」、既存のアプリケーションを見ながら再現する「模写」、既存のライブラリやツールを自力で作り直す「車輪の再発明」。
この 3 つは似ているようで、鍛えられるスキルがまったく違います。目的を間違えると、時間をかけた割に成長を実感できません。
3 つの学習法の比較
写経 - 文法と慣用句を体に染み込ませる
本やチュートリアルのコードを一字一句打ち込む方法です。
鍛えられるスキルは、言語の文法と慣用的な書き方です。Python の内包表記、JavaScript のアロー関数、Go のエラーハンドリングパターン。これらは「知っている」と「手が勝手に書ける」の間に大きな溝があり、写経はこの溝を埋めます。
写経が効きやすいのは、その言語の書き方が手に馴染むまでの期間です。目安としては学び始めの 1〜2 ヶ月ですが、期間そのものが基準ではありません。判断の基準は、サンプルを見ずに同じ処理を書けるかどうかです。書けるようになった後の写経は、考える余地が残らないぶん打ち込み作業に近づきます。
向いている人は、新しい言語やフレームワークに初めて触れる人。逆に、その言語を書き慣れた人が全編を写経しても得るものは少なくなります。ただし同じ言語でも、非同期処理や型定義のように書き方の型そのものが変わる領域に初めて手を出すときは、その部分だけ写経に戻す価値があります。
模写 - 設計判断を追体験する
既存のアプリケーションやサービスを、見た目と機能を参考にしながら自力で再現する方法です。
鍛えられるスキルは、設計判断力です。「この機能を実現するには、データ構造をどう設計すればよいか」「この UI を作るには、コンポーネントをどう分割すればよいか」。模写では、完成形を知った上で設計を自分で考えるため、「何を作るか」で迷う時間を使わずに設計の試行錯誤だけに集中できます。
写経との決定的な違いは、正解のコードを見ずに自分で考える点です。完成形の見た目や動作は参考にしますが、実装方法は自分で決めます。行き詰まったときだけ、参考にしたアプリケーションのソースコード (公開されている場合) を確認します。
一点だけ注意があります。手元で動かして学ぶだけなら問題になりませんが、既存サービスの画面や独自の名称・ロゴをそのまま再現したものを公開したり、ポートフォリオとして見せる場合は、著作権や商標に触れる余地が出ます。公開するつもりなら、参考にするのは機能の構造までにとどめ、見た目と名前は自分のものに置き換えます。
向いている人は、文法は書けるが「何を作ればよいかわからない」人。向いていないのは、文法自体がまだ不安定な人です。
車輪の再発明 - 仕組みの本質を理解する
既存のライブラリ、フレームワーク、ツールを自力でゼロから作り直す方法です。簡易版の HTTP サーバー、ミニマルな React、自作のテストフレームワークなど。
鍛えられるスキルは、技術の本質的な理解です。React を使えるエンジニアは多いですが、仮想 DOM の差分検出アルゴリズムを説明できるエンジニアは少数です。車輪の再発明をすると、「使える」から「仕組みがわかる」にレベルが上がります。
コンピュータサイエンスの本を読みながら車輪の再発明をすると、理論と実装の両面から理解が深まります。
紛らわしいのは、この言葉が普段は否定的な意味で使われる点です。実務で「車輪の再発明はするな」と言われるのは、広く使われているライブラリで済む処理を自作すると、保守も不具合対応も自分に降ってくるからです。学習として有効なのは動かす先が自分の手元に限られている場合で、仕事のコードに持ち込む話ではありません。
向いている人は、特定の技術を深く理解したい中級者以上。向いていないのは、まだ基本的なアプリケーションを作った経験がない人です。
学習段階別の推奨フロー
以下の年数は目安です。切り替える時期を決めるのは経過月数ではなく、書いた量と最後まで動かしたものの数です。
初学者 (0〜6 ヶ月)
写経 → 模写の順で進めます。最初の 1〜2 ヶ月は写経で文法を体に染み込ませ、その後は模写で小さなアプリケーションを作ります。この段階で車輪の再発明に手を出すと、作ろうとしている対象の仕様を読み解く作業と言語に慣れる作業が同時に来るため、手が止まりやすくなります。
中級者 (6 ヶ月〜2 年)
模写を中心に、興味のある分野で車輪の再発明を始めます。模写で設計判断の経験を積みながら、「なぜこう動くのか」を知りたくなった技術について車輪の再発明で深掘りします。
上級者 (2 年以上)
車輪の再発明を中心に、新しい言語を学ぶときだけ写経に戻ります。上級者にとって最も学びが大きいのは、普段使っているツールの内部実装を理解することです。
よくある失敗パターン
よく見かける失敗は、写経をいつまでも続けることです。写経は入門期に効果的ですが、文法が身についた後も同じやり方を続けると、手が覚えている処理をもう一度打つだけになり、得られるものが目に見えて減ります。
もう一つは、車輪の再発明を完璧にやろうとすることです。本物と同じ品質のライブラリを作る必要はありません。核心部分の仕組みが理解できれば、途中でやめて構いません。
関連記事
まとめ
写経は文法を体に染み込ませる。模写は設計判断を追体験する。車輪の再発明は仕組みの本質を理解する。3 つの学習法はそれぞれ鍛えるスキルが異なります。自分の現在のレベルと伸ばしたいスキルに合わせて、適切な方法を選んでください。
この記事は役に立ちましたか?
関連用語
関連記事
「写経」の退屈さに耐えられない人のための代替メニュー
技術書のコードを手で打ち込む「写経」が続かない人へ。手を動かす学びを保ったまま退屈しにくくする、4 つの代替学習法を紹介します。
本のコードを写すだけでも力がつく理由
本のコードをそのまま打ち込む「写経」は、初心者にとって最も効果的な練習法の 1 つです。なぜ写すだけで力がつくのか、その仕組みを解説します。
技術書の「写経」が続かない人のための段階的アプローチ
技術書のコードを写経しようとして挫折した経験はありませんか。写経が続かない原因を分析し、無理なく続けられる 4 段階のアプローチを紹介します。
写経のすすめ - 技術書のコードを手で打ち込む学習効果
技術書のサンプルコードを手で打ち込む「写経」の 3 つのレベルと、写経に向いている本の特徴、効果を最大化するやり方を紹介します。
写経を超える - 技術書のコードを自分のプロジェクトに応用する方法
技術書のサンプルコードを写経するだけでは実力は伸びません。書籍のコードを自分のプロジェクトに応用し、実務で使える力に変える 5 つのステップを解説します。
本を読んでもすぐにコードが書けなくて当たり前
本を 1 冊読み終えたのに、いざコードを書こうとすると手が動かない。これは普通のことです。読書とコーディングの間にあるギャップと、その埋め方を解説します。