効率の良い勉強方法について考える
モチベーション
- 知りたい事ややりたい事が多すぎるのに時間が足りない
- 一個を深掘りしてる間に他にどんどん生まれてしまう
- 広い知見から選択肢と効率が生まれる
- 学生時代から学習におけるAIの恩恵を受けてきた結果、再現性と拡張性を感じた
- ちょうどフレームワークを初めて触り始めたくらいの時期にChatGPTが台頭してきて劇的に変わった
- AIに振り回されて戻れなくなっている人を見るようになった
- わからないまま動くを繰り返して、動かなくなったときに手詰まりになる
- 助ける側もAIのハルシネーションが邪魔で負担になってる
アプローチ
- 最強の学習ツールである本の効率的活用を調べる
- 学習方法について調べる
- AIの使い方に関しては一旦自身の知識内で行きます
- 学習のステップをAIで加速できないかを検討して行きます
本の読み方参考
学習方法参考
資料を参考に考えてみる
学習方法の前提
- 銀の弾丸的なものはなく個人に合わせて調整する必要がある
- 原則やプラクティスは存在する
進め方
- 本の読み方を軸にそれぞれのステップや状況を補強していく
- 時系列に整理してくことでインプットしたい
- 情報量が多くなったら逆引き的な構造も作る
- ステップごとにアプローチが複数できそう
そもそも理解って何?
ここでいう学習とは試験のための暗記ではない
学んだことを他人に説明でき、様々な状況で自由に活用すること
何かを知っているというのとその何かの名前を知っているのは違う。そのことについて本当に知っているのであれば、その知識を現実世界の様々な場面で活用できるはず。
その名前を知っているというだけなら、それが何なのかまったくわかってないということなのです。
ファインマンの説明
「あそこに鳥がいるでしょ。あの鳥はbrown-throated thrush(チャイロツグミモドキ)という鳥だけど、ドイツ語ではhalzenfugel、中国語ではchung lingって言うんだ。でも、そうした名前を知ってたとしても、その鳥について何か知ってることにはならないんです。あなたは人間について知っているだけ、つまりそういった名前をつけた人間について何かを知っているということだけです。
あの鳥は歌を唄い、幼い鳥に飛び方を教え、夏の間にはこの国を横断するほど長い距離を飛ぶことまでは私達は知っています。しかし、彼らがどうやってまたここに戻ってくるのかについては誰も知らないんです。」
理解 = 正しいではない
自分の脳の中の世界モデルと現実世界には必ずギャップがある。新しい対象を自分世界モデルに組み込む事が理解である。
- 現実世界
- 物理的な世界、自分を含む物理的な系全体
- 物理法則が支配している
- 自分の脳の中の世界モデル
- 自分の脳の中に構築された、現実世界のモデル
- その人にとっては現実(あるいは記憶)そのものだが、その人が体験した世界を、その人の解釈を元に構築されており、現実世界とイコールではない
- 自分ルールが支配している
人は日々新たな体験をしながら、その経験を含めた自分世界モデルを更新していく。
そのため「わかったこと」、は必ずしも全員にとって正しいとは限らず、あくまで自分世界モデルにおいて正しい、ということになる。
目指すべき理解
- 自分世界モデルを現実世界に近づけること
- 自分世界モデルを正しく抽象化すること
- この場合理解するとは組み込むというよりどこに当てはまるか確認する行為になる
抽象化とは?
人間は、世界を抽象化して生きていると思います。
今まで食べてきたりんごは全て全く異なる個体のはずですが、それを「りんご」という概念にまとめてしまうことで、味などを予測/対処可能/自分の望む効果を得られうる存在として認識することができます。
そしてりんごとバナナをまとめて果物として抽象化することで、次に新しい果物に出会った時に、ある程度の予測ができるようになります。
つまり精度の高い抽象化をすることで、自分世界モデルの存在目的である「現実世界を予測する」精度が上がるのではないかと思います。
「わかる」というのは、抽象化によって自分世界モデル内にストーリーを組み上げること、と表現してもいいのかもしれません。
これを少し穿った見方をすると、対象を完全に理解する(≒対象を完全に予測する)というのは不可能だということがわかります。
なぜなら、りんごの味を知ったとしても、結局次に食べるりんごは全く別の個体だし、自分/周りの状態も全く異なるからです。
現実は2度と同じことは起こらないので、完全にわかることはなく、抽象化というある程度のゆらぎの中に収まるに過ぎないのかなと思っています。
どう目指すか
- 体験の多様性の確保
- バイアスを排除し、論理的というよりも物理的な思考
- 他者の自分世界モデルも尊重したモデル
- 勉強し続ける、現実世界に興味と接点を持ち続ける
何を学ぶか
効率の良い学習を目指すなら学ぶ内容を選ぶことが重要である。
以下を優先的に学ぶと効率が良い
- 自分の知識の周辺領域
- 直近で必要なもの
- 強い興味のあるもの
学ぶコンテンツの探し方
自分のなりたいものに対して必要な知識をロードマップで考えておくと悩む事が少なくなる。この工程にも知識やコストが必要なので以下から手当たり次第に探すことも有効である。
本
以下のサイトのランキングとレビューで判断すると良い
個人ブログ
自分のモデル、目指したい人を参考にすると良い。
英語の技術書を選ぶ
Deepl の有料版でPDFを変換すれば読めちゃうので、意外と敷居高くないらしい
正直他の選択肢で困っていないので現状これを選択しようと思ってない
- amazonのkindle版(ちなみに unlimited は良書少ないらしい)
- オライリーの読み放題月額49ドル(敷居が高い・・・)
- packt のセール時期では新刊も5ドルで買えるらしい
- Humble Bundle のセット販売を狙うと安い
要約サイトで多読+時短
-
本の要約サイト flier(フライヤー)
- 日本最大級。フリー、シルバー(550円/月)ゴールド(2200円/月)のプランがある
-
SERENDIP
- 年間33000円、月あたり2750円
-
bookvinegar
- 無料で利用できる
- Qiita,Zennなどでトレンドを探すのも良い
AIによるロードマップの生成をしてみる
後日検証後かく
どこまで学ぶか
どこまで学ぶかにパレートの法則に従うならば「本の要点の80%は20%にまとめられている」ため全てを読む必要がないことになる。かといって全ての資料を読み流すのも違う気がする。ここでは全て読むに値するかを判断するフェーズを設けてみる。以下の順に従えば最大3回読むことになる
情報を得る
素早く流し読みする、深く読むのに値するか判断する。大抵の本はそこまでする価値はない。
システム的な飛ばし読み
「はじめに」の章、目次、インデックスやカバーの内側を読む。
これでキーとなる章や本に書かれている重要なアイデアの概観が見えてくる。その後は気になる章を飛ばしながら読む。
表層的な読み方
素早く流し読みをする。途中で思考のために止まったり、ページにコメントを書いたり下線を引いたり、知らない言葉を調べたりすることはありません。
何か理解できないことがあっても、止まることなくどんどん読み進めるのです。だいたいの概要が読めればオッケーで、とにかく早く読み終わることが重要です。
どちらにしても、手に取った本のメインとなるアイデアが理解できればそれで十分です。最近巷で流行りの人間の心理に関する本などは、それらの本の「はじめに」的な章を読むだけでその本の価値の90%が得られると言っていいでしょう。
たいていの場合はここで止まります。読み終わるとその本を本棚にしまって次の本を手に取るといったかんじです。
このステップはAIによる要約がブッ刺さりそう、ぜひ取り入れたい
表層的な読み方を厚めにする場合
分厚い本や、判断に困り深く読んでしまいそうな時に使う方法
- 90分で読む
- 集中して読書できる(集中できる限界値とよくいわれている)
- パーキンソンの法則を崩せる
パーキンソンの法則とは
- 仕事は、完成までに利用可能な時間をすべて満たすように拡大していく
- 仕事の複雑さや要件に関係なく、人は割り当てられた時間をすべて使い果たす傾向がある
- 仕事は時間の制約によって膨張し、効率が低下してしまう傾向がある
- 速読の訓練になる
- 読書量ではなく時間で決める
- 誘惑となるものを排除する
- キッチンタイマーが好ましい
- 誘惑を完全に断つ
- キリの悪いところでやめる
- 次回へのモチベになる
- 速読テクニックを意識する
- 再読では最初から読む
- すでに理解したところを飛ばしつつ素早く前回のページに辿り着く
- 途中から始めてしまうと通常の読書と変わらない
- メモは基本的に不要
レベル感があった本を選ばないと通常の読書と変わらなくなってしまう
理解のための読み方(分析的)
これは時間をかけ、頭をフルに使うタイプの読み方。あなたの脳をフル回転させ、何が言われているのかを理解するために努力しなくてはいけない。
理解のための読み方には4つのルールがある。
- どういった分野の本で、どういったトピックなのかを識別する。
- その本が全体を通して何を言おうとしているのかを正確に説明する。
- 重要な部分を抜き出し、それぞれの概要とそれらの間の関係を書き出す。
- 著者が解決しようとしている問題を定義する。
しかしこれは、本に書かれているトピックより広範な分野を理解したことにはならない。
1冊の本や記事を読んで、そこで書かれているトピックについての専門家を気取ることもできない。
ここまでで、ようやくエンジニア用語の「完全に理解した状態」対象の空想モデルであり、現実世界にはまだ遠い
そのトピックについてマスターしたいのであれば、それに関する複数の本を読み、それらを比較、対比させる必要があります。これが次のレベルの「マスターするための読み方」。
このステップでもAIが強い!
読み進めていく中で知らない単語やわからない文脈が出てくる事が多々ある。
調べてもその単語がまた知らない単語で構成されていたり、具体的なケースが思いつかずどう使われるのかピンとこなかったりする。
単語を理解する
そのまま聞く
ある程度プログラミングを知っている人ならこれでピンとくるかもしれないが、ライブラリ?ユーザーインターフェース?SPA?と疑問に思う人もいるだろう。
プロンプトを調整して聞く
多少はみやすくなった。JSX(ジャクシー)とかいうタチの悪い嘘つかれた。
プロンプトを具体的にして聞く
このように専門用語を減らして解説させる事ができる。もちろん出てきた知らない単語を聞く方法もあり。
- 専門用語を使ってしか説明できないなら完全に理解できていない。
- 簡単な言葉の組み合わせで明確に誰かに伝えられた時、始めて理解と言える。
- ここで理解と非理解の境界を知っておく事が重要。
文脈を理解する
単語を理解したならば繋げて一つの話にできるはず。ここで躓くならさっきのステップに戻ろう。そして文脈を理解する上で具体例をイメージすることも重要である。
具体例:どのようなケースに必要なのか
Reactはどのような時に使われるのか、なぜ巷で流行っているのか成り立ちや具体的なケースを知ることで理解が深まる。経験ほどではないが、伝聞的に自分世界を更新する事ができる
具体例:どのように使うのか
基本的に公式ドキュメントを見た方が正しいが、全く新しい分野であればAIに聞いた方がわかりやすく返してくれるので入門しやすい。
この段階からハンズオンで教材を追って行ったり、LTなどそのまま人に教えるアウトプットの機会を作り出すことを意識する
マスターするための読み方(シントピカル)
何かをマスターするための読書は同じトピックに関連するたくさんの本を読みそれらを比べ、それらの本に出てくるアイデアや使われている言葉、論理を対比させる必要がある。
そのためには関連する論理的展開を把握し、出てくる言葉を正確に理解し、問題とされていることを定義し、様々な角度から問題を探り、答えるべき質問を定義していく必要がある。
ここでの目的はある特定の本の全体像を理解することではない。対象となるトピックに関して広く、そして深い理解を得ることが目的。この読み方はそのトピックについてあなたがこれまで知らなかった、または気づいていなかったギャップを埋めることにもなる。
マスターするための読書には以下の4つの点が重要。
- 主張の根拠とその論理的展開を理解する。
- 自分の言葉に翻訳する。 - 著者の言葉をそのまま使うのではなく、必要であれば自分の言葉に置換えます。このことによってそれぞれの著者による異なる単語や言い回しもあなたの言葉によって統一、整理されます。
- 質問を定義する。 - 著者が何を問題にしているかではなく、あなたが何を知りたいのかにフォーカスしましょう。そのために複数の著者が答えることができる質問を定義します。もちろん、すべての著者が同じことを問題としているわけではないため、いくつかの著者は答えることができない質問もあるかもしれません。
- 問題を定義し、議論を分析する。 - ある質問に対する答えが異なることもあります。それはさらに調査や思考が必要となる質問であるということです。問題に対する様々な視点を理解することは、より多くの情報を元にした意見を形成することに役立ちます。誰にも反対されることなく、みんなが同じように受け入れる真実といったものはありません。あなたが見つけようとしている答えは相対立する見解の中に転がっているものです。これらの著者とあなたの間でより多くの情報を元に対話できることこそがほんとうの価値なのです。
3番目や4番目のステージの読み方は大変に聞こえるかもしれません。それはそのとおりです。ほとんどの人はこんなことをやりません。だからこそ、こうした読み方ができるようになれば、あなたは一歩抜き出ることができるようになるのです。
現実世界との接点を検証するにつれ自分モデルに不整合が出てくると、エンジニア用語の「何もわからん」状態になる。ここでは対象空想モデルや自分世界モデルの修正を迫られる。
これが自分世界モデルに組み込まれていくと「ちょっとできる」になる。目指すべきはここである。
FBについて
理解のための読み方(分析的)以降からアウトプットをすることで対象空想世界を自分世界に取り込むことと、フィードバックで他者の自分世界を取り込むことを意識する必要がある。
FBをもらうと他者がどこに興味を持っているか知ることになり、それはあなたの知識を深め、広げるための機会になる。
もし誰かが最近流行りのカタカナ言葉や専門語などを使い始めたら、中学生でもわかるように説明してもらうようお願いしましょう。そのことで相手に迷惑だとかウザがられると恐れることはありません。
というのも、それはあなたのためだけでなく、実はその話している本人の理解も深まることになるのです。