HOME > POBox for Emacs Time-stamp: "Feb 05 2003"

POBox for Emacs

pobox
Unix 上の テキストエディタ Emacs で、日本語入力方法 POBox を使用するために必要な作業を説明します。

私と POBox

ケータイでは人気がある様子の日本語入力方法 POBox ですが、Unix界隈ではどうも人気がないようです。

かくいう私は、4年ほど SKK ユーザでしたが、POBox に鞍替えしました。仕事で朝から夜まで日本語ドキュメントを書いていると、SKK は小指を酷使するので疲れたのが一番の原因です。

あと、モードが多いので運指が混乱 (C-j だっけ C-xC-j だっけ?) するのと、変換まちがえたときに C-g を連打すると Emacs が落ちてしまう (これは SKK じゃなくて Emacs自体の問題らしいですが) という WindowsMe もびっくりなことが何度か起きたのが原因です。

SKK のモード こんな感じ、SKKモードの中にさらにモードがあるんですよ
半角英数入力 (普通の Emacs)
    ↑↓
  C-xC-j
    ↑↓
SKKモード
SKKモード
C-j ひらがなモード (変換可能) Shiftとアルファベット →かな から変換
最初に / を押す →英語 から変換
q カタカナモード (変換可能)
l 半角英数入力モード
L 全角英数入力モード
POBox のモード こんだけ
半角英数入力 (普通の Emacs)
    ↑↓
    C-j
    ↑↓
POBox モード

しかし、SKK もよかった..。入力がダイレクトに反映される感覚はかなりよかった。誤変換もかなり少ないんですよね..全然入力語句を解析してないのに。

POBox は入力してる途中で候補が出てくるので、ダイレクト感覚はおちるというか、 いい加減なアバウトな感じです。 入力しても関係ない変換候補がでてくるので、それをばーっと目をとおして どこだ俺の変換したい語句は〜 と探す必要があります。SKK より入力スピードはおちると思います。目も疲れるかも。でも手は随分ラクになりました。

まあ、小指を酷使するのは Emacs 自体がそうですから、 vim に移りたいのぅと思ったりもしましたが、日本語入力に関しては vim、よく分からないんですよね。 canna とかを使う必要があるみたいで。 Emacs のほうがなにかと便利そうで、何年も使用してるし。 で、POBox for Emacs を 2002/2月くらいから使用しています。

余談ですが、SKK が Unix上で使用できる日本語入力方法の canna や Windows上の MS-IME などと比べてよかったのは、語句登録がすごく簡単なことですね。文書入力中にいつでも登録できるし、「サ変動詞」とか「ラ行5段」とか考えなくてすみますから。 あと、辞書がテキストファイルなので、自分の好きなように修正できるのがよかった。 POBox も SKK のそういった長所は継承しています。

POBox の正しい操作方法は、わたしは Windows版 POBox によって知りました。この Windows版はインストールも簡単でよくできているのですが、 現在のところ単語登録ができないので本格使用には向いていません。

POBox のインストール

POBox for Emacs は POBox を開発した増井さんのページで配付されています。しかし、そのページ見てもどうも開発が止まっているようで活気が感じられません。まあ使用に問題はないのでいいんですけど。

インストールも割と手間がかかりますが、ここで詳しく説明したいと思います。というか記録しておかないと自分でも忘れてしまいそうなので。

RedHatLinux 7.3 でのインストールについて詳説します。FreeBSD 3.5.1R についてもあとで少し説明します。基本的に私のためのドキュメントですが、参考になるところもあると思います。

ところで、私は「ん」と入力するために nn と入力する派です。 ですが、POBoxサーバ、クライアントともに「ん」の入力は n となっています。 「ん」を n で入力すると、たまに n' と入力しなくてはならないじゃないですか。 nn なら、いつも nn と入力していればすみます。 たとえば、POBox辞書には「あんい」に対応する入力は an'i しかありません。 わたしは anni と入力したい。

そのため以下では、その設定を修正しながらインストールすることにします。

ファイルをダウンロード

まず、ファイル

をダウンロードします。バージョンは 2002/12/14 現在のほぼ最新です。 pobox-el は、より新しい 1.16.0 も出ているけど試していません。

ルートになって、

# rpm -Uvh sary-1.0.4-1.i386.rpm sary-devel-1.0.4-1.i386.rpm

で sary をインストール。 sary は glib を必要としますが、確認したところ私の RedHatLinuxには最初からインストールされていました。

確認方法
$ rpm -qa | grep glib
glib10-1.0.6-10
glibc-kernheaders-2.4-7.14
glibc-common-2.2.5-34
glibc-2.2.5-34
glib2-2.0.1-2        <-- これは glib のバージョン2 なので、これでもいいかも 
compat-glibc-6.2-2.1.3.2
glib-devel-1.2.10-5  <-- これもいるかも
glibc-devel-2.2.5-34
glib2-devel-2.0.1-2
glib-1.2.10-5        <-- これ

この glib というのは GNU C Library (glibc) とは別物ですよ。GTK 関連のパッケージの一つらしいので、gnome をインストールすればこれもインストールされるかもしれません。

もし入っていないときは、CD-ROM から探すとか rpmfind.net で探すとかしてインストールしましょう。

POBoxサーバ

pobox-1.2.5.tgz ですが、増井さんのページには 1.2.6 があると書いてありながらファイルはないという状態になっていますが、pobox-1.2.5 でも使用に問題はないので、こちらを使用しましょう。

Linux で使用するときは、いくつか修正しないとコンパイルがとおりませんでした。 その修正は以下の pobox-linux.diff にまとめています。 ヘッダやライブラリの PATH が増井さんの環境と異なるので、それを解消するためのものです。 というか configure ってこういうのを解決してくれないのだろうか。
あと、Emacs を起動、終了していると POBoxサーバが停止してしまうというバグを修正しています。Thanks to IME なんとかしろ@2ch unix

$ tar zxvf pobox-1.2.5.tgz
$ cd OpenPOBox
$ patch -p1 < ../pobox-linux.diff
$ ./configure --enable-sary
$ make

このあと変換辞書を、増井さんのページに書いてあるように sary のために staticdic という名前とかするんですが、その前に辞書を自分好みにします。

ところで、変換辞書には 読み込み専用の固定辞書 と、変換結果を記録しておく学習辞書があります。以下で話す辞書とは固定辞書のことです。

まず、この辞書はなぜか同じエントリが複数ありますので、重複エントリを削除します。

#文字コードを EUC にする
nkf -e OpenPOBox/dict/data/fugodic > fugo1.txt

#二重登録単語をリストアップする
cat fugo1.txt | sort | uniq -d > dupe.txt
#二重登録単語を除いた fugodic を生成する
perl diffdupe.pl fugo1.txt dupe.txt > fugo2.txt

次に、辞書にある「ん」を n' ではなく nn で入力するようにします。 n' でも入力できて、なおかつ nn でも入力可能にするようにエントリを増やすこともできますが、 私個人が使用する辞書なので、 n' エントリは削除しています。(スクリプトではその機能はありますが、コメントアウトしてます)

$ perl fugodicnn.pl < fugo2.txt > fugo3.txt

そして、この固定辞書に自分の SKK学習辞書から抽出した単語を付加して完成です (ここは SKK を使っていた人しか関係ないです)。 重複エントリが出ないように重複エントリリストを一度作成して、それを 除くようにしています。

  $ perl skk2pbdic.pl ../.skk-jisyo kanaroma.txt > skk.dic
  $ cat fugo3.txt skk.dic > skkfugo.txt

  $ cat skkfugo.txt | sort | uniq -d > skkdupe.txt
  $ perl diffdupe.pl skkfugo.txt skkdupe.txt > OpenPOBox/server/staticdic 

増井さんのページの「Saryを使う場合は」に書いてあるように学習辞書も作ります。 現在の POBox サーバは実行ファイルと同じ場所に辞書ファイルが存在する必要があるので、 OpenPOBox/server に固定辞書、学習辞書を置いています。

  $ cd OpenPOBox/server
  $ mksary -l staticdic
  $ touch learndic

それでは、インストールです、といってもディレクトリごとコピーするだけですが。 私は、~/local というディレクトリを作り、そこに POBoxサーバ、クライアントとも 入れています。

$ cp -pr OpenPOBox ~/local/

サーバのインストールはこれで完了です。

POBoxクライアント

クライアントをインストールしましょう。 単にコピーするだけでいいのですが、私は変換中に BackScape キーが効くようにハックしました。以下がそのパッチの当てかた。

  $ tar zxvf pobox-el_1.15.1.tar.gz
  $ cd pobox-el_1.15.1
  $ patch -p1 < ../pobox-el_1.15.1.patch

それではコピー。

  $ cp -pr pobox-el_1.15.1 ~/local/pobox-el

nn をデフォルトにするため、dot.romaji-kana をコピーします。

  $ cp -p dot.romaji-kana ~/.romaji-kana

あとは、Emacsのほうの設定です。 .emacs に以下のように追加。

;;; pobox
(setq load-path (cons (expand-file-name "~/local/pobox-el") load-path))
(setq load-path (cons (expand-file-name "~/local/pobox-el/suikyo") load-path))
(setq load-path (cons (expand-file-name "~/local/pobox-el/mell")   load-path))
(setq load-path (cons (expand-file-name "~/local/pobox-el/kakasi") load-path))
(load (expand-file-name "~/local/pobox-el/pobox-conf.el"))

POBox使用

それでは POBox を使用しましょう。

 $ cd local/OpenPOBox/server
 $ ./pbserver

実行ファイル pbserver を実行するときに、辞書ファイルがカレントディレクトリになくてはならないので、
cd local/OpenPOBox/server してます。 学習辞書は一般ユーザでも書き込み可能な必要があるので、実行ファイルを /usr/local とかに置いていません。

以上でいいんですが、毎回こうするのも面倒なので、シェルスクリプトを作成しました。仕事では Linux を何ヶ月も立ち上げっぱなしなのですが、pbserver をとめたときは以下のスクリプト start-pbserver.sh で立ち上げ直しています。

cd ~/local/OpenPOBox/server
cp -f learndic ~/tmp/ 
./pbserver

立ち上げたコンソールで、

okurigana == pat=[iikam]
dictno = 1
dictno = 0
okurigana == pat=[iikamo]
dictno = 1
save dict

というような表示が出ます。 私は GNU screen を使用して仮想コンソールを一つ作り、そこで起動しています。screen とか知らないという場合は、

./pbserver > /dev/null

としておくほうがいいかも。

POBoxサーバの停止は Ctrl-C (SIGINT) でするようです。学習辞書ファイルは、Emacs上で C-j して POBoxモードからぬけたとき、または SIGINT でサーバを終了したときに保存されます。

POBoxサーバを起動したあとは、Emacs を起動して C-j します。何か入力してみて、候補が出てくればインストール成功です。もし候補が出てこなければ、

等が原因だと思います。 POBox モードからは C-j で抜けることができます。そのとき学習辞書が save されます。

FreeBSD のインストール方法

基本的には上と同じです。

ソースコードから

を入れました。glib を入れるのに何かソフトが必要でこまったりしたはず..。 sary は最新版だとエラーがでたので、少し前のバージョンを入れたと思う。 glib は、GTK 関連のパッケージの一つらしいので、gnome をインストールすればこれもインストールされるかもしれません。

ソースから入れた場合の FreeBSD での修正をまとめたパッチも置いておきます。ソースから入れない場合だと、PATH も変わってくるかもしれない。

sary版だと、Pentium 133MHz でも実用的な速度が出ます。Pentium4 2GHz で POBoxサーバ起動したときと比べても特に遜色なかったような。

以前 POBoxサーバとして pogemo を使ったときは Pentium-133 ではかなり遅かったです。 Pentium3 600MHz なら実用的でしたが。あと、pogemo は曖昧入力がききませんが、pbserver だと曖昧入力ができるので、 skd で「速度」という候補が表示されたりします。その機能は使ってないですけどね。

関連ファイルのダウンロード

上に挙げたファイル類をまとめたものです。

pobox-setup-20030205.tar.gz (2003-02-05)


itouh