hishidaの開発blog

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

KWIC Finder 4 の最近の改良

ローカルファイルの検索ソフト KWIC Finder 4 に、ユーザからの要望に基づく改良をいくつか加えた。

  1. フレーズ検索を検索オプションに加えた
  2. エディタの切り替え

フレーズ検索

フレーズ検索とは、英単語の連語をそのまま検索する機能である。

(KWIC Finder 4も含め)大多数の検索システムでは、

personal computer

と検索すると、personal と computer を両方ふくんだ文書を検索する。これを、personal computer の出現通りに検索したい場合、フレーズ検索を使う。

KWIC Finder 4では

"personal computer"

のように前後をダブルクォーテーションで囲めばフレーズ検索ができる。だが、常時フレーズ検索を使いたい場合に、ダブルクォーテーションで囲むのは面倒ではある。

旧版のKWIC Finder 3.3 では、検索オプションに[フレーズ検索]があり、オプションを指定するとダブルクォーテーションで囲まなくてもフレーズ検索を実行できた。KWIC Finder 4にリニューアルする際に、不要と判断して省略したが、旧版のユーザから要望があったため、検索オプションの[フレーズ検索]を復活した。

エディタの切り替え

KWIC Finder は3.3までエディタにRichEditを使用していた。だがRichEditは機能が低いので、KWIC Fidner 4 ではフリーのエディタコンポーネントの Azuki Text Editorを使用している。Azuki は行番号やルーラーが表示できたり、プログラム言語の予約語をハイライト表示するなど便利な機能があるが、Azukiにすることで、旧版でできていたことの一部ができなくなった。

RichEditでは、クリップボードにコピーするときに属性もコピーされるので、検索一致個所のハイライトをそのままWordにペーストできた。ところがAzukiはテキストエディタなので、クリップボードにはテキストのみコピーされる。このためWordにペーストするとハイライトが消えてしまう。旧版のユーザから、「検索結果をもとに資料を作成するときにキーワードのハイライトをコピーしたい」という要望があった。

Azukiのソースに手を入れるのが困難なので、エディタ部品を動的にAzukiとRichEditで変更できるようにした。実装方法として、当初はFactoryMethodパターンを使えばできそうだと思っていたが、ドッキングウィンドウのクラスを継承しているためにうまくパターンにはまらず、結局 C# の dynamic 型を使えば動的にクラスを選択できることが分かった。

これでKWIC Finder 4の改良はいったんお休みにする。

次のお題

次はiOSのバージョンアップでいろいろ不都合が出始めているEBPocket for iOSに手を付けないといけない。いよいよUIWebViewからWkWebViewに切り替えないと2020年12月からAppStoreに提出ができなくなる。

あと課題として、青空文庫リーダーの読書尚友のiOS版の開発が残っている。ただiOS青空文庫リーダーも飽和状態なので、今から作っても遅いと思うが、理想の青空文庫リーダーをつくれば、多少は使ってくれる人もいるのではないか。