Published on

[Kindle] 単語帳の​整理

TL;DR sqlite3 Kindle/system/vocabulary/vocab.db

Kindle の単語帳機能は,辞書で調べた単語を記録してくれるのでそれ自体は便利だけど,次の 2 つの点が気に入らなくて不満がたまってきていた.

まず,本当に「なんでも追加してくれてしまう」ところ.Kindle 端末のレスポンスの悪さもあってか,ハイライト時に意図せず,格助詞やその他の機能語も追加されてしまうことがよくあった. 1 こうして,単語帳は単語分割が失敗したフレーズに含まれるどうでもいい一般名詞や,機能語で埋め尽くされていく.

こうなると,不要な単語を一括で整理したくなる.が,Kindle 端末の単語帳アプリには,登録された単語を一括削除する術が(現時点では)用意されていない.これがふたつめのつらさ. 一つずつ単語をタップし,辞書のポップアップから削除しなければならない.レスポンスの悪さと画面の点滅のせいで,わりとつらい作業になってしまう.

何かいい手は無いかなぁと思って,Kindle を Mac にマウントして中身にそれらしいファイルがあるかどうか調べてみた. 2

それらしいファイルがあった. Kindle/system/vocabulary 内には vocab.db という sqlite3 の DB が入っていた. ここまでくればあとは何とでも….

$ sqlite3 vocab.db
sqlite> PRAGMA table_info(words);
0|id|TEXT|1||1
1|word|TEXT|0||0
2|stem|TEXT|0||0
3|lang|TEXT|0||0
4|category|INTEGER|0|0|0
5|timestamp|INTEGER|0|0|0
6|profileid|TEXT|0||0

sqlite> SELECT * FROM words WHERE lang = "ja";
ja:しかしながら,本来|しかしながら,本来|しかし‐ながら|ja|0|1451836371172|
ja:ところが|ところが|ところが|ja|0|1451836908962|
ja:如才|如才|じょ‐さい|ja|0|1456149872209|
ja:緋色|緋色|ひ‐いろ|ja|0|1430219728555|

sqlite> DELETE FROM words WHERE lang = "ja";

最後に Kindle を Unmount して,再起動させれば単語の削除が反映される.

QoL がちょっとだけ上がった.イェァ!

Footnotes

  1. 日本語の本では,ハイライトやフレーズ選択の操作性があまり良くない.単語分割がうまくできていないからかもしれない.

  2. ハイライトやメモを抽出しようとした時のことを思い出した.