やる気が出ないときのプログラミング学習法「素読式模写」|意味を考えずに模写をしよう

March 03, 2019

理由はよくわからないけれどやる気がおきない時期ってありませんか? 自分のプログラミングスキルをより高めたいと思いつつも、じとじと降る雨の様に無気力が迫ってくることが私はあります。 やる気のしない時期の学習法「素読式模写」を紹介します。

この記事の内容は個人的な体験ベースですので実際どの程度の効果があるのかはわかりません。 また、効率よく学びたい向けとはいえないかもしれません。

そもそもなぜやる気がしないのか?

私の場合やる気がしない理由はほとんどの場合明白です。 「やりたいことのやり方がわからない」 これに尽きます。

公式ドキュメントを読みながらチュートリアルをやってその他コードを書いたり読んだりして、ちょっとずつ技量を高めていけば「やり方がなんとなくわかる」フェイズにたどり着けると思います。 ただし、結構な苦痛が伴います。 理解していないことを理解する、というのは、非常にだるく、学習から足が遠のく理由となります。

「できるだけ抵抗少なくそのプログラミング言語や環境に慣れること」が急務です。 そこで私がやっている「素読式模写」という学習法を紹介します。

素読

「素読」というものをご存知でしょうか? 江戸時代の日本で行われていた教育方法で「意味の解釈を一切加えずただただ文章を音読する」というものです。江戸時代の武士階級の子どもは10歳前後の5年間ひたすら四書五経の素読をやっていたそうです。 (こんなこと言うと一部の文学好きに怒られそうですが)文学や文書において明治期から大正、昭和と下るに連れて日本語文章の美しさが変質してしまうのは、明治維新前後の教育の違いによるものと個人的には思っています。 10歳前後の子どもで四書五経が理解できる人はほぼいないでしょうから、基本的に教師の真似をしながら意味を考えずに音読することになります。 この学習法が意外と絶大な効果をもっているっぽいのに目をつけたのが今回の「素読式模写」になります。

素読式模写

プログラミングの模写にもいくつかパターンがありますが、一つの分類として、

  • 意味を考えながら行うもの
  • 意味を考えずに行うもの

という分け方ができるかと思います。

世の中の模写関連の記事を読むと「意味を考えながら行う模写」が大勢を締めているように感じます。 実際意味を理解しながらの模写は非常に有効な学習法のようで、私もよく行います。

ただ、今回紹介するのは、「意味の解釈を一切加えずただ移すだけの模写」すなわち素読のような模写です。

素読式模写のメリット

素読式模写の何が良いかといいますと、

  • 模写をするに辺り抵抗が少なく、やる気のない日でもやりやすい
  • 考えながら模写をするより大量のコードを写せる
  • 基礎的な文法やきれいな書き方を知ることができる
  • そのプログラミング言語に慣れる

こういったところです。

「抵抗少なくプログラミング言語に慣れる機会を得られる」ため、当初の目的である「わからないからやる気が出ない」を脱出する足がかりとなります。 (わからないものを頭を空っぽにして模写することに抵抗を感じる方もいるかもしれませんが、私は感じなかったので紹介してます)

素読式模写のやり方

  1. 評価が高く量が少なめのコードを複数見つける
  2. 何も考えずにひたすら書き写す
  3. 書き写す作業を覚え込むくらい繰り返す
  4. いつの間にかその言語に慣れている

ポイントは、

  • 文脈の違う複数の信頼できるコードを参照する
  • 可能ならコンパイラや静的解析ツールにお伺いを立てる
  • ひたすら量をこなす

質量転化なる言葉があるように、量をこなすと質があがるようです。

複数の信頼できる人から学ぶ、というのは非常に重要ですので気をつけましょう。 一人の人や単一のコミュニティがベースにあるコードですとどうしても何らかの癖が出てしまうのが理由です。

なぜ「素読式模写」を勧めるか

意味を考えるのが辛い!

やる気が出ないときに意味とか理論とか深いことまで思考を巡らせるのは辛いです。 特に、その言語やライブラリの初学者になればなるほどこの傾向は増します。

意味がわからなくても量を写すだけで基礎が学べるのであれば、そういう手法を利用しない手はないかな、と思います。

まとめ

「素読的模写」をやってみよう!

この記事は他の学習法を否定するものではありません。 ただ、他の学習法はやる気せんな、ってときでも、意味の解釈を加えない模写ならやれるはず、という考えです。


Written by aimof
Goプログラマ。PythonやJSなどもちょくちょく触る。最近はGatsbyのカスタマイズが楽しい。 Twitter