No17の三田さんの記事「EB,EPWING辞書サーバndtpd+クライアントbookview」(以下、三田記事)で 電子辞書の便利さが紹介されました。 「自分への投資を怠ってはいけない」は本当に重要なことですが、 貧乏学生には他にも投資が必要なこと [1] はたくさんあるので、15,000円の辞書を買うのはためらわれたりするでしょう。
幸いにも、FreeBSDのportsコレクションには、 たくさんのフリーの辞書が登録されています。 今回は、これらのフリーの辞書を中心に、辞書ひく環境を整備してみましょう。
三田記事で紹介されたように、 市販されているEPWING対応辞書は ndtpdサーバとクライアント を用意すれば利用可能です。 EPWING対応辞書の一覧は http://www.epwing.or.jp/を見てもらうとわかるように、 専門用語辞典などもあり、簡単に使える点で有利でしょう。
実は、portsには様々な辞書を FreePWING(http://www.sra.co.jp/people/m-kasahr/freepwing/)を用いてEPWING形式 [2] に変換することで、 ndtpd+bookview で利用可能になるものが多数含まれています。 フリーの辞書も多く専門的なものもありますので、 目的に応じてインストールすると良いでしょう。
ndtpdの詳細な設定方法に関しては、 infoの英語版を読んでください。 日本語版の方には記述されていない項目もあります。
ndtpdで標準で利用されているポートは、 /etc/servicesに登録されていません。 ただし、portsなどでインストールした場合、 登録するかどうかを訪ねられますので答えるだけで登録は終了します。 何らかの理由で登録されていない場合、 一般的には searchプロトコルが割り当てられているTCPの2010番を 利用しますので、 /etc/servicesの該当行を以下のように変更します。
search 2010/tcp ↓(以下のように変更) search 2010/tcp ndtp
次に、ndtpdを立ち上げる設定が必要になります。 詳しくはportsをインストールしたときに表示されるメッセージに 詳しく書かれていますが、基本的には以下のような手順になります。
サンプルの設定ファイルをコピーする。
以下の${PREFIX}
は、
特に変更していない場合は/usr/local/になりますので、
適宜読み替えてください。
$ cd ${PREFIX}/etc $ cp ndtpd.conf.sample ndtpd.conf
設定ファイルを編集します。 デフォルトの設定に関してはコメントに書かれていますので、 これを参考に編集すれば良いでしょう。 注意すべき点は、デフォルトの設定ではサーバのプロセスは ユーザndtpuser、グループndtpgrpで起動される点 [3] です。 追加する場合は以下のように スーパユーザでpwを 利用すれば良いでしょう。
$ pw groupadd ndtpgrp $ pw useradd ndtpuser-g ndtpgrp
-s /sbin/nologin
-d /nonexistent
起動方法を決定する。 起動方法には、スタンドアローンで起動する方法と、 inetd経由で起動する方法があります。 前者では辞書が多くなった場合、 システムの起動に時間がかかりますが、 辞書を良く使う場合には有利です。 後者は、辞書の問い合わせ開始ごとにサーバが立ち上がりますので、 頻繁に辞書をひく場合は不利でしょう。
では、以下に各方式の設定について説明します。
スタンドアローンで起動する方法。
${PREFIX}/etc/rc.d/ndtpd.sh.sampleを 同じディレクトリにndtpd.sh という名前でコピーします。
$ cd ${PREFIX}/etc/rc.d/ $ cp ndtpd.sh.sample ndtpd.shリブート無しで立ち上げる場合は以下のようにします。
$ ${PREFIX}/etc/rc.d/ndtpd.sh start
inetd経由で立ち上げる場合。
まず、inetdが起動される設定になっているか 確認します。 4-STABLE系ではデフォルトで起動するようになっていますが、 5系では起動しないようになっています。 いずれにせよ、/etc/rc.confに 以下の行を追加することで、 inetdが起動するようになります。
inetd_enable="YES"
inetdの 設定ファイル/etc/inetd.confを編集して、 ndtpdが立ち上がるようにします。 具体的には、/etc/inetd.confに 以下の行を追加します。
ndtp stream tcp nowait root /usr/local/sbin/ndtpd ndtpd --inetd
inetdが既に起動されている場合は、 HUPシグナルをinetdに送り、 設定ファイルを読み直させます。
$ kill -HUP
`cat /var/run/inetd.pid`
起動されていない場合は以下のように起動します。
$ /usr/sbin/inetd -wW
基本的には、フリーの辞書はportsでmakeするだけで、 辞書の取得から変換まで自動で終了します。 ただし、ndtpdの設定までは行われませんので、 自分で行う必要があります。 portsに含まれているEPWING対応辞書を表1に示します。
これらの辞書は ${PREFIX}/share/dict/以下に辞書ごとに インストールされます。 インストール直後のndtpdの設定ファイルには、 これらの辞書の設定は含まれていませんし、 portsによるインストールでも自動では設定は行われません。 ndtpd.confの設定例を 図1に示します。 基本的に検索はndtpd.confに登録された辞書の順に 行われますので、良く使う辞書ははじめの方に登録しておくと良いでしょう。
注意すべき点は、サーバグローバルな設定と辞書個別の設定が 区別されている点です。 アクセス無制限の辞書が一つでもある場合、 サーバグローバル設定で"max-clients 0"という無制限の設定にする 必要があります。 この時、更に辞書個別に利用制限をかける場合は"begin book - end"ブロック内の "max-clients"で制限を行います。
図 1. ndtpd.confの辞書設定例
# # ローカルホストからの1セッションだけの接続だけを認める設定 # begin book name ascii title ASCII Date Book '98 path /usr/local/share/dict/ASCIIdates98-fpw max-clients 1 hosts 127.0.0.1 hosts !? end # # LAN内のクライアントであれば無制限に接続を認める設定 # 注) グローバル設定でも双方を設定しなければならない。 hosts 192.168.0.0/24 hosts 127.0.0.1 max-clients 0 begin book name edict title Japanese English dictionary path /usr/local/share/dict/edict-fpw # セッション数を無制限に許可 max-clients 0 # LAN(192.168.0.0/24)からの接続を許可 # localhostを忘れると、サーバ上でクライアントが検索できない。 hosts 192.168.0.0/24 hosts 127.0.0.1 hosts !? end
フリーではない辞書の場合、 辞書を購入するなどして入手してから特定の設定が必要な場合があります。
英辞郎の場合、portでは辞書が/cdrom/eijiro52.txtという ファイル名で存在することを仮定しています。 2003年4月中旬現在の最新辞書ファイルは、 CD-ROMを/cdrom/にマウントしている状態では、 /cdrom/EIJIRO/EIJIRO62.TXTという名前になっています。 この場合、以下のようにmakeを行います。
$ cd /usr/ports/japanese/eijiro-fpw $ make DICT_PATH=/cdrom/EIJIRO SRCFILE=EIJIRO62.TXT install和英辞郎、音辞郎はそれぞれ以下のようになります。
和英辞郎 $ cd /usr/ports/japanese/waeijiro-fpw $ make DICT_PATH=/cdrom/EIJIRO SRCFILE=WAEIJI62.TXT install
音辞郎 $ cd /usr/ports/japanese/otojiro-fpw $ make DICT_PATH=/cdrom/EIJIRO SRCFILE=OTOJIRO.TXT install 35.68 real 29.83 user 0.96 sysただし、和英辞郎のplortsでは、 WAEIJI62.TXTはうまく変換できません。
ランダムハウス英語辞典ですが、 最新版は現状のportではEPWING形式に変換できません。 これは、http://news.ring.gr.jp/news/openlab.edict/2163 からのスレッドを参照してもらうとわかるように、
表 1. ports/japaneseに含まれるfpw辞書
名前 | 種類 | 利用状態 | portディレクトリ名 | サイズ [a] | 備考 |
---|---|---|---|---|---|
'98 ASCII手帳PC用語辞典 | 英和 | フリー | ASCIIdates98-fpw/ | 98(50) | |
CG用語辞典 [b] | 英和 | フリー | CGdic-fpw/ | 152(80) | |
HITCHCOCKの聖書の名前辞典 [c] | 英英 | フリー | bible_names-fpw/ | 456(150) | |
[d] | 英英 | フリー | ebd-fpw/ | 5624(2170) | |
EDICT [e] | 英英 | フリー | edict-fpw/ | 24904(9674) | |
花の咲く草木名小事典 [f] | 和和(花の辞典) | フリー | flower-fpw/ | 248 | |
The Free On-line Dictionary of Computing [g] | 英英 | フリー | foldoc-fpw/ | 12126(4828) | |
不明解略語辞典 [h] | 英和(略語) | フリー | fumeikai-fpw/ | 2952(1242) | |
The Jargon File | 英英 | フリー | jargon-fpw/ | 3278(1324) | |
ライフサイエンス辞書 [i] | 英和 | フリー | lsd-fpw/ | 16648(6122) | |
実用エスペラント小辞典 [j] | エスペラント/和 | フリー | pejv-fpw/ | 3544(1242) | |
略語辞典 [k] | 英和(略語) | フリー | ryaku-fpw/ | 1672(778) | |
vera | 英英(略語) | フリー | vera-fpw/ | 1582(572) | |
通信用語の基礎知識 [l] | 和和(用語辞典) | フリー | wdic-fpw/ | 78894(37980) | |
Webster's Revised Unabridged Dictionary | 英英 | フリー | web1913-fpw/ | 76440(25882) | |
WordNet | 英英 | フリー | wordnet-fpw/ | 54392(17850) | |
悪魔の辞典 [m] | 英英 | フリー | devil-fpw/ | 920(378) | |
Roget's Thesaurusp[m] | 英英(シソーラス) | フリー | roget-fpw/ | 6030(2252) | |
物故者名士録[m] | 英英(名士録) | フリー | wwasw-fpw/ | 408(158) | |
英辞郎 [n] | 英和 | 購入(2200円) | eijiro-fpw/ | 367992(125994) | |
和英辞郎[n] | 和英 | (書籍 [o] :1800円) | waeijiro-fpw/ | --- | 現在のportsでは作成できない |
音辞郎[n] | otojiro-fpw/ | 1390(540) | |||
マイペディア | 百科事典 | 購入 | mypaedia-fpw/ | 46310(27148) [p] | |
ランダムハウス英語辞典 [q] | 英和/和英 | 購入(15,000円) | srd-fpw/ | --- | 現在のportsと最新辞書の組み合わせでは作成できない |
注意: a. du -d 1 -k /usr/share/dict/を利用。
また、括弧内はebzipを利用して圧縮した後のサイズ。
b. http://www.ecs.cst.nihon-u.ac.jp/oyl/CG/yougo/yougo.html c. HITCHCOCK'S BIBLE NAMES dictionary: ftp://ccel.wheaton.edu/ebooks/HTML/bible_names/ d. http://www.bf.org/bfetexts.htm e. ftp://ftp.cc.monash.edu.au/pub/nihongo/00INDEX.html f. http://www.inv.co.jp/~yoshio/DW/Flower/Flower.htm g. http://www.foldoc.org/ h. http://www1.nisiq.net/~cpulot/Dic.htm i. http://lsd.pharm.kyoto-u.ac.jp/ j. http://www2.saganet.ne.jp/vastalto/ k. http://www.inv.co.jp/~yoshio/DW/Ryaku/Ryaku.htm l. http://www.wdic.org/ m. Project Gutenberg( http://promo.net/pg/) 提供。 n. http://member.nifty.ne.jp/eijiro/ o. 「100万語収録のスーパー英和・和英辞典「英辞郎」」 アルク出版(ISBN:4757405707)。 p. ただし、PC Success版。 q. http://ebook.shogakukan.co.jp/scatalog/random/index.html |
bookview(japanese/bookview)は Tcl/Tkで記述された NDTPを利用して辞書検索を行うクライアントです(図2)。
設定は、ファイル(F)から設定(S)...を 選んで表示されるウインドウで行います。 初回起動時にはこの操作で表示されるbookviewの設定ウインドウが、 自動的に表示されます。 ここで設定された結果は、~/.bookviewに保存されます。 サーバクライアントで利用する場合はサーバ1のホスト名にサーバのホストを 指定すれば良いでしょう。 ローカルにndtpサーバを立ち上げている場合は、localhostを指定します。
DSPによる辞書データの提供を行うサーバには dictd(net/dictd)があります。 このportはサーバだけですので、 辞書データはDict Databases (net/dictd-database)をインストールしてください。
dictfmt(textproc/dictfmt) dictfmt converts databases in various formats into working databases and indices for the DICT server.
gdict(textproc/gdict)
dict(textproc/dict)は、 コマンドラインで辞書を検索するクライアントです。 標準では、dict.orgに検索しに行きますので、 ローカルでサーバをあげた場合はオプション-h localhostを 利用して検索しましょう。 また、~/.dictrcに以下のように設定することで、 いつもlocalhostを検索するようになります。
server localhost主なコマンドラインオプションを表2に示します。
表 2. dictの主なコマンドラインオプション
コマンドラインオプション | 意味 | 備考 |
---|---|---|
--help | コマンドラインオプション一覧を表示 | |
-h server (--host server) | 辞書サーバを指定 | デフォルトはdict.org |
-p port (--port port) | サービスのポート番号を指定 | デフォルトではTCP/UDPの2628番 |
-D (--dbs) | サーバで提供されているデータベース一覧を表示 | |
-S (--strats) | サーバの対応している検索方式を表示 | |
-s stragety (--strategy) strategy | 検索方式 [a] を指定 | |
-H (--serverhelp) | サーバのコマンド用ヘルプを表示 | telnet localhost dictで利用可能なコマンド一覧 |
注意: a. dictdインストール後のデフォルトでは 完全一致(exact), 前方一致(prefix), 部分文字列(substring), 後方一致(suffix), POSIX 1003.2の正規表現(re), 古い正規表現(regrep), SOUNDEXアルゴリズムによる一致(soundex), Levenshtein距離による一致(lev) が利用可能。 |
dictionary [4] (textproc/dictionary)は、 Emacs21およびXEmacs用の辞書引きクライアントです。
portからインストールする場合、標準ではemacs21用のクライアントが 作成されます。 XEmacs用のクライアントを作成したい場合は以下のようにしてください。
$ make EMACS_PORT_NAME=xemacs21-mule install
~/.emacsなどに、以下の設定を追加します。
(load "dictionary-init")
EDICTには、EPWING版以外にもコマンドラインで辞書検索できる クライアントを含んだもの(japenese/edict)と、 EmacsからSDIC (http://namazu.org/~tsuchiya/sdic/)で 経由で利用可能なもの((japenese/edict-sdic))が 存在します。
コマンドラインクライアントはxjdicです。 インタラクティブに検索できるようになっていますので、 ?を
電子辞書オープンラボ http://openlab.jp/edict/index.html.ja
「UNIX上で電子辞書を活用しよう」(http://openlab.jp/edict/unix/) ,高林哲 ,Software Design 1999年9月号。
「Emacsを使いこなそう〜電子辞書編〜」 ,田岡智志 ,Personal UNIX No.4(2000)。
[1] | 必ずしも「本当に」必要かどうかは問いません;-p |
[2] | 正確には、EPWING V1のサブセットであるJIS X 4081になります。 |
[3] | 設定ファイル(ndtpd.conf)で 他のユーザ:グループ(例えば、nobody:nogroup)で 起動する方法もありますが、 セキュリティーホールが見つかった場合に 同じユーザ:グループで起動してるプロセスに干渉できますので、 できる限り専用のユーザ:グループを作りましょう。 |
[4] | |
[5] | |
[6] |