Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

勉強方法について

最近よく聞かれるのですが、実際のところ答えに困ったので普段何をしているかをメモしておこうと思います。自分語りです。前提として、筆者はソフトウェアエンジニアであり、ソフトウェアエンジニアとしてどうしているかという話をしています。

学び方

学ぶチャネルは学ぶ対象に完全によります。大別するとふたつかもしれません。

  • 文字媒体(技術書やドキュメント、チュートリアル)を読んで学ぶ。
    • 「大規模言語モデル」「TypeScript」のような大きなテーマを学ぶ際は、基本的に技術書を読んでいます。
  • YouTubeなどの動画を見て学ぶ。
    • 技術書やドキュメントを読んだ上で、特定のテーマについて具体的に知りたくなったときに利用しているかもしれません。
    • 最近だと、Neovimのセットアップについてよく海外のストリーマーの動画を見ていました。
    • 書籍やドキュメントからだけではイメージをつかむのが難しいものを学ぶ際に利用できます。
    • 数学やアルゴリズム系は読んだだけではわからないことが多いので、動画をよく利用していそうです。

大きな興味関心のあるテーマがわかっているものの、具体的にどういう要素があるのかわかっていないときには技術書を利用しているようです。たとえば「大規模言語モデル」や「TypeScript」などの関心ワードはわかっているものの、具体的にそれが何で、何ができるかといったことはわかっていない、という状態のとき、技術書を最初から読んでいくのは大いに役立つと思います。

余談ですが、学び方はひとによると思います。私のように視覚優位で言語優位なひとは、おそらく書籍等で学んでいくのがもっとも効率が良いです。一方で、ひとから話を聞くのが得意な聴覚優位なひともいると思います。そうした方は、Udemyなどの講義形式のものがよいと思います。自身がどちらが得意かは、たとえば学生時代に授業を50分なり90分聞き続けられていたか、それが苦でなかったかを思い出すとよいかもしれません。参考程度にですが、私は当時はそれが苦痛で、今でも座ってひとの話を聞くのが難しいです。

加えて視覚優位聴覚優位の話もそうですし、大人になってからの学び方は、そもそも大人になると脳の使い方が変わるので、学生時代のころとは変える必要があります。実は人間の脳は25歳ごろに完成をようやく迎えると言われており*1、30歳〜50歳くらいがもっとも脳力(?)のピークにあたるのだそうです。詳しくは下記の本などがおもしろいです*2

一方で私も完全に書籍のみで学んでいるかというとそういうわけでもなく、たとえば「他人の開発環境設定が気になる」とか、「このツールのこの機能ってどうやって使ったらいいのか」といった、特定のテーマについて具体的に知りたくなった際には動画を見る傾向にあるかもしれません。最近だと下記の動画がおもしろく、Amethystというツールをそこから知って入れたりなどしました。

www.youtube.com

加えて、数学系やアルゴリズム系は残念ながら一読しただけではイメージできないことが多く、人が図解しながら説明する様子を見ると理解が進むことが多いです。そのため、こうした分野を学ぶ際には動画を比較的早い段階で活用する傾向にあるかなと思います。たとえばグラフ理論のこのシリーズは、図がわかりやすくとても直感的でよかったです。

www.youtube.com

英語で学ぶのか日本語で学ぶのかについても記しておきます。たしかに英語で普段仕事をしている関係で、そんなに英語には抵抗はないのですが、書籍というか書き言葉になるとさすがに難しいと感じることが多いです*3。結局のところ第二外国語なので無理して英語で毎回学んではいません。邦訳のものがある限りは、概念の理解は日本語でやりきることを重視しています。動画やポッドキャストなどの会話については、そんなに文法が難しくないことから英語でそのまま受容してしまっていることが多そうです。最初から第二外国語で学び切るのはたしかにすごいことですが、時間は有限なので効率を考えて母国語でまずは概念習得をし、理解した段階で第二外国語でも、くらいのスタンスです。

学ぶ際に気をつけていること

濃淡をつける

完全ないしは細かく理解する必要があるものと、そうでないものとを濃淡つけて学んでいます。学ぶこと、学びたいことは多いのですが、人生はそれに比較するととても短いのです…。

  • それを「使いたい」ので、細かく理解する必要があるもの。
    • 仕事で直近使う技術や概念などは、理解の解像度を高めておく必要がある。
    • 書籍を読みながらNotionに読書ノートを取るなどして、できるだけ用語やその技術の概念構造が記憶に残るようにしている。
    • もしくは、その技術の学習に本当に時間を費やしたいと思っている場合。
  • そうでないもの。知識だけ欲しいもの。
    • 単に興味があるだけのもの。最近だとLLMとか。
    • 脳内に知識の地図(インデックス)を作ることを目的とする。

大事なことは濃淡をつけて学ぶことです。すべてを完全に理解していくのが理想的ではありますが、時間が無限にないとほとんど不可能でしょう。モチベーションの維持の問題もあります。社会人の場合、日々忙しく過ごしていると関心が次々別のことに移っていきます。それ自体はなんら悪いことではありません。そうした状況の中で、自身がとれる現実最適解を探すとよいと思います。

私の場合は仕事等で使用したいものは基本的にきちんと腰を据えて学ぶようにしています。仕事等で使う以上は高い理解の解像度でもって接する必要があると考えているためです。理解の解像度が高いとは、人に聞かれた際にその技術に関して一通り正しく漏れなく語れるようになることをいうかもしれません。たとえばその技術が取り組んでいる課題領域に対する理解そのものから始まり、複雑な内部構造をもつものはその内部構造への理解などといったところでしょうか。

逆に「そうではないもの」を学ぶ際は、あくまで知識の地図を拡充できればいいやくらいの気持ちで取り組んでいることが多いです。最近よい記事がありましたが、脳内にその領域のインデックスを作ることを目的としています。専門用語の名前とそれらの関係性くらいは頭に入っているが、世界史の問題集にあったような一問一答に答えられる程度であって、詳しく聞かれても答えられはしない、くらいのレベル感です。

levtech.jp

そもそも「そうでないもの」を学ぼうとする人は、世間的には体感そんなに多くなく、これはプラスアルファの話だと思います。他に趣味ややることがあるのであればそちらが優先されて然るべきです。私がたまたま好奇心が強い性格で、なんでも知りたいと思ってしまうために、このルートがあるだけなのです。できなくともなんら気にする必要はないのではないか、と私は個人的には思っています。

身体知を大事にする

知識の習得は思った以上に身体的な活動だと思います。チャンスがあれば身体を動かしながら学ぶようにします。ただここでは、ウォーキングやジムの電動サイクルに乗りながら書籍を読めといっているのではなく、たとえばコードの写経であるとか、手元に紙とペンを用意し、マインドマップなどの図に書き起こしながら読むということを「身体的」と言っています。

これについてはさまざまな研究があると思うので詳細は割愛しますが、人間は身体を通じて、周辺環境と関わりながら知識を習得していくようです。最近子育てをずっとしている関係で、子どもを見ているととくにそれを感じます。言語習得の瞬間などが際たる例でしょう。座って読んだだけですべてを理解し記憶できれば最も省エネで理想的ではありますが、一度見ただけですべてを瞬時に記憶できる人などでない限り、まず不可能でしょう。そこで役に立つのが身体的な経験を伴う学習であると私は考えています。ひとは、身体的な経験などを通じてちょっとずつ知識を内面化していくのだと思います。

そういうわけで、結構しっかり写経したり、複雑で理解が難しい箇所が出てきた際は図を起こします。Notionに読書ノートをとるのも、やはり身体的な知識の習得を意識してのものです。

時間がかかることを前提とする

成果や結論が出るのを急がない、ともいうかもしれません。

そもそも知識は1時間や2時間で身につくものではありませんし、積み重ねなければ増えていくことはありません。ある分野に関して、自分より理解があり知識があると感じられるひとたちは、そこにかけた時間が多いのです。時間をかけているからこそ、そこに辿り着いているのです。

また、1時間や2時間学んだとしてその場で学んだことを理解できていなくとも落ち込む必要はないと思います。たしか下記に示す本で昔読んだんですが、知識は(個人差はありますが)半年くらいかけてだんだん消化されていき、いつか「わかった!」が来ることがあります。そもそも知識や理解は環境や身体的経験と共に構築されるものですから、人生経験を積んでいるうちに理解が深まることが多々あるのです。

それくらいの時間軸で取り組むようにしています。

まとめ

何かを学ぶ際に何を考えているかをまとめてみました。なおいうまでもありませんが、常にやっているわけでもないです。「使いたい」側であっても、少し学んでみて「やっぱり深く学ばなくてもいいからとにかく使いたい」と思い、さらっと読んで済ませるだけのこともあります。まずまずそういう傾向にあるかな、という話を記しました。

*1:人間の脳を25歳くらいまで柔軟な状態に保っておくことで、環境の変化に長い期間対応できるようにし他の生物に対して競争優位に立つことで、生存してきたのではないかと言われています。ちなみにですが、精神疾患が15歳ごろ〜25歳ごろに多いのも、これが原因なのではないかと考えられているようです。詳しくは ヒトの発達の謎を解く (ちくま新書) | 明和 政子 |本 | 通販 | Amazon など。

*2:タイトルは死ぬほど怪しそうなんですが、最新の脳科学の知見などは知らない素人の意見ですが、そこまでひどい内容ではないと思います。むしろ、よく整理されており普通にいい本です。どうでもいいですけど、医師の書く本って、なんでプロフィールや実績をやたら強調するんでしょうかね。医学の知識の権威性はそこにあるわけではなく、普通に論文の引用数などで決まってくると思うんですが、それをベースとした本がなさすぎると思います。

*3:私の英語のレベルはCambridgeだとC1くらいです。アカデミックな内容を読みこなすにはまだちょっと遠い、みたいなレベル感ですかね。