Making use of
Graded Reader List
provided by ERF (Extensive Reading Foundation) as a list of
tab-separated values (.tsv), extensive-reading-logger which consists of AWK scripts make reading records in extensive reading with readdone.awk
and show them as a table with mktable.awk
.
The scripts has the same as some functions of UN*X commands grep, cat
,
and they provide users with the much simpler way.
The scripts make graded readers as well as ordinary paperbacks recorded,
with the aid of websites like Reading Length.
extensive-reading-logger
は、ERFが提供するグレイデッド・リーダー
(以下「リーダー」と呼ぶ)
のリスト
ERF Graded Reader List
(.tsv, tab-separated values)
を用いて、多読を記録
(readdone.awk
)
・表示
(mktable.awk
)
する
AWK
(GNU Awk)
スクリプト
(とシェルスクリプト)
群である。リストの検索、多読の記録・表示といった機能は
UN*X
コマンド
grep, cat
による基本的な結果と同様のものである。このスクリプト群を利用すると使用者の手順を直接コマンド操作よりもっと簡潔にできる利点がある上に、さらに累計語数や
WPM
の計算、長い一冊を分割して記録するといったこともできる。リーダーではない読書の記録にも対応し、その語数も任意で記録するかどうかを決められる。その場合の語数については
Reading Length
などから探すか、または
SSS式算出法
を用いて手動で算出する必要がある。
累積語数は15桁
(100兆語)
までカラムが崩れずに表示される。
このスクリプト群は
GNU Awk
gawk
が必要である。
このスクリプト群をインストールするには、サイト
ERF Graded Reader List
から現時点でスクリプト
readdone.awk
で指定できる出版社・ブランド
に対応した
GR
リスト
(.tsv
ファイル, このフォーマットは
Google Spreadsheets
のエクスポート機能として用意されている)
をユーザー自身でダウンロードしてディレクトリ
db/
下に置き、アプリケーションルートディレクトリから、それら
.tsv
ファイルへのシンボリックリンクを張る。出版社名とシンボリックリンク名の既定の対応は以下の通りとしている:
出版社・ブランド | シンボリックリンク名 |
---|---|
Black Cat - Cideb | blackcat |
Cambridge U. Press | cambridge |
Cengage/Heinle | cengage |
Macmillan ELT | macmillan |
Oxford U. Press | oxford |
Pearson English Readers, Penguin ELT | pearson, penguin |
この作業は煩雑であるので、ダウンロードして以降の作業を自動で行うスクリプト
install.sh
をリリースに含めている。
GR
リスト自体をリリースに含めてよいかどうかは、今後
ERF
に問い合わせる予定である。
以下にある、「読書記録ファイル」の既定のファイル名は
read.done
としている。
readdone.awk
検索と記録。結果は読書記録ファイルに書き込まれる。mktable.awk
多読記録の表示。読書記録ファイルが必要。install.sh
ERF Graded Reader List をインストールする。
以下はおまけである。
accum.sh
累計語数の推移を視覚的に表現する。目盛りは線形と対数から選べる。読書記録ファイルが必要。calc-audioWPM.sh
iTunesからエクスポートされたプレイリストから、音源の読み上げ速度を計算する。calc-audioWPM.awk
上記の awk 版であり、機能に差はない。dailycount.sh
1日単位の語数を表示する。読書記録ファイルが必要。長くなるためUN*Xコマンドtail
と併用してもよい。deviation.awk
シリーズ語数平均からの各リーダーの偏差 (散らばり) を表示する。read.done
読書記録ファイルの実施例である。これを用いて一通りの動作を確認できる。
以下に使用方法を説明する。大きくわけて
./readdone.awk
リーダーのタイトルや語数を検索./readdone.awk --commit
検索したリーダーの記録./mktable.awk
表示
の三通りがある。 記録については、ただ必要項目を記録するだけでなく、「どのように読んだか」 (詳述する) についても記録できる方法を提供している。 表示については、非要約モードと要約モード、さらに非要約モードより冗長な饒舌モード、デバッグモードといった挙動を提供している。 以下に、順を追って説明する。
目的のリーダーのタイトルと書誌データを検索するためのコマンドは
readdone.awk
である。
記録に必要なリーダーを選ぶためには、
- 第1引数にリーダーの出版社名・ブランド名、
- 候補を絞るために第2引数に検索キーワード、 を指定する。
出版社・ブランド名入力の必要性は同一著者からの同名タイトルが複数存在するためで、それらの区別はユーザー側でつけてほしい。
例えば、The Hound of the Baskervilles
(コナン・ドイル『バスカービル家の犬』)
を登録したい場合、このタイトルは
オックスフォード大学出版局だけでも
Oxford Bookworms Library Stage 4
と
Oxford Progressive English Readers Grade 3
があり、ピアソン・エデュケーションの
Pearson English Readers Level 5
にも存在するように、少くとも3冊ある
(実際にはもっと存在する)。
したがって、オックスフォード大学出版局のリーダーを指定したい場合、第1引数は
oxford
とする。または可能な限り省略して一文字
o
ともできる。省略した時の必要な流さは一意に指定できる文字数であり、この
o[xford]
の他に第1引数で指定できる出版社・ブランドは、現時点で本邦で入手しやすい
b[lackcat], ca[mbridge], ce[ngage], m[acmillan], pen[guin], pea[rson]
を用意している。
検索キーワードとして例えば、
Brat Farrar, Oxford Bookworms Library Stage 5
を指定したい場合、第2引数では大文字と小文字を区別せず、また拡張正規表現
(ERE)
も指定でき、その場合には(二重)引用符が必要である。以下の例では単に
farrar
と普通の文字列検索として指定している。
$ ./readdone.awk o[xford] farrar
OBW5 Brat Farrar Josephine Tey, Retold by Ralph Mowat 4.5-5.0 24510 2018.12.06
################################################################################
#### Invoked in the Dry-run mode: ####
#### Put the "--commit" option to append records ####
################################################################################
コマンド中に
--commit
オプションがない場合には読書記録ファイルに記録せず、上記の様に警告メッセージを出す。
readdone.awk
コマンドに
--commit
オプションをつけることで記録ができる。このオプションの位置は問わない。記録するファイルの既定名は
read.done
である。このとき、
readdone.awk
コマンドは累計語数を計算して返す。
$ ./readdone.awk o[xford] farrar --commit
8647120 words read
--commit
する際に各リーダーの読書時間と総ページ数を併せて指定すると、後に表示する際に読書速度
(WPM)
を計算する。2万語を超えるリーダーについて1冊まるごとの読書時間を測るのは現実的ではないので、数ページを選んでその時間を記入するだけでも計算はする。第3引数には1冊まるごとの場合
w
もしくは
whole
を指定し、またはその測ったページ数を指定する。
第4引数の時間表現は、
100m
とか
600s
といった冗長さを許して指定できる。第5引数は総ページ数である。
- 1冊まるごとの時間を測った場合
./readdone.awk o[xford] farrar w[hole] [0h][200m][0s] 88 --commit
- ある5ページの時間を測った場合
./readdone.awk o[xford] farrar 5 [0h][10m][0s] 88 --commit
各リーダーの読書時間とページ数を入力する場合には、検索の時点で結果が1件になるまで絞る必要がある。逆に、各リーダーの読書時間とページ数を入力しない場合には、検索の時点で結果が1件になるまで絞る必要はなく、したがって複数のリーダーを一度に登録できる。この場合に第2引数を正規表現を指定できるのは有用である。
第5引数まで全て指定した場合に第6引数を指定できる
(空白文字列
""
は第5までの引数として受けつけられる)
。引数に書いた文字列がそのまま
read.done
に載るしくみなので利用者が好みの記法を導入してこれを備考欄として扱えばよい。
特に、多読の第三原則「投げ出した」場合や、1冊を何度かに分けて読んだ場合、音声を併用した場合などについては既定の記号があり、それに対して
mktable.awk
は特定の動作を返す。
挫折するまでに読んだページ数、時間、総ページ数を指定した次の位置で第6引数
quit
を指定する。このとき、挫折するまで読んだページが
w[hole]
になることはありえないのでこれをチェックする。
- 途中で読むのをやめた場合
./readdone.awk o[xford] farrar 15 [0h][20m][0s] 88 quit --commit
第6引数で分割を指定でき、1冊を多レコードに分けて記録できる。各レコードは上から1度走査されるだけなので、レコードの種類は3種類あり、分割の始めで中座したことを示す
suspended
と、分割の中ほどで再開しかつまた中座したことを示す
res+sus
と、分割の最後の部分を再開したことを示す
resumed
の3種類の指定が必要である。分割開始と分割終了以外のレコードの第6引数は全て
res+sus
である。分割は他の作品と並行させることができる。
- まず31ページの中程まで読んだ
./readdone.awk o[xford] farrar 30.5 58m28s 88 suspended --commit
- 次に60ページの終りまで読んだ
./readdone.awk o[xford] farrar 60 1h1m10s 88 res+sus --commit
- 61ページから終わりまで読んだ
./readdone.awk o[xford] farrar w 56m54s 88 resumed --commit
音声の速度を第6引数として指定できる。第6引数で指定した文字列がそのまま
read.done
に載る。音読やシャドウイングを語数に数えるかどうかは各自の自由にすればよい。
- 音声を再生して読む
./readdone.awk o[xford] farrar w[hole] [0h]200m[0s] 88 1x --commit
- 1.5倍速で再生した
./readdone.awk o[xford] farrar w[hole] [0h]200m[0s] 88 1.5x --commit
第1引数に出版社・ブランド名のかわりに
na
または
NA
を指定し、以下第2引数は書名、第3引数は著者名、第4引数は語数を指定する。読書速度を算出するための第5引数以降の順序は同様である。空白を含む書名や著者名は
"The Title of the Book"
や
'The Name of the Author'
のように
(二重または一重)
引用符で囲む。
- 時間を測らない場合
./readdone.awk n[a] booktitle author wordcount --commit
- 時間を測る場合
./readdone.awk n[a] booktitle author wordcount w[hole] 1h20m30s 88 --commit
read.done
に記載された記録を整形して表にする。1レコードに1行を使用し表が長くなるため後述の要約モードが
(多読のやりかたによっては)
有用かもしれない。
./mktable.awk
WPMが色つきで表示される。速さとその意味とその色との関係は以下の通りであり、速さの意味は酒井『快読100万語』[1]におおよそ倣った。./mktable.awk -w
画面を保存する。
速度 | WPMの色 | 意味 |
---|---|---|
200- | シアン(#00ffff) |
十分に速いので、レベルを上げよう |
150-200 | ドッジブルー(#005fff) |
レベルを上げてよいか、留まってもよい |
100-150 | 無色 | このレベルが現在の訓練に適している |
75-100 | イエロー(#ffff00) |
読むのが辛ければレベル下げを検討すべき |
-75 | レッド(#ff0000) |
おそらく難しすぎる |
使用例:
$ ./mktable.awk
-----------------------------------------------------------------------------
7F11
----------------------------------
Date Words Sum CEFR audio min/p words/m Reader Title
---------------------------------------------------------------------------------------------------------------
2017.01.17 1292 1292 A1 OBWS Cat, The
2017.01.17 890 2182 A1 OBWS Connecticut Yankee in King Arthur's Court, A
2017.01.19 1260 3442 A1 OBWS Dead Man's Money
2017.01.19 1400 4842 A1 OBWS Drive into Danger
2018.01.21 5440 10282 A1/A2 0.6 m/p 220 wpm OBW1 Wizard of Oz, The
.
.
.
2018.12.20 24045 8932039 B2 2.3 m/p 120 wpm OBW5 Great Expectations
2018.12.21 22885 8954924 B2 2.6 m/p 101 wpm OBW5 Riddle of the Sands, The
2018.12.21 0 8954924 B2 quit 5.2 m/p 53 wpm OBW5 Sense and Sensibility
2018.12.22 24810 8979734 B2 N/A 2.6 m/p 106 wpm OBW5 Accidental Tourist, The
2018.12.22 15250 8994984 B1/B2 N/A 1.6 m/p 130 wpm OBW4 African Queen, The
2018.12.23 24750 9019734 B2 1.7 m/p 163 wpm OBW5 This Rough Magic
---------------------------------------------------------------------------------------------------------------
Cumulative Total: 885 books, 9019734 words read
「投げ出した」場合の記録については、その行の
audio
欄に
quit
と表示される。また、読了したのべ冊数にも数えないし、その本の語数も数えないので語数は0である。
1冊を分割して記録した場合については、どの1冊も1つのレコードで表示するのが既定の動作である:
$ ./mktable.awk
.
.
2019.01.04 24510 9235955 B2 N/A 2.0 m/p 139 wpm OBW5 Brat Farrar
2019.01.05 22620 9258575 B2 N/A 1.7 m/p 158 wpm OBW5 Bride Price, The
---------------------------------------------------------------------------------------------------------------
Cumulative Total: 897 books, 9258575 words read
ただし、オプション
-v
を指定した
(awk, gawk
インタプリタへのオプションとインタプリタが混同してしまわないように、第1引数には
--
を置き、本スクリプト
mktable.awk
自体へのオプションは第2引数以降で指定する必要がある)
場合には分割した通りにレコードを表示する。また、各レコードの第5カラムでは、一冊全体に対する読書進捗状況が百分率で表示される。
$ ./mktable.awk -- -v
.
.
2019.01.04 0 9211445 B2 35% 1.9 m/p 145 wpm OBW5 Brat Farrar
2019.01.04 0 9211445 B2 68% 2.0 m/p 140 wpm OBW5 Brat Farrar
2019.01.04 24510 9235955 B2 100% 2.0 m/p 139 wpm OBW5 Brat Farrar
2019.01.05 0 9235955 B2 52% 1.7 m/p 160 wpm OBW5 Bride Price, The
2019.01.05 22620 9258575 B2 100% 1.7 m/p 158 wpm OBW5 Bride Price, The
---------------------------------------------------------------------------------------------------------------
Cumulative Total: 897 books, 9258575 words read
のべ語数よりWPMを上げるのが目的で多読を行い、しかも同じタイトルのリーダーを複数回読む流儀の多読には、各タイトルが当初の読みに比べてどれだけ改善したかを示す「要約モード」が有用な場合もあろう。同一タイトルの読書記録は同じ行にできるだけ詰めて表示され、 WPM の伸び(または縮み)を見ることができる。 第二引数は正規表現(ERE)の場合、引用符が必要である。
./mktable.awk s OBW5
WPMが色つきで表示される。./mktable.awk -w s OBW5
画面を保存する。
2018年12月某日に起動した場合の使用例:
タブ幅に納まる様に記述を圧縮している。
169@Nov
は今年の11月のある日に読んだ結果、169 WPM だったことを表す。今年(2018年)以外の記録は全て西暦年の下2桁のみを用いる:
n/a@'15
は2015年に読み、しかも時間を測らなかったのでWPMが計算できないことを表す。同様に、
128@'17
は2017年のある日の
128 WPM
という結果である。
今年の今月に読んだものは、たとえば
130@22
のように月の日だけ(22日)が表示される。
$ ./mktable.awk s OBW4$
OBW4 20,000 Leagues under the Sea 152@Apr 165@Jun 160@Sep 150@Oct 169@Nov
OBW4 African Queen, The N/A 72@'17 93@Apr 101@Jun 173@Aug 130@Nov 130@22
OBW4 Big Sleep, The N/A 128@'17 144@Apr 149@Jun 229@Aug 210@Nov
.
.
.
OBW4 We Didn't Mean to Go to Sea N/A 131@May 155@Jul 145@Sep 162@Oct 172@Nov
OBW4 Whispering Knights, The N/A n/a@'15 154@May 166@Jul 141@Sep 181@Nov
./mktable.awk w
使用例:
$ ./mktable.awk w
9019734
- 酒井邦秀『快読100万語!ペーパーバックへの道』(ちくま学芸文庫、2002年)