アプリケーション活用ガイド:フリーの辞書を使おう by oZ

No17の三田さんの記事「EB,EPWING辞書サーバndtpd+クライアントbookview」(以下、三田記事)で 電子辞書の便利さが紹介されました。 「自分への投資を怠ってはいけない」は本当に重要なことですが、 貧乏学生には他にも投資が必要なこと [1] はたくさんあるので、15,000円の辞書を買うのはためらわれたりするでしょう。

幸いにも、FreeBSDのportsコレクションには、 たくさんのフリーの辞書が登録されています。 今回は、これらのフリーの辞書を中心に、辞書ひく環境を整備してみましょう。

●EPWING形式の辞書の利用

三田記事で紹介されたように、 市販されているEPWING対応辞書は ndtpdサーバとクライアント を用意すれば利用可能です。 EPWING対応辞書の一覧は http://www.epwing.or.jp/を見てもらうとわかるように、 専門用語辞典などもあり、簡単に使える点で有利でしょう。

実は、portsには様々な辞書を FreePWING(http://www.sra.co.jp/people/m-kasahr/freepwing/)を用いてEPWING形式 [2] に変換することで、 ndtpd+bookview で利用可能になるものが多数含まれています。 フリーの辞書も多く専門的なものもありますので、 目的に応じてインストールすると良いでしょう。

●●ndtpdサーバの設定

ndtpdの詳細な設定方法に関しては、 infoの英語版を読んでください。 日本語版の方には記述されていない項目もあります。

ndtpdで標準で利用されているポートは、 /etc/servicesに登録されていません。 ただし、portsなどでインストールした場合、 登録するかどうかを訪ねられますので答えるだけで登録は終了します。 何らかの理由で登録されていない場合、 一般的には searchプロトコルが割り当てられているTCPの2010番を 利用しますので、 /etc/servicesの該当行を以下のように変更します。

	  search                2010/tcp
	  	↓(以下のように変更)
	  search                2010/tcp        ndtp
	

次に、ndtpdを立ち上げる設定が必要になります。 詳しくはportsをインストールしたときに表示されるメッセージに 詳しく書かれていますが、基本的には以下のような手順になります。

  1. サンプルの設定ファイルをコピーする。 以下の${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
    	      

  2. 起動方法を決定する。 起動方法には、スタンドアローンで起動する方法と、 inetd経由で起動する方法があります。 前者では辞書が多くなった場合、 システムの起動に時間がかかりますが、 辞書を良く使う場合には有利です。 後者は、辞書の問い合わせ開始ごとにサーバが立ち上がりますので、 頻繁に辞書をひく場合は不利でしょう。

    では、以下に各方式の設定について説明します。

    1. スタンドアローンで起動する方法。

      ${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
      		  

    2. 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

●●GUIクライアント(bookview)

bookview(japanese/bookview)は Tcl/Tkで記述された NDTPを利用して辞書検索を行うクライアントです(図2)。

設定は、ファイル(F)から設定(S)...を 選んで表示されるウインドウで行います。 初回起動時にはこの操作で表示されるbookviewの設定ウインドウが、 自動的に表示されます。 ここで設定された結果は、~/.bookviewに保存されます。 サーバクライアントで利用する場合はサーバ1のホスト名にサーバのホストを 指定すれば良いでしょう。 ローカルにndtpサーバを立ち上げている場合は、localhostを指定します。

図 2. bookviewの動作の様子

●Dictionary Server Protocol(RFC2229)を利用した辞書の利用

http://www.dict.org/

●●サーバの設定

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.

●●GUIクライアント

gdict(textproc/gdict)

●●コマンドラインクライアント(dict)

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) が利用可能。

●●Emacs用クライアント(dictionary)

dictionary [4] (textproc/dictionary)は、 Emacs21およびXEmacs用の辞書引きクライアントです。

portからインストールする場合、標準ではemacs21用のクライアントが 作成されます。 XEmacs用のクライアントを作成したい場合は以下のようにしてください。

	  $ make EMACS_PORT_NAME=xemacs21-mule install
	

~/.emacsなどに、以下の設定を追加します。

(load "dictionary-init")

●そのほかの辞書

●●EDICT

EDICTには、EPWING版以外にもコマンドラインで辞書検索できる クライアントを含んだもの(japenese/edict)と、 EmacsからSDIC (http://namazu.org/~tsuchiya/sdic/)で 経由で利用可能なもの((japenese/edict-sdic))が 存在します。

コマンドラインクライアントはxjdicです。 インタラクティブに検索できるようになっていますので、 ?

●●WordNet

WordNet [5] (textproc/wordnet)にも 独自のコマンドラインクライアントwnと、 GUIクライアントwnb(図3)があります。

図 3. WordNet用GUIクライアントwnb

●●eblook

eblook [6] for Emacs

●おわりに

●参考文献

注意

[1]

必ずしも「本当に」必要かどうかは問いません;-p

[2]

正確には、EPWING V1のサブセットであるJIS X 4081になります。

[3]

設定ファイル(ndtpd.conf)で 他のユーザ:グループ(例えば、nobody:nogroup)で 起動する方法もありますが、 セキュリティーホールが見つかった場合に 同じユーザ:グループで起動してるプロセスに干渉できますので、 できる限り専用のユーザ:グループを作りましょう。

[4]

http://www.myrkr.in-berlin.de/dictionary/

[5]

http://www.cogsci.princeton.edu/~wn/

[6]

http://openlab.ring.gr.jp/lookup/eblook/index.html.ja