jaredd-craig-HH4WBGNyltc-unsplash.jpg

技術書を読む技術

 
0
このエントリーをはてなブックマークに追加
Kazuki Moriyama
Kazuki Moriyama (森山 和樹)

はじめに

優秀なエンジニアは勉強からは逃れられません。しかし勉強はきついものだし、皆が得意としているわけではありません。一方で僕は読書それ自身も技術であり、技術によって勉強の負担を減らすことができると考えています。

この記事では自分の経験の中で得た技術書を読むための技術を共有し、何か役に立てる知見を共有できたらと考えています。その中で皆さん独自の学習方法やハックがあればぜひコメント欄などで教えてもらい、僕自身の成長にもつなげたいと思います。

実際に読んだ本たち。

https://kazchimo.com/2021/05/13/tech-books/

前提

勉強は苦しいものです。苦しいものに立ち向かうにはモチベーションが必要となります。僕にとって新しい本を読み始めるのはこの上ないモチベーションです。自分に新しい知識が増え、それが力になると思うとワクワクします。

同時に本を読み終わるのはそれ自身達成感を伴います。積ん読から本棚にしまうときは確かに何か自分が成長した気になります。そのためこの記事では技術書を読み始めたならばなるべく早く読み終え、次に新しい本をどんどん読んでいくことを重要視します。

このモチベーションは僕個人のものであるため皆さんに適するかは微妙なところです。しかし以下では読書において一般的に重要なプラクティスも含まれており、どのような人が読んでも何か面白いと感じてもらえるのではと思います。

読む前

すぐ実行に移せる知識をテーマに本を選ぶ

タスクの実行に致命的な影響を与え得る知識は本を読む強烈な理由になります。
なぜならすぐ実行に移せる知識はエンジニアにとって戦闘力にほかならないからです。
実行できる場があってこそ戦闘力として確立されます。
タスク、自分の思索、議論など実行の場は何でもいいです。
また一般にアウトプット付きのインプットの方が上質だとされ、僕自身そう感じることが多いです。

レビュー・目次などから情報収集して本を選ぶ

テーマが決まれば後は情報収集です。
まずAmazonやTwitterのレビューから本の特徴を洗い出しましょう。
僕はAmazonの☆から大体の本をリストアップし、その後AmazonとTwitterのレビューで目的に適う本かをチェックします。

その後本によっては発行年をチェックして当時のトレンドから、または著者がどの畑の出身で何を重要視しているかなどからバイアスを逆算したりします。

本の目次をTODOアプリに落とし込む

読む本が決まれば目次をググって(Amazonなど)TODOアプリにコピペします。
TODOアプリに落とし込む理由は

  1. いつでも本を読み始められる環境づくり
  2. 小さい達成感づくり

の2つです。
人間は同じことをやり続けると飽きてきます。
なので長時間ガッツリより短時間ちょこちょこがどうしても経験上読書効率がいいです。

メモ-4.jpg

TODOを作成することでどこまで読んだか、次どこから読むかが明確になりいつでも短距離走することが可能になります。
上の図のパフォーマンスが落ちない時間を何度も繰り返すイメージです。
またTODOは小さな達成感を醸成することに長けています。
これによって小さなモチベーションを積み上げることが可能になります。

読む

各章・節のタイトルから読むべき情報を取捨選択する

タイトルがその章・節で得られるメイン情報を表しています。
メイン情報が自分の目的に合わない・知っているなど重要度の低いものならなるべく早くよ見終わることを最重要視しましょう。
場合によっては読み飛ばしても構いません。

具体例は基本的に飛ばして読む量を減らす

具体例はあくまでも抽象論点の補助でしかありません。
すなわち抽象論点だけ読んで理解できる場合はほとんど読む必要すらないのです。
取捨選択のために自分がいま読んでいる段落が抽象論点・具体例のどちらなのか常に意識する必要があります。
特にコード例が多い書籍では読む量が非常に少なくなります。

具体例を先に見て理解のスピードを上げる

上とは逆に抽象論点が非常に分かりづらいときがあります。
そんなときはそこだけで理解するのを諦めて具体例でイメージを掴みましょう。
わからない物だけ眺めて悩み続けるのは時間の無駄です。

読む目的を「知識のインデックス化」と「理解」に分けて読むスピードと質を上げる

「知識のインデックス化」とはどこに何が書いているか知っている状態です。
なんの役に立つかを理解し、その存在を認識さえすれば良いです。
知ることが目的なので読むコストが低いと言えます。
具体的なテックスタックについての本などこれに当たることが多いです。(AWS、プログラミング言語)

一方「理解」とはその仕組まで含めて知り、自分の血肉にすることだと思っています。
存在を知っているだけではなくどうしてそれが重要なのか説明できることが重要です。
本の内容を自分の言葉、すなわち本に書かれていない言葉で説明できたり、自分で具体例を作り出せたら完璧です。
ただ知るということ以上に自分の一部にするための努力が必要となるためコストが高い読み方になります。
原理原則や設計についての本を読むときにこの読み方をすることが多いです。(OOP、clean code、DDD)

上記のように読み方は複数あります。
読み方は今の自分の状況と本の内容の両サイドから決める必要があります。
なぜなら本の内容が読み方のすべてを決定するわけではないからです。
例えばテックスタックの本も実装段階で読むなら詳細な理解が必要となります。
一方原理原則の本にもプラクティスの羅列が含まれている箇所も多々あり、すぐ使用しないならインデックス化が適していることもあります。
要は自分がその情報を今その瞬間どう使いたいかによるのです。
自分が本を手にとった理由から本の各パートをどう読むか都度決めることで、読書の質とスピードをコントロールすることができます。

人に教える状況をイメージしながら読むことでインプットの質を上げる

インプットには無理矢理にでもアウトプットを紐付けることが大事です。
しかし本丸々一冊のインプットに値するアウトプットを作るのはなかなか大変です。
そのため僕は読書の中で何か学んだなと思った瞬間にそれを人に教えることをイメージします。
これも立派なアウトプットになります。
この小さなアウトプットの積み重ねを細かく挟むことで実行可能かつ本一冊に値するアウトプットを簡単に設けられます。

短距離走をする時間をコンスタントに作り毎日の平均読書量を上げる

一日の中でちょこちょこ空く無駄な時間を読書の時間に変換することで平均読書量を上げることが可能になります。
経験上一日頑張るより毎日コンスタントにやるほうが読書量も読書の質も良くなります。
読書時間に変換できる時間はいくらでもあります。
通勤電車の中、トイレ、昼休み、ご飯を食べているときなどなど。
とりあえずスマホを触っている時間はすべて読書時間に変換することができます。
TODOリストを活用して積極的に短距離走を繰り返しましょう。

読書をする時間としておすすめなのが通勤電車の中です。
なぜなら他の場所と比べて勉強している自分カッケーという気持ちを強く感じられるからです。
電車の中で勉強している人はほとんどいません。
みんなスマホです。
そこで勉強すると最初は恥ずかしいですが、この瞬間はここにいる人達より確実に成長しているんだという「酔」みたいなものが生まれます。
これも慣れると一つの大きなモチベーションになります。

2/3ほど読んだら次に読む本を決めてモチベーションを上げる

興味のある本は最初は魅力的ですがある程度中身がわかってくる中盤移行どうしてもだれがちです。
2/3ほど読み終わった時点で次に読む本を探して決めましょう。
次に取り掛かるワクワクする事を作ることで今の本を完読するためのガソリンにするのです。

読んだ後

積極的にアウトプットしてインプットの質をあげる

インプットは必ずアウトプットと紐付けて質を高めることが重要です。
メモを残す、記事を書く、人に話す、実際に技術を使ってみるなど何でも構いません。

その中でもおすすめは人に話すことです。
理由としては以下の2つがあります。

  1. アウトプットのための準備が最小
  2. 即座のフィードバックがあるため自分のインプット・アウトプットの質をその場で測定できる
  3. 質問などの不確実性・リアルタイム性にも耐えうるインプット・アウトプットの質なのかがわかる

アウトプットは大切ですがコストはかけたくありません。
記事や実際に使用してみることは結構コストがかかります。
それに比べて人に話すことにかかる準備は少ないので簡単に何回もアウトプットすることができます。
また会話することで即座にフィードバックが得られます。
自分の説明や理解は1人のエンジニアを説得するのに足るものだったのかということが測定でき、それは非常に大きな価値を持ちます。
同時に会話は他のアウトプット方法と比べて質問などの不確実性がリアルタイムで発生します。
その不確実性にその場で応えられることは質の高いインプットの裏付けになるでしょう。

普段から

スマホを勉強仕様に仕上げて本を読む環境を作り上げる

人間は環境に左右されやすい生き物です。
特にここ近年間違いなく行動に大きな影響を与えている環境はスマホです。
そのためスマホを勉強仕様に作り上げることで少しでも勉強に向き合う可能性を上げることが重要です。

とはいってもSNSやゲームをすべて消す必要はありません。
強烈な処方は長続きせず、リバウンドにより甚大なダメージを負います。
よほどの覚悟が必要なものより何気なく長続きすることのほうが価値があります。

重要なのは勉強に近いものをアクセスしやすくし、そうでないものをアクセスしづらくすることです。
勉強に関わるTODOアプリやメモアプリなどはドックにおいてアクセスまでの手間を極限に減らします。
逆に勉強の誘惑になるようなものはアクセスしづらいページのフォルダの奥底にしまったりすることでアクセスの手間を高めます。
無意識的にスマホを触るときは手間のかからないものにアクセスするのが人の習性ですから、こうすることで勉強に向かう可能性を少し上げることができます。

人に自分の学びを話す癖をつける

読んだ後のセクションで挙げたとおり人に学びを話すことは非常に重要です。
しかしこれは誰もが得意にしているわけではありません。
特にアウトプットしたいときにだけ無理矢理に話そうとすると、いつにもまして難しく感じるかもしれません。
いざというときにすんなり実行できるように普段から少しづつ学びなどを他の人に話し、習慣化することで障壁をなくしていきましょう。

終わりに

今回の記事は完全に我流なので人によってフィットしないことも十分考えられます。
しかし実践したときの学習サイクルの高さは保証します。
また技術書以外の本を読むときにでも使えるプラクティスも含まれていると思います。

最後に、ここまで読んでいただきありがとうございました。
何か質問、フィードバックや共有できることがあればぜひコメント欄まで!

info-outline

お知らせ

K.DEVは株式会社KDOTにより運営されています。記事の内容や会社でのITに関わる一般的なご相談に専門の社員がお答えしております。ぜひお気軽にご連絡ください。