『自家製 egg-anthy』について 1. 自家製 egg-anthy について この tar ball は白井秀行(*1)が個人的に Anthy(*2) を Tamago Ver.4(*3) か ら *ちゃんと* 使おう!と思いたちでっちあげた elisp 群です。ぼくは、Meadow や Zaurus 上の Emacs で egg-anthy を使ってめちゃくちゃ幸せになりました。 私は (1) Meadow な NotePC で持ち歩くから、サーバに繋げられないので Meadow から も MS-IME で悲しい。だけど、anthy って cygwin で make できるなぁ。 (2) Zaurus の Emacs で FreeWnn を egg-wnn で使っているけど、ちょっと辞書 を増やすとメモリは食うわ、遅くなるわで、大変。 (3) Anthy 付属の anthy.el でも良いのだけど、どうしても指と頭が egg な動き のままだ。 という問題に悩まされていました。同じ悩みをお持ちの方には有効だと思います。 また、egg-remix(*4) と組み合わせても順調に動いています。 (*1) shirai@meadowy.org <= 要望/バグ報告等はこちらまでどうぞ (*2) http://anthy.sourceforge.jp/ (*3) http://www.m17n.org/tamago/ (*4) http://www.extipl.jp/~payashi/remix/ 2. anthy のインストール http://anthy.sourceforge.jp/ からどうぞ。2005年02月28日 現在では anthy-6131 に対応しています。anthy-5900(またはそれ以前) でも動作すると思 われますが、辞書登録時にサポートしている品詞にミスマッチが生じるため、 egg-anthy がサポートしているすべての品詞を使うことはできません。 3. Tamago Ver.4 + 自家製 egg-anthy のインストール リリース版の Tamago 4.0.6 では動作しませんので注意してください。 3.1 まだ Tamago をインストールしていない人 (1) CVS Head な Tamago を http://cvs.m17n.org/viewcvs/tamago/tamago/ など から貰ってきます。Tamago Ver.4 はいろいろなパッチが出ているので、必要な 人は漁ってください。http://www.asahi-net.or.jp/~mu6k-ski/tamago.html も 参考になるでしょう。 (2) 同梱の anthy.el, anthyipc.el を上記の tamago 一式を展開した tamago/egg/ 以下の同名のファイルに上書きします。 (3) 普通に tamago をインストールします。 3.2 すでに Tamago をインストールしている人 egg-anthy 付きのバージョンか否かで、方法が変わります。 3.2.1 "C-uC-\" で "japanese-egg-anthy" が出てこない人 2.1 を参考にして、一から Tamago をインストールしてください。 3.2.2 "C-uC-\" で "japanese-egg-anthy" が出てくる人 (環境によって違うと思いますが)/usr/local/local/share/emacs/site-lisp/egg/egg 以下に同梱の anthy.el, anthyipc.el をコピーして byte-compile してください。 4. 使い方 普通に C-uC-\ で "japanese-egg-anthy" を選択すれば OK です。 (setq default-input-method "japanese-egg-anthy") とか ~/.emacs に書いておけばすぐ egg-anthy が使える状態になります。 5. 自家製 egg-anthy の中身 http://anthy.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Emacs%A4%AB%A4%E9 のパッ チを使わせていただきました。だけどこれだけだと、変換して C-h で取り消しっ て 16回やったら破綻しますよね。 5.1 制限事項 (1) Tamago Ver.4 の特徴の一つであるマルチフェンスは同時に 16個までしかオー プンできません。 これは、anthy-agent を -egg 付きで動かした場合の anthy-agent の制限事項で す。15個を越えるとシツコクメッセージを出します。自分で改造すればそれ以上 のフェンスをオープンできますが、通常必要ないと思います。もし、間違って 17個以上のフェンスをオープンして破綻したときは、 "M-x anthy-egg-recover" と打ってください。 (2) egg-abort-conversion(), egg-decide-before-point() の二つの関数に advice をかけていますので、注意してください。 tamago 本体に手を加えたくないため、advice で逃げました。 5.2 気のきいている点 (1) Anthy 付属の anthy.el と同時に使用することができます。 そのときは、 (locate-library "anthy") => "/usr/local/share/emacs/site-lisp/anthy/anthy.elc" というふうに、Anthy 付属の anthy.el が load-path のはじめに出てくるように 調整してください。 (locate-libraries "anthy") => ("/usr/local/share/emacs/site-lisp/anthy/anthy.elc" "/usr/local/share/emacs/site-lisp/egg/egg/anthy.elc") となれば OK です。 (2) anthy-6131 付属の anthy-dic-tool がサポートしている品詞はすべて egg か ら登録することが出来ます。 今後 anthy-dic-tool がサポートする品詞が増えたときの対応はそのときに考え ますが、/usr/local/share/anthy/typetab を自動で解析しないとだめかなぁ。。。 また、動詞の登録は癖があります。例えば「焼き込む」を登録するときは、 漢字:『書き込』、読み:『やきこ』、活用:『マ行五段活用』 の様に活用語尾を外して登録します。 (3) オリジナルの egg-anthy が対応していなかった、ひらがな変換(M-h)、カタカ ナ変換(M-k) に対応しています。 6. UTF-8 対応 最近の Anthy では、Anthy 内部が UNICODE 化し、安定版では anthy-8700 以降 の anthy-agent, anthy-dic-tool でも "--utf8" というオプションを使えば UTF-8 で通信することができます。お使いの Emacs が Emacs-22 または Emacs-21 + Mule-UCS のときは、Anthy と UTF-8 で通信することができます。 6.1 設定 egg-anthy を使う前に (setq anthy-egg-use-utf8 t) とします。デフォルトは nil です。 また、leim に登録されている egg-anthy の input-method 名が標準の "japanese-egg-anthy" でないとき、または複数持つときは、 anthy-egg-input-method-list に以下のように設定します。 (setq anthy-egg-input-method-list '("japanese-egg-anthy" "anthy")) 6.2 注意点 その一 日本語(?)以外の単語を Anthy の辞書に登録可能にする点と、日本語(?)以外を リージョンに指定しての "M-x egg-convert-region" でエラーを出さないように するため、egg-toroku-bunsetsu, egg-toroku-region, egg-convert-region, egg-separate-languages の各関数に advice をかけています。 この機能は (setq anthy-egg-use-chinese-korean-server t) とすると無効になり、kWnn, cWnn と utf-8 な Anthy が共存できます。デフォル トは nil です。 6.3 注意点 その二 UTF-8 を用いて Anthy から文字が出て来たときに Emacs がその文字がどの charset set に割り当てるかは、その Emacs 次第です。例えば、Mule-UCS を使っ ていても Emacs-22 の utf-translate-cjk-mode() を使っても、デフォルトでは 『α』が japanese-jisx0208 ではなく greek-iso8859-7 として扱われます。 おそらく大抵の人は japanese-jisx0208 として扱ってほしいと思われるので、以 下のように文字セット変更の設定が必要です。なお、下記の例はわたしのもので、 間違っている可能性もありますし、各人の趣味の問題もありますので、ご参考ま でにどうぞ。 (cond ((featurep 'jisx0213) ;; Mule-UCS + JISX0213 の設定 (setq unicode-basic-translation-charset-order-list '(ascii japanese-jisx0208 ;; 移動 japanese-jisx0213-1 ;; 移動 japanese-jisx0213-2 ;; 移動 japanese-jisx0212 ;; 移動 latin-iso8859-1 latin-iso8859-2 latin-iso8859-3 latin-iso8859-4 cyrillic-iso8859-5 greek-iso8859-7 hebrew-iso8859-8 latin-iso8859-9 latin-iso8859-14 latin-iso8859-15 ipa ;; もとはここ chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7 chinese-big5-1 chinese-big5-2 korean-ksc5601 latin-jisx0201 katakana-jisx0201 thai-tis620 ethiopic indian-is13194 chinese-sisheng lao vietnamese-viscii-lower vietnamese-viscii-upper tibetan mule-unicode-0100-24ff mule-unicode-2500-33ff mule-unicode-e000-ffff mule-ucs-unicode-multichar)) (un-define-change-charset-order)) ((featurep 'un-define) ;; Mule-UCS の設定 (setq unicode-basic-translation-charset-order-list '(ascii japanese-jisx0208 ;; 移動 japanese-jisx0212 ;; 移動 latin-iso8859-1 latin-iso8859-2 latin-iso8859-3 latin-iso8859-4 cyrillic-iso8859-5 greek-iso8859-7 hebrew-iso8859-8 latin-iso8859-9 latin-iso8859-14 latin-iso8859-15 ipa ;; もとはここ chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7 chinese-big5-1 chinese-big5-2 korean-ksc5601 latin-jisx0201 katakana-jisx0201 thai-tis620 ethiopic indian-is13194 chinese-sisheng lao vietnamese-viscii-lower vietnamese-viscii-upper tibetan mule-unicode-0100-24ff mule-unicode-2500-33ff mule-unicode-e000-ffff mule-ucs-unicode-multichar)) (un-define-change-charset-order))) ;; Emacs-22 の utf-translate-cjk-mode の設定例 (mule-ja ML より) (when (fboundp 'utf-translate-cjk-set-unicode-range) (utf-translate-cjk-set-unicode-range '((?\x2e80 . ?\xd7a3) (?\xff00 . ?\xffef) (?\xa7 . ?\xa7) (?\xb0 . ?\xb1) (?\xb4 . ?\xb4) (?\xb6 . ?\xb6) (?\xd7 . ?\xd7) (?\xf7 . ?\xf7) (?\x370 . ?\x3ff) (?\x400 . ?\x4ff) (?\x2000 . ?\x206f) (?\x2103 . ?\x2103) (?\x212b . ?\x212b) (?\x2190 . ?\x21ff) (?\x2200 . ?\x22ff) (?\x2300 . ?\x23ff) (?\x2500 . ?\x257f) (?\x25a0 . ?\x25ff) (?\x2600 . ?\x26ff)))) ●変更履歴 2005年 2月28日 新規 2005年 3月 9日 * egg/anthyipc.el (anthyipc-get-greeting): anthy-agent の '6300d' 形式の バージョン番号に対応。 2005年 5月10日 * 前回の変更が思いっきり間違っていた ^^;;; ので修正。 2005年 8月 4日 * 郵便番号を簡単に引くための対応(add-hook)。 2006年 2月13日 * 単語登録した語句にスペースが含まれていると破綻していたのを修正。 => Anthy-7100b で動作確認。それ以降(現時点では Anthy-7411)は Anthy 側が おかしな感じなので、本体側の修正待ち。 * 郵便番号対応は Anthy-7100b 以降本体に含まれたので意味が無くなったため外 した。 2006年 5月19日 * "nihonngoto[SPC][RET][SPC]qalphabet[SPC][C-g]nokonnzai[SPC][RET]" 対応。 anthyipc-read-string-type1(), anthyipc-read-string-type2() を変更。 2006年 5月24日 * 前回の対応の修正。anthyipc-read-string-type1() の書き直し。 2006年 5月25日 * よくよく考えたら、split-string の挙動が Emacs-22 と Emacs-20,21 とは違 うことを思い出したので、対応。 2006年 6月 6日 * 動詞の単語登録を間違っていたので修正。活用形を anthy-dic-tool に渡して いなかったが、どうやら最初からのようだ。 * 前回の修正で間違え見付け。二文節め以降をひらがな、カタカナにできなかった。 2007年 4月19日 * Anthy の utf-8 対応。Readme の追記。 * elisp の Version の付け方を変えた。 以上! Local Variables: mode: outline mode: numbered-outline numbered-outline-begin-number: 1 mode: auto-fill fill-column: 74 End: