アプリケーション活用ガイド

フリーの辞書を使おう(1) EPWING編 by 武藤武士/mutoh@OpenEdu.org

<まくら>

参考文献 [2] では電子辞書の便利さが紹介されました。 「自分への投資を怠ってはいけない」は本当に重要なことですが、 貧乏学生には他にも投資が必要なこと [1] はたくさんあるので、15,000円の辞書を買うのはためらわれたりするでしょう。

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

</まくら>

●EPWING形式の辞書の利用

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

実は、portsには様々な辞書を FreePWING [2]を用いてEPWING形式 に変換することで、 EPWINGを直接解釈するプログラムや ndtpd+NDTPクライアント で利用可能になるものが多数含まれています。 フリーの辞書も多く、専門的なものもありますので、 目的に応じてインストールすると良いでしょう。

●●サーバインストールの注意点

基本的にportsやpackagesを利用してインストールすればいいのですが、 portsを使う場合japanese/eb で一部のファイル(LISTLIST-ja)が タイミングによっては更新されてしまっていて、 MD5 checksum mismatchでインストールに失敗することがあります。 この場合はmake時に NO_CHECKSUM=yesを指定してやると、 とりあえず作成することは可能です [3]

●●ndtpdの設定

ndtpdの詳細な設定方法に関しては、 infoの英語版を読んでください。 日本語版の方には記述されていない項目もあります。 また、Webで読むことも可能な 参考文献[3]には 詳細な設定方法が説明されていますので、一度目を通しておくと良いでしょう。

ndtpdで標準で利用されているTCPポート番号は、 /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で起動される点 [4] です。 追加する場合は以下のように スーパユーザで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.confの設定例を リスト図1に示します。 基本的に検索はndtpd.conf [5] に登録された辞書の順に 行われますので、 早く結果を見たい辞書をはじめの方に登録しておくと良いでしょう。

注意すべき点は、サーバグローバルな設定と辞書個別の設定が 区別されている点です。 アクセス無制限の辞書が一つでもある場合、 サーバグローバル設定で"max-clients 0"という無制限の設定にする 必要があります。 この時、更に辞書個別に利用制限をかける場合は"begin book - end"ブロック内の "max-clients"で制限を行います。

図 1. リスト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

表 1. 表1.ports/japaneseに含まれるfpw辞書

名前(バージョン)種類利用状態portディレクトリ名[a] 辞書のサイズ [b]
'98 ASCII手帳PC用語辞典英和フリーASCIIdates98-fpw/98(50)
CG用語辞典 [c] 英和フリーCGdic-fpw/152(80)
HITCHCOCKの聖書の名前辞典 [d] 英英フリーbible_names-fpw/456(150)
Eaton's 1897 Bible Dictionary [e] 英英フリーebd-fpw/5624(2170)
EDICT [f] 英英フリーedict-fpw/24904(9674)
花の咲く草木名小事典 [g] 和和(花の辞典)フリーflower-fpw/248
The Free On-line Dictionary of Computing [h] 英英フリーfoldoc-fpw/12126(4828)
不明解略語辞典 [i] 英和(略語)フリーfumeikai-fpw/2952(1242)
The Jargon File 英英フリーjargon-fpw/3278(1324)
ライフサイエンス辞書 [j] 英和フリーlsd-fpw/16648(6122)
実用エスペラント小辞典 [k] エスペラント/和フリーpejv-fpw/3544(1242)
略語辞典 [l] 英和(略語)フリーryaku-fpw/1672(778)
vera英英(略語)フリーvera-fpw/1582(572)
通信用語の基礎知識 [m] 和和(用語辞典)フリーwdic-fpw/78894(37980)
Webster's Revised Unabridged Dictionary 英英フリーweb1913-fpw/76440(25882)
WordNet英英フリーwordnet-fpw/54392(17850)
悪魔の辞典 [n] 英英フリーdevil-fpw/920(378)
Roget's Thesaurusp[n] 英英(シソーラス)フリーroget-fpw/6030(2252)
物故者名士録[n] 英英(名士録)フリーwwasw-fpw/408(158)
英辞郎 [o] 英和 書籍[4] :1800円/ オンライン販売:2200円 eijiro-fpw/424634(103882)
和英辞郎[o]和英同上waeijiro-fpw/181672(77450)
音辞郎[o]  同上otojiro-fpw/1536(396)
マイペディア 百科事典PC Success版 500円[絶版]などmypaedia-fpw/46310(27148) [p]
ランダムハウス英語辞典 [q] 英和/和英15,000円srd-fpw/--- [r]
注意:
a. 標準では/usr/ports/japanese/の下。
b. du -d 1 -k /usr/share/dict/を利用。 また、括弧内はebzipを利用して圧縮した後のサイズ。
c. http://www.ecs.cst.nihon-u.ac.jp/oyl/CG/yougo/yougo.html
d. ftp://ccel.wheaton.edu/ebooks/HTML/bible_names/
e. http://www.bf.org/bfetexts.htm
f. ftp://ftp.cc.monash.edu.au/pub/nihongo/00INDEX.html
g. http://www.inv.co.jp/~yoshio/DW/Flower/Flower.htm
h. http://www.foldoc.org/
i. http://www1.nisiq.net/~cpulot/Dic.htm
j. http://lsd.pharm.kyoto-u.ac.jp/
k. http://www2.saganet.ne.jp/vastalto/
l. http://www.inv.co.jp/~yoshio/DW/Ryaku/Ryaku.htm
m. http://www.wdic.org/
n. Project Gutenberg( http://promo.net/pg/) 提供。
o. http://member.nifty.ne.jp/eijiro/
p. ただし、PC Success版。
q. http://ebook.shogakukan.co.jp/scatalog/random/
r. 現在のportsと最新辞書の組み合わせでは作成できない。

●●●フリーではない辞書の場合

EPWING以外のフリーではない辞書の場合、 辞書を購入するなどして入手してから特定の設定が必要な場合があります。

英辞郎の場合、portsでは辞書が/cdrom/eijiro52.txtという ファイル名で存在することを仮定しています。 これは参考文献[4]の データを使うためです。

オンライン販売版などの辞書を利用する場合には、 以下のような手順でインストールします。 ただし、オンライン販売版では必ずしもうまく変換できるとは 限らないことには注意をしてください。 ここでは、2003年4月中旬時点のデータを例にとってありますが、 送られてきたCD-ROMを/cdromにマウントして、 ファイル名を調べて、適宜EIJIRO62.TXT部分を 変更することで、違うバージョンの辞書も作成可能です。

	    $ cd /usr/ports/japanese/eijiro-fpw
	    $ make DICT_PATH=/cdrom/EIJIRO SRCFILE=EIJIRO62.TXT install
	  
音次郎も同じようにして作成可能です。 残念なことに和英辞郎のportは、この版の辞書はうまく変換できません。 これは、辞書のフォーマットの一部がおかしいためだと思われます。

ランダムハウス英語辞典ですが、 最新版は現状のportではEPWING形式に変換できません。 変換するための作業は、 http://news.ring.gr.jp/news/openlab.edict/2163 からのスレッドを参照して下さい。 価格が高いこともあって、ここでは詳細は説明しません。

●●GUIクライアント

●●●BookView

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

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

●●●EBView

EBView(japanese/ebview) [7] (図図3)は 様々な辞書の検索が可能な辞書検索フロントエンドです。 UNIX系のOSだけではなくWindowsでも動作するので、 辞書サーバを立てておいて共同利用する場合に、 統一するクライアントとして利用可能でしょう。 最新バージョンはGtk2を利用する0.3.x系列ですが、 FreeBSD portsに入っているのはGtk1を利用する0.2.x系となっています。

図 3. 図2. img/ebview.jpgebview:PC Success版マイペディアの検索

現在のEBViewは、一度起動してからそのまま終了すると、 再度起動したときにbind: Address already in use と言われて起動できなくなってしまいます。 こうなった場合は、 ~/.ebview/.remote-socを削除すると 起動するようになります[ports-jp 13875]。 これは現在修正作業中とのことです。 図図4に ローカルのEPWING辞書を利用するための設定の様子を示します。

図 4. 図3. ebviewの設定

●●Emacsファミリー用クライアント

よく利用されるクライアントとしては Lookup(japanese/lookup*) [8] (図図5) や diclookup(japanese/diclookup-*) などがあります。 Lookupに関しては、 参考文献[3][5] などで詳細に触れられていますので、 ここでは簡単な説明に留めておきます。 Lookupでは様々な辞書が利用可能ですが、 ここではEPWING関連の機能の説明だけを行います。

図 5. 図4. lookupの動作:EDICTの検索

Lookupを利用する場合、 ~/.emacs~/.xemacs/init.elなどの設定ファイルに、 設定を行う必要があります。 設定の方法に関しては、infoに詳しい説明がありますので、 適宜参照してください。 ライブラリの読み込みなどの一部の設定を除いては、 ~/.lookupにも設定を分離できますので、 適宜分離しておくと見通しが良くなるでしょう。

	  ;;;;;;;; .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-region
	  (define-key ctl-x-map "\C-y" 'lookup-pattern)   ; C-x C-y - lookup-pattern

          ;;;;;;;; ~/.lookupへ分離可能な設定。
	  ;; 検索エージェントの設定
	  (setq lookup-search-agents 
	      '(	
		; NDTP経由の検索
		(ndtp "localhost")
		; EPWINGデータの直接検索
		(ndeb "/usr/local/share/dict/edict-fpw/")
		))


	

●●CUIクライアント

コマンドラインの辞書引きクライアントとしては eblook(japanese/eblook) [9](図図6) があります。 ebzipで圧縮された辞書でも検索可能であるため、 他のクライアントとデータの共用が可能です。

使い方ですが、コマンドラインで辞書のカタログファイルの 格納されているディレクトリを指定して起動します。 コマンドの詳細はhelpコマンドで 確認してください。 英辞朗を利用している例を以下に示します。

図 6. 図5. eblookの利用例:英次郎

% eblook /usr/local/share/dict/eijiro-fpw/
eblook> list
 1. eijiro      英辞郎
eblook> select 1
eblook> search hacker
 1. 481a:598    hacker
 2. 481a:670    Hacker
eblook> content 1
hacker
[名]
1. コンピュータ・マニア, ハッカー, 他人のシステムに侵入する人
2. 《ゴルフ》(ゴルフ好きなのに)下手な人, 叩き切るように打つ人
	  

●●Webインターフェース

eb-w3(japanese/ebw3)は、 EPWING形式の辞書をWebブラウザを利用して検索可能にするための ソフトウエアです。

はじめに、 デーモンであるebw3dの設定を行う必要があります。 詳しくは、/usr/local/share/doc/ebw3/にある 文章を読んでください。 基本的には以下の通りです。

  1. Webサーバをインストールする。

    Apache(www/apache*)などを インストールすると良いでしょう。

    検索用のCGIが置かれるディレクトリとして、 /usr/local/www/cgi-binが仮定されていますので、 必要であれば設定を変更します。

  2. 設定ファイルを記述する。

    /usr/local/etc/ebw3d.conf をサンプルを参考に記述します [10]

  3. 起動スクリプトを作成する。

    起動スクリプトはインストール時点では有効になっていません。 以下のようにして有効にしてください。

    $ (cd /usr/local/etc/rc.d/; cp ebw3d.sh.sample ebw3d.sh)

  4. デーモンを起動する。

    先ほどコピーしたスクリプトを利用して起動します。 リブートする場合は自動的に立ち上がります。

    $ /usr/local/etc/rc.d/ebw3d.sh start

  5. 動作を確認する。

    適当なブラウザからインストールしたサーバの/cgi-bin/cdsearchをアクセスします(図図7)。

図 7. 図6. eb-w3での検索の様子:左上から順に、FOLDIC/w3m, WordNet/phoenix, 通信用語の基礎知識/emacs-w3m, The Jargon File/chimera

●●ライブラリ/ユーティリティーなど

EB Library(japanese/eb) [11] は、EPWINGデータを扱うためのライブラリ群です。 EPWINGデータを扱うためのユーティリティーもライブラリに含まれています。

FreePWING [12] は、EPWING形式ではない辞書をEPWING形式に変換するための ユーティリティーです。 ほとんどがPerlで書かれており、 JIS X 4081(EPWING v1下位互換)のデータを生成します。 EPWING用フリー辞書の多くがこれを利用してデータの変換を行っています。

●おわりに

今回は、EPWINGを利用する辞書の使い方をフリーの辞書を中心に行いました。 辞書の内容的には、有償のものにはとうてい及ばないかも知れませんが、 ちょっと調べるには十分な語彙数の辞書もありますので、 一度試してみてください。

ここで、 フリーの辞書の提供者やアプリケーションの作成者に感謝して、 この記事を終りにしたいと思います。

[コラム]Windowsで利用できるクライアント

書き足す時間があったら書きます。

参考文献

[1]  電子辞書オープンラボ (http://openlab.jp/edict/) .

[2] 「EB,EPWING辞書サーバndtpd+クライアントbookview」, 三田吉郎, FreeBSD Press, No.17, (2003).

[3] 「UNIX上で電子辞書を活用しよう」(http://openlab.jp/edict/unix/), 高林哲, Software Design, 1999年9月号.

[4] 「100万語収録のスーパー英和・和英辞典「英辞郎」」, 道端秀樹 監修, 4757405707, アルク出版, .

[5] 「Emacsを使いこなそう〜電子辞書編〜」, 田岡智志, Personal UNIX, No.4, (2000).

注意

[1]

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

[2]

http://www.sra.co.jp/people/m-kasahr/freepwing/

[3]

しかし、トロイの木馬などの危険性がありますので、 リスクを覚悟した上でNO_CHECKSUM=yesは使ってください。

[4]

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

[5]

付録CD-ROMに、全てのjapanese/*-fpw 辞書が利用可能となるサンプルを収録しました。

[6]

http://www.sra.co.jp/people/m-kasahr/bookview/

[7]

http://ebview.sourceforge.net/

[8]

http://openlab.ring.gr.jp/lookup/

[9]

http://openlab.ring.gr.jp/lookup/eblook/

[10]

設定例を付録CD-ROMに収録しました。

[11]

http://www.sra.co.jp/people/m-kasahr/eb/

[12]

http://www.sra.co.jp/people/m-kasahr/freepwing/