関東Emacs勉強会というのがYAPCの裏番組であったのですが、そこで興味深いEmacsの拡張が発表されていました。
ac-mozc.elというGoogle日本語入力のOSS版であるMozcをEmacsのIMEとしてモードレスで利用するための拡張です。
これをさっそくMacで利用したいところなのですが、どうやらコンパイルやビルドがうまくいかないことがあるようです。逃げ道としてVagrantの上で稼働しているLinuxでemacs_mozc_emacs_helperから先を提供するというものがあるらしいのですが、さすがにIMEのVMを常時立ち上げておくのは嫌だなぁ。と思い調べてみました。
幸いにも、自分の環境ではうまく動いたので、その方法を共有したいと思います。
追記:その後、homebrewでインストールできるようにしました。
モードレスとは?
みなさんは普段、日本語の入力と英語の入力をする時にIMEをON/OFFを切り替えているのが大多数だと思います。このON/OFFの切替をせずに英語と日本語を入力していくことを「モードレス」と呼びます。実際動いている動画は以下になります。
EmacsでMozcを利用してできるということなので、さっそく試してみるため環境を構築しました。
mozc_emacs_helper込みでmozcをmacでビルド
基本的にはac-mozc.elの開発者である@igjit氏が公開している手順をベースにして手動で変更手順を加えています。
mozcのソースなどを一式揃える
$ cd ~/
$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools
$ export PATH=`pwd`/depot_tools:"$PATH"
$ mkdir -p ~/src/mozc
$ cd ~/src/mozc
$ gclient config http://mozc.googlecode.com/svn/trunk/src
$ gclient sync
これで~/src/mozc/src
にmozcのソースが揃います。
ビルドスクリプトを修正する
~/src/mozc/src/build_mozc.py
がビルドスクリプトなのですが修正します。
Index: build_mozc.py
===================================================================
--- build_mozc.py (revision 326)
+++ build_mozc.py (working copy)
@@ -214,6 +214,8 @@
# Include subdirectory of win32 and breakpad for Windows
if options.target_platform == 'Windows':
gyp_file_names.extend(glob.glob('%s/win32/*/*.gyp' % SRC_DIR))
+ elif options.target_platform == 'Mac':
+ gyp_file_names.extend(glob.glob('%s/unix/emacs/*.gyp' % SRC_DIR))
elif options.target_platform == 'Linux':
gyp_file_names.extend(glob.glob('%s/unix/*/*.gyp' % SRC_DIR))
# Add ibus.gyp if ibus version is >=1.4.1.
修正内容は対応していないMacのプラットフォームを追加してあげます。この差分が見づらければこちらも参考を参考にしてください。
ビルドを実行
ビルドスクリプトの修正が終了したらビルドをしてくだけです。
$ python build_mozc.py gyp --noqt
$ python build_mozc.py build_tools -c Release
$ python build_mozc.py build -c Release mac/mac.gyp:GoogleJapaneseInput mac/mac.gyp:gen_launchd_confs unix/emacs/emacs.gyp:mozc_emacs_helper
ビルドしたファイルを配置します。
$ sudo cp -r out_mac/Release/Mozc.app /Library/Input Methods/
$ sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Converter.plist /Library/LaunchAgents
$ sudo cp out_mac/DerivedSources/Release/mac/org.mozc.inputmethod.Japanese.Renderer.plist /Library/LaunchAgents
ここでMacを再起動。
動作確認
再起動したら動作確認をします。
こういう風に表示されたらmozc_emacs_helperが動いてます。
ac-mozc.elの設定
mozcとmozc_emacs_helperを動作させる環境が整ったのであとはEmacsの設定です。
(load "~/src/mozc/src/unix/emacs/mozc.el")
(setq default-input-method "japanese-mozc")
(setq mozc-helper-program-name "~/src/mozc/src/out_mac/Release/mozc_emacs_helper")
インストール手順が本記事の通りであれば、この場所に配備されているのでmozcに付属しているmozc.elを利用してください。ディレクトリなどが違う場合は適時修正をしてください。
Caskを利用しているので設定ファイルにac-mozc.elを追加。
(depends-on "ac-mozc" :git "https://github.com/igjit/ac-mozc.git")
Cask以外を利用しているようであれば、ac-mozc.elをロードできるところにおいてください。
(require 'ac-mozc)
(define-key ac-mode-map (kbd "C-c C-SPC") 'ac-complete-mozc)
(require 'org)
(add-to-list 'ac-modes 'org-mode)
(defun my-ac-mozc-setup ()
(setq ac-sources
'(ac-source-mozc ac-source-ascii-words-in-same-mode-buffers))
(set (make-local-variable 'ac-auto-show-menu) 0.2))
(add-hook 'org-mode-hook 'my-ac-mozc-setup)
こんな感じでac-mozcをロードして、org-modeで使えるようになります。僕はこれにmarkdown-modeなどを追加しています。
まとめ
今まで、あまりモードレスに魅力を感じていなかったのですがmozcということで試してみたくなりました。他の理由として、現在利用しているATOKのバージョンが古いことと、開発元であるジャストシステムが個人情報の件で印象が悪くなったためこれを機会に乗り換えるのも良いかと。
この記事もac-mozc.elを利用して書いています。非常に面白い拡張だと思います。ぜひ使ってみてください。気に入った人はGitHubでスターをつけてあげてください。