Cacao's repaying
メモとか作業ログとか

BOOX Tabで英次郎を使う

posted on

教科書や論文を読むための専用デバイスとしてBOOX Tab Ultra Cを購入したわけだが、英語論文を読むためにはやはり辞書が欲しい。しかし、BOOXは中国メーカーのタブレットなのでデフォルトで英和辞書は入っておらず、自分で用意する必要がある。

英辞郎のテキストデータを既に購入してあったので、これをBOOX Tabが対応している辞書形式に変換して入れれば良さそう。設定画面を見ると、対応している辞書フォーマットはStarDict、MDict、BlueDict、Babylon、とのこと。

調べたところ、ちょうどこのブログで同じようなことをしているのだが、ここではMDictフォーマットを使用している。しかし、同じ手順をやって吐かれた辞書を読み込ませてみると、エントリの殆どが消えてしまっているようだった。中身を見て調べようと思ったが、そもそもMDictフォーマットはオープンにはなっておらず、MDictを吐くツールもリバースエンジニアリングの結果に基づいているっぽい?これは少し気持ち悪いので、仕様がオープンになっていそうなStarDict形式を使うことにした。

英辞郎データからStarDictへ

英辞郎のテキストファイルを読み込むところまでは、先に紹介したブログのコードを使わせてもらった。読み込んだデータをStarDict形式で書き出す部分はPyGlossaryを使うのが楽だった。メインのコードは以下のような感じ。

from pyglossary import Glossary

Glossary.init()
glos = Glossary()

for word, defi in mydict.items():
	glos.addEntryObj(glos.newEntry(
		word, defi, defiFormat="m",
	))

glos.setInfo("title", "EIJIRO")
glos.setInfo("author", "Your Name")
glos.write("eijiro", format="Stardict", dictzip=False)

ここでmydictが読み込んだ英辞郎のデータだと思ってくれれば良い。

StarDictフォーマットはdict, ifo, idxの3つの拡張子を持つファイルを一つのディレクトリに入れる、というものなので、上のコードを実行するとeijiro.dict, eijiro.ifo, eijiro.idxの3つのファイルが生成される。あとはBOOXDropあたりを使ってこれらのファイルをタブレット内の所定の場所に置けば、英辞郎が使えるようになる。

ちなみに、上のコードはPyGlossaryのREADMEに書いてあるサンプルコードほぼそのままなのだが、READMEだとglos.writeの引数として"test.ifo"のような拡張子つきのファイル名が指定されている。実は"test.ifo"のように出力先を指定すると、自動的にtest.dicttest.idxの2つも同じディレクトリに吐かれる仕様になっているらしい(えぇ…)。

僕は最初StarDictの仕様を真面目に読んでおらず、出力としてtest.ifoを指定しているんだし、当然生成されるファイルもtest.ifoだけだと思い込んで上手くいかず、時間を浪費してしまった。

ともあれ、これで使い勝手がだいぶ良くなったので、ガンガン使いこなしていきたい。

← BOOX Tab Ultra ...2024年の目標 →