Emacs で辞書検索(EPWING UTF-8)

以前から Emacs には興味があって、ちらちら見てはいたんですが、初っ端のチュートリアルでいつも挫折してました。

今回、UTF-8 対応ということで Kazuhiro's blog さんの所で、ソフトがアップされていましたので、重い腰を挙げてやっと Emacs を Windows2000 に入れてみることにしました。

2010年2月16日現在 現時点でJIS X 4081 UTF-8 extensionの書籍を検索できるのは eblook 1.6.1+mediaだけだそうです。



まず、Windows 用の Emacs をダウンロードします。

GNU Emacs

http://www.gnu.org/software/emacs/

から、ダウンロードリンクの

http://ftp.gnu.org/pub/gnu/emacs/windows/

をたどって、20100212現在 emacs-23.1-bin-i386.zip をダウンロードします。38.9MBあります。結構でかいです。



本家サイトは回線が重いのですが、GNUのミラーサイトが日本国内にもありますので、そちらのほうがダウンロードが早いでしょう



例として

北陸先端科学技術大学院大学FTP

ftp://ftp.jaist.ac.jp/pub/GNU/emacs/windows/

Ring Server

http://www.dnsbalance.ring.gr.jp/archives/GNU/emacs/windows/

などがあります



それから、

Lookup 1.4+media

http://ikazuhiro.s206.xrea.com/staticpages/index.php/lookup

から、lookup-1.4+media-20091030.tar.gz



eblook 1.6.1+media

http://ikazuhiro.s206.xrea.com/staticpages/index.php/eblook

から、eblook-1.6.1+media-20090709-eb4.4.2+u-20100121.exe

をダウンロードします。

また、辞書も用意します。ウィキペディアを見るのが目的なので、今回は ja-wikipedia20100208-7z 版を用意しておきます。
これを どこでもいいですが今回便宜上、C:/dictionary 以下に解凍しておきます。

で、まず Emacs を解凍します。
7−ZIPなどで解凍してください。
解凍したら、emacs-23.1フォルダーを自分の好きなところにおきます。
今回はC:/emacs-23.1にします。
C:/emacs-23.1/bin の中の runemacs.exe をダブルクリックして Emacs を起動してみてください。そのときにチュートリアルがありますので一度中身を見てみてください。(私はいつもここで挫折していました。日本語で書いてあるんですけどね。)
それから、eblook-1.6.1+media-20090709-eb4.4.2+u-20100121.exe を eblook.exe に名前を変更します。で、C:/emacs-23.1/bin の中に入れます。
また、lookup-1.4+media-20091030.tar.gz も 解凍します。わかりやすい場所に移動しておきます。
Emacs を runemacs.exe で起動し、 Ctrl+x をやってからいったん手を離し、d をタイプ(または Esc を押してから手を離し x をタイプして dired をタイプ)すると、dired  ができます。フォルダと中のファイルの一覧を表示してくれます。
で、dired で、lookup-1.4+media-20091030 フォルダーの中の install.el を探して、カーソルでその行にあわせてから、大文字 L をタイプします。するとインタラクティブ形式で Emacs に lookup がインストールできます。下のバッファ欄にいろいろ質問が出てきます。
elisp ファイル、及び info ファイルのインストールディレクトリを順に聞いて くるので、さっき解凍した C:/emacs-23.1/lisp/ , C:/emacs-23.1/info/ を入れていきます。
すると勝手にコンパイルをしてインストールを完成してくれます。
それから、C:/emacs-23.1/info/ の中にある dir ファイルを 本当なら Emacs で読み込むんでしょうが、使いやすいテキストエディターで開いて、その一番最後に
* Lookup: (lookup). Lookup, a Search Interface.
* Lookup Guide: (lookup-guide). The Lookup Startup Guide.

を付け足してください。
Ctrl+h i で、Info ファイルの呼び出しができます。
一番最後に Lookup のガイドへのリンクが出ているはずです。


それから、Windows2000 にログインしている User 名で
C:/Documents and Settings/User/Application Data/.emacs.d
というフォルダーができているので、その中に新しく、テキストエディターでファイルを作ります。名前は init.el にします。 で、中身には

(setq load-path (cons "c:/emacs-23.1/lisp/lookup" load-path))
(setq Info-default-directory-list
(cons "c:/emacs-23.1/info" Info-default-directory-list))
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

(setq lookup-search-agents '((ndeb "/dictionary/ja-wikipedia20100208-7z/WIKIP")))
(setq lookup-max-text 0)

と記述して保存します。(毎回辞書名が変わると厄介ですね。いっそウィキペディアは WIKIP からにしたほうが楽かも知れません。)

さて、準備が終わりました。

runemacs.exe で起動し、 Esc を押して指を離してそれから小文字の x を押すと Emacs の一番したのバッファ欄に M-x という表示がでるので lookup とタイプしてリターンを押してください。
Lookup が立ち上がります。辞書がちゃんと設定されていればウィキペディアが自動的に選択されます。
上下二段の窓になっていると思うので、下にマウスでカーソルを持っていって選択してから、
Ctrl+x (Ctrl ボタンと小文字 x の同時押し)の後で 数字の1を押すと大きな画面で辞書検索ができます。
小文字の f を押すと下のバッファ欄に
Look up:
というのが出てくるので、そこに検索したい文字を入れます。
たとえば、東京であれば 半角/全角ボタンを押してから
東京*
と入力してリターンを押すと東京に関する一覧が出てきます。
ほかにも、たとえば word という言葉を検索するときに
'word'
完全一致検索 (exact, =)

与えられた文字列と完全に一致する見出し語を持つエントリを検索します。この例では ‘word’ や ‘Word’ などが見付かります。


word*
前方一致検索 (prefix, <)

与えられた文字列を見出し語の先頭に持つようなエントリを検索します。この例では ‘wordage’ や ‘wording’ などが見付かります。


*word
後方一致検索 (suffix, >)

与えられた文字列を見出し語の末尾に持つようなエントリを検索します。この例では ‘keyword’ や ‘headword’ などが見付かります。


*word*
部分一致検索 (substring, -)

与えられた文字列を見出し語の一部に含むようなエントリを検索します。この例では ‘unwordy’ や ‘swordsman’ などが見付かります。


w*o?d
グロブパターン

上の三つを更に進めた表現として、任意のグロブパターンが指定出来ます。つまり文字 ‘*’ が任意の文字列とマッチし、文字 ‘?’ が任意の一文字とマッチします。この例では ‘word’ や ‘womanhood’ などが見付かります。



この検索パターンは、実際にはパターンを正規表現に変換して検索を行ないます。今の例では ‘^w.*o.d$’ のように変換されます。従って、これを用いるには辞書が次の正規表現検索に対応していなければなりません。


/word/
正規表現検索 (regexp, r)

与えられた正規表現とマッチする見出し語を持つエントリを検索します。入力はそのまま検索エージェントに渡されるため、正規表現のスタイルは利用するエージェントに依存します。


@word
キーワード検索 (keyword, @)

辞書が見出し語だけでなくエントリ毎のキーワードを持つ場合、このパターンによってそれを検索することが出来ます。何をキーワードとして持つかは利用する検索エージェントによって異なるため、それぞれのエージェントについての説明を参照して下さい。


/word
全文検索 (text, /)

これは他の検索方式とは少し異なります。他のものは辞書にあらかじめ用意されているインデックスから検索を行ないますが、これは辞書の全体から力ずくで検索語を探し出します。そのためしばしば非常に多くの検索時間を必要とするため、この検索パターンを指定すると確認のためのプロンプトが表示されます。


だそうです。

キーボードでは入力できないが調べたい、またはネット上などで見つけた文字をコピーペーストして調べたい時には、ブラウザなどでは、右クリックでコピーを選んで普通にクリップボードにコピーしておき、
f をタイプして

Look up : 

という表示がでたら、

Ctrl + y(小文字)

を押すとミニバッファにペーストされます。


上の窓にでてきた一覧をマウスで選択したり、カーソルで選択してからリターンを押すとその項目が下の窓に出てきます。
下の文章は、スペースキーで前進、Delete キーで後退です。(ちょっと特殊ですね)
文中の内部リンクは、マウスやカーソルで選択してから、リターンを押すとリンク先に飛びます。
キーボード操作で上の窓から下の窓に飛ぶときは、Ctrl+x 小文字の o です。
下の窓に移ってからカーソルを移動して、リンク表示になっている文字の上でリターンを押すとリンク先に飛びます。

小文字の q で終了します。vi に似てますね。
またなにか異常があって暴走しているときには、 Ctrl+g で終了します。
(20100212)


runemacs.exe と .emacs.d フォルダは、わかりやすいところに、右クリック→送る→デスクトップにショートカット、で作ったショートカットをおいて置きましょう。

で、今回の最大の目標 UTF-8 版の辞書検索方法です。 去年の12月中旬から延々試行錯誤してきましたが、やっと実物が出来上がってきました。 お試しで en-wikipedia20100130-utf8-7z をアップロードします。

ウィキペディア(EPWING 互換) 過去の版

http://trade2.easter.ne.jp/soft/#dictionary

それをダウンロードして init.el に

(setq load-path (cons "c:/emacs-23.1/lisp/lookup" load-path))
(setq Info-default-directory-list
(cons "c:/emacs-23.1/info" Info-default-directory-list))
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

(setq lookup-search-agents '((ndeb "/dictionary/ja-wikipedia20100208-7z/WIKIP")(ndeb "/dictionary/en-wikipedia20100130-utf8-7z/WIKIP" :coding utf-8)))
(setq lookup-max-text 0)

のように付け加えます。 これだけです。 en-wikipedia20100130-utf8-7z を ダンプデータをダウンロードするのに5時間、EPWING に変換するのに、62 時間、7-ZIP 形式に圧縮するのに6時間ほどかかりますが、 ダウンロード、展開、して init.el を書き換えるだけなら1,2時間でできます。 (ちょっとダウンロードに時間がかかるかもしれませんが。)

(20100216)


ちなみに一応このコラムは Windows2000 用の記事なのですが、ついでに Ubuntu でのインストール方法も説明します。

まず Emacs

http://ftp.gnu.org/pub/gnu/emacs/

から emacs-23.1.tar.bz2 をダウンロードします。

それから、

Lookup 1.4+media

http://ikazuhiro.s206.xrea.com/staticpages/index.php/lookup

から、lookup-1.4+media-20091030.tar.gz



eblook 1.6.1+media

http://ikazuhiro.s206.xrea.com/staticpages/index.php/eblook

から、eblook-1.6.1+media-20100218.tar.gz



EB Library with UTF-8 support

http://green.ribbon.to/~ikazuhiro/dic/ebu.html

から、eb-4.4.2+u-20100121.tar.gz



をダウンロードします。

また、Emacs をコンパイルするために

gcc
gcc-doc
g++
libc6
libc6-dev
glibc-doc
manpages
manpages-dev
manpages-ja
manpages-ja-dev
manpages-posix-dev
exuberant-ctags
build-essential
libxpm-dev
libgtk2.0-dev
libdbus-1-dev
texinfo
libtiff4-dev
libjpeg-dev
libgif-dev
libncurses5-dev

これらを Synaptic パッケージマネジャーでインストールされているか確認し、ないものはインストールしてください。


まず Emacs からコンパイルします。

Emacs を展開し

$ cd emacs
$ ./configure --with-x-toolkit --with-xft
$ make
$ sudo make install

でコンパイルしてください。

次に Lookup をコンパイルインストール。これはデフォルトのままで OK です。
なにかフォルダの指定などについて Readme に書いてありますが、とくに指定しなくて結構です。
それから eb をコンパイルインストール。これもデフォルトのままで OK です。
eb が入った状態で、eblook をコンパイルインストールしてください。
これもデフォルトで OK です。

ただ、後でライブラリーが見つからない、辞書の初期セットアップに失敗した、などというエラーが Lookup で出たときには、

$ sudo ldconfig

を実行します。

それから、

HOME/ユーザーディレクトリの直下に

.emacs

というファイルを作成します。

Ubuntu では、ファイル名の最初にドットがついているファイルは隠しファイルになるので、ファイルブラウザの 

表示→隠しファイルを表示する

で、各種設定ファイルをみることができます。

Emacs をインストールした時点では .emacs ファイルは無いはずなので、新たに作成します。

そしてそこに、

(setq load-path (cons "/usr/local/share/emacs/site-lisp" load-path))
(setq Info-default-directory-list
(cons "/usr/local/share/info" Info-default-directory-list))
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

(setq lookup-search-agents '((ndeb "/home/user/dictionary/ja-wikipedia20100208-7z/WIKIP")(ndeb "/home/user/dictionary/en-wikipedia20100130-utf8-7z/WIKIP" :coding utf-8)))
(setq lookup-max-text 0)

のように付け加えます。user はログインユーザー名のつもりです。辞書はどこにおいてもいいので、その場所を指定します。

これだけです。

(20100228)




(加除訂正20111115)

1)記述の誤りがあったので訂正

elisp ファイル、及び info ファイルのインストールディレクトリを順に聞いてくるので、さっき解凍した C:/emacs-23.1/lisp , C:/emacs-23.1/info を入れていきます。 すると勝手にコンパイルをしてインストールを完成してくれます。

のフォルダー指定の個所を
elisp ファイル、及び info ファイルのインストールディレクトリを順に聞いてくるので、さっき解凍した C:/emacs-23.1/lisp/ , C:/emacs-23.1/info/ を入れていきます。 すると勝手にコンパイルをしてインストールを完成してくれます。


すみません。間違えてました。訂正します。

パソコンリストアして入れなおしたら、気が付きました。



2)GNUの本家サーバーが遅いので、国内ミラーサーバーのURL追加

せっかく国内でミラーサーバーがあるので、国内のサーバーを使いましょう。ありがたいことです。







(追加20111227,1228)

文章の量の多い記事
例えば、「ギリシャ神話」や「東日本大震災」などで

<more point=49>

というエラーが出ていてずっと気になっていましたが


なにか、英語版ウィキペディアの存続の雲行きが怪しくなってきたので
どうも、妙に最近英語版ウィキペディアの妙なニュースが増えてきて
これは、止めちゃうんじゃないか、みたいな危機感を覚えるわけですが

無料のものはいつかなくなる、という覚悟で、いつもせっせと資料の保存をしているわけですが

他のソフト、EBWin などが UTF-8 に対応してくれないかなーと思って待っていたんですが、(すでに他力本願)
そういうソフトが出てこないですし、

せっかく EPWING の UTF-8版 で変換していても、長文で詳細なタイトルに限って最後まで読めないんじゃ
変換した意味がないな、と思って
とうとう、掲示板で質問してしまいました

(setq lookup-max-text 0)

を .emacs ファイル、init.el ファイルに追記すると
最後まで表示されます



掲示板にて


途中で表示が切れます

By kolo この投稿を引用

いつもお世話になっております

Emacs Lookup eblook の組み合わせで

「ギリシャ神話」、「東日本大震災」などの
大量に文字数のある項目を表示させると

<more point=49>

というエラーを出して、記事が途中で止まってしまい
最後まで表示されません


ご報告まで。

No.217 2011/12/27 06:38:11
Re: 途中で表示が切れます

By kazuhiro URL このコメントを引用

lookup-max-textをより大きな値、または0にして下さい。

No.218 2011/12/27 18:38:46
Re: 途中で表示が切れます

By kolo URL このコメントを引用

> lookup-max-textをより大きな値、または0にして下さい。

init.el ファイルに

(setq lookup-max-text '(0))

を追記したところ

最後まで表示されました


お忙しいところ、ありがとうございました

No.219 2011/12/27 20:05:07
Re: 途中で表示が切れます

By kazuhiro URL このコメントを引用

> (setq lookup-max-text '(0))

lookup-max-textの値は整数であることを期待しているので、正しい設定は

(setq lookup-max-text 0)

になります。

No.220 2011/12/28 17:43:35



即日回答でした。感謝です。

しかし 自分で解決できなくて、ちょっと悔しいですね〜 トホホ。



女の子お絵かき掲示板ナスカiPhone修理