Windows8.1 で boiled-egg 風な入力を実現する方法

スグレモノ (レビュー・評価・評判・口コミ)
この記事は約5分で読めます。

昔々,UNIX で Emacs を使っていた学生時代に boiled-egg を使っていた.
(※boiled-egg とはアルファベットと日本語を両方打ちたい場合に重宝していたもので,要はローマ字で打ち込んでいって漢字にしたいところでキー(Ctrl-jなど)を押して変換できるというもの.プログラムや Tex などを書くときにはかなり便利.)

就職してから,MS-Windows 一色になっていまい,その入力のしやすさから離れざるを得ない状態になっていた.
幸い,xyzzy というほとんど Emacs と使い勝手において,遜色ないエディタを作ってくださった方がいたので,ずっとそれで来ていたが,やはりプログラムをするようになると,boiled-egg があったらなあと思うことがしばしばであった.

NTEmacs
Windows 上で動いている NTEmacs と VMWare で動く mozcサーバーを使って漢字変換しているところ

久しぶりに探してみると,やっぱり,boiled-egg の使いやすさにひかれていた人達がいることは分かるのだが,みな UNIX 使っているようだった.

なんとかして,実現できないかと考えると,「UNIX 使えばええやないか?」ということになるのだが,メーラーだけが今は Edmax から離れられないのである.
Emacs でメールをやり取りするには辛すぎるほどの量なので,これだけは無理.

ということはやはり,Windows で実現するしかない.

ふと,VMWare に UNIX (FreeBSD) を入れて,その上で Emacs 使えばいいなということに気づいた.
NFS でマウントすれば,Windows 側のファイルにもアクセスできるので,これで何とかなるかと思ったが,Edmax の外部エディタ指定でローカルファイルを渡していることに気づき,ここで万事休す...

折角,XMing なるWindows 用の Xサーバーもあるし,便利な世の中になったのになあ,と思いつつ,やっぱり無理かと諦めようとしていた.

それでも,mozc を動かし,XMing の Emacs で動かすところまではなんとか設定出来たのでもう少しなんとかならないかと考えていた.

久しぶりに本物の Emacs を使ってみると,やはり高速な xyzzy と違って,(よく言えば)重厚感がある.

こうなったら,「Windows版の Emacs を動かし,この mozcサーバー と通信できないのか?」と思って,調べてみたら,やっぱりやっている方がいるようだった.

ただし,ここで使っている Emacs は gnupack なるものに入っているものらしく,自分でやってみたが,今一つうまく動かない.
cygwin は既に入れてあるので,NTEmacs を入れて,この方の記事を参考に動かせないかとやってみたところ,試行錯誤の上になんとか動いたので,ここに備忘録として書いておこうと思う.

環境と入れたもの.
・OS は Windows 8.1
・VMWare
・FreeBSD 10.1R (VMWare に入れた.)
・pkg でインストールしたのは mozc が使える Emacs
pkg search emacs とかで探すとよい.
 他に xorg open-vm-tools など.
NTEmacs emacs-24.4-IME-patched-generic-cpu.zip

方針としては,google に聞きに行く方式ではなく,VMWare で mozcサーバーを動かし,Windows の NTEmacs と通信させて,boiled-mozc を動かす方式を取りたいと思った.
こういうもの(思いっきり個人の趣向がわかってしまうもの)はスタンドアローンで動かしたい.打っている内容がすべて筒抜けというのはなんだか気持ち悪い.
別に mozc にこだわっているわけではないが,新しもの好きなのでとりあえず使ってみたいということだ.

emacs-mozc を動かすための設定(サーバ準備編)」のページが大変参考になった.
ここは Vagrang と VirtualBox を使って行っているが,よく読んでみると,やっていることとは VMWare でも出来そうだったので,VMWare でやろうと思った.深い理由はない.既にインストールしてあったからだ.

しかし,続く「emacs-mozc を動かすための設定(emacs 設定編)」のページで思いっきりハマった.

(setq mozc-helper-program-name “mozc_emacs_helper.sh”)
で,mozcサーバーのコマンドを打ち込むスクリプトを指定するのだが,これが動かない.
散々,悩んだ挙句,もしかしてこの Bourne Shell系でしか動かないこの mozc_emacs_helper.sh がそもそも Emacs から動いていないのではないか?ということに気づいて一気に解決した.(echo の仕様が違うので,tcsh とかではそもそも動かない.)

もともと,mozc_emacs_helper.sh は

#!/usr/bin/env bash
ssh ユーザ名@xxx.xxx.xxx.xxx mozc_emacs_helper "$@"

のような形式になっていたが,mozc_emacs_helper.bat と Windows のバッチファイルとして書き換えた.

@echo off
ssh ユーザ名@xxx.xxx.xxx.xxx mozc_emacs_helper %*

ここで,xxx.xxx.xxx.xxx は VMWare のIPアドレス.
ユーザ名は ssh するための FreeBSD のアカウント.
ssh-keygen で鍵を作ってパスワードなしで入れるようにしてある.

そして,当然先ほどのページにあった
(setq mozc-helper-program-name "mozc_emacs_helper.sh")

(setq mozc-helper-program-name "mozc_emacs_helper.bat")
として書き換えた.mozc_emacs_helper.bat はパスの通ったところに置く.

これで動いた.ちょっと重いが,昔の boiled-egg の感触が戻って来て感動した.
皆さんに感謝!です.

emacs がそのままだと使いにくすぎるので設定を加えたがそれも記録しておくが,長すぎるので次の記事へ.