技術メモ


開発目標

EBViewを作るにあたって、以下を目標としました。


GTK2対応

GTK2対応にあたって、以下のことを行いました。


その結果、コードの半分以上が書き直しになりました。また、GtkTextViewを使うことで、文字を選択した時に外字が反転できない、リンクなどの上 でマウス形状が変わるが、位置が微妙に違うなどの細かな問題が残っています。

Windows版の開発の動機

作者は翻訳を本業としているのですが、翻訳支援ツールを使う必要性から、Windowsで仕事をせざるを得ません。しかし、「EBViewの作者が、Windowsでは他の辞書検索ソフトを使うというのも、いかがなも のか」という思いが強まり、Windowsで無理やりコンパイルすることにしました。

開発環境としては Cygwin + GTK2 for Win32 を使っています。ただし、no-cygwin でコンパイルしてあるので、cygwin環境でなくても動作します。

尚、オリジナルのWindows版のGTK+では日本語入力に問題がありました。そこで、足永拓郎さんが開発された、imime (http://imime.sourceforge.jp/) を使わせて頂いています。

レンダリングに四苦八苦

EBView では、EBライブラリからの出力をいったん HTML に似た形式に落として、それをパースして画面に表示しています。

開発当初、レンダリングは他人に任せてしまおうといろいろやってみたのですが、GtkHTMLでは日本語が表示できず、やむを得ず自前で表示することにし ました。

その後、インターネット検索機能を追加するにあたり、「EBViewの中にブラウザが埋め込まれていたらカッコいいかも」ということで、Mozillaを 埋め込んでみました。しかし、動作が劇重であり、ポップアップでは使用に耐えないためあきらめました。

そして、Version 0.3.0ではGtkTextViewウィジェットを使うようにしました。これは、Pangoを使って自前レンダリングすると、極端に遅くなってしまった ためです。ですが、GtkTextViewを使ってもなお、それ以前の版と比較して表示が遅くなってしまいました。

設定ファイル


現バージョンの設定ファイルは XML 形式となっています。バージョンアップ時の互換性を狙ったものですが、XML 形式にするにあたり、XML パーサー (もどき) を自作しています。これは、依存するライブラリをできるだけ少なくしようという理由です。XML完全準拠ではないので、エディタなどでファイルを直接編集 すると、読めなくなるかも知れません。

設定ファイルの種類と内容は以下の通りです。

名前
内容
ありか
~/.ebview
/usr/[local/]
share/ebview
shortcut.xml
キーボードショートカットの定義
endinglist.xml
英語の語尾補正パターン
endinglist-ja.xml
日本語の語尾補正パターン ○※1
searchengines.xml
検索エンジンリスト
dictgroup.xml 辞書グループの定義 ×
history.xml
検索語、検索ディレクトリの履歴 ○※2 ×
dirlist.xml
ファイル検索で指定したディレクトリ ○※2 ×
dirgroup.xml
ディレクトリグループの定義

×
preference.xml 上記以外のユーザ毎の設定 ×

EBView をはじめて起動すると、標準のファイルがユーザ毎の ~/.ebview の中 (Windowsの場合は ebview.exeがあるディレクトリの下の .ebviewフォルダ) にコピーされ、それ以降はそのファイルが使われます。

※1 バージョン0.3.0より。
※2 バージョン0.3.1より。


語尾補正


非常にシンプルなアルゴリズムを使っています。基本的には、入力したキーワードが補正すべきパターンにマッチしたら、基本型に置き換えて再度検索するとい うものです。ただし、日本語の場合には、「設定する」などのように「〜する」とか「〜した」が多いので、パターンによる補正でもヒットしなかった場合に は、入力したキーワードの漢字の部分だけを使って再度検索するようにしています。


複合検索のタイトル


EBライブラリ3.3からは、複合検索のタイトルが取得できます。EBView でも、EBライブラリ3.3でコンパイルするとタイトルが出るようになります。それ以前のEBライブラリでコンパイルしても、「複合検索 1」のようにしかなりません。


外字キャッシュ


外字データはメモリ上にキャッシュしています。キャッシュはクリアされず、大きくなるいっぽうです。最近の環境ならば問題ない範囲とは思いますが、必要で あれば定期的に再起動などしてください。

なお、フォントのサイズに合わせるべく、外字もいちおうサイズを切り替えています。外字の拡大・縮小は行っていません。


リモート実行 (バージョン0.3.0では使用不可)


セレクションの自動検索は便利ではありますが、Emacs などを使っていると、
という欠点があります。そこで、Emacs の中やウィンドウマネージャーのショートカットから呼び出すべく作ったのがこの機能です。ただし、
ので、今のところ実験的な機能の域を出ていません。内部的なクライアントと本体の通信には UNIX ドメインソケットを使っています。

今後の予定


EBライブラリ 4.0 への対応

基本機能の拡張

Mozilla 埋め込みに再度アタック

こんな機能があったらといった要望があればご連絡ください。