Idea

技術書を写経する時は、予習の写経・復習の写経の2段階に分けると定着がいい

はじめに:ハンズオン系の技術書を読むときの難点

ハンズオン系の技術書、得意ですか?私は結構苦手です。

読書自体はそこまで苦手ではなくて、紙面だけで完結するような書籍であれば割とスラスラと読めるのですが、ハンズオンが含まれると途端に進みが悪くなります。

読み始めて最初の数章はいいんですが、だんだん写経するのが面倒になってくる一方で、とはいえハンズオンが売りの書籍でハンズオンをやらないと知識定着しないし...という感情のせめぎ合いに、しまいには読み進めること自体を放棄してしまうこともしばしば。

今回はこの課題感を解消するためにやってみた「予習の写経」「復習の写経」が結構良かったので紹介します。

技術マスター 予習の写経 / 復習の写経

アイデアのきっかけは、以前時雨堂さん主催の勉強会の形式にあった「勉強会の中で同じコンテンツを2回繰り返す手法」です。これに倣い、写経を同じセクションに対して2回行うのが、今回紹介する方法になります。

予習編

Git管理下のリポジトリを用意し、そこに読んでいる書籍のハンズオンを実装していきます。もし書籍側から提供されているコードがあればそれを利用するのもいいでしょう。

この段階では書籍の内容を読むことを中心にして、ざっくりと概要を掴みます。

書籍にもよりますが、大体1つの章の単位で区切りをつけると良いと思います。あまり復習までの間隔が短すぎると内容を覚えてしまっているので退屈感が増してしまい、もともと解決したかった課題にそのままぶつかることにになるからです。

スイッチ

予習が終わったら写経したハンズオンをコミットした上で、実装の詳細を全て消します
例えば次のような形です。

// Before
const greet = (name: string) => {
  return `Hello ${name}`;
};

// After
const greet = (name: string) => {
  // 実装の詳細を消す
};

消す範囲は自由に決めて良いと思いますが、全部消すと内容が思い出せなさすぎるので、コードを見ればなにをすればいいのかがわかるくらいには残すのがポイントです。

復習編

テキストを見ないで吹っ飛ばした実装の詳細を自分で実装します。

ここでは1つのセクションやファイルが自分で実装できるたびにGitの差分を確認し、復元できているかをチェックします。動作としてはハンズオンでやったとおり動いていても、微妙に実装内容が違ったりすることもあり、思わぬ自分の手癖の発見に繋がったりします。

メリット・デメリット

一度予習した内容が頭にありつつも、完全に定着していない知識をあぶり出し、定着させられるのがこの方法のメリットです。実装が思いつかない・思い出せない部分は自ずと詳しく読むことになるので、最初の予習時に心理的にサラッと読めるのも良いと感じています。

一方で一度だけ読む方法に比べれば手間がかかるのは事実です。知識が定着できなかった場合はトータルで見ても時間ロスかもしれません。

またこの手法は今のところ何かしらのファイルに実装を重ねていくハンズオンでしか実施していませんが、コンソールで試していくタイプのハンズオンには向かないかもしれません。zxがマークダウンを解釈できますが、これの各言語版があると全ては解決かもしれません。

おまけ:大AI時代ならではの困りポイント

初めてこの方法を思いついて実施してみた時に、穴埋めになったコードをGitHub Copilotが全力で補完してきました😅。実施時はオフにしておくのがよさそうです。