hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

読書尚友にポップアップ辞書を実装

読書尚友のこれまでの辞書連携機能は、EBPocketを外部アプリとして起動するものだったが、画面遷移を伴うため、読書の集中が途切れてしまう問題があった。今回、ポップアップ辞書機能をやっと実現できた。

「CD-ROM版 新潮文庫の100冊」の『狭き門』を読みながら辞書引きする図。

f:id:hishida:20210410095550j:plain

実現方法は、EBPocket に ContentProvider を実装し、読書尚友からContentResolverを通して呼び出し、検索結果をPopupWindowで表示している。
ContentProviderとは、アプリのデータベースの内容を他のアプリに公開する機能であり、ActivityやServiceと同じように、Androidの最初期から提供されている基本的なコンポーネントである。Android1.6から2.3ぐらいまでは、Androidのクイック検索ボックスからアプリ内のデータベース検索ができたので、EBPocketもContentProviderを実装していた。ところがいつ頃からかクイック検索ボックスからアプリを検索する機能がなくなったため、EBPocketもContentProviderを非公開にしていた。今回、読書尚友から呼び出せるように修正し、再度公開した。

EBPocketはProでもFreeでもかまわない。ただしVer1.48以降が必要。読書尚友を以前からご使用の方は、設定でポップアップに設定する必要がある。

f:id:hishida:20210410102043j:plain

一つ苦労したのは、外字ビットマップや画像を、どうやって表示するかだった。これは画像をbase64でHTML中に直接埋め込むことで解決できた。

検索方法(前方一致や完全一致など)や、検索対象の辞書は、EBPocketの設定に従う。大量の辞書の串刺し検索ではどうしてもポップアップまでに時間がかかるので、青空文庫を読むなら、広辞苑ぐらいの中規模国語辞典+漢字辞書+百科事典ぐらいがちょうどいい。
これで辞書引きが非常に楽しくなった。