paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

効率重視のエンジニアが実践している効果的な勉強法を解説する

f:id:paiza:20181012120341j:plain
Photo by zwenzini
長田です。健康オタクエンジニアです。

今回は、健康ではなく「勉強法」について書きたいと思います。

ツイッターやはてブでは、定期的に「エンジニアは業務時間外も勉強すべきか!?」という話題で盛り上がっていますよね。

まあそれはどっちでもいいんですけど、それ以前に何らかの勉強をするなら「効果的な勉強法」を知っておきましょう。非効率的な方法で「勉強したつもり」になっているだけでは意味がありません。

どんな勉強方法なら効果が出やすいのか?逆に言うとどんなやり方だと非効率的で効果が薄いのか?例によって論文やデータを漁りつつまとめていきたいと思います。(プログラミングやWeb開発だけではなく、割とどんな分野の勉強でも通じる話です

【忙しい人のための目次】

勉強する前に知っておきたいこと

勉強には「理解するための勉強」と「記憶するための勉強」がある

勉強には大きく分けて「理解するための勉強」と「記憶するための勉強」の二種類があります。

科学的な見地から言うと、それぞれに適した勉強法は異なります。

簡単に言うと、「理解するためには集中的に勉強する」「記憶するためには分散的に勉強する」のが効果的であると言われています。

例えばある実験では、「復習を集中的に4倍やったグループは、一週間後のテストの成績が有意に向上した」という結果が出ています。集中的な勉強は、理解を助けます。

ただ、この研究には続きがあります。さらに3週間後に再テストを実施したところ、4倍復習をしたグループの学習効果は、通常量の復習をしたグループと変わらなくなって(テストの成績が同じぐらいになって)しまいました。短期間に集中して勉強するだけでは、記憶としてはそこまで長続きしないということですね。

ほかにもさまざまな研究で、記憶する(=知識を定着させる)ために勉強をするなら、短期的にガッとやるよりも、あえて時間を置いてから「以前勉強した内容をがんばって思い出す」という行為が、記憶の定着には有効であるとわかっています。

というわけで、効率的に勉強するためには「理解するために集中的に復習する」「記憶するために分散して(=忘れかけた頃に)復習する」、そして「理解と記憶は別のフェーズである」と捉えておくのが重要となります。これを意識せずになんとなーく勉強しても、あまり身になりません。

The effect of overlearning on long‐term retention - Rohrer - 2005 - Applied Cognitive Psychology - Wiley Online Library
Running head: RETRIEVAL PRACTICE ENHANCES SPELLING
Participant Nonnaiveté and the reproducibility of cognitive psychology. - PubMed - NCBI

知識は風化する

f:id:paiza:20181012120516j:plain
Photo by Colin Kinner

経営思想家であり、研究者でもあるリズ・ワイズマン氏の試算によると「人類の知識は5年で85%が価値を失う」そうです。また、「年間ではおよそ30%の知識が時代遅れになる」とも言われています。

実際、科学の世界でも少し前まで正しいとされてきた説が、新たな論文によって否定されることは頻繁に起きています。

The Power of Not Knowing - Liz Wiseman - BYU Speeches

これは、IT業界の方々は特に共感できるんじゃないかなと思います。例えば、「少し前に有用とされていたフレームワークやデザインパターンが、最近では使えない…」なんてことはよくありますよね。

そのため、勉強というのは基本的に「一定期間にやったら終わり」というものではありません。どんなに一生懸命勉強した知識も、残念ながら5年後には15%しか生き残っていないので…。(しかもどれが生き残るかを完璧に予測するのは不可能)

だから、できるだけ自分の知識を疑って勉強し続けたほうがいいんですね。

逆に言うと、過去に学んだことも「15%程度は5年以上生き残る」わけですから、「いま持っている知識のうち、どれが風化していて、どれがまだ通用するんだろう」と考えるのが重要です。

無駄な勉強法

次に、「みんながよくやっている」けど「実は非効率的で無駄な勉強方法」について書いていきます。

本を1回だけ読んで終わる

f:id:paiza:20181012120608j:plain
Photo by Stiller Beobachter

当たり前ですけど、本を1回読んだだけで身につく、覚えられることなんてないですよね。

多くの研究で「人間は過去に覚えた知識をどんどん思い出しづらくなっていく」ということが確認されています。「エビングハウスの忘却曲線」は有名ですよね。「そもそも人間の脳は忘れるようにできている」という研究もあります。

The Persistence and Transience of Memory

もちろん、趣味や娯楽のために読んでいるのなら何でもいいと思います。ただ、「勉強のために読んでいる本」であれば、ゴールは「読み終えること」ではなく「知識を習得して使うこと」です。

読むだけ読んだけど何も覚えてないとか、必要な場面でその知識が思い出せないようでは、月に何十冊読んでいても意味がありません。

前述の通り、知識を記憶に定着させるためには「思い出す」という行為が大事とされています。(これに関しては信頼できるデータが豊富にあるので、ほぼ確実と言ってもよいぐらいです)

つまり「復習」しないと知識はどんどん消えていくということですね。復習して記憶に定着させて、初めて「インプットした」と言えます。

もし「一回読んだだけで覚えられる!」という人がいたら、その人は稀代の天才か、そうでなければ「既にほとんど知っている内容の本を読んだだけ」か、覚えたつもりになっている人間の心理バイアスに引っかかっているだけです。

本の内容をそのままノートにとる

本の内容を「わかりやすくノートにまとめよう」と考える人は多いですよね。これは完全に無駄とは言わないですが、もったいない行為です。なぜなら、復習に使いづらいからです。

要約するという行為自体には、それなりの学習効果があります。自分で読書や勉強したことを「自分の言葉で表し直す」行為自体は、科学的にも有効です。

ただ、何度も言いますが「記憶」をするには、勉強した内容を「思い出す」のが重要です。「これなんだったっけ?」から「あー、そうだこういうことだった」にたどり着くプロセスが必要なんですね。

だから、すべての内容がまとめられたようなノートは、後日見直しても「思い出す」という行為には使えません。ただ眺めて「思い出した気になる」だけです。貴重な時間を使ってノートを作っても、復習に使えないのはコスパ悪いですよね。

じゃあノートは完全にいらんのかという話ですが、そうではなく、「思い出すためのトリガーになること」を書いたノートなら復習に活用できます。(このノート術に関しては後半で詳しく書きます)

ノートを利用用途ごとに分ける

f:id:paiza:20181012120749j:plain
Photo by Secretaría de Cultura de la Nación

学生時代の延長で、目的(科目)ごとにノートをわける人がいますが、ノートは一冊に統合しちゃったほうがいいです。

勉強した内容は、何度も見直して復習する必要があります。そのためには「ノートを見直す」ことを習慣化するのが効果的ですが、ノートをわけてしまうと、それだけで持ち歩いたり見直したりするのに手間が増えて、習慣化が妨げられてしまいます。

ハーバード大でポジティブ心理学を研究しているショーンエイカー博士は、「ある行動にかかる時間を20秒短縮するだけで習慣化しやすくなる」という20秒ルールを提唱しています。加えて「ジャムの法則」という法則の研究では、「選択肢が多いほど人間は決断できなくなる」ということを示す実験結果が出ています。

When Choice is Demotivating: Can One Desire Too Much of a Good Thing?

復習を習慣化するためにも、ノートは1冊にして「ノートを選んで書き分けたり、大量のノートを持ち運んだりするコスト」はなくしたほうがいいですね。

本の内容をすべて覚えようとする

やろうと思えば不可能ではないかもしれませんが、めちゃくちゃ時間がかかりますよね。記憶を定着させるには、どうしても復習するための時間が必要になります。だから本一冊すべてを覚えようとすると、やがて復習だけに丸一日かかるような状態になってしまいます。

これもあとで詳しく書きますが、勉強目的の読書で大事なのは「この本から何を学びとろうとするか」という目的です。すべての内容を覚えることも役立てることもほぼ不可能なんですから、一冊すべてを真面目に読む必要はありません。

速読をして読書量を増やす

一時期速読がやたらはやりましたが、科学的には「速読は意味なし」という信頼性の高い研究結果が出ています。以上。

So Much to Read, So Little Time How Do We Read, and Can Speed Reading Help?

…というだけだと乱暴なので…実は読書のスピードを効果的に上げる方法は「大量に本を読むこと」だとわかっています。速読テクニックを練習する暇があったら、普通に何冊か本を読んだほうがずっといいですね。

座って静かに勉強する

図書館やカフェで座って静か~に勉強している人は多いと思いますが、科学的にはこれも効率的ではありません。

まず、勉強する時は立ったほうがいいです。別の記事でも書いたことありますが、人間は立っていた方が脳の認知機能が高まります。また、運動しながら勉強することでも勉強効率は向上することがわかっています。「座って勉強するほうがよい」というデータはありません。

The Evaluation of the Impact of a Stand-Biased Desk on Energy Expenditure and Physical Activity for Elementary School Students
Unexpected Dual Task Benefits on Cycling in Parkinson Disease and Healthy Adults: A Neuro-Behavioral Model

また、静かに黙々と勉強するよりも、勉強している内容を口に出したり、一人で突っ込みを入れつつ勉強したほうが理解力や記憶力が高まることもわかっています。

This time it’s personal: the memory benefit of hearing oneself
The impact of verbal instructions on goal-directed behaviour - ScienceDirect

赤ペンや赤い暗記シートを使う

多くの人は、ノートの書き取りやマーキング、問題の答え合わせなどに赤ペンを使うと思います。学生の頃に「赤シートを使って単語や穴埋め問題を暗記する」という勉強法は、誰しもやったことがありますよね。

しかし、研究で「赤色はテストの成績を下げる」ということがわかっています。実際にテスト用紙の表紙をさまざまな色にして実験したところ、赤色の時だけ被験者の成績が落ちたそうです。それどころか、名前欄の枠を赤色にしただけでも同じ効果があったそうです。

心理学的にも、赤色は人にストレスを与え、人の積極性を下げる効果があるとわかっています。例えばレスリングの試合の勝率は、青いユニフォームよりも赤のユニフォームのほうが有意に高くなっています。

そのため、勉強に赤色は避けたほうが無難かと思われます。

Romantic red: red enhances men's attraction to women. - PubMed - NCBI
Red enhances human performance in contests | Nature

長時間勉強し続ける

f:id:paiza:20181012120858j:plain
Photo by Chad Faith

受験生の頃は一日10時間近く、いやそれ以上勉強していた!という人も多いと思います。私も高3のときに1日12時間勉強していた時期がありました。数ヶ月で挫折しましたけど。

ただ、科学的に「長時間勉強し続けること」はあまり効果的ではありません。

人間の集中力は「どれだけ訓練した人でも4時間程度しか持たない」と言われています。また、さまざまなデータで「週30時間以上同じ作業をすると成果が落ち出す」ということも確認されています。というわけで、一日4時間以上勉強をしても、大した成果にはならなさそうです。やってもおそらく、「勉強した気分」が肥大化するだけですね。

それよりは、4時間のクオリティを高めるために、しっかり寝たり健康に気を使ったりするほうがずっとよいかと思います。

ForImpact | The Suddes Group | 4 Hours of Deep Work Each Day - ForImpact | The Suddes Group

また、「勉強に最適な勉強帯」については今のところわかっていません。

少し前までは「意志力は朝から夜にかけて消耗していくので、集中力が必要な行為は朝にやるべき」という研究がかなり強かったです。でも、最近はその根拠となる論文の信頼性が怪しまれていたり、この研究を否定するような実験データが出てきていたりしています。

今後また違った研究結果が出てくるかもしれませんが、個人差によるところが大きいのかもしれませんね。今のところ、時間帯に関してはトライアンドエラーしつつ、自分に最適な時間帯を見つけることが大事だと思います。

意志力って実は使ってもすり減らないんですってよ |「意志力3.0」 #1 | パレオな男

実践編

以上を踏まえて、私が何かを勉強するときに実践しているやり方を書きます。

何を勉強するかを考える

私の主観も入りますが、もしかしたらこれが一番大事かもしれません。勉強する前にまず「何を勉強したらいいのか」を考えましょう。

なぜなら、世の中に「勉強したほうがいいこと」は多すぎて、すべてを勉強するのは絶対に不可能だからです。これは昔からいろいろな人が言ってますが、私が一番好きなのは任天堂の元社長だった故・岩田聡氏の言葉です。

物事って、やった方がいいことの方が、実際にやれることより絶対多いんですよ。やったほうがいいよねっていうことが山ほどあるんです。だから、やった方がいいことを全部やると、みんな倒れちゃうんです。なので、オレたちはなにが得意なんだっけ、ということを自覚したうえで、「なには、なにより優先なのか」をはっきりさせること。順番をつけること。それが経営だと思いますって、当時若造だったわたしは言ったんですけど、じつは、いまも考え方はぜんぜん変わってません。

HOBO NIKKAN ITOI SHINBUN - 1101.com

「休みの日まで勉強したくない!」と思っている人の中には、「長時間かけてあれもこれもやらなければならないのが勉強である」と、自分で勉強量を多く見積もりすぎている人がいると思います。

そんなことは全然なくて、前述の通り人間が集中して勉強できる時間なんて最大でも4時間程度です。この時間を有効利用するためには、まず「何を勉強するのか」を考えるのが不可欠です。

勉強目的で読書をする際にも「この一冊から何を学ぶのか」を先に考えておくことで、本の理解度が向上することがわかっています。ですから、まず「自分は何を勉強するのか」を意識するのが重要なんだと思います。

David W. Concepción, Reading Philosophy with Background Knowledge and Metacognition - PhilPapers

本は目次をしっかり読む

f:id:paiza:20181012121149j:plain
Photo by Laura Bernhardt

目次を読み飛ばす人は多いですよね。娯楽目的であれば何でもいいのですが、勉強目的で読むのであれば、まず目次をしっかり読みましょう。

理由は、「全体像を把握するため」と「この本から何を学ぶのかを明確化するため(そしてどこを読むのか決めるため)」です。これは、読書に対するモチベーションや集中力、理解度を向上させるのに必要なことです。

ついでに言うと、目次を読んだうえでそれぞれの項目について「ここではどういうことが書かれているんだろう?」と考えながら読んでいくのがおすすめです。

できれば紙で読む

本が増えてくるとそういうわけにもいかないと思いますが、最近の研究では「本は紙で読んだほうが理解度が高い」というデータが出てきつつあるので、勉強のために読むなら紙の本を選んだほうがよさそうです。

ただ、もちろん「重いしかさばるし、紙の本読むの面倒くさいから読まない」となってしまったら本末転倒なので、利便性と自分の感覚で選択しましょう。

余裕があれば、「初回は紙、復習は電子書籍やオーディオブック」みたいな感じがいいのかなと思います。

Don't throw away your printed books:A meta-analysis on the effects of reading media on reading comprehension

ノートは復習のために使う

何度も繰り返しますが、人間の記憶は「思い出す」という行為を繰り返すことで定着していきます。そのため、ノートには一から十まで書きつけるのではなく、勉強内容の「かけら」だけを書いておくのが効果的です。

私は、メンタリストのDaiGoさんが紹介していた「3ワードノート術」をほぼそのまま使っています。これは「読書中に覚えたいトピックが出てきたら、そのトピックを「3つのキーワード」にまとめて、それだけをノートに書く」という方法です。

一度読んだ本を忘れない読書ノートの取り方を公開!:メンタリストDaiGoの「心理分析してみた!」:メンタリストDaiGoの「心理分析してみた!」(メンタリストDaiGo) - ニコニコチャンネル:社会・言論

どんなことも3つのキーワードしか書けないため、あとから読み返したときに「このキーワード何だっけ?」と思い返す行程が発生するわけですね。ページ数も併記しておけば、どうしても思い出せないことがあったら本を読み返せば済む話です。

別にこの3ワードにこだわる必要はなくて、要はノートを「問題集化」することが重要なんですね。だから自分で「XXXとは一体何か?」といった問題を書いていくノート術でもいいと思います。

私の実際のノートはこんな感じです。他人が見てもまったく何が書いてあるのかわからないノートですが、自分の復習にさえ使えればよいわけです。
f:id:paiza:20181015131325j:plain

このノートの問題集化も、「自分が何をどれだけ忘れていく人間なのか」をびっくりするぐらい実感させてくれるのでおすすめです。人間の脳って本当に全然覚えられないですよ!

私自身、この復習法で毎回自分の記憶のあやふやさを痛感して「復習しなきゃダメだな」という気持ちにさせられています。

復習は一週間おきにやる

「復習は一定期間ごとにやるのが効果的である」という実験結果があります。この実験は「5日ごと」に復習をしていましたが、実際に習慣化するには曜日とひもづけたほうが楽なので、大体1週間ごとに復習するのがよいかと思います。

また復習する回数は、ノートにメモしたキーワードを見て「完全に思い出せた!」という経験を合計で5回くらい繰り返せば十分とする研究があります。復習を繰り返して、5回思い出せれば、その知識を限界まで定着させることができたと考えてよいでしょう。

Expanding retrieval practice promotes short-term retention, but equally spaced retrieval enhances long-term retention. - PubMed - NCBI

近いカテゴリの本を読み漁る

勉強したい分野があるなら、その分野の本や近い分野の本は複数冊読んだほうがよいです。

なぜなら、知識が特定の学派に偏るのはとても危険だからです。例えば「機械学習について勉強したい」として、一冊の書籍だけをもとに勉強しても、「誤った情報や古い手法を勉強してしまっている可能性」があるからです。(当たり前ですが、本に載っているからといって正しい情報とは限りません)

複数冊に手を出せば、知識の妥当性をある程度確かめることができます。

また、何冊か読めばある程度の知識が頭に入っていくので、2冊目以降の読書がスムーズになります。同じような内容を見つけることも増えてくるので、「思い出す」という復習を並行しながら読書を進められて効率的です。

特に読書に慣れていない人は、すでにある程度知識を持っている分野の本を読みながら、少しずつ読書習慣を身につけていくのがよいでしょう。

人に話す、伝える

f:id:paiza:20181012121509j:plain
Photo by Matt Harasymczuk

「音読したり誰かに話したりすることで記憶の定着率が上がる」という実験結果がいくつかあります。覚えたての知識は、誰かに話すようにしていると記憶の定着が捗ります。

特定の誰かに話さなくても「誰かに話すように声に出してみる」「勉強内容をただ音読する」だけでも効果があるので、ひとりごとを言いながら勉強するといいですね。

公共の場などではやりづらいと思うので、そういうときは頭の中で文章を要約し直すだけでもよいと思います。ただ、声を発するという行為そのものが脳に作用する効果もあるようなので、できれば音読できるとよいですね。

The ecology of self-monitoring effects on memory of verbal productions: Does speaking to someone make a difference? - ScienceDirect
The impact of verbal instructions on goal-directed behaviour - ScienceDirect

ちなみに私は勉強した内容をツイートするためのTwitterアカウントを1つ持っていて、フォロワーたちに語りかけるように勉強した内容を要約するツイートをし続けています。(勉強目的のアカウントなのでフォロワーはいません)

パターン分類記憶法

これは数学の勉強法として効果的とされている勉強法ですが、プログラミングの勉強にも通ずるところがあると思います。

パターン分類とは「複数の解答パターンから現在の問題に最適なパターンを引き出す能力」のことです。数学が得意な人や、将棋やチェスなどのプロは、この能力に長けていることがわかっています。

で、これは私の主観ですが、パターン分類能力はプログラミングする人にとっても重要なスキルだと思います。

プログラミングを通して問題解決するときには、「目の前の問題」を細かく分解していきながら「それぞれをどのように実現していくか」を見定めていく必要があるので、この「パターン分類」の能力は、プログラミングスキルに直結すると思っています。

パターン分類記憶法のやり方は簡単で、下記をひたすら繰り返すだけです。

  1. 雑多な問題を大量に用意する
  2. 1分間など、短時間でその問題をの解き方を見極める(実際に解かなくてもいいです)
  3. 答えを見て、自分の見極めが正しいかを確認する

短時間でひたすら繰り返すのがミソなので、ある程度の基礎知識を得た上でやったほうが良いと思います。プログラミングコンテストの過去問を大量に用意してやってみる…とかがいいかもしれません。

Perceptual learning modules in mathematics: enhancing students' pattern recognition, structure extraction, and fluency. - PubMed - NCBI

まとめ

なんかまた長い記事になってしまった…。

まあでも読書法や勉強法についても、論文やデータで調べながら実践しつつ書いているので許してください。

エンジニアはいろいろな知識を要する職業ですから、効率的に勉強して、知識を定着&アップデートしていきましょう。

以前書いた、勉強法ではなく健康法の記事はこちら
paiza.hatenablog.com

paiza.hatenablog.com


<参考文献>

実験心理学が見つけた 超効率的勉強法: 復習はすぐやるな! 思い込みで点数アップ!

実験心理学が見つけた 超効率的勉強法: 復習はすぐやるな! 思い込みで点数アップ!

表紙だけ見ると浅い内容の本っぽいですが(失礼)、さまざまな科学実験が取り上げられており、なおかつ具体的でわかりやすい。今回書いた情報は、この本がもとになっているものも多いです。参考文献の論文タイトルなどもちゃんと記載されているので、「日常で使える科学」に触れる第一歩としてもおすすめできる一冊です。





paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら

paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら

paizaのスキルチェック





※このブログで紹介しているキャンペーンやイベント、およびサイト内の情報については、すべて記事公開時の情報となります。閲覧されたタイミングによっては状況が変わっている場合もございますのでご了承ください。

ITプログラマー・エンジニア転職・就活・学習のpaiza

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編

エンジニアのためのプログラミング転職サイト|paiza転職

プログラミング スキルチェックエンジニア求人一覧

未経験からエンジニアを目指す人の転職サイト|EN:TRY

プログラミング スキルチェックエンジニア未経験可求人一覧

エンジニアを目指す学生の就活サイト|paiza新卒

プログラミング スキルチェックエンジニア求人一覧

ブラウザを開くだけで エディタ、Webサーバ、DB等の開発環境が整う|PaizaCloud