元プログラマによるGraphVizを使った読書要約のやり方(私家版2019年版)
(1)読み返したらちゃんと分かるようにしましょう
勉強の本を読んでまとめるとき、どこまでやれば「分かった」ことになるか。という話は常について回ります。
ここで、本を読んでおいて、その中身を「分かって」ないなら、読んだ意味がない。
そういう無駄なことをしたとなれば、その間の時間がものすごくもったいない。
そういうことは避けたい。ちゃんと「分かりたい」。
***
しかし、実際、「分かる」という話を、脳の中に全部情報を持っておく、というレベルにまでもっていくのは容易ではない。
というか、特に仕事で、そんなこと本当に必要か?
どこかに視認性の高いマニュアルかプレゼン資料を置いておいて、それを簡単に取り出せるようにして、キーワード検索して、該当箇所を見返したら、直ちに説明できる、というので「分かった」というのに代えて良いのではないか?
マニュアルを何度も何度も読み返して身に付く、というのは後でやっていけばいいのではないか?
という横着蟲が脳に棲んでいるんですよ。
***
ということで、読書した後は、要約して、簡単に読み返せるようにしましょう。
とはいうものの、どう要約したら簡単に読み返せるようになり、しかもちゃんと分かるようになるのか?
ということで、いろんなツールや工夫を模索しているうちに、今のところ、こういうやり方になりました。という記事がこれです。
***
(2)私がやっている読書要約の仕方
(2-1)誠実のために事前にお伝えしますと
とある理由で、あるフェーズから「プログラマとかの方向け」になります。
簡単に言うと、GraphVizという、定型の文章から矢印いっぱいの図(有向グラフというやつです)を作るパソコンのソフトを使うんですね。
有向グラフを作ると、キーワードで表される概念同士が一体どういう関係であり、概念が一体どういう風に高度になっていくかが、かなり一目瞭然になります。
有向グラフ(やその中間生成物等)を、読み返しやすいように作ることで、「分かった」のとほぼ同じ効果がある。
この時点で「めどい」となった方、ごめんなさい。この記事はこれが要なので、多分ここから先読んでも仕方がありません。貴重な時間なので、お茶とか飲んで別のことをしていた方が有意義です。
特に、おそらく、時間のあまりない生徒の方がこれをやると、ガッチリ分かってものすごく実力が付くか、3年かかっても間に合わないか、どっちかになってしまいます。後者、避けたいですよね。無理そうなら早めにやめといた方がいいでしょう。
***
(2-2)具体的なやり方
〇読書
●本を買う
すぐ後でシャーペンで線と枠をビシバシ引いていくので、自分の所有物であった方が便利です。
本は高い? まあそうですが、必要な本であるならやむを得ないし、家族に金をもらうことも検討して下さい。
公共の本や他人の本に線や枠をビシバシ引かないようにしましょう。そんなことしたらシメられますよ。当たり前だけど。そういう本の場合は、公共施設や相手が許容する範囲内で、印刷して、同じようにします。
●シャーペンで線と枠を引く
本を文章を読むときに、「だいたいこのようなことを言っている箇所である」という、文章のひとまとまりがあると思います。句点(。)一つから、どんなにえげつなくとも五つくらいで、「あっここから話がちょっと変わったな」という区切りがあるはずです。
その区切りまでに書いてあったことで、「ここは必要だ」あるいは「後で多分出てくるやつだな」と思ったら、そこを枠で囲んで下さい。
そして、「必要である」あるいは「後で出てきそうな」キーワード、基本的には名詞の横に、線を引きます。
ボールペンやカラーペンだと消せないので、今回の運用の場合、後で消しゴムで消して直すときに困ります。それらはまた別の機会に使いましょう。
〇要約
●パソコンに打ち込む
そうこうしているうちに、枠や線まみれになった本が、目の前にあると思います。
本1冊分読み終わったら、本に書いてある内容を、自分が読み返して過不足ないように、短めに要約します。
ちなみに私は本の要約にEvernoteを使っています。普通の文章を書いて保存して管理するには、やはり鉄板のソフトですね。
Evernote本体( https://evernote.com/intl/jp )
なお、そのうち見出しをつけたくなってくると思いますが、見出しにはレベルを設けておいた方が良いでしょう。
私の場合、見出しのレベル分けはだいたいこんな感じです。
『
※本の題名(後で他の本と統合するときに、題名がないとわけがわからなくなります。後述)
◎第何章
〇第何節(章の中に細分化された見出しがある場合)
●文章のひとまとまりの枠(見出しはないと思うので適当な題名を付ける)
・実際の文章の要約(意味はひとまとまりでも、書いてあることはいくつかに分かれていることがあるので、それら単位で要約する)
』
「1冊読むのに飽きたが、数章は読み終えていて、他の作業は出来る」というときは、読み終えた章ごとにやってもよいでしょう。
●キーワードと矢印で簡略化する
文章の大事そうなキーワードをいくつか抽出します。
たいてい、これらの間には関係があり、例えば「AとBのどちらかがあればCが成り立つ」とか、そういうのがあります。
なので、そういうときは『A・B→(選言)→C』という風に書けば、「ああこれはAとBのどちらかがあればCが成り立つやつだな」と分かるわけです。こうするとかなり読みやすくなります(ちなみに「選言」とは「または」のことです。もちろん「または」と書いてもよいです)
矢印は、「連言」を含め、たくさん考えられます。私は現時点で暫定的にざっくり二十数種類の矢印を用意しています。ですが、細かい説明をするとだいぶ煩雑になるので、また後日にします(ごめんなさい)。
〇有向グラフ化
●GraphVizに読ませる文書ファイルの作成
せっかくのキーワードと矢印を、視認性の高い図にしたい。見たら一発でキーワード同士の関係が分かると嬉しい。
というニーズがあり、そういうニーズを実現してくれるパソコンのソフトの一つに、GraphVizがあります。
GraphViz本体( https://www.graphviz.org )
使い方( https://qiita.com/rubytomato@github/items/51779135bc4b77c8c20d )
ということで、やることについて。(Windows10 64bit環境下)
1.GraphViz本体を、全角の入っていないフォルダ(重要)にインストールする
2.GraphVizに読ませたい文書ファイルを、自分の使いやすいお気に入りのエディタで作り、全角の入っていないフォルダ(重要)に置く
私はエディタはNotepad++を重宝しています。文字列を入力していたら、そのファイルの中で既に使った文字列をサジェストしてくれるのが、ものすごく嬉しいですね。エンコードは気をつけねばなりませんが…
Notepad++本体( https://notepad-plus-plus.org )
●GraphVizによる図変換
3.GraphVizのGVeditというツールを開き、読ませたいファイルを読ませる(File→Open)。
これで文書ファイルに問題がなければ図に画像変換できます。
文字のエンコードが一致しないと綺麗に出ないので、変な出方になったら、お気に入りのエディタのエンコードを適正に直しておいて下さい(重要)。
●GraphVizによる画像ファイルの作成
4.GVEditで図を画像ファイルに出力するための設定を行う(Graph→Setting→ファイル名等の指定→OK)。
この直後から図がその名前の画像ファイルとして出力されます。
(作業用にはa.gifとかwork.gifとか設定して、後でファイル名を手動で書き換えるのが、ファイルの不用意な上書きを避けられて安全なやり方です)
●図の修正
5.図が気に入らなかったら、GVEditの図ウィンドウと文書ファイルウィンドウを閉じ、文書ファイルをお気に入りのエディタで直し、またGVEditで開きなおす。画像ファイルが最新の図で上書きされる。
画像ファイルは保管しておいた方がいいですね。私はクラウドストレージソフトであるDropboxを使っています。これも鉄板のソフトの一つですね。
Dropbox本体( https://www.dropbox.com )
なお、こういう図を書く場合、気を付けて欲しいことが一つだけあります。
上から下へ流れる図の中で、万が一、下から上に延びる線があったとしたら、それは読んだ解釈がなんか間違っているか、最悪の場合は本の記述そのものが間違っています。
循環定義があると、図は曖昧になってしまいますし、人に突っ込まれる可能性が高くなりますし、説明できなくなりますので、それは避けてほしい、ということです。
そういう循環定義が見つかったら、
循環定義を避ける読み替えをする(読み替えをしたこと自体はコメントに書いておく)か、
循環定義しているキーワード群はもっと大きなキーワードの部分であり、そこから分散した、ないしそこへ収束するとみなすか、
相互の循環関係のうち、主たる影響の方を残し、もう片方は従たる影響ということで無視する(無視した箇所はコメントアウトして、無視した旨コメントに書いておく)か、
このいずれかで対処して下さい。
以後納得のいくまで繰り返しです。
最終的に本1冊分の気になるキーワードを全部つなげたら、とりあえず完成です。
視認性を高めるため、省略できる線があったらバシバシ省略した方が良いです。
また、図が大きくて汚すぎるので、段階を設けて区切りを入れた複数の図にしたいとか、もっと視認性の高い概要図を作りたいというニーズがあるのならば、やってみてもよいでしょう。私もよくやります。
〇有向グラフ統合
●既存の有向グラフとの統合
世の中に本はたくさんあり、有向グラフもたくさん作れます。
今まで読んだ本の有向グラフと、新しく読んだ本の有向グラフを統合したら、全体図として使えたり、それぞれの本の考え方の違いが分かって来たりします。
なお、2つの本で、2つのキーワードの前後関係が逆になっていると、循環定義が発生してしまいます(しばしばあることです)。そういうときはどちらの並びの方がよいかよく考えて、上のやり方で循環定義をなくして下さい。
(別の本を読んでたら「全体図ではああしたけど、やっぱり逆の方が良かったな」ということはもちろんあり得ますので、その時は昔書いておいたコメントを参照して、全体図自体を適正に直して下さい。面倒ですが、やっておくと、今後の作業がスムーズです。手間も実はそこまでエグくはありません)
こうして全体図をどんどん構築していくと、自分の勉強読書体験が全体図としてはっきりと眺められるので、非常に便利です。
また、自分の理解していないところがどこか、というのもだんだん見えてきます。だったら、そこに関する本を新たに読めば、全体図がより綺麗に整っていくでしょう。知識や説明の抜けもどんどんなくなっていく。そういう指針を立てることができるのも有難いですね。
***
(3)Q&A
Q1.「横着をやるためだったのでは? 何でこんなに手間暇かけてるの?」
A1.無駄にならない程度には読み込みたいという大きなニーズをすっとばして、そこを損なってでも手間暇を惜しむ、ということには意味がないからです。そんなことしても中途半端にしかならんぞ。逆にそれこそ本当に無駄だ。
Q2.「成果物を作ることは横着ではなくないですか。私は楽がしたいのです」
A2.これは、正直に言うと、作るのはまあ大変です。
でも、本をいちいち確かめるより、成果物を読み返すことができるようになるなら、作った後は愕然とするほど簡単になるんですよ。
本そのものを読み返す必要があるときも、しょっちゅうあることです。だが、成果物を作っておくことによって、全体像や索引がたくさん入っているのと同じことになる。これで信じがたいほど読みやすくなります。というか読みやすくなるように作ったんだから当たり前だけど。
手間のかかることを何度も繰り返すことを余儀なくされて、手間が数倍になることが分かっているんなら、最初にそれを面倒でも整備して、手間がかからなくなった状態で何度もホイホイとできる、というのは猛烈な効率化なんですよ。
さらに、繰り返しのある面倒な作業の効率化によって、はじめてまとまった時間的精神的余裕が出てきて、はじめて他のことが出来るようにもなる。ということもよくあることです。そういうのも非常に大事な話です。
…と、まあ、そんなわけで、本を読んでいて、ちょっと気合がある方は、こういうやり方もございます。お試し下さい。それでは。
(矢印の種類については、後日また説明したいと思います。よろしく)