Wordbank

Wordbank の検索機能を強化してみた。デ辞蔵の API では検索ワードから始まる単語が複数返されるので、検索ワードが検索結果の第一候補と一致した場合、もしくは検索結果が 1 件のみの場合はそのまま意味を表示し、その他の場合は複数の検索結果からユーザが選択するようにした。また、検索ワードの語尾に * を指定することで、第一候補と一致した場合でも複数の検索結果を表示するようなインタフェースにした。

さらに、一度調べた検索結果はローカルの DB にキャッシュするようにして、次回以降は高速に検索できるようにした。無駄に検索クエリを投げないので Web サービスにも優しい。

コマンドは vi ライクにしている。:q! とか :wq とかも欲しいけど現状は未対応。

  • :q プログラムを終了
  • :w ローカル DB を保存

あとは単語ごとに検索回数を記録してソートして表示できるようにすれば、とりあえず欲しかった機能は満たされるかな。

ちょっと困っているのがコマンド入力インタフェースの実装。検索ワードを入力する状態と、検索結果から選択する状態があるため、状態を持ったクロージャがあれば何とかなるかと思っていたが、第一候補に一致した場合の検索結果の一発表示やコマンドの追加が重なって次第にカオスな感じになってきており、なんか違うなーという感じ。あるべき姿はこうではなく、インタフェースの改良やコマンドの追加に対して柔軟に対応できる拡張性のある何か。