Emacs から英辞郎を使う
先日、ブラウザのウィンドウを適当にクリックしてたら素晴しい記事(*)を発見&感化してしまい、早速注文しておいた英辞郎第三版がようやく届きました。
(*) http://d.hatena.ne.jp/mowamowa/20070220/1171965736
(ここは Amazon の広告貼っとかないと人間としてだめだろうと思ったけど貼れなくなってるじゃん…)
例にならって今回も gentoo ユーザーを意識しまくった記事になっております。あと個人的には lookup を使いたかったんですが、形式が意味不明だったので動作実績のある sdic を使うことにしました。蛇足ですが、使い方が意味不明とか形式が意味不明とかっていうのはこの業界のデフォルトなので特に気にする必要はありません。そういうパッケージはどんどん罵倒してやりましょう。中には重要度が高くて罵倒できないパッケージ( alsa とか)もあるけど!
話がそれてしまいましたが早速。
CD-ROM から辞書ファイルを抽出
まず、英辞郎の CD-ROM から必要な辞書ファイルを抽出しておきましょう。
% mount /mnt/cdrom % cp /mnt/cdrom/eijiro/{eijiro98.dic,waeiji98.dic} /usr/portage/distfiles/
必要な ebuild の取得
次に sdic と sdic-eijiro の ebuild を手にいれる必要がありますが、僕の所属しているグループ専用の overlay から簡単にダウンロードすることができます。 sdic は gentoojp にあるやつ(3年前)を多少改良しただけなので、 gentoojp からダウンロードしてもいいのですが( gentoojp の overlay 死亡中なので手でダウンロードする必要あり)、 site-gentoo.el に不整合が生じます。まあこんなの誰も使ってないと思いますが。 sdic-eijiro は emacs から英辞郎を使うためにわざわざ作ったやつです。ローカルでは一応動いているようなので問題ないと思います。
件の overlay からダウンロードする方法は layman を使う方法と使わない方法があります。
layman を使う場合は、 /etc/layman/layman.cfg を以下のように変更します。
/etc/layman/layman.cfg:
overlays : http://www.gentoo.org/proj/en/overlays/layman-global.txt http://gentoo.panicode.com/layman.txt
そして
% layman -l % layman -a panicode % layman -S # option
とします。当然ですが /etc/make.conf に source /usr/portage/local/layman/make.conf があることを確認しておいてください。
layman を使わない場合は、 svn でそのまま取ってきます。
% cd /usr/local/portage % svn co http://gentoo.panicode.com/overlay panicode
強制ではありませんが、 /etc/make.conf に以下の四行を追加します。
PORTDIR_OVERLAY=" /usr/local/portage/panicode $PORTDIR_OVERLAY "
面倒くさいっていう人は後で emerge する際に、 PORTDIR_OVERLAY="/usr/local/portage/panicode" とすればよいでしょう。
ちなみに、この overlay は revision など一切気にしないどころか動作確認せずに commit したりするので危険と言えば危険です。まあそれは新規作成時のみ(の予定)なので大丈夫だと思います。
辞書ファイルの形式について
ここらで辞書ファイルの形式について少し説明します。英辞郎第三版には PDIC バイナリ形式の辞書ファイルが同封されており、一方今回クライアントとして利用する sdic は SDIC 形式の辞書ファイルを要求するので、そのままコピーしただけでは使えません。 PDIC バイナリ形式から SDIC 形式に直接変換してくれるプログラムがあればいいのですが、僕が探して限りでは無いようなので、 PDIC バイナリ形式を PDIC 一行形式に変換するプログラムと sdic パッケージに同封されている PDIC 一行形式を SDIC 形式に変換してくれるプログラムを組合せて変換に挑むことにしました。
辞書ファイル変換プログラムの取得
PDIC バイナリ形式を PDIC 一行形式に変換してくれるプログラムに pdic-conv (*) というのがあって、今回はこれを利用します。ライセンスや僕の怠慢(だって perl プログラムの ebuild って面倒くさそうじゃん)の問題で、 ebuild 化していないので手でダウンロード&インストールする必要があります。
(*) http://d.hatena.ne.jp/NaoyaT/20070212/pdic
% wget http://pdicviewer.naochan.com/pdic-conv-0.1.tar.gz % tar xzf pdic-conv-0.1.tar.gz -C /opt/
ebuild になっていないので、 sdic-ejiro は pdic-conv のありかを /opt/pdic-conv と決め打ちして利用するようになっています。なので pdic-conv は必ず /opt 直下に配置しなければなりません。
インストール
さて、準備ができたのでインストールしましょう。
まず、アンマスクします。
% echo 'app-emacs/sdic' >> /etc/portage/package.keywords % echo 'app-emacs/sdic-eijiro' >> /etc/portage/package.keywords
当方実は amd64 な環境しかないので、 ebuild の KEYWORDS には amd64 しか指定していません。なので x86 な環境の人は以下のようにアンマスクする必要があります。
% echo 'app-emacs/sdic ~*' >> /etc/portage/package.keywords % echo 'app-emacs/sdic-eijiro ~*' >> /etc/portage/package.keywords
そしてパッケージをインストールします。
% emerge sdic sdic-eijiro
10 分ほどまっていれば正常にインストールが完了するはずです。
Emacs の設定
以下を .emacs に書いておきましょう。
;; sdic (autoload 'sdic-describe-word "sdic" "Look up a english word." t nil) (global-set-key "\C-cw" 'sdic-describe-word) (autoload 'sdic-describe-word-at-point "sdic" "Look up a english word at point." t nil) (global-set-key "\C-cW" 'sdic-describe-word-at-point) (setq sdic-eiwa-dictionary-list '((sdicf-client "/usr/share/dict/eijiro98.sdic"))) (setq sdic-waei-dictionary-list '((sdicf-client "/usr/share/dict/waeiji98.sdic")))
動作確認
Emacs を起動して C-cw typo RET で以下のような画面になれば OK です。検索速度が予想以上にかかる( 10 秒ぐらい)のがちょっと意外でしたがまあいいでしょう。
ebuild を使いたくない場合
辞書ファイルの変換は実質以下のコマンドに帰着します。 ebuild 入れるの面倒くさいとか他のディストリ使っている場合は以下のコマンドを実行して変換してしまえばよいでしょう。あとは .emacs 書けばちゃんと動くので。もちろん sdic が入っていることが前提です。 sdic-xxx は sdic パッケージのソースです。
% cd tmp % perl -I/opt/pdic-conv/lib /opt/pdic-conv/pdic-dump.pl eijiro98.dic | \ nkf -S -e | \ perl sdic-xxx/contrib/eijirou.perl > eijiro98.sdic % perl -I/opt/pdic-conv/lib /opt/pdic-conv/pdic-dump.pl waeiji98.dic | \ nkf -S -e | \ perl sdic-xxx/contrib/eijirou.perl --waei > waeiji98.sdic
備考
まだまだ辞書が少ないので当分はオンライン辞書との併用になりそうです。
あと誰か pdic-conv のライセンス問題を解決(ライセンスに関して中途半端に言及しているのが問題)して ebuild 作ってくれたり、 pdic-conv の代替教えてくれたり、 sdic 関係の ebuild の安定化してくれるとすごくうれしい。こんな不安定じゃ emacs overlay にすら登録されないよ。
追記
http://blog.2310.net/contents/individual/000055.php を参考にして高速検索を利用できるようにしました。検索には全然時間がかかりませんが、 Suffix Array 化したことで既存のパターン検索が使えなくなっています。高速検索を利用するにはインストールを以下のように行ってください。
% echo 'app-emacs/sdic sary' >> /etc/portage/package.use % echo 'app-emacs/sdic-eijiro sary' >> /etc/portage/package.use % emerge sdic sdic-eijiro
そしてリンク先にある elisp を .emacs に書いておいてください。
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/eijiro-with-emacs/tbping
Re:Emacs から英辞郎を使う
ライブラリとしては未完成(のつもり)なのですが、一日も早く変換ツールを提供したいと思ったので暫定版をアップしました。
Unicode(BOCU-1)辞書が絡むとBOCU-1自体の特許問題が絡むので、英辞郎の変換に必要な非Unicode部分だけでも、なにか自由が効くライセンスで公開したいと思います。もうしばらく待ってて下さい。