ぼくの本の読み方

どの本を読むか

まずは、読みたい本を決めることから始めるしかない。本の紹介リストとかAmazonのおすすめとかKindleの0円リストとかTwitterに流れてるとかを興味あったらとりあえずブクログの読みたい本リストに入れている。

本の紹介リストはSFだったら http://love6.2ch.net/test/read.cgi/sf/1251044312/ とか。まあいろんなところに様々なジャンルのおすすめがあるし、そこを全て読んで好きな読者など探索すればよい。

あとは図書館とか部室とかの本棚のてきとーな棚の左上から読んでいくという方法もある。一通り読めるので大変べんりである。

本を手にいれる

本を手元に置くには2種類方法がある。買うか借りるか。4000冊も買っていては破産してしまうので借りるしかない。図書館の蔵書を調べるにはカーリルが大変べんりだ。本のリストが少ないうちは、ここに読みたい本をがんがん登録していくといいと思う。

ぼくはブクログの読みたい本リストに4000冊、Amazonのカート(優先的に読みたい本リストみたいな)に400冊の本が溜っているのでとてもカーリルを使ってられない。

ぼくはまずAmazonのカートの古いものから、そしてブクログの読みたい本リストの古いものから読んでいきたい。 そこで、この順番にリストを見に行って、カーリルのAPIを使って蔵書情報を調べるプログラムを書いて使っている。読みたい本が図書館にあれば、図書館の予約ページが開いてくれてべんりだ。予約して、本が来たら受け取る。これだけ。

予約する本の冊数は、(図書館で借りることができる最大冊数)-(いま借りているうち読み終わっていない冊数)にしている。ただし、コミックはカウントしない。予約可能数の半分をローダンシリーズの予約に使う。10冊借りることができる図書館で、10冊借りていて、2冊読み終わったら、1冊ローダンを予約し、1冊別のなにかを予約する。さらに、もしも手塚治虫のコミックを借りていない or 借りていても読み終わっている場合には手塚治虫のコミックを予約する。

Amazonカートには優先的に読みたい本リストをいれている、といったが基本的に興味があっていますぐ読みたいんだー!という理由でここに本を入れることはない。読んでるシリーズの新刊や、図書館で読み終わった本の次の巻をAmazonカートにつっこむことにしている。そうしないと、ブクログの4000冊の最後に入っちゃってやばいからね。

また、Amazonカートは買いたい本のリストでもある。出先で本が足りなくなってきたら、このリストを見て本を買う。この用途のために、前述の蔵書チェックプログラムはどの図書館にも読みたい本がない場合にカートに本をつっこんでくれるようになっている。 ただ、生活場所が変わり図書館の蔵書が多幅に変わったせいでAmazonのカートの中に、いまでは蔵書の中にある本がたくさん貯ってしまってブクログの読みたい本リストを消化できずにいる。一度カートをクリアすべきかもしれない。

コミック系はTSUTAYA DISCASで30冊単位で借りている。現在30以上のシリーズを読んでいる(Kindleの無料配付の続きを読んでるせいだ、ぷんぷん)ので30種類1冊ずつを借りてる。びみょーにアレだけど図書館にないようなコミック類を安く読めるのでまあよい。

本をスケジューリングする

ここまでで、手元に本がある状態になる。手元の本には様々な返却期限がついている、または自分で買った本などついていないものもある。これらをちゃんと読んでいかなければいけないという問題がある。これまでに様々な方法を試していてきている。

1. 期限が近いのから読む

期限が近いのから読むというシンプルな方法。

2. ラウンドロビン形式

しかし、期限が近いのから読む方法ではひっきりなしに本を図書館から借りているので、これでは期限が付いていない自分の本を読めないという問題がある。

本をラウンドロビンで読む。日本語の本は10ページ、英語の本は5ページ後に栞を入れて、そこまで読むと本を切り替える。これによって自分の本を読み進めることができるようになった。

3. リミット制

しかし、ラウンドロビン方法では20冊手元にある状態で、最初の本を20ページ読むには210ページ読まなければいけない。こうなると期限に間に合わない本が出てきてしまうという問題がある。

そこでリミット制を導入した。1冊にかかる時間を1日と設定し、借りている本の期日の数日前から、借りている本だけを読む期間を作ることにした。たとえば、10月5日返却期限の本が3冊あれば、10月2日からはその3冊だけを読む。1冊読み終われば、リミットは解除され、ふたたび全ての本を読むことが可能となる。10月3日からはまたリミット期間が始まることになる。

これらの期間は重複することがある。たとえば10月10日期限が5冊、10月9日期限が2冊、10月4日期限が2冊ある場合を考えよう。

  • 10月04日: 2冊
  • 10月09日: 2冊
  • 10月10日: 5冊

単純にはリミット期間は以下のように計算される。

  • 10月04日: 2冊: 10月2日から
  • 10月09日: 2冊: 10月7日から
  • 10月10日: 5冊: 10月5日から

しかし、10月5日から10月10日の中には新しく2冊の期限の本が含まれているから、2日リミット期間を延長する。

  • 10月04日: 2冊: 10月2日から
  • 10月09日: 2冊: 10月7日から
  • 10月10日: 5冊: 10月3日から

再度、10月3日から10月10日の中に新しく2冊の本が含まれたので再度延長する。最終的にリミット期間は以下のようになる

  • 10月04日: 2冊: 10月2日から
  • 10月09日: 2冊: 10月7日から
  • 10月10日: 5冊: 10月1日から

こうなると、10月10日からの本が「10月1日から」と一番早いリミット期間を持つことになった。この時、期限が遅いものがリミットに入ると自動的に期限が早いものもリミットに入る。すなわち

  • 10月1日から: 4日、9日、10日の本にリミット
  • 10月2日から: 4日の本にリミット
  • 10月7日から: 9日の本にリミット

4. ソフトリミット制

現実的にはリミット制は十分ではなかった。一日一冊で読むことは難しい。

そこで、早めに「ソフトリミット」を導入することにした。ソフトリミットはリミットと同様だが、1冊2日で計算される。ソフトリミットされた本は「優先」して読まれることになる。ソフトリミットされても、それらの本だけを読むことにはならない。

では、どのように「優先」するのか。ソフトリミットのレイヤによって本にはレベルが付けられることになった。1番優先される本をレベル1、次をレベル2、レベル3としていく。

レベル1の本はいつでも読むことができる。レベルn(nは2以上)の本は、最後に読んだ 2^(n-1) 冊の本が レベル(n-1)以下の本だけで構成される時にだけ読むことができる。

こうして、優先付けが導入された。これを使って期限なしの本にも優先度を付けることができるようになった。いまでは、期限ありの本の下に、期限はないが借りている本や論文など早めに読みたい本、技術書・教科書、図書館から借りている本、その他の本という階層で優先度を付けている。

5. ラウンドロビン単位の変更

長らく4までのシステムで安定していたが、10ページというラウンドロビン切替え単位をページ数ではなく5分という時間単位に変えた。

6. ピックアップ

今年になって導入した仕組みで試行錯誤中。ここまでのシステムでは、自分の蔵書を読む速度がやはり遅くなってしまった。そこで自分の本に期限を付けるピックアップシステムを導入した。

この時、期限をいつにするかが問題となる。現状以下のように決定している。

  • ピックアップしている本のうち、最も期限が遠いものの期限が1月以上先の場合: ピックアップしない
  • ピックアップしている本がない場合: 今日+1日(明日)を期限とする
  • ピックアップしている本が1冊だけの場合: その本の期限+1日を期限とする
  • ピックアップしている本が複数の場合: ピックアップしている本の期限のうち最も遠い2つをkとlとおき、l+(l-k)+1を期限とする。たとえば、10月1日と10月3日が期限の本があれば、新しい期限は10月6日となる。

外出する

外出する時には本を3冊以上持っていく。コミックは0.5冊で計算する。この時、歩きながらで読めるぐらいのサイズの本を2冊含める。

前述の優先度に従って読む本をつんでいき、3冊以上かつ小さいの2冊になるまでひいていく。場合によっては小さいのが出てくるまで何十冊もつむこともある。

その後、持っていけるサイズになるまで減らしていく。この時、優先度処理を逆に減らす本を決定していく。すなわち、レベル3までの本がつまれている場合、レベル2の本を外せるのは、最後に外した本がレベル3の本である場合に限る

外出中は本とNexusを5分で切替える。本 -> Nexus -> 本 -> Nexus となる。 Nexusはさらに、2ch・Jコミ・Chrome・論文・Kindleを読んでいるので、本 -> Nexus(2ch) -> 本 -> Nexus(Jコミ) -> 本 -> Nexus(Chrome) -> 本といった読み方になる