mozc のカナ配列をカスタマイズする

以前少し触れたことがあるが、僕は日本語入力をカナ入力、それも NeXT カナ配列で入力している。キヤノン販売(当時)が NeXT の日本語版を出した時についてきたキーボードの配列がそれで、英数は US キーボードの配列で、カナはJISカナ配列をキーの少ない US キーボードに合わせて一部修正したものになっている。

NeXT カナ配列は Mac の US キーボード用のカナ配列とも微妙に違うもので、NeXT 以外でこの配列に対応した OS や IME を見たことがない。それなら Mac 配列なりに乗り換えればいいようなものだが、日本語入力を本格的に身につけたのが大学時代に情報処理教育センターの NeXT でやっていたチャットで、忘れがたい思い出と共にあった NeXT カナ配列には拭い切れない愛着があり、いまでもどうにかして NeXT カナ配列を再現して使っている。

NeXT カナ配列による日本語入力を実現する方法は OS 毎に異なる。Windows ではシェアウェアの Keylay00 を使って IME 使用時のキー配列をカスタマイズすることで、Mac では Karabiner で ATOK に入力されるキーを入れ替えることで、Linux では以前は ATOK X for Linux の IIIMF まわりのソースコード(この部分は OSS なのでソースが CD-ROM に同梱されていた)の一部を書き換えてリビルドし、ATOK X の共有ライブラリを差し替えることで、実現していた。

しかし最近の Linux デスクトップ環境では IIIMF を使い続けるのは厳しい状況で、Ubuntu 15.04 から fcitx-mozc に乗り換えた。この時は mozc のローマ字カナマッピングを工夫して NeXT カナ配列を再現してごまかしたのだが、mozc 的にはローマ字入力なので変換候補に意味のない英数文字列がいくつも出てきたり微妙な使い勝手なのでなんとかしたいと思っていた。

また、Karabiner が macOS Sierra に当分対応できないという状況があり、今はアップグレードを保留して凌いでいるものの、いつまでもそういうわけにもいかないので、mozc または Google 日本語入力に乗り換えて、mozc のソースを改造してカナ配列を変更できるのではないか、ということを思いついた。

そういうわけで mozc のソースを斜め読みしつつ関係しそうなところを探してみたところ、だいたい以下のようなことがわかった。

  • fcitx-mozc は src/unix/fcitx/fcitx_key_translator.cc に KanaMap があり、そこを書き換えればよい。
  • emacs で mozc.el を使う場合は src/unix/emacs/mozc.el に US キーボード用のカナ配列キーマップがあり(mozc-keymap-kana-101us)これを書き換えるか、別途キーマップを定義して mozc-keymap-kana に setq してやればよい。
  • Mac では src/data/preedit/mac-kana.tsv を書き換えればよさそう。残念ながらこのファイルは実行時に読み込まれる設定ファイルではなく、ビルド時に Objective-C のヘッダファイルに変換されて実行ファイルに組み込まれるらしい。

ということで、とりあえず Ubuntu 16.04 でかな入力を NeXT カナ配列で入力できるようにしてみた。

$ mkdir fcitx-mozc-build
$ cd fcitx-mozc-build
$ apt-get source fcitx-mozc
$ sudo apt-get build-dep fcitx-mozc
$ cd mozc-2.17.2116.102+gitfd0f5b34+dfsg
(エディタで debian/changelog を修正。バージョン 2.17.2116.102+gitfd0f5b34+dfsg+rna のログエントリを追加)
(エディタで src/unix/fcitx/fcitx_key_translator.cc を修正)
(エディタで src/unix/emacs/mozc.el を修正)
$ dpkg-buildpackage -rfakeroot -uc -b
$ cd ..
$ sudo dpkg -i  *_2.17.2116.102+gitfd0f5b34+dfsg+rna-1ubuntu1.1_amd64.deb

必要なのは fcitx-mozc と emacs-mozc だけなのだが、バージョンを変えたせいで依存関係のしがらみで mozc 関係は全部インストールすることになった。

インストール後、一度ログアウトしてから再度ログインして mozc をカナ入力モードにすると、NeXT かな配列で入力できるようになった。emacs の方も OK。

誰もそのままでは使わないとは思うけど参考になるかもしれないのでパッチを公開しておく。

あとは Mac。それに Windows の方も Keylay00 は今後サポートされないようなので、他のキー入れ替えソフトを使うか、Windows でも改造 mozc に乗り換えるべきか…