
スマートフォンもインターネットも使わず、腕時計だけで3万7000語以上の英語辞書を引ける。Sparkadium氏がオープンソースのeInkスマートウォッチ「Watchy V2」向けに開発した辞書アプリ「Watchy Dictionary」をGitHubで公開した。
Watchy V2はESP32 PICO-D4を搭載した200×200ピクセルのeInkスマートウォッチで、4つのボタンだけで操作する。辞書の検索画面では6×5のアルファベットグリッドが表示され、ボタンで文字を選んでいくとリアルタイムで候補が絞り込まれる。長い定義は複数ページにまたがって表示され、起動時にはランダムな「今日の単語」も表示される。
最大の工夫はデータの圧縮方法だ。元データはGitHub上のWordset辞書(10万8000語、CC-BY-SAライセンス)から取得し、Googleの高頻度英単語2万語と照合して優先順位を付ける。さらに「cynic」「melancholy」「ephemeral」など頻度リストには載らないが教養として重要な約130語を手作業で追加した。
使用頻度の低い単語は同義語へのリダイレクトに変換する。例えば「ephemeral」は「passing」への参照(約15バイト)に置き換え、完全な定義(約100バイト)を持つ必要がない。この手法で、同じファイルサイズのまま検索可能な単語数を約2倍に増やした。最終的に1万5784件の完全な定義、1万387件の同義語リダイレクト、1万1285件の頻度順エントリーを含む3万7553語が2.6MBに収まった。
ESP32のデフォルトのパーティション設定ではアプリに3MB、SPIFFSに約900KBが割り当てられる。Sparkadium氏はアプリのコンパイルサイズが467KBしかないことに着目し、パーティションを反転させてアプリ1MB、SPIFFS 3MBに変更した。SPIFFS上の2.6MBのソート済みファイルに対してバイナリサーチで高速に単語を検索する。256バイトのバッファード読み取りで1回のSPIFFS読み取りに抑え、eInkの部分更新でグリッドの表示も高速化した。

