2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Anthyを使って文字入力!

最近俺は、VineLinux R4.0(以降R4.0と言う)のDesktop(Gnome)を使ってDeskWorkをやる機会が多くなってきた。MSのOfficeを使いたくな く、OpenOfficeに慣れようとしている。
そこで、愛用しているR4.0のDesktopで重宝してるツールを紹介する。AnthyというFEPである。通常FreeだとCannaとか FreeWnnを使う人が多いと思うが、R4.0ではAnthyが標準インストールされる。Anthyのぱっと見はATOKにそっくりだ。しかし、入力変換方法はちと違う。
俺が見るに、AnthyはFEPのエンジン部分であり、GUIも含めたUI部分はSCIMってー奴が受け持ってるらしい。だから、もしAnthyを個別に セットアップするなら、SCIMもいっしょにインスコすべきであろう。
あと、辞書登録ユーティリティは、霞と言うのが受け持ってて、これもR4.0の場合は標準でインスコされるが、単体でセットアップする場合は手動インスコが必要だ。
図1がAnthyと言うよりSCIM自体のGUI画面である。まるっきり、ATOKと言う感じもしないでもない(笑)。オープンソースで正直ここまでのFEPは初めてだ。俺はATOKXを購入したが、ぶっちゃけ必要なかった(ーー;)

図1

1.Anthyの単体インスコ
コマンドラインから、バイナリパッケージのInfo Viewをすると以下の結果が出たので、

[root@linux_michan scim]# rpm -qa | grep anthy
anthy-7900-0vl3
anthy-el-7900-0vl3
[root@linux_michan scim]# rpm -qa | grep scim
scim-anthy-1.2.0-0vl4
scim-1.4.4-0vl2
[root@linux_michan scim]# rpm -qa | grep kasumi
kasumi-2.0.1-0vl3

多分上記から、

[root@linux_michan scim]# apt-get update
[root@linux_michan scim]# apt-get install anthy anthy-el scim-anthy scim kasumi

これで、パッケージはフルパッケージではないかと思う。


2.Anthyの起動
特に、/etc/init.dディレクトリに起動ファイルが有る訳では無さそうだ。以下を見ると、

[root@linux_michan root]# ps -ef | grep scim
mity 2670 1 0 09:45 ? 00:00:17 /usr/lib/scim-1.0/scim-launcher -d -c simple -e all -f socket –no-stay
mity 2674 1 0 09:45 ? 00:00:00 /usr/lib/scim-1.0/scim-helper-manager
mity 2675 1 0 09:45 ? 00:00:17 /usr/lib/scim-1.0/scim-panel-gtk –display :0.0 -c socket -d –no-stay
mity 2676 2675 0 09:45 ? 00:00:00 /usr/lib/scim-1.0/scim-panel-gtk –display :0.0 -c socket -d –no-stay
mity 2677 2676 0 09:45 ? 00:00:08 /usr/lib/scim-1.0/scim-panel-gtk –display :0.0 -c socket -d –no-stay
mity 2678 1 0 09:45 ? 00:00:00 /usr/lib/scim-1.0/scim-launcher -d -c socket -e socket -f x11
mity 2887 1 0 09:47 ? 00:00:00 /usr/lib/scim-1.0/scim-helper-launcher –daemon –config socket –display :0.0 anthy-imengine-helper 24a65e2b-10a8-4d4c-adc9-266678cb1a38

[root@linux_michan root]# ps -ef | grep anthy
mity 2887 1 0 09:47 ? 00:00:00 /usr/lib/scim-1.0/scim-helper-launcher –daemon –config socket –display :0.0 anthy-imengine-helper 24a65e2b-10a8-4d4c-adc9-266678cb1a38

起動に関しては、SCIMを常駐させることで必要 に応じてanthyを呼ぶ形になってるようにも思える。通常、scim -dのような記載を/etc/X11/xinit/xinitrc.d/こ こいら辺にscimと言うファイルを作り書き込んでおくのが、こいつの起動パターンのようだ。R4.0の場合は、以下のsetimeファイルのセッティングのように/etc/X11/xinit/xinitrc.d/setimeでscim をsetimeコマンドでセッティングしてるようだ。

[root@linux_michan root]# more /etc/X11/xinit/xinitrc.d/setime
省略
    scim*|SCIM*)
        echo “SCIM” >> ${LOG}
        setime scim
        ;;
省略


3.Anthyの設定
現在選択されてるIMEのステータスを見てみる。

[mity@linux_michan mity]$ setime status
環境変数は ~/.vine/system/ime もしくは /etc/sysconfig/ime で設定されています.
—————————————–
[現在の漢字入力システム]
scim
—————————————–
[パッケージのインストール状況]
[SCIM] scim-1.4.4-0vl2
[SCIM-Anthy] scim-anthy-1.2.0-0vl4
[Anthy] anthy-7900-0vl3
[UIM] uim-1.2.1-0vl6
[Canna] package Canna is not installed
[Wnn] package FreeWnn is not installed
[Wnn8 server] package wnn8-server is not installed
[Wnn8 client] package wnn8-le is not installed
[Wnn7 server] package wnn7-server is not installed
[Wnn7 client] package wnn7-xclients is not installed
[Wnn6] package wnn6 is not installed
[Atokx] package atokx is not installed
[AtokX2] package atokx is not installed
[VJE-Delta] package vje-delta is not installed
—————————————–
[環境変数]
EMACS_IME=scim
XIM_PROG=scim
CANNA_SERVER=unix
JSERVER=localhost
WNN8_FRONT_END=kinput2
WNN7_FRONT_END=kinput2
WNN8_SERVER=localhost
WNN7_SERVER=localhost
WNN6_FRONT_END=kinput2
WNN6_SERVER=localhost
—————————————–

上記から、$HOMEのユーザディレクトリの中の imeファイルに以下の記載がされてるので、環境変数が設定されるらしい。

[mity@linux_michan mity]$ more $HOME/.vine/system/ime
EMACS_IME=scim
XIM_PROG=scim
途中省略
GTK_IM_MODULE=scim

さらに、emacs用の設定や日本語入力の設定は 以下のファイルで行ってるようだ。

[mity@linux_michan mity]$ more $HOME/.emacs.el
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; anthy.el の設定
;; (詳しくは /usr/share/doc/anthy-*/doc/ELISP を参照してください)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if (or (equal emacs-ime “anthy-el”)
(equal emacs-ime “Anthy-el”))
(progn
(require ‘anthy)
;; 変換開始キー
(define-key global-map “\C-\\” ‘toggle-input-method)
(define-key global-map “\C-o” ‘toggle-input-method)
(define-key global-map [kanji] ‘toggle-input-method)
(define-key global-map [M-kanji] ‘toggle-input-method)
(global-set-key [?\S-\ ] ‘toggle-input-method)
(global-set-key [zenkaku-hankaku] ‘toggle-input-method)

;; バックスペースでローマ字単位で消す
;(anthy-set-break-into-roman ‘t)
)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; tamago-anthy の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if (and (boundp ‘input-method-alist)
(or (equal emacs-ime “scim”)
(equal emacs-ime “SCIM”)
(equal emacs-ime “anthy”)
(equal emacs-ime “Anthy”)
(equal emacs-ime “egg-anthy”)
(equal emacs-ime “tamago-anthy”))
(assoc “japanese-egg-anthy” input-method-alist))
(progn
(require ‘egg)
;; InputMethod の設定
(setq default-input-method “japanese-egg-anthy”)

;; tamago v4 共通設定
(setq
;; 何回変換すると(自動的に)辞書に反映するか
wnn-auto-save-dictionaries 1
;; nil にすると、alphanumeric が半角入力になるらしい。
its-enable-fullwidth-alphabet nil
;; Backspace で消すときに、かなを入力したローマ字に展開して
;; ローマ字単位で消す?
its-delete-by-keystroke t
;; 外すと操作方法が変わるみたいです。よく分かりません。
egg-mode-preference t
;; “nn” で「ん」を入力
enable-double-n-syntax t
;; “.” で「.」、”,” で「,」を入力。
use-kuten-for-period nil
use-touten-for-comma nil
;; 候補の最後まで行ったら先頭に戻る
egg-conversion-wrap-select t
;; 候補一覧を表示するまでの変換回数、0で非表示
egg-conversion-auto-candidate-menu 2
;; 不正なキーシーケンスを警告する
its-barf-on-invalid-keyseq t)

;; F7 で toroku-region
(global-set-key [f7] ‘egg-toroku-region)

;; egg-anthy.el
(add-hook ‘anthy-load-hook ‘(lambda () (load “egg-anthy”)))

(load “its”)
(define-key global-map “\C-o” ‘toggle-input-method)
(global-set-key [?\S-\ ] ‘toggle-input-method)
(global-set-key [zenkaku-hankaku] ‘toggle-input-method)
(define-key isearch-mode-map “\C-o” ‘isearch-toggle-input-method)
(define-key isearch-mode-map [?\S-\ ] ‘isearch-toggle-input-method)
(define-key isearch-mode-map [zenkaku-hankaku] ‘isearch-toggle-input-method)
(define-key its-mode-map “\C-h” ‘its-delete-backward-SYL)
(define-key its-mode-map “\C-p” ‘its-hiragana)
(define-key its-mode-map “\C-y” ‘its-hiragana)
(define-key its-mode-map “\C-n” ‘its-katakana)
(define-key its-mode-map “\C-k” ‘its-katakana)
(define-key its-mode-map [up] ‘its-hiragana)
(define-key its-mode-map [down] ‘its-katakana)
(define-key egg-conversion-map “\C-g” ‘egg-abort-conversion)
(cond ((eq window-system ‘x)
(define-key its-mode-map [henkan] ‘its-kick-convert-region)
(define-key its-mode-map [hiragana-katakana] ‘its-katakana)
(define-key its-mode-map [muhenkan] ‘its-hiragana)
(define-key its-mode-map [f6] ‘its-hiragana)
(define-key its-mode-map [f7] ‘its-katakana)
(define-key its-mode-map [f8] ‘its-half-width)
(define-key its-mode-map [backspace] ‘its-delete-backward-SYL) (define-key its-mode-map [delete] ‘its-delete-SYL))
((null window-system)
(define-key its-mode-map “\e[17~” ‘its-hiragana)
(define-key its-mode-map “\e[18~” ‘its-katakana)
(define-key its-mode-map “\e[19~” ‘its-half-width)
(define-key its-mode-map [8] ‘its-delete-backward-SYL)
(define-key its-mode-map “\e[3~” ‘its-delete-SYL)))
)
(progn
;; tamago がないときは anthy-el をためす
(if (assoc “japanese-anthy” input-method-alist)
(progn
(require ‘anthy)
(setq default-input-method ‘japanese-anthy)
(define-key global-map “\C-\\” ‘toggle-input-method)
(define-key global-map “\C-o” ‘toggle-input-method)
(define-key global-map [kanji] ‘toggle-input-method)
(define-key global-map [M-kanji] ‘toggle-input-method)
(global-set-key [?\S-\ ] ‘toggle-input-method)
(global-set-key [zenkaku-hankaku] ‘toggle-input-method))))
)


4.使い方

Anthyの入力モードにするには、Ctrl+スペースもしくは、Shift+スペースまたはAlt+半角/全角キーを押せばよい。


5.辞書のメンテ(VineLinuxのAnthyの場合の顔文字作成プログラムを作ってみました)

Anthyの個人辞書は、$ HOME/.anthy直下に作られる。
[mity@linux_michan mity]$ cd $HOME/.anthy
[mity@linux_michan .anthy]$ ls -al

合計 4828
drwx—— 2 mity mity 4096 12月 7日 16:54 ./
drwx—— 46 mity mity 4096 12月 8日 16:16 ../
-rw-r–r– 1 mity mity 11534 12月 4日 13:31 last-record1_default
-rw-r–r– 1 mity mity 97942 12月 8日 17:01 last-record2_default
-rw——- 1 mity mity 0 11月21日 02:28 lock-file_default
-rw——- 1 mity mity 1152920 11月28日 16:57 private-dic.src
-rw——- 1 mity mity 1152920 12月 7日 16:45 private-dic.src.tmp
-rw——- 1 mity mity 2495008 12月 7日 14:29 private_dict_default.tt

単語登録は、SCIMの「辞書メニュー」の「単語 の追加」から行うも良し、直接個人辞書ファイルprivate-dic.srcを以下のようにエディタで編集する のも良いだろう。もちろん、辞書ユーティリティ 霞ちゃんを使うのも良いけど、俺はエディタで辞書ファイルを編集した方が手っ取り早い。

[mity@linux_michan .anthy]$ vi private-dic.src
省略

に こ 1 σ(^^)
品詞 = 人名

に こ 1 Y(^^)ピース!
品詞 = 人名

に こ 1 8->
品詞 = 人名

に こ 1 ☆・。・。★・゜・。・゜☆ミ(*^_^*)ノ彡☆゜・。・゜★・。・。☆
品詞 = 人名

に こ 1 ☆(^^)☆(^。^)☆(^_^)☆(^O^☆
品詞 = 人名

に こ 1 §^。^§
品詞 = 人名

に こ 1 >^_^<・
品詞 = 人名

に こ 1 <・⌒⊥⌒・>

省 略

上記の単語は、ここ の 「anthy_kao」 ってテキストを参考にして顔文字辞書を作ったものである。考えることは皆同じだ(笑)。でも、これってPerlとかでプログラム作って変換した方が早そうだね。作ろうかなぁ~。と言うわけでPerlスクリプトを作ってみました。 ここ からダウンロードできます。EUCタイプとUTF-8タイプの両方を作りました。Vineの場合は、EUCなので間違えないようにしてください。
それでもって、以下の要領で行ってください。

[mity@linux_michan .anthy]$ chmod 755 vine-face-dic-conv.pl
[mity@linux_michan .anthy]$ cat kaomoji.txt | nkf -e >> kaomoji_euc.txt
[mity@linux_michan .anthy]$ cat kaomoji_euc.txt | vine-face-dic-conv.pl >> $HOME/.anthy/private-dic.src

エディタを使って単語登録した場合は、必ず編集後以下のコマンドを実行しなければ辞書内容がアップデートされないので注意すること(ただし、顔文字辞書を作ってファイルが大きくなると単語登録する度にアップデート時間 がめちゃくちゃ長くなるので顔文字登録も程々にしたほうが無難(笑))
[mity@linux_michan .anthy]$ cat $HOME/.anthy/private-dic.src | anthy-dic-tool –load

以上

コメント