【Q&A】2種類ある?技術書の「良い」読み方と学習方法

こんにちは、@codeship_techです。

本日の質問がこちら。

技術書の読み方についてなのですが、最初から最後まで一章ずつ丁寧に読んでいくものなのですか?
どういうふうに読んでいくのが効率よくインプットできますか?

ということで、技術書についての質問ですね。

一気に専門色が強くなる技術書を初めて手に取ったときは、単語や文章を見ても最初はスッと入ってこなかったりと慣れないことがたくさんありますよね。

今回は技術書が、どんなジャンルに分別できてそれぞれどのように学習すれば良いのかを中心にアドバイスしていきます。

それでは早速こちらの質問に答えていきます。

ハンズオン系なのか辞書系なのかで答えが変わります。
ハンズオン系ならそうですし、辞書系なら全くそんなことはありません。

今回は技術書の読み方について、私(講師)の持論を踏まえつつご紹介します。

技術書の分類: ハンズオン系と辞書系

私は個人的に技術書を大きく分けて2種類に分類しています。

1つは「ハンズオン系」と呼称します。

ハンズオンとは「体験学習」という意味で、本の指示通りに手を動かすことで何かプロダクトを作成し、その過程で言語やフレームワークの特性について理解するものです。

書籍ではありませんが、「Rails Tutorial」などが代表的です。

もう一つは「辞書系」と呼称します。

辞書系技術書とは、その名の通り辞書のように網羅的に技術について紹介がなされている文書で、必要になったときにその都度開いて確認しつつ用います。

リーダブルコード」や「SQLアンチパターン」が該当します。

ハンズオンは最初から最後まで丁寧に読み、写経すべき

これは当たり前として良いかと思います。

ある章を飛ばして読むと、次の章ではその飛ばした章が実装済であることを前提に話を進められるかもしれないからです。
そうなってしまうとプロダクトに矛盾が発生し、完成は難しくなるかと思います。

したがって、ハンズオン系を学習するときは、コード入力の指示などはあれば一字一句違わず追いかけ実装するようにしましょう。

辞書系は入手時点では目次だけを眺め、以後は気になった箇所を拾い読みすべき

初学者にとっては、辞書系はハンズオン系のように、最初から最後まで丁寧に読み込む必要は全くありません
加えて写経などをすることは基本的には大変非効率です。

学問として言語を深く理解するためなど、システム開発を手段にする以外の目的があるなら別ですが。

ハンズオンでなく辞書系の本を参照できる(またはその意思がある)時点で、他の初学者からは逸脱していて素晴らしいことなのですが、悲しいことにここに初学者が陥りやすい罠が存在します。

辞書系技術書はその特性上、実際の開発で用いることが稀な非常に細かい議論や事柄までをカバーしている場合があります。

それら細かい話は暗記するのではなく、いざという必要な時点で参照して開発に活用していくものです。

細かい事柄を初学のうちに詰め込みの暗記をする前に、MVCモデルやgitのブランチの概念、通信の暗号化方式など、頭で理解しなければならないことがプログラミング学習の上では多々あるはずです。

にも関わらず、頭で理解しなければならない重要なことに割くべき脳のリソースを、参照すればわかるさほど重要でないようなことをインプットするのに割いてしまうことはリソースの無駄使いとも言えます。

これは他のハンズオン系で効率よく学ぶ初学者に対して、遅れを取っているやり方と言っても差し支えないでしょう。

人間の記憶力は有限なので、残念ながら詰め込んでもほとんど忘れてしまいます。

私が以前見かけたのは、学習開始2ヶ月目で「JavaScript本格入門」で取り扱っている正規表現全てを暗記しようと奮闘していた例でした。
この本は典型的な辞書系技術書です。
限られた時間でスクールに通っているのに非効率な時間の使い方をするのは如何なものかと考え、彼のレベル感に合わせたハンズオン系の教材を案内しました。
このように正規表現を暗記しなくともJavaScriptによる良いアプリ開発は行えますので勉強の仕方を間違えないようにしましょう。

辞書系を読み込むことは初学者にとって費用対効果の面で留意しなければならず、読み込む箇所を読む前に選定する必要があると考えます。

辞書系はまず目次だけをしっかり読むべき

私が辞書系の技術書を読むときは、まず目次を参照します。

目次を多少の時間をかけて目を通し、「どこに何が書いてあるのか」を記憶することに努めます。

気になる箇所があったら、目次の気になる箇所ないしはその該当ページそのものにブックマークをしておき、その箇所を重点的に読みます。

書いてあることそのものは記憶する必要はありません(理解する必要はあると思いますが)。
繰り返しになりますが、必要になったときに開ければ良いのです。

ですが辞書系技術書は、辞書のように乗っている単語があいうえお順に決まっていると言ったような掲載順ルールがありません。
なのでどのようなことがどのページに記載されているか、どう言った箇所を開発で使いそうかは、目次を参照するときになんとなく目星をつけておく必要はあります。

こうして「これこれで困ったときはあれのどこに書いてある」という情報(まつもとゆきひろ氏はこれを“インデックス“と呼んでいます)を蓄積することで、必要なときに必要な情報を引き出せる頭が出来上がっていくものだと私は考えます。

辞書系技術書に対するこの付き合い方は、言語やフレームワークのオンラインのドキュメントを読むときにも効果を発揮します。

言語のドキュメントを暇なときになんとなく眺めておくことで、そのうちどこに何が書いてあるのかを直ちに参照できるようになるものです。

理想的な学び方

新しい技術を学ぶときに最も理想的な形態は、一つの言語やフレームワークに対しハンズオン系と辞書系双方の技術書を、少なくとも1つずつ持っておくことです。

技術書と言いましたが、公式リファレンスでも、オンライン教材でも動画でもモノはなんでも構わないです。

基本的に役に立つ広い知識を吸収できるのは辞書系です。
したがって辞書系が読めれば良いのですが、辞書系は全く未知の領域であると初学で理解することは難しいかと思います。

そこでハンズオン系の技術書の写経を通して肌感覚でプロダクトの作り方などを理解します。

その上で、ハンズオン系では網羅性の都合で触れることの難しかった領域や、ハンズオン系で登場したけどよく理解できなかった箇所を辞書系で補うことで、技術力を高めていくと、大変効率よくかつ効果的に学習を行うことができます

CodeShipでは、実践的なハンズオン系のカリキュラムを多数ご用意しております。
独学の難しい方、効率よく学びたい方のさらなるお手伝いができることを願っております。

本日は、技術書の読み方について解説しました。

授業日記についてのご意見

CodeShipの授業について「こんな事が知りたい・紹介して」というご意見・ご提案がありましたら、CodeShip公式Twitterアカウント(【CodeShip】プログラミングスクール)までDMまたはリプライにてお寄せください。