勉強とやる気

 私は、AtCoderのコンテストに取り組んでいる間に、C++のライブラリを検索することが多いです。私が競技プログラミングを始めたのは最近です。AtCoderに登録したのが去年の12月頃で、本格的に取り組み始めたのは今年からです。なんとなくC++競技プログラミングを始めたので、C++の勉強も同時に始めました。なのでC++については、まだ勉強不足です。最初はC++の勉強をしてから、競技プログラミングの勉強をしようか、とも考えました。「C++の基礎知識がないのに、C++を使って何かに取り組むなんて間違いだ」そう思っていたのですが、今は間違いではないと思っています。何故なら、「C++の基礎知識を学ぶ」やる気を維持するのは、とても難しいからです。今回は勉強するときのやる気について、記事を書くことにしました。

 まず、今回の記事は「エンジニアの知的生産術――効率的に学び、整理し、アウトプットする」(西尾泰和, 技術評論社, 2018年8月)を参考にしています。まだ一度読んだだけで、すべてを読み込めた訳ではありません。それでもこの本をもっと早く読みたかったと思っています。私が意識せずに出来ていたこと、出来ずにいたこと、両方に気づかされました。この本はエンジニアに向けての本です。そのためプログラミング言語などが例にあげられています。ですがこの本の話は、エンジニアリング以外の分野でも役に立つことです。知的生産についてたくさんのことを学べます。もっと細かくやる気の維持について知りたい方には特におすすめします。是非読んでみてください。
gihyo.jp
www.amazon.co.jp

この本を読んだ上で、やる気を維持するために取り組もうと思ったことが、いくつかあります。今回はその中でも大切だと思った、三つのことを紹介します。

1. 必要なことだけを、必要になったときに勉強する

 必要なこと、というのは「将来必要になりそうなこと」ではありません。「今すぐ必要なこと」です。例として、記事の初めに書いた、競技プログラミングを考えましょう。私は競技プログラミングを始めました。まだ、競技プログラミングに取り組むうえで、必要になりそうなC++の知識が足りていません。それでも私は、ある問題を解いてみようと考えました。しかし、その問題を解くには、自分の知らないライブラリを使わないと解けないことが分かりました。このときに初めて、そのライブラリについて勉強しました。先に知識を身に着けてから、問題を解き始めたのではありません。必要なことだけを、必要になったときに勉強する、というのはこういうことです。
 競技プログラミングについては、必要なことだけを、必要になったときに勉強することが出来ていました。しかし、他の物事ではできていないことに気づきました。

  • オンラインゲームで勝つために、ゲームをやる前に情報を集める
  • 英語を読めるようになるために、まず英単語だけを覚える
  • 初めて使う機械を操作するために、説明書を全部読む

例に挙げたのは、私が実際にしたことです。同じようなことをした経験がある方、いるのではないでしょうか。私が挙げた例と同じでなくても、「将来必要になりそうなこと」だから勉強した経験は、誰にでもあると思います。もちろん、必要になってからでは間に合わないこともあります。しかし、必要になってからでも間に合うことは、そのときに初めて取り組めばいいのです。
 必要なことから勉強することは、やる気の維持に繋がります。「今必要なこと」を勉強するときには、どこまで勉強すればいいのかが明らかです。人間のやる気は、ゴールが明らかなものに取り組む方が維持しやすいです。「将来必要になりそうなこと」は、どこまで勉強すれば終わるのか、まったく分かりません。そしてだんだんとやる気が失われていきます。そしてやる気の失われた勉強では、頭に情報が入ってきません。これを避けて、時間を無駄にしないためにも、今必要なことから勉強するべきなのです。
 私が以前、プログラミングを勉強しようと思ったときのことを、思い出してみました。そのときは漠然と「C言語を勉強しよう」としか考えていませんでした。だんだんとやる気が失われ、勉強するのをやめてしまいました。自分が必要になったときでないと、人間のやる気の維持は難しいのです。「必要なことだけを、必要になったときに」勉強するのが大切なのです。

2. やることを減らす

 先にも述べましたが、勉強する上で「やる気」は重要です。やる気が無いと、集中力が維持できずに効率が落ちます。そして何より、勉強を始められません。私にとっての問題は特に後者でした。卒論を書き終えて、発表を終えた後のことです。毎日何もやる気が起きず、ベッドで寝ている日が続いてしまいました。外出するのも億劫になり、生活習慣もひどいものでした。このときの私の頭の中にあったやるべきことを挙げてみます。

  • 昨年のゼミで読んだ本の復習
  • 卒論研究で行った研究の続き
  • 就活の情報を集める
  • 競技プログラミングの力をつける
  • 修論のテーマに繋がる題材を探す
  • 論文を書くのに必要な、文章を書く力を身に着ける

今こうして挙げてみても、多すぎたなと思います。先生に研究の内容は褒めていただき、これからも頑張って、学会を目指そうと言っていただけました。しかし、頑張ろうと思っても、何も手がつかずにいました。卒論発表の後、私の中で研究は、苦痛を感じるものになってしまっていました。私は先生に頼みこみ、しばらく研究から距離を置かせてもらうことにしました。研究から離れ、一度心を休ませることにしたのです。そして休んでいる内に、競技プログラミングに取り組もうと思えるようになりました。今思うと、やることが多すぎたのかなぁと思っています。
 私の例はかなり特殊だと思っています。しかし、やることが多すぎるせいで、やる気が起きないことは誰にでもあると思います。勉強しないといけないことが増えすぎたら、どうにかしてそれを減らすことは大切です。この「増えすぎた」と感じる量は、人によって差があると思います。自分にとって、やる気が維持できる量はどれくらいなのか。これを知っておくことも、また大切なことだと思います。

3. 細かく具体的な目標を決める

 以前、「量子力学について勉強しよう」と思って、専門書を買ってみました。しかし、どうにもやる気が維持できずに、勉強をやめてしまいました。これは「今必要ではなかったからやる気が出なかった」とも考えられます。しかしそれ以上に、「量子力学について勉強しよう」という目標が抽象的過ぎたことに気づきました。人間は、先が見えないとだんだんとやる気を失います。細かな目標を定めることで、先を見やすくすることができます。更に、それを達成したという満足感を得られることも、やる気の維持に繋がります。以前の私は、「今日はこの本のこのページまでは読もう」という細かな目標を、その都度定めるべきでした。
 この目標は、量でも時間でもいいです。例えば、「問題集で4ページ分の問題を解く」「30分は集中してこの論文を和訳する」といった目標がいいです。これらの目標は、細かく具体的に定められています。では「C++を完璧に理解する」という目標はどうでしょうか。これは抽象的過ぎて、なにをもって目標が達成できたとするのかが分かりません。また「本を一冊読み終える」という目標は具体的ですが、目標としては大きすぎます。この目標が大きすぎると感じるかどうかも、人によって変わるものだと思います。自分にとって、どれくらいの目標がやる気の維持につながるのか、これも知っておきたいことです。

まとめ

 勉強のやる気を維持するために、大事なことを三つ紹介しました。

  1. 必要なことだけを、必要になったとき勉強する
  2. やることを減らす
  3. 細かく具体的な目標を決める

この三つを意識することは、やる気の維持に繋がります。勉強するときには気をつけるようにしたいですね。