最終更新日: 2005/2/19
ここではUNIXで使えるさまざまな辞書ブラウザを紹介し、 そのインストール方法と使いかたについて解説しよう。
ここで紹介するほとんどの辞書ブラウザは EBライブラリを使って辞書を検索している。 また、ネットワーク越しに辞書を引けるものは すべてNDTPDと通信することを前提としている。 したがって、まずEBライブラリとNDTPDの インストールと設定のしかたを説明することにしよう。 EBライブラリとNDTPDはいずれも笠原基之さんの作品だ。
★追記(2004年2月3日)
EBNETD 1.0の公開に合わせて節全体の記述を変更し、
またEBNETDの項を追加した。
EBライブラリはEPWINGと電子ブックを検索するためのライブラリで、 現在あるほとんどのEPWINGと電子ブックに対応している。 これらの書籍がもつすべての種類のインデックスで検索できるほか、 外字データをはじめ、カラー図版、音声などさまざまな マルチメディアデータを取り出す手段も用意している。 EPWINGや電子ブックの圧縮書籍が読み出せるだけでなく、 独自の圧縮形式で圧縮した辞書を利用することも可能だ。
EBライブラリはバージョン3.xまではローカルな辞書しか扱えなかったが、 4.0以降では辞書ディレクトリのかわりに特別な記述をすることにより、 EBNETサーバ経由で遠隔ホストの辞書にアクセスできるようになった。 これにより、アプリケーション側できちんと対応すれば EBライブラリを直接呼び出すアプリケーションからでも ネットワーク越しの辞書検索が行える。 遠隔アクセスのための表記は以下のとおりだ。
ebnet://<ホスト名またはIPアドレス>:<ポート番号>/<書籍名>
<ポート番号>は標準設定のままなら省略できる。 また<書籍名>で指定される辞書が実際にどこにあるかは EBNETDが管理しており、EBNETDの設定ファイルに書かれている。 この設定についてはEBNETDの項で説明する。
EBライブラリの最新バージョンは4.1.3だ。
・EBライブラリ 4.1.3 [リンク]
インストールを行うにはパッケージを展開し、 configureとmakeを行ってからrootになってmake installすればよい。 以下では一般ユーザでの操作をプロンプト“$”で、 rootでの操作をプロンプト“#”で示す。
$ gzip -dc eb-4.1.3.tar.gz | tar xvf - $ cd eb-4.1.3 $ ./configure $ make # make install
EBライブラリは/usr/local/libにインストールされる。 動的リンクライブラリの検索パスにこれが含まれていない場合、 アプリケーションの実行時にエラーが起きることになる。 /etc/ld.so.confに次の1行があるかどうか確認しよう。 なければrootになってこの1行を末尾に追加する。
/usr/local/lib |
その後rootでldconfigを実行して検索パスを更新する。
# vi /etc/ld.so.conf
(/usr/local/libの行を追加)
# ldconfig
EBライブラリをインストールすると、 次のユーティリティも利用できるようになる。
ユーティリティ | 説明 |
ebappendix | 外字代替文字列、本文区切りコード定義ファイルのコンパイル |
ebfont | 外字データを画像として出力する |
ebinfo | 各種書籍情報を出力する |
ebrefile | カタログから書籍を削除する |
ebzip/ebunzip | 書籍の圧縮と伸長を行う |
ebzipinfo | 書籍の圧縮情報を出力する |
ebstopcode | 本文の区切りコードを調べる |
外字を画像として表示できないCUIベースの辞書ブラウザのため、 EBライブラリでは辞書ごとに外字の代わりに表示する文字列を指定できる。 それが外字代替文字列であり、Appendixというしくみを使う。 これを自分で作るためにはebfontで外字イメージを取り出し、 対応する文字列をテキストファイルに記述してから ebappendixでコンパイルすることになる。
既存のEPWINGや電子ブックに対応した30種類のAppendixが EBライブラリとともに配布されているが、データがいささか古く、 第3部で紹介する現行製品に対応するものは3種類しかない。 Appendixを利用したければ自助努力が必要だ。
ebstopcodeは本文とともに本文区切りコードの候補となりそうな タグを出力してくれる。 EPWING書籍というのはもともとフラットなテキストの羅列であり、 そのところどころにインデックスから飛んでくるだけという 単純な構造をしているため、 1項目だけを切り出す確実な方法は存在しない。 このため、EBライブラリで1項目の取り出しを行ったときに EPWING書籍によっては後続の項目までつながって取り出されることがある。 このような場合はebstopcodeで本文の区切りとして使えそうなコードを調べ、 それをAppendixに書き込んでおく必要がある。
EBライブラリからEBNETDを利用して遠隔ホスト上の辞書にアクセスする場合、 ebinfoを使うとどんな辞書があるかどうかを確認できる。 たとえばIPアドレス192.168.1.1のホストにある 辞書名を知りたければ次のようにすればよい。
$ ebinfo --book-list ebnet://192.168.1.1 名前 題名 kojien KOJIEN 5th Edition srd-fpw RandomHouse Dictionary mypaedia MyPaedia $ |
この例であれば、たとえばランダムハウス英語辞典にアクセスしたければ EBライブラリに対して「ebnet://192.168.1.1/srd-fpw」を渡すことになる。
★追記(2004年11月14日)
EBライブラリ4.1.1の公開(2004年10月24日)にあわせて変更。
3.x系列は廃止された。説明は変更していない。
★追記(2005年2月19日)
EBライブラリ4.1.3の公開(2004年12月5日)にあわせて変更。
説明は変更していない。
NDTPDはネットワーク辞書転送プロトコル(NDTP)を話す辞書サーバで、 EBライブラリを用いて辞書を読み、クライアントへのサービスを行う。 NDTPクライアントはNDTPDと接続することで辞書検索が可能になる。
NDTPはもともと三田吉郎さんのdserverが実装していたプロトコルで、 NDTPDでは外字ビットマップ転送などの拡張を行っている。 なお、NDTPDはスタンドアロンのデーモンとしても動くし、 inetdやxinetdの子プロセスとしても動く。
NDTPDはこれまで単体パッケージで配布されていたが、 EBNETD 1.0以降はebHTTPDとともにEBNETDのパッケージに含めて配布されている。 インストールと設定については直後のEBNETDの項で解説する。
EBNETDはEBライブラリにネットワーク経由での ファイルアクセスを提供するサーバだ。 EBライブラリは通常はローカルに置かれた辞書ファイルを シークしたり読んだりして検索やデータの読み出しを行うが、 EBNETサーバと通信することにより、ローカルファイルと まったく同じ手順で遠隔ホストの辞書ファイルにアクセス可能になる。
なお、EBライブラリをリンクしたアプリケーションが EBNETD経由で遠隔ホストの辞書を検索するためには、 EBライブラリが認識する「ebnet://〜」という識別子を アプリケーション経由でEBライブラリに渡さなければならない。 現状ではこれが可能なアプリケーションはほとんどなく、 今後の対応を待つことになるだろう。
EBNETDの登場により、従来は単体パッケージで配布されていた NDTPDや後述するebHTTPDはEBNETDとともに配布されるようになった。 EBNETDの配布パッケージをインストールすると これら3種類のサーバが同時にインストールされ、 設定ファイルebnetd.confもこれらすべてから共通して参照される。 ここでは最新版であるEBNETD 1.0のインストールと設定について説明しよう。
・EBNETD 1.0 (ebnetd, ndtpd, ebhttpd) [リンク]
EBNETDをインストールする前にEBライブラリをインストールしておく。 あとはパッケージを展開し、configureしてからmakeする。 次にrootになってmake installする。 これでebnetd、ndtpd、ebhttpdのすべてがインストールされる。
$ gzip -dc ebnetd-1.0.tar.gz | tar xvf - $ cd ebnetd-1.0 $ ./configure $ make # make install
以降はすべてrootでの作業になる。
EBNETDに含まれるebnetd、ndtpd、ebhttpdのプロセスは 共通する専用のアカウントで運用管理すると都合がよい。 このためユーザndtpuserとグループndtpgrpを追加し、 その後EBNETDの作業ディレクトリの所有者をこのユーザにする。
# groupadd ndtpgrp (OSによって異なる) # useradd -g ndtpgrp ndtpuser (OSによって異なる) # chown ndtpuser.ndtpgrp /usr/local/var/ebnetd # chmod 755 /usr/local/var/ebnetd
EBNETD、NDTPD、ebHTTPDが提供するサービスebnet、ndtp、httpを登録する。 /etc/servicesに次の3行を(なければ)追加する。
http 80/tcp ndtp 2010/tcp ebnet 22010/tcp |
EBNETDの設定ファイルのサンプルが用意されているので、 これをコピーして編集する。
# cd /usr/local/etc # cp ebnetd.conf.sample ebnetd.conf # vi ebnetd.conf
まず、全体として同時接続可能なクライアント数と 接続を許可するホストを設定する。 同時接続数はebnetd、ndtpd、ebhttpdの合計でカウントされる。 個人で使うなら次のようにしておけばよいだろう。
maxclients 1 (0で無制限) hosts 127.0.0.1 (localhostからのみ接続可) |
次に、利用する辞書ごとのエントリをbegin book〜endに書く。 辞書が複数あるときはbegin book〜endを必要なだけ並べる。 pathに指定できるのは絶対パスだけだ。 (つまりNDTPDやebHTTPDからさらに別ホストの EBNETサーバにはアクセスできないことになる。) maxclientsとhostsはそれぞれの辞書についても設定する。 Appendixを使わないならappendix-pathはコメントアウトしておく。
begin book name kojien (A-Z, 0-9, -, _で14文字まで) title KOJIEN 5th Edition (80文字まで) path /dic/kojien (辞書カタログのパスを指定) maxclients 1 hosts 127.0.0.1 appendix-path (Appendixカタログのパスを指定) end |
編集が終わったらebncheckを実行する。 設定ファイルに誤りがあればエラーが表示される。
# /usr/local/sbin/ebncheck
ローカルホストで参照する辞書があれば、 pathで指定したディレクトリ以下に辞書データをコピーする。
# (CD-ROMのマウント操作) # mkdir /dic/kojien # cp -rp /mnt/cdrom/* /dic/kojien # (CD-ROMのアンマウント操作)
EBNETDはsyslogを使ってログ出力を行うので、その設定を行う。 まず/etc/syslog.confに次の1行を追加する。
local0.info /usr/local/var/ebnetd/log/ebnetd.log |
次に空のログファイルを作る。
# mkdir /usr/local/var/ebnetd/log # touch /usr/local/var/ebnetd/log/ebnetd.log # chmod 644 /usr/local/var/ebnetd/log/ebnetd.log
さらに、syslogdにhangupシグナルを送ってsyslog.confを読み直させる。 psコマンドでsyslogdのpid(プロセスID)を調べ、 そのpidに対してkill -HUPを実行する。
(BSD系の場合) # ps auxww | grep syslogd root 3230 0.0 0.1 1448 548 ? S 21:33 0:00 syslogd -m 0 root 4004 0.0 0.1 4576 664 pts/1 S 21:41 0:00 grep syslogd # kill -HUP 3230 (syslogdのpidは3230) (System V系の場合) # ps -ef | grep syslogd root 3230 1 0 21:33 ? 00:00:00 syslogd -m 0 root 4006 3976 0 21:41 pts/1 00:00:00 grep syslogd # kill -HUP 3230 (syslogdのpidは3230) |
以下の(7)〜(9)ではEBNETD、NDTPD、ebHTTPDそれぞれの 起動および終了の方法を説明する。 同じホストで3種類すべてのサーバを起動しておけば、 3通りの異なる方法でクライアントにサービスを提供できることになる。 ユーザの環境で必要なサーバだけを選んで起動しておこう。
スタンドアロンでEBNETDを起動するには、単にebnetdを実行すればい。 inetdやxinetdの配下でリクエストごとにebnetdを起動する方法もある。 これについてはドキュメントを参照されたい。
# /usr/local/sbin/ebnetd
次にEBNETDが動いているかどうかtelnetで確認しよう。 まずサービスebnetを指定してtelnetを実行する。 次に「BOOKLIST」を入力して辞書情報を表示し、「QUIT」で終了する。
# telnet localhost ebnet Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. BOOKLIST !OK; book names and an empty line follows kojien KOJIEN 5th Edition QUIT Connection closed by foreign host. |
これでEBNETDが使えるようになった。 EBNETDを終了させるには次のコマンドを実行すればよい。
# /usr/local/sbin/ebncontrol terminate
ndtpdを実行し、スタンドアロンでNDTPDを起動する。
# /usr/local/sbin/ndtpd
NDTPDが動いているかどうか確認するにはtelnetを使う。 サービスndtpで接続し、「t」で辞書情報を表示してから「Q」で終了する。
# telnet localhost ndtp Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. t 1 広辞苑第五版 kojien/kojien 0 1 900 2 付属資料 kojien/furoku 0 1 900 3 書籍選択 kojien/screen 0 1 900 $* Q Connection closed by foreign host. |
NDTPDを終了させるには次のコマンドを実行する。
# /usr/local/sbin/ndtpcontrol terminate
ebhttpdを実行し、スタンドアロンでebHTTPDを起動する。
# /usr/local/sbin/ebhttpd
ebhttpdが動いているかどうか確認するにはtelnetを使う。 サービスhttpで接続し、 「GET / HTTP/1.0」および空行の2行のリクエストを入力する。
# telnet localhost http Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 200 Ok Date: Tue, 03 Feb 2004 13:47:32 GMT Server: ebHTTPD 1.0 Content-Type: text/html; charset="euc-jp" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>書籍一覧</title> </head> <body> <h1>書籍一覧</h1> <ul> <li><a href="/kojien/">KOJIEN 5th Edition</a> </ul> <hr> <address>Powered by ebHTTPD</address> </body> </html> Connection closed by foreign host. |
ebHTTPDを終了させるには次のコマンドを実行する。
# /usr/local/sbin/ebhtcontrol terminate
★追記(2004年2月11日)
syslogdへのkillシグナル送信の記述を少し詳しく書き直した。
これ以降ではさまざまなタイプの辞書ブラウザについて解説するが、 まずはGUIベースの辞書ブラウザから紹介することにしよう。 取り上げるのはEBViewとBookViewだ。 またポップアップ検索を行うxyakuとxpopdicについても取り上げる。
★追記(2004年2月11日)
Xセレクションのポップアップ検索を行うxyakuの項目を追加した。
またその他の項目にxpopdicの記述を追加した。
★追記(2004年2月14日)
Xセレクションのポップアップ検索を行うxpopdicの項目を追加した。
須藤賢一さんのEBViewはスタンドアロンで動くGTK+ベースの辞書ブラウザだ。 EBライブラリ3.3.2以上、GTK+2.2.x以上に対応している。
EBViewは控えめなバージョン番号とは裏腹に、多機能で完成度が高い。 辞書がもつすべてのインデックスを利用できるだけでなく、 全文検索や串刺し検索、おまかせ検索など豊富な検索機能がある。 Xセレクションのポップアップ検索を使えば、 マウスでテキストを選択するだけで小さなウィンドウが開き、 あらかじめ指定した辞書で検索した結果が表示される。 操作画面や設定画面のインタフェースはかなり洗練されており、 キーボードショートカットがきちんと用意されている点もポイントが高い。
・EBView 0.3.6 [リンク]
EBViewのインストール手順を示しておこう。
$ gzip -dc ebview-0.3.6.tar.gz | tar xvf - $ cd ebview-0.3.6 $ ./configure $ make # make install
初期設定はとくに必要ない。 辞書は設定画面からサーチしてグループ単位で登録する。 辞書グループを選ぶと辞書名ボタンが表示され、 複数のボタンを押し込んでおけば串刺し検索になる。 図は「百科事典」グループから「うみう」を検索し、 マイペディアの「ウミウシ」の項目を表示したところだ。 カラー図版もインライン表示されている。
メニューから[ツール]→[セレクションの検索]で 「ポップアップで検索」にチェックマークを付けておくと、 マウスでテキストを選択するだけで辞書ウィンドウがポップアップ表示される。 通常の設定なら単語をダブルクリックするだけでよい。 Webブラウザで英文を読むときなどにとても便利だ。
★追記(2004年1月2日)
2003年12月27日にEBView 0.3.2が公開されていたのに合わせて変更。
説明と図版は変更していない。
★追記(2004年2月2日)
2004年1月15日にEBView 0.3.3が公開されていたのに合わせて変更。
説明にXセレクションの自動検索とポップアップ表示を追加した。
★追記(2004年5月8日)
2004年2月22日にEBView 0.3.5が公開されていたのに合わせて変更。
0.3.4以降ではフォントや行間を拡大/縮小したり
辞書名ボタンに色を付けたりできるようになった。
またポップアップ検索は[ツール]メニューから指定するよう変更された。
ほかにも細かい修正が数多く行われている。
★追記(2004年11月14日)
2004年8月7日にEBView 0.3.6が公開されていたのに合わせて変更。
GTK+ 2.4.xでコンパイル可能になった。
BookViewはTcl/Tkで書かれたNDTPクライアントの辞書ブラウザであり、 EBライブラリやNDTPDの作者である笠原基之さんによって書かれた。 実行にはTcl/Tk 8.0jpまたは8.3以降が必要だ。
BookViewでは1つの辞書、辞書グループ、すべての辞書に対して検索が可能だ。 検索方式としては前方一致、後方一致、完全一致、条件検索が選べる。 条件検索では単語欄にキーワードをセミコロン(;)で区切って並べる。 また[メニュー]ボタンはメニューを検索し、 [選択検索]ボタンは選択されているXセレクションの内容を検索する。 NDTPを利用するためマルチメディアデータには対応していない。
・BookView 3.2 [リンク]
インストール手順は次のとおりだ。
$ gzip -dc bookview-3.2.tar.gz $ cd bookview-3.2 $ ./configure $ make # make install
BookViewを実行するには、あらかじめ[ファイル]→[設定]で NDTPサーバを選択しておく必要がある。サーバは最大3つ設定でき、 そのうち[サーバ]ボタンで選んだサーバが検索に使われる。
BookViewで日本大百科全書を検索したようすを図に示そう。 BookViewはTcl/Tk 8.3以降でも動くが、 メニューのフォントがきれいに表示されない。 フォントリソースをいろいろ設定してみたが改善できなかったため、 ここではあきらめてTcl/Tk 8.0jpに入れかえている。
xyakuはINOUE Seiichiroさんによって書かれたポップアップ型の辞書ブラウザで、 Xセレクションのキー押下による検索または自動検索が可能だ。 もともとはモナシュ大学のJim BreenさんによるEDICT和英辞書の フロントエンドだったが、その後のバージョンアップにより 現在ではEBライブラリやDICTサーバ経由の検索が行えるようになっている。 EBライブラリ経由での検索にはRubyおよびRubyEBが必要だ。
・xyaku 1.4.0
[リンク]
・RubyEB 2.6
[リンク]
・EDICT和英辞書(The EDICT Project Home Page)
[リンク]
EBライブラリとRubyはすでに使える状態にあるものとしよう。 インストールはRubyEB、xyaku、EDICT和英辞書の順に行う。 まずRubyEBをインストールする。
$ gzip -dc rubyeb-2.6.tar.gz | tar xvf - $ cd rubyeb-2.6 $ ruby extconf.rb $ make # make install
次にxyakuをインストールする。 このとき初期設定ファイルもホームディレクトリにコピーしておく。
$ gzip -dc xyaku-1.4.0.tar.gz | tar xvf - $ cd xyaku-1.4.0 $ ./configure $ make $ cp xyakurc ~/.xyakurc # make install
さらにEDICT和英辞書を/usr/local/share/の下にインストールする。
# gzip -dc edict.gz $gt; /usr/local/share/edict
これでインストールは終わったので、 次は初期設定ファイルの操作キー設定を見てみよう。
$ vi ~/.xyakurc
インストール直後の.xyakurcのキー定義部は次のようになっている。
# # Format of addin-command: # ... Key F1 C true 0 0 0 edict.sh Key F2 C true 0 0 0 searcheb.rb -d /mnt/cdrom Key F3 C true 64 6144 0 dict.sh Key F4 C false 0 0 0 websearch.sh -e yahoo Key F1 S false 50 3072 640 help.sh Key F10 C false 0 0 0 clearcache.sh # # Format of automode's addin-command: # ... AutoKey F1 M true 0 0 0 1500 edict.sh AutoKey F2 M true 0 0 0 1500 searcheb.rb -d /mnt/cdrom AutoKey F3 M true 64 6144 0 2000 dict.sh |
Keyで始まる定義はキーの押下による検索、 AutoKeyで始まる定義は自動検索のためのものだ。 カラム3のC、S、MはそれぞれControl、Shift、Meta(Alt)を表しており、 たとえばCtrl+F1でEDICT辞書からのキー押下による検索、 Alt+F2でEBライブラリ経由での自動検索が行われることがわかる。 初期状態ではEBライブラリ経由での検索に/mnt/cdrom以下の 辞書を使うことになっているので、自分の使いたい辞書が 置いてあるディレクトリに書き換えておこう。
xyakuを使うにはバックグラウンドで起動するだけでよい。 同様に、終了するときはそのプロセスをkillする。
$ xyaku & (xyakuを起動する) $ kill %xyaku (xyakuを終了する)
xyakuはキーイベントから呼び出されることによって検索を行うが、 そのキーが他のアプリケーションですでに使われているときは 起動時に次のメッセージが表示され、エラーで終了する。
$ xyaku & [1] 4040 $ BadAccess (attempt to access private resource denied) Another process has already grabbed this keycode. [1]+ Exit 1 xyaku $ |
このときは上記の初期設定ファイルにあるキー定義を 適当に書き換えてやる必要がある。 Red Hat Linux 9のGNOME環境ではAlt+Fnがすでに使われており、 標準設定では上記のエラーが発生するため、 筆者の環境ではAutoKeyの割り当てをすべてShift+Fnに変更している。
何もメッセージが出なければxyakuは正常に起動されている。 以下はWebブラウザで単語をダブルクリックして選択し、 Ctrl+F2を押してxyakuのポップアップ画面を表示させたところだ。
ここでは辞書としてはリーダーズ+プラスを使っている。 xyakuは外字に対応していないため、 外字があるところではかわりに<?>が表示されている。 また、語尾の自動補正機能も用意されていないため、 名詞の複数形や動詞の活用形などはうまく検索できない。
選択した単語に対してAutoKeyで定義されたキーを押すと自動検索が有効になる。 ポップアップウィンドウは表示されたままになり、 その後単語を選択するたびに検索結果が更新される。 自動検索を行っている画面を示しておこう。 自動検索が行われているかどうかはウィンドウに枠があることでわかる。
★追記(2004年5月8日)
RubyEBのバージョンが2.5aに上がっていたのに合わせて変更。
★追記(2004年7月24日)
RubyEBのバージョンが2.6に上がっていたのに合わせて変更。
今泉英明さんのxpopdicはXセレクションのポップアップ検索を行う 英和専用のNDTPクライアントだ。 外字の表示に対応しており、またポップアップ画面上から単語を検索したり 参照リンクをたどったりできるなど、 xyakuよりも本格的な辞書ブラウザを目指しているようだ。
・xpopdic 0.1.3a [リンク]
xpopdicを動かすにはX Window Systemさえ動いていればよく、 インストールも簡単だ。
$ gzip -dc xpopdic-0.1.3a.tar.gz | tar xvf - $ cd xpopdic-0.1.3a $ ./configure $ make # make install
xpopdicを使うには、 -Dオプションで辞書リストを指定してバックグラウンドで起動する。 -l(小文字のエル)オプションを指定すると、 検索結果の項目リストを表示せずに先頭の結果の項目本文を表示する。 たとえば次はランダムハウス英語辞典を使う例だ。
$ xyaku -l -D srd-fpw/srd-fpw@localhost &
辞書リストは空白を開けずに辞書指定をカンマで区切って並べたもので、 それぞれの辞書指定は次の形をしている。
all@NDTPサーバ (そのNDTPサーバにあるすべての辞書)
辞書名/辞書ディレクトリ@NDTPサーバ
辞書番号@NDTPサーバ
2番めの形式ではNDTPDの動作確認をtelnetのtコマンドで行ったときに 表示されるものを指定すればよい。 3番めの形式ではそのときの行番号を辞書番号として指定する。
xpopdicでは-Dや-l以外にも数多くのコマンド行オプションを用意している。 その一部を挙げておこう。 このほかにもさまざまな要素についてフォントや色が指定できる。 これらの多くはXのリソースとして指定することも可能だ。
オプション | 説明 |
-D 辞書指定[,...] | 辞書リストを指定する |
-l | 項目リストを表示せず先頭項目の本文を直接表示する |
-p | タイトルとなる単語を表示する |
-q | 辞書名やエントリ番号などの情報を表示しない |
-z | ウィンドウに影をつける |
-x 数値 | ウィンドウを固定表示するx座標 |
-y 数値 | ウィンドウを固定表示するy座標 |
-w 数値 | ウィンドウの幅 |
-h 数値 | ウィンドウの高さ |
-b 数値 | ウィンドウの境界線の幅 |
xpopdicを終了するときはそのプロセスをkillする。
$ kill %xpopdic
それではxpopdicを起動して、何かのウィンドウで単語を選択してみよう。 少したつとカーソル位置にポップアップウィンドウが表示され、 検索結果の項目リストが表示される。 項目をどれかクリックすると本文が表示され、 右上の矢印ボタンで前後の項目に移動できるようになる。 -lオプションを指定した場合は項目リストは表示されず、 先頭の検索結果の本文が直接表示される。 ウィンドウ内でマウスを上下にドラッグすると、 ウィンドウは逆方向にスクロールする。 ウィンドウ上で小文字のqをタイプするか、 あるいは右上のクローズボタンを押すとウィンドウはクローズする。
ところで、xpopdicのウィンドウはマウスカーソルと連動して移動したりはせず、 マウスでつかんで移動することもサイズを変えることもできない。 作者の今泉さんはウィンドウの位置やサイズを(オプションで) 固定して使うことを念頭に置いているようだが、 起動後にマウスで操作できたほうが便利だと思うユーザは多いだろう。 今泉さんもいちおう検討はされているようだ。 また、ポップアップウィンドウでのさまざまな操作は キーボードからも行えるようになっているようなのだが、 筆者の環境ではウィンドウにキーイベントを渡す方法が不明で 実際にはキー操作が行えていない。
xpopdicの設計はなかなかよくできているという印象だが、 実際の操作はまだ練り足りないところがある。 もっと多くのユーザに揉まれて改善されてほしい。
鈴木光宏さんのKEBookはKDEで動くシンプルな辞書ブラウザだ。 ここしばらくは開発が止まっているらしい。 根元隆さんのEbDicはマルチメディアに対応し、 インクリメンタルサーチが可能なGTKベースの辞書ブラウザだ。 Kondara MNU/Linux以外ではコンパイルに苦労するようで、 筆者はRed Hat Linux 9で試してみたものの動かせなかった。
・KEBook 0.3.5
[リンク]
・EbDic 0.33.14
[リンク]
★追記(2005年2月19日)
EbDicは現在配布ページがトップページからリンクされていない。
上記リンクはパッケージのあるディレクトリを指している。
コマンドラインから利用できる辞書検索インタフェースとしては、 dserverに付属していたkenjiroやR.田中二郎さんのcdrom2など、 さまざまなものが使われてきた。 ここではeblook、ndtpc、csrdを紹介しよう。
★追記(2004年2月11日)
ndtpcの項目を追加した。
eblookはEBライブラリを呼び出す対話型の検索インタフェースだ。 西田圭介さんのオリジナル版は開発が中断しているため、 電子辞書オープンラボの有志が改良を行っている。
・eblook 1.3 (旧版, 西田圭介さん)
[リンク]
・eblook 1.6.1 (公式版, 電子辞書オープンラボ)
[リンク]
★追記(2004年1月18日)
バージョン1.6の正式公開に向けてリリース候補版がダウンロード可能になった。
以下の解説は1.5.1から変更されていない。
★追記(2004年2月4日)
1.6rc2に合わせて解説を変更した。
★追記(2004年2月14日)
1.6正式版の公開に合わせて解説を変更した。
★追記(2004年2月14日)
1.6正式版の公開に合わせて解説を変更した。
★追記(2004年11月14日)
2004年6月19日に1.6.1が公開されていたのに合わせて変更。
インストールの手順はいつもどおりだ。
$ gzip -dc eblook-1.6.tar.gz | tar xvf - $ cd eblook-1.6 $ ./configure $ make # make install
eblookを実行するにあたって、とくに初期設定は必要ない。 辞書パスとAppendixパス(省略可能)を指定してeblookを起動すると プロンプトが表示されるので、操作コマンドを入力するだけだ。
$ eblook /dic/chujiten /usr/local/share/eb/appendix/chujiten-2.3 eblook> |
おもな操作コマンドには次のものがある。 通常はまずselectで書籍を選択してからsearchで検索し、 次に検索結果の一覧から番号を選んでcontentで本文を表示することになる。
コマンド | 説明 |
list | 書籍一覧を表示する |
select 番号 | 書籍を選択する |
search 対象 | 検索する |
content 番号 | 本文を表示する |
quit | eblookを終了する |
help | ヘルプを表示する |
searchの引数には検索対象を指定するが、 指定のしかたによって検索方式が決まる。
検索の例 | 使われる検索方式 |
foo | 完全一致検索 |
bar* | 前方一致検索 |
*baz | 後方一致検索 |
=god=bless | 条件検索 |
:季節:春:*:*: | 複合検索 |
ここではeblookで古い電子ブック版の研究社新英和中辞典を 検索する例を示しておこう。
$ eblook /dic/chujiten /usr/local/share/eb/appendix/chujiten-2.3 eblook> info disc type: EB/EBG/EBXA character code: JIS X 0208 the number of dictionries: 2 eblook> list 1. eiwa 研究社 新英和中辞典 2. waei 研究社 新和英中辞典 eblook> select 1 eblook> subinfo title: 研究社 新英和中辞典 directory: eiwa search methods: word endword exactword keyword menu font sizes: 16 eblook> search gn* 1. 5095:6ac gnarl 2. 5095:75a gnarled 3. 5095:800 gnash 4. 5096:fc gnat 5. 5096:1f2 gnaw 6. 5097:220 gnawing 7. 5097:220 〜ly〈gnawing〉 8. 5097:304 gneiss 9. 5097:368 gnome1 10. 5097:4ea gnome2 11. 5097:574 gnomic 12. 5097:60e GNP, G.N.P. 13. 5097:69e gnu eblook> content 9 gnome1 [n'oum] [名]1 [C]a (地中の宝を守ると信じられた)地の精, 小鬼. b (庭などに飾る)地の 精の像. 2 [the 〜s]《口語》国際的金融[銀行]業者: the 〜s of Zurich チュー リッヒの小鬼ども《スイスの銀行を根拠にする大銀行家たち》. eblook> content 13 gnu [n(j)'u: | nj'u:] [名][C]([複]〜, 〜s)【動】ヌー, ウシレイヨウ《南アフリカ産》. eblook> select 2 eblook> subinfo title: 研究社 新和英中辞典 directory: waei search methods: word exactword menu font sizes: 16 eblook> search じしょ* 1. f0e:5a4 じしょ1 地所 2. f0e:728 じしょ2 自署 3. f0e:7b8 じしょ3 辞書 4. f12:a8 じしょう1 自称 5. f12:374 じしょう2 事象 6. f14:25a じしょうぎ 持将棋 7. f15:142 じしょく 辞職 eblook> content 6 じしょうぎ 持将棋 a drawn game of shogi. eblook> quit $ |
ndtpcはSakane Shoichiさんによって開発された コマンドベースのNDTPクライアントであり、すべてPerlで書かれている。 入手先は以下のサイトだ。
・辞書をPCに突っ込む[NDTPを使ってみる] [リンク]
リンク先のftpサイトから最新版のndtpc-20021202a.tar.gzをダウンロードし、 以下のようにインストールする。 環境に合わせたスクリプトの変更はconfigureで行われるため、 make単体の実行は不要だ。
$ gzip -dc ndtpc-20021202a.tar.gz | tar xvf - $ cd ndtpc-20021202a $ ./configure # make install
これでndtpcのインストールは終了だが、 Perlのバージョンによってはndtpcを実行すると次のエラーが起きることがある。
$ ndtpc Missing braces on \N{} at /usr/local/lib/ndtpc/ndtp.pl line 238, within pattern BEGIN not safe after errors--compilation aborted at /usr/local/ lib/ndtpc/ndtp.pl line 279. Compilation failed in require at /usr/local/bin/ndtpc line 42. $ |
このときは/usr/local/lib/ndtpc/ndtp.plの238行めを 次のように修正しておけばよさそうだ。
} elsif ($msg =~ /^\$\N/) { (修正前) ↓ } elsif ($msg =~ /^\$N/) { (修正後) |
ndtpcに-Bオプションをつけて実行すると、利用できる辞書の一覧が表示される。
$ ndtpc -B Number Name 1 広辞苑 第四版 電子ブック版 2 研究社 新英和中辞典 3 研究社 新和英中辞典 4 広辞苑第五版 5 付属資料 6 書籍選択 7 新グローバル英和・ニューセンチュリー和英 8 ランダムハウス英語辞典 9 マイペディア $ |
検索を行うときは-bオプションで辞書番号を指定する。 文字ベースの検索ソフトなので、 Appendixが用意されていなければ外字は“#”で始まる16進4桁のコードで表示される。
$ ndtpc -b 4 麦秋 DICT: 広辞苑第五版 <42e6:434>麦秋 むぎ‐の‐あき【麦の秋】 「麦秋(ばくしゆう)」の訓読。むぎあき。#a23b#b847夏#a23c。正暦四年帯刀陣歌 合「送るてふ蝉の初声聞くよりも今はと―を知りぬる」 <42e2:288>麦秋 むぎ‐あき【麦秋】 (「麦秋(ばくしゆう)」の訓読) 麦の収穫時、すなわち初夏の頃。また、陰暦4月の 称。麦の秋。#a23b#b847夏#a23c。蘿葉集「―や風には告げず臼の音」(也有) <36f7:512>麦秋 ばく‐しゅう【麦秋】(‥シウ) #b536麦を取り入れる季節。初夏の頃。むぎあき。むぎのあき。#a23b#b847夏#a23c #b537陰暦4月の異称。 $ $ ndtpc -b 8 boilerplate DICT: ランダムハウス英語辞典 <100e:1e6>boilerplate b#a33ciler#a263pl#a32ate ━n. 【1】ボイラー板:ボイラーや船体などに用いる圧延鋼板. 【2】#a260ジャーナリズム#a261 (1)(特に週刊新聞が用いる鉛版にされた)共通[配給]記事. (2)陳腐で使い古された文章. 【3】(契約書・保証書などの)決まり文句,共通条項. 【4】#a121話#a122ボイラープレート,(ワープロ作成の通信文などの)反復使用語句. 【5】#a260登山#a261つるつるの岩壁;凍った雪の層. 【6】#a260インターネット#a261(通信にしばしば使われる)常用文. (また b#a33ciler pl#a32ate) [1860] $ |
csrdはWindows版の小学館ランダムハウス英語辞典を UNIX上で利用するために筆者が書いた検索インタフェースだ。 独自フォーマットの辞書データをそのまま検索し、 前方一致、後方一致、完全一致検索のほか、 ワイルドカード検索、成句・用例検索が利用できる。 音声や画像には対応していない。
・csrd 1.0 [リンク]
csrdはconfigureスクリプトを用意していないので、 インストールは手作業で行う必要がある。 csrd本体のほかに、書式ファイルcsrd.fmtと 外字代替表記ファイルcsrd.gaiが必要だ。
$ gzip -dc csrd-1.0.tar.gz | tar xvf - $ cd csrd-1.0 $ make -f makefile.unx # cp csrd /usr/local/bin # cp csrd.fmt /usr/local/etc # cp csrd.gai /usr/local/etc
次に環境変数CSRDに辞書ディレクトリ、書式ファイルと 外字代替表記ファイルのディレクトリを指定する。 CD-ROMに辞書がある場合は次のようになる。
% setenv CSRD '-d /mnt/cdrom/data -f /usr/local/etc/csrd.fmt -g /usr/local/etc/csrd.gai' (cshの場合) $ export CSRD='-d /mnt/cdrom/data -f /usr/local/etc/csrd.fmt -g /usr/local/etc/csrd.gai' (sh、bashの場合)
辞書をハードディスクに置くときは、CD-ROMのDATAディレクトリにある 以下のファイルを適当なディレクトリにコピーすればよい。 環境変数CSRDの-dオプションにもそのディレクトリを指定しておく。
en.dat, enf.idx, enr.idx, id.dat, id.idx, main.txt, miden.txt, midtr.txt, tr.dat, trf.idx, trr.idx
★追記(2004年2月4日)
ランダムハウス英語辞典Windows XP対応版では上記のファイルが
Data1.cabというアーカイブファイルにまとめられており、
ハードディスクにインストールする際に展開されるようになっている。
UNIX上でこれらのファイルを取り出すにはcabextractを使えばよい。
具体的な手順については第3部
FreePWINGを使ってみよう
を参照していただきたい。
これで準備は完了だ。 検索する単語を引数に指定してcsrdを実行すると 結果が標準出力に出力される。 以下のような検索が可能だ。
検索の例 | 説明 |
help | 単語helpを検索 |
gnu* | gnuで始まる単語を検索 |
*tion | tionで終わる単語を検索 |
[a-c]?? | a〜cで始まる3文字の単語を検索 |
-i god bless | godとblessを含む成句・用例を検索 |
日本 | 訳語に日本を含む単語を検索 |
csrdで英和検索と和英検索を行うようすを示しておく。
$ csrd \*gnu gnu bri´ndled gnu´ whi´te-tailed gnu´ $ csrd gnu □ gnu [nju´:,nu:] ■n. (pl. gnus,《特に集合的》gnu) ヌー,ウシカモシカ:アフリカ東・南部産ウシ科ヌー属 Connochaetes の大形動物の 総称;ふつうオグロヌー(brindled gnu) C.taurinus を指し,近縁種のオジロヌー (white-tailed gnu) C.gnou をも指す;wildebeest ともいう. [1777.<コイコイ(Khoikhoi), 最初の記録では t'gnu だが,おそらく -nu^「黒い」 と同一(もともとヌーの黒い体色を指して名づけられたものだから)] $ csrd 蝸牛 □ coch・le・a [k#a´kli#e,ko´uk-|k#O´k-] ■n. (pl. -le・ae[-lii`:,-lia`i],coch・le・as) 〔解剖〕(内耳の)蝸牛(かぎゅう), 蝸牛殻.→EAR (図) co´ch・le・ar ■adj. $ |
EmacsユーザにとってはEmacsの中こそが世界であり、 その中でやりたいことは何でもできなければならない。 EmacsからEPWINGや電子ブックの辞書を検索するツールとして、 ここではlookupを紹介する。
lookupはEmacs lispで書かれた検索インタフェースで、 検索エージェントを切り替えることによって NDTPクライアントとしてもスタンドアロンとしても動く。 オリジナルの作者は西田圭介さんだが、 現在は電子辞書オープンラボの有志が開発を引き継いでいる。 lookup 1.4とeblook 1.6を組み合わせれば画像のインライン表示も可能だ。
・lookup 1.4 [リンク]
★追記(2004年1月18日)
バージョン1.4が正式公開に向けて開発版からリリース候補版となった。
最近のXEmacsでインライン画像が表示可能になっているもよう。
以下の解説は1.4develから変更されていない。
★追記(2004年2月4日)
1.4rc4に合わせて解説を変更した。
★追記(2004年2月14日)
1.4正式版の公開に合わせて解説を変更した。
★追記(2004年7月24日)
西田圭介さんのlookupオープンラボ廃止に伴い解説を変更した。
lookupを使うには、まずパッケージをインストールする。 configureではlookupを使用するEmacsを指定しなければならない。 標準ではEmacsから使うことが想定されているので、 XEmacsから使う場合は「--with-emacs=xemacs」を指定する。 これを行わないとインライン画像表示で文字化けが起こる。
$ gzip -dc lookup-1.4.tar.gz | tar xvf - $ cd lookup-1.4 $ ./configure (Emacsの場合) $ ./configure --with-emacs=xemacs (XEmacsの場合) $ make # make install
次にlookupに関する設定を.emacsと.lookupに追加する。 .lookupについてはNDTPクライアントとして動かす場合と eblookを呼び出して検索する場合の設定を示しておこう。
.emacsに追加する設定
;; オートロードの設定 (autoload 'lookup "lookup" nil t) (autoload 'lookup-region "lookup" nil t) (autoload 'lookup-pattern "lookup" nil t) ;; キーバインドの設定 (define-key ctl-x-map "l" 'lookup) ; C-x l - lookup (define-key ctl-x-map "y" 'lookup-region) ; C-x y - lookup (define-key ctl-x-map "\C-y" 'lookup-pattern) ; C-x C-y - look |
.lookupに追加する設定(NDTPクライアントの場合)
;; 検索エージェントの設定 (ndtpd経由で使う) (setq lookup-search-agents '((ndtp "localhost"))) |
.lookupに追加する設定(eblookを呼び出して検索する場合)
;; 検索エージェントの設定 (eblookを使う) (setq lookup-search-agents '((ndeb "/dic/kojien") (ndeb "/dic/srd-fpw") (ndeb "/dic/mypaedia"))) |
lookupには以下の検索エージェントが用意されている。 同時に複数のエージェントを利用することも可能だ。
プログラム | 説明 |
ndeb | eblookを呼び出して検索 |
ndtp | NDTPサーバに接続して検索 |
ndict | DICTサーバに接続して検索 |
ndsrd | csrdでランダムハウスを検索 |
ndkks | kakasiで読みを調べる |
ndspell | ispellでスペルチェック |
実際の検索の手順は以下のとおりだ。 まずM-x lookupで起動すると辞書一覧バッファが表示される。 最初はすべての辞書を串刺し検索する設定になっているが、 nとpで移動してuで先頭の“*”を消せばその辞書は使われない。 次にM-x lookup-patternを実行し、ミニバッファに単語を入力して検索する。
検索が終わると2つのバッファが現れる。 エントリバッファと本文バッファだ。 エントリバッファには検索された見出し語が並び、 本文バッファにはエントリバッファでポイントされている 見出し語に対応する本文が表示される。 nとpでポイントを動かせば本文バッファの内容が切り替わり、 hで本文バッファに移動してSPCを押せば本文がスクロールできる。
lookupにはほかにもリージョンの検索や辞書のグループ化など さまざまな機能が用意されており、 Emacsの中で快適な辞書引き生活が送れるようになっている。 XEmacs 21.4で検索を行っているところを図に示しておこう。
lookup 1.4とeblook 1.6を組み合わせれば、 Emacs 21.xやXEmacs 21.xからndebエージェントを使って 画像のインライン表示が行える。 Emacs 20.xでも外部ビューア経由での表示が可能だ。 XEmacs 21.4でインライン画像を表示すると以下のようになる。
★追記(2004年2月11日)
インライン画像のキャプション前後が文字化けしていたのは
Emacsでコンパイルした*.elcファイルをXEmacsで使っていたためだった。
図版を修正するとともにインストール関係の記述を変更した。
辞書を引くために専用のブラウザを用意するのではなく、 すでにあるWebブラウザを利用するという選択肢もある。 これを実現する方法はいくつか考えられるが、 ここではlet me see...とebHTTPDを紹介しよう。
なお、Webブラウザで辞書を利用する場合は、 そのしくみからクライアント数を制限するのがむずかしい。 ライセンスに違反しないよう十分留意する必要がある。
かずひこさんのlet me see...はRubyベースのCGIプログラムだ。 RubyからEBライブラリを呼び出す拡張ライブラリRubyEBと 埋め込みRubyスクリプトを実行するERBを利用し、 スタンドアロンで辞書検索を行う。 複数辞書からの串刺し検索と画像のインライン表示が可能だ。 tDiaryのテーマを利用すれば画面デザインも変更できる。
let me see...を動かすにはEBライブラリ3.3以降、RubyEB 2.2以降、 Ruby 1.8以降が必要だ。ERBはパッケージに同梱されている。
・let me see... 1.1
[リンク]
・RubyEB 2.6
[リンク]
・tDiary
[リンク]
Apache2.0の環境でlet me see...を動かしてみよう。 まずはRubyEBのインストールだ。
$ gzip -dc rubyeb-2.6.tar.gz | tar xvf - $ cd rubyeb-2.6 $ ruby extconf.rb $ make # make install
次にlet me see...のパッケージを展開し、 全体をDocumentRootの下のletmeseeというディレクトリに置く。 dot.htaccessを.htaccessにコピーし、必要があれば編集する。 letmesee.conf.sampleをletmesee.confにコピーし、 内容を編集して@diclistに辞書ディレクトリを列挙する。
# gzip -dc letmesee-1.1.tar.gz | tar xvf - # mv letmesee-1.1 /var/www/html/letmesee # cd /var/www/html/letmesee # cp dot.htaccess .htaccess # vi .htaccess # cp letmesee.conf.sample letmesee.conf # vi letmesee.conf
次はhttpd.confを編集しよう。
# vi /etc/httpd/conf/httpd.conf
末尾に以下の4行を追加する。
<Directory /var/www/html/letmesee> Allow from localhost AllowOverride All </Directory> |
また、AddDefaultCharsetが定義されていたらOffにする。
AddDefaultCharset Off |
変更を書き込んで終了し、httpdを再起動すれば準備は終わりだ。 以下のURLにアクセスすればlet me see...が動く。
http://localhost/letmesee/
検索を行うには、辞書一覧で検索に使う辞書だけにチェックマークを残し、 検索方式を選んでから単語を入力する。 結果は見出し一覧ではなく、すべての本文が直接表示される。 広辞苑第五版で「らくだ」を検索したようすを図に示しておこう。 画面デザインにはMomonga Linuxのテーマを使っている。
なお、letmesee.confで@force_inlineをtrueにすれば 画像をインライン表示できるが、ここではそうしていない。 画像のリンクをクリックすると拡張子.rbのファイルがダウンロードされるので、 ファイルに保存するかわりにアプリケーションから開くよう設定し、 拡張子.rbをxloadimageあたりに関連づけておけば クリックひとつで画像が表示されるようになる。
★追記(2004年5月8日)
RubyEBのバージョンが2.5aに上がっていたのに合わせて変更。
let me see...の正式公開版は1.1のままだが、
CVS最新版ではAppendixおよびスペルチェックに対応している。
詳細については
ふぇみにん日記[Dict(2004年)]
を参照のこと。
★追記(2004年7月24日)
RubyEBのバージョンが2.6に上がっていたのに合わせて変更。
笠原基之さんのebHTTPDは、NDTPのかわりにHTTPを話すよう改造したNDTPDであり、 辞書引き専用のインタフェースを提供するHTTPサーバといってよい。 実験的な意味合いが強いが、なかなかおもしろい試みだ。 Webブラウザでサーバホストに接続すると検索画面が表示され、 辞書を選び、検索方式を選んで単語を入力すると 結果の見出し一覧が表示され、見出しを選ぶと本文が表示される。 検索をくり返すときは、画面上に表示されるリンクをクリックすれば 階層をさかのぼって以前の画面に戻ることが可能だ。
ebHTTPDはこれまで単体パッケージで配布されていたが、 EBNETD 1.0以降はNDTPDとともにEBNETDのパッケージに含めて配布されている。 インストールと設定についてはEBNETDの項を参照されたい。
★追記(2004年2月3日)
ebHTTPDがEBNETDに同梱されて配布されるようになったことに伴い、
インストール関係の記述を変更した。
NDTPD公式ホームページのリンク「関連するソフトウェア」では CGI形式のNDTPクライアントであるForestと辞引網、 Servlet形式のNDTPクライアントであるBookletを紹介している。
・NDTPD - 関連するソフトウェア [リンク]
読者の方々は自分の手になじみそうな辞書ブラウザを 見つけることができただろうか。 UNIXで辞書を引く環境はここ数年で飛躍的にととのってきた。 EBライブラリやNDTPDのように優れたインフラが用意されたことに加え、 高度なGUIが普及してきたことが大きな要因だ。 マルチメディアコンテンツの利用もかなり容易になった。
いつでも手もとで辞書が引ける環境ができたら、 こんどはその辞書を別の目的にも活用できるようになる。 たとえばrskkservを利用すれば、 EPWING辞書を使ってかな漢字変換を行うことが可能だ。 自分でもぜひ新しい利用法を考えてみていただきたい。