Time-stamp: "May 18 2003"

pogemo

pogemo サーバを利用して Emacs から POBox を使う
(以下に書いたことは、pogemo 以外の pobox サーバを使うときは当てはまりません)

POBoxのインストール (サーバに pogemoを使う)

2002/3/14

前文: 会社で朝から夜まで Emacs + SKK で日本語入力してると、手が疲れて重くなることがある。SKKより打鍵数が少なくて指の負担が少なそうな POBoxを入れてみた。

結果として、手への負担はかなり減ったようですばらしい。しかし、目への負担は増えたかも。候補の位置がくるくる変わるのと、送り仮名のおかしな候補がわりと出てくる (たとえば「おかしな」と入力して「岳しな」とか) 中から正しい候補を「どれだ〜」と選ばなくてはならないから。あと、数字キーで選択してると、ときどき入力ミスでそのおかしな候補を選んでしまう。入力中に Ctrl-h で一文字削除できないのは何故なんだろう。

まず ruby-1.6.7.tar.gz をインストールし、 ruby-bsearch-1.5.tar.gz ruby-progressbar-0.3.tar.gz ruby-romkan-0.4.tar.gz も、

# cp -p bsearch* /usr/local/lib/ruby/site_ruby
というふうに /usr/local/lib/ruby/site_ruby にコピー。
RedHat付属のRPMパッケージで ruby を入れたときは /usr/lib/ruby/site_ruby
migemo-0.32.tar.gz は今回はなくてもいいんだけどインストールした。

pogemoのコンパイルに必要なので、 chasen-sys2.02-ipadic2.1.tar.gz をインストールした。 pogemo.tar.gz を解凍して、そのディレクトリに SKK-JISYO.L.unannotated を SKK-JISYO.L というファイル名にして、置いた。

$ ./autogen.sh
とすると、./configure ファイルが作られる。Makefileも作られるので、
$ ./configure
は実行しなくてもいいかもしれないけど実行する。
$ make
とすると、一回目は失敗した。emacs-texiというファイルが無いとか言われた。
→あらかじめ emacs-20.6-man-jp.tgz を pogemoを展開したディレクトリにダウンロードして、$ make emacs-texi しておく必要があった。
$ make
とまたすると、今度は時間がかかって(21分ほど)成功。
$ make check
成功。
  $ cp -p user-dict.sample user-dict
  $ cp -p phrase-dict.sample phrase-dict
  $ ./pogemo-index user-dict
  $ ./pogemo-index phrase-dict
  # make install
でインストールできた。

  # cp -p *dict *dict.idx /usr/local/share/pogemo/
  $ cp -p user-dict ~
として、作った辞書ファイルをコピーしておく。

  $ cd ~/local
  $ tar zxvf ~/files/pobox-el_1.13.0.tar.gz
  $ mv pobox-el_1.13.0 pobox
として、pobox-elを自分のディレクトリに解凍する。

~/.emacs に設定を書き込む。
(setq load-path (cons (expand-file-name "~/local/pobox") load-path))
(load (expand-file-name "~/local/pobox/pobox-conf.el"))

pobox-conf.el を書き換える。コメントになっているところを一部コメント外す。使うサーバを (server . t) として有効化する。(〜 . t) の「. t」を削除すれば無効化。pogemo辞書のPATHを書き換える。

;; 優先順位および初期使用フラグ
(setq pobox-engine-list
      '((pobox-engine-alphabet . t)
        (pobox-engine-dabbrev)
	(pobox-engine-bc)
	(pobox-engine-pbserver)
	(pobox-engine-pbserv)
	(pobox-engine-pogemo . t)
	(pobox-engine-canna)))
;; pogemo コマンドのパス
(setq pobox-engine-pogemo-command "pogemo")
;; pogemo に与える引数, 主に使用辞書
(setq pobox-engine-pogemo-args-list
      '("-p" "/usr/local/share/pogemo/phrase-dict"
        "~/user-dict"
        "/usr/local/share/pogemo/pogemo-dict"))
;; pogemo サーバが返す候補の数.
(setq pobox-engine-pogemo-max-cands 100)

$ cp -p local/pobox/suikyo/.romaji-kana ~
として、.romaji-kana を書き換え、ローマ字とかなの変換法則を一部変更 (これは必須ではない)。

emacsを再起動して、C-j で POBox起動した。 これとは別にサーバを起動しておく必要などはなく、C-j だけでよい。 とりあえず動いてるぞ。

しかし、家の Emacs21.1 (X,consoleどちらも) では、普通のスピードで入力すると、 Symbol's definition is void: event-to-character と言われて一時的に動作が止まるのはなぜだ? C-gすれば元に戻るし、ゆっくり入力すればいいのだが、困るなあ。会社の Emacs20.7 + Teraterm (RedHatLinux7.1) ではまったく問題なく動いていただけに残念だ。試したところ、同時打鍵に近い速度で入力したときだけ起こるようだ。キーボードの問題かも知れないなあ。と考えてみたが、もしかして マシンが遅いだけ? ... 1文字押すたびに候補が変わるものなあ。Pentium3-600MHz,512MBではまともに動いても、Celeron433MHz,128MB ではだめなのか?

使っていると手のほうで慣れてきて、意識しなくてもエラーのでないゆっくりしたスピードで入力できることもある。ゲームとかしたあとだと、打鍵スピードが早くなっているのかやたらとそのエラーがでる。

Emacs21では、Meta-k を入力(カタカナ変換)するとき ESCは使えなくて Alt-k じゃないとだめだった。Emacs20(+Teraterm)では、ESCで問題なかったんだが。
→X版の Emacsを動かしているときに起こる。console版だと ESCで問題ない。

あと、改行せずに文を書いていると、候補が数行下に表示される。カーソルが画面下のほうにあると候補の表示される位置が画面外に出てしまうことがある。

SKKの設定を全部消した (コメントアウトした) のに、C-xC-j で SKKが起動してしまう。Emacs21では、なんの設定をしなくても skkは起動するとかきいたことがあるけど、それかな? ddskk-11.6なんだけど。→ どうもそれらしい。

lookupで辞書引くときエコーエリア(画面最下段)で日本語が入力できない。POBoxを起動しようと Ctrl-j 押すと検索始めてしまい日本語入力モードにならない。こういうときは SKKを起動してそちらを使ったり、単語をいったんコピーしてペーストするという方法で使える。あと SKKではできていた「インクリメンタルサーチに日本語を使うこと」もできなくなった (使いにくかったが)。これは、migemoを導入すればほぼ解決した。

入力作業の労力軽減

2002/3/30

ウィークディの朝から晩まで Emacs使っていると、左手がちとつらい。Aの横を Ctrl にしているのだが、Emacs使用時間の 2分の1 は Ctrl押してるような気がする。

viper-modeを使ってみようと思った。 M-x viper-mode で起動。viのキー操作だと多少ラクになるようだ。それに viのほうが操作しやすい感じがある。ただ、lessのキー操作のように、spaceキーでスクロールダウン、bキーでスクロールアップ にできたらもっと便利なのだが。

viper-mode で日本語入力で問題発生。POBoxの動作がおかしい。C-w で新語の登録しようとするとアルファベットしか入力できない。[POBox-E] というモードに入ってしまい、かな入力できないこともあった。まだ未完成だからしかたない。SKKなら viper-modeとの協調は問題ないし完成度も高いが、Shiftキーを押さなくてすむ POBoxのほうを今は使いたい。viper-mode はまたの機会にしよう。

Ctrl を左小指の付け根で押すやり方も試してみた。これはずいぶん手はラクになる。まだ慣れてないので、スピードが出ない。しかし、これに慣れてしまうとノート PC が使いにくくなるんだよな。デスクトップでも、A の横より押しにくい。

続 POBoxについて

2002/4/8

Pentium 133MHz, 48MB のマシンに POBox入れてみた。(FreeBSD3.5.1, Emacs20.6, console) 問題なく動く。Symbol's definition is void: event-to-character とかいうエラーはまったく出ない。

変換候補が出てくるまで高速マシンと比べると若干タイムラグがあるけど、先行入力がきく。

POBoxでは、たとえば choushuu と一度に入力して待つと、1秒くらい? 何も出ず、一呼吸空けたあとで 徴収 とかの候補が出てくる。Pentium3 600MHz だと 0.3秒くらい? でほぼすぐ候補がでるので、比べるとやっぱ少し遅い。だがエラーが出るよりはずっとまし。候補が目まぐるしく変わらないので結構好ましく感じた。

とにかく分かったのは、Symbol's definition is void: event-to-character というエラーは、CPUのスピードとは関係ないこと。Emacs21 だからか? と思ったが、Celeron433MHzマシンに RedHatLinux7.2再インストールして、Emacs20.7 に戻しても、Xでもコンソールでもやはりエラーが出て、先行入力どころではなく、高速というか普通の速度でタイピングできない。その FreeBSDから telnetで Celeronマシンに入って emacs使ってもやはりエラーが出るので、キーボードの問題ではないようだ。ソースからコンパイルしたEmacs21でもエラーが出たのだから Emacsの問題でもない。

残る原因は OSか? 会社の RedHat7.2 (Pentium4 1.8GHz)使っても同じエラーが出る。OS の問題である可能性は高い。OSのせいっていうのも曖昧だが。それかマザーボードが i81x のときとか。あるいは、pogemoの検索が遅くなっているのかも。

続々 POBoxについて

2002/4/21

Symbol's definition is void: event-to-character とかいうエラーが出るぞ、といいながら使っていた POBox。emacs-lispには詳しくないが、修正することにした。

上のエラーの意味を今まで考えていなかったが、考えてみると、event-to-character という function がありませんという意味だ。FreeBSDのエラーなしの emacsで M-x help f event [ENTER] すると、 event-to-character という function がある。RedHatLinux7.2 のエラーありemacsで同じことをすると、無いではないか! FreeBSDのほうの説明によると、この function は、'poe' に含まれているという。

FreeBSD の emacs では、
/usr/local/share/emacs/20.6/site-lisp/emu/poe.el
にあった。 中に event-to-character の定義もあった。poe.el 冒頭には、これは APEL の一部であると書いてあったが、APELパッケージは既に入っていたはず。$ rpm -qa | grep -i apel として調べると、やはりインストール済みだ。 $ rpm -ql apelとすればインストールされている場所が分かる。 RedHatLinux7.2では、
/usr/share/emacs/site-lisp/apel/poe.el
に入っている。中を見ると、しっかり event-to-character という function も定義されていた。ということで、~/.emacs に

(require 'poe)

と書くだけで、このエラーは出なくなった。これでまともに使えるよー。

ついでに、poboxの lispファイルを読んでみた。Ctrl-h がバックスペースにならないのが困りものだったのだが、C-b でカーソルを戻して C-d で文字を削除することならできるようだ。実際にできた。[Delete] の機能はあるわけだ。じゃあ、[BackSpace] の機能だって! と思い、[Delete]機能の関数を参考に [BackSpace] 機能を追加した。

Emacs-Lisp には詳しくないので、正しいのか判断はできないけど、まともに動いている。パッチ


itouh