AIに書かせる前に、手で書く — 紙への写経200時間で変わったコードの解像度
TL;DRHTML・CSS・TypeScript・Pythonのコードを紙に書き写す学習を約200時間続けた。得られたのは構文の暗記ではなく「コードの構造を塊として認識する力」で、AIの生成コードをレビューする速度が体感で大きく上がった。一方、写経だけでは設計力は身につかず、IDE上での試行錯誤と組み合わせて初めて意味を持つ。
コーディングエージェントが実装の大半を担える時代に、紙にコードを書き写す。冷静に考えればかなり奇妙な学習法ですが、私はこれをHTML、CSS、TypeScript、Pythonの4言語で合計200時間ほど続けました。きっかけは単純で、AIが生成したコードを読んでも「動いている理由」が説明できない自分に気づいたからです。読めないものはレビューできず、レビューできないコードを本番に流すのはエンジニアの仕事として成立しません。本稿はこの学習法の記録と、正直な効果検証です。
手順:写経は「写す」だけでは終わらない
やり方は段階を踏みます。第一段階は、教材や公式ドキュメントのサンプルコードをそのまま紙に書き写すこと。このとき、インデント、括弧の対応、セミコロンの有無まで省略せずに写します。第二段階は、写した直後に何も見ずに同じコードを再現すること。ここで必ず詰まります。詰まった箇所が「自分が構造を理解していない箇所」の正確な地図になります。第三段階は、紙に書いたコードをエディタに打ち込んで実行し、写し間違いによるエラーを自分でデバッグすることです。
写経の題材にした典型例(TypeScript)interface Task {
id: number;
title: string;
done: boolean;
}
class TaskList {
private tasks: Task[] = [];
add(title: string): Task {
const task: Task = {
id: this.tasks.length + 1,
title,
done: false,
};
this.tasks.push(task);
return task;
}
complete(id: number): boolean {
const task = this.tasks.find((t) => t.id === id);
if (!task) return false;
task.done = true;
return true;
}
}
この程度のクラス定義でも、紙に書くとなるとprivateの位置、戻り値型の書き方、アロー関数の引数の括弧など、普段エディタの補完に任せている細部で手が止まります。手が止まる場所こそが、自分の理解の穴です。
200時間で得られたもの
最大の収穫は、コードを1文字ずつ読むのではなく「塊」として認識できるようになったことです。たとえばfindしてundefinedチェックして早期リターンする、という3行は、200時間後には1つのパターンとして一目で読めるようになりました。心理学でいうチャンク化に近い現象だと思います。この変化はAI時代にこそ効きます。エージェントが生成した数百行の差分を見るとき、パターンとして既知の部分は高速に流し、見慣れない構造だけに注意を集中できる。レビューの速度と精度が体感で明らかに変わりました。
もう一つは、言語間の構造比較が自然にできるようになったことです。PythonとTypeScriptで同じ処理を写経すると、クラスとインスタンスの概念は共通でも、型の書き方やスコープの扱いが違うことが手の感覚として残ります。概念と構文を分離して理解できるようになると、新しい言語への移行コストが下がります。
身につかなかったもの:写経の限界
公平に書くと、写経では設計力はほぼ身につきませんでした。「どう書くか」は学べても、「何を書くべきか」「どう分割すべきか」は、自分で要件を決めて作って失敗する経験からしか学べません。また、200時間という投資が万人に正当化できるかにも疑問が残ります。同じ時間をIDE上での小さなアプリ開発に充てた方が、総合的な成長は速い人も多いはずです。私の場合は「読めない不安」を潰すことが先決だったので合理的でしたが、写経を万能の基礎訓練として勧めるつもりはありません。タイピングでの写経と比べて紙が優れている根拠も、補完が効かないため誤魔化しが利かないという一点に尽きます。
AIとの分業を前提とした基礎の位置づけ
結論として、AI時代の基礎学習は「自力で全部書ける」ことを目指すのではなく、「AIの出力を読み、誤りを見抜き、修正を指示できる」解像度を目指すべきだと考えています。写経はその解像度を上げる手段の一つであり、200時間のうち本当に効いたのは最初の80時間程度だった、というのが正直な振り返りです。基礎訓練にも収穫逓減があります。どこで切り上げて実践に移るかの見極めまで含めて、学習の設計だと思います。