■ Windows版 Emacs 共通の設定
■ Windows Subsystem for Linux の Emacs で利用できる設定


【お知らせ】


<2018/08/12 追記>
最近、mozc_emacs_helper.exe をビルドされた方の情報が次のページにあります。
最新の mozc には src/data_manager/packed/packed_data_manager.gyp が無くなったようで、そのパッチが削除されています。また、ひとつ下のコメントで紹介している rzl24ozi さんのパッチを利用しているので、セッション接続直後 direct モードになる問題が対策された実行モジュールがビルドされるようになっています。独自ビルドされる方は参考とされてください。

<2017/06/08 追記>
rzl24ozi さんの次のページを見つけました。私はまだ試せていませんが、本ページの代わりのものとして利用できそうです。ただし、WSL版 Emacs で Windows の Google日本語入力を利用したい場合には、次のページの方法は利用できません。

<2017/06/08 追記>
本ページの記載内容は古くなってきています。本ページを作成するために参考とした情報の最新のものが次のページにありますので、こちらのページも併せて確認してください。
なお、公開しているバイナリ(mozc_emacs_helper.exe)もかなり前にコンパイルしたものですが、こちらは現在でも問題なく動いています。

<2016/09/13 追記>
mozc_emacs_helper.exe のテストの際に IME を ON にするために入力しているキーを「Hiragana」から「Hankaku/Zenkaku」に変更しました。この対応で、Google日本語入力のキー設定が「MS-IME」以外の「ことえり」などでもテストが通るようになりました。(ただし、「Hankaku/Zenkaku」キーは「Hiragana」キーと異なり、IME の ON/OFF をトグルするキーとなります。必要な場合に一度のみ発行するように注意して利用する必要があります。)

<2015/10/01 追記>
OSS mozc の Wish List が書かれた blog がありました。
http://nyaruru.hatenablog.com/

【本題】



Windows版 Emacs や WSL の Emacs で 「Google日本語入力」と連携可能な emacs-mozc を動かすための mozc_emacs_helper コンパイル編 です。

mozc_emacs_helper.exe の取得のみが目的であれば、次のページからバイナリをダウンロード可能です。かなり前にビルドしたものですが、現在でも問題なく動作しています。

0) 事前に「Google日本語入力」のインストールを行う。

1) 次のページから Visual Studio Community 2013 をインストールする。
(参考)http://www.softantenna.com/wp/windows/visual-studio-community-2014/
※ Visual Studio Community 2013 のインストールでは、最低「Microsoft Foundation Classes for C++」のインストールを行ってください。Language Pack は無くても構いません。

(2017/11/27 追記)上記【お知らせ】にも記載していますが、本ページの記載内容は古くなってきています。現在は、Visual Studio Community 2015 の利用が推奨されています。次のページも併せて参照してください。

2) Cygwin 上で depot_tools.zip をダウンロードし、解凍する。
$ mkdir c:/work
$ cd c:/work
$ wget https://src.chromium.org/svn/trunk/tools/depot_tools.zip
$ unzip depot_tools.zip

3) 作成された depot_toolsディレクトリ を PATH に追加し、gclient を二回実行する。
$ export PATH=`pwd`/depot_tools:$PATH
$ gclient
$ gclient

4) mozc のソースをダウンロードする。
$ git.bat clone https://github.com/google/mozc.git --recursive

5) 作成された mozcディレクトリ に移動し、以下のパッチを適用する。
$ cd mozc
$ patch -b -p0 < src.patch
src.patch は以下のとおりです。 packed_data_manager.gyp のパッチはコンパイルエラーを回避するためのもので、内容は適当です。(というか、どうすれば良いか分からない。)
diff -urN src.orig/data_manager/packed/packed_data_manager.gyp src/data_manager/packed/packed_data_manager.gyp
--- src.orig/data_manager/packed/packed_data_manager.gyp	2014-11-17 19:23:22.000000000 +0900
+++ src/data_manager/packed/packed_data_manager.gyp	2014-11-17 20:02:09.379555300 +0900
@@ -47,5 +47,12 @@
       },
       'includes': [ 'packed_data_manager.gypi' ],
     }],
+    ['branding=="GoogleJapaneseInput"', {
+      'variables': {
+        'dataset_dir': 'oss',
+        'dataset_tag': 'oss',
+      },
+      'includes': [ 'packed_data_manager.gypi' ],
+    }],
   ],
 }
diff -urN src.orig/win32/build32/build32.gyp src/win32/build32/build32.gyp
--- src.orig/win32/build32/build32.gyp	2014-11-17 19:25:33.000000000 +0900
+++ src/win32/build32/build32.gyp	2014-11-17 20:02:52.369617200 +0900
@@ -49,6 +49,7 @@
             '../broker/broker.gyp:mozc_broker32',
             '../ime/ime.gyp:mozc_ime',
             '../tip/tip.gyp:mozc_tip32',
+            '../../unix/emacs/emacs.gyp:mozc_emacs_helper',
           ],
           'conditions': [
             ['use_dynamically_linked_qt!=1', {

6) srcディレクトリ に移動し、次のコマンドを実行する。
$ cd src
$ python.bat build_mozc.py gyp --msvs_version=2013 --noqt --branding=GoogleJapaneseInput
$ python.bat build_mozc.py build -c Release package

7) out_win/Release に移動し、 mozc_emacs_helper.exe が作成されていることを確認する。

8) Cygwin や WSL の環境で次のコマンドを実行し、mozc_emacs_helper.exe が動作することを確認する。
$  echo -e '(0 CreateSession)\n(1 SendKey 1 Hankaku/Zenkaku)\n(2 SendKey 1 97)' | ./mozc_emacs_helper.exe
((mozc-emacs-helper . t)(version . "1.13.1641.0")(config . ((preedit-method . roman))))
((emacs-event-id . 0)(emacs-session-id . 1)(output . ()))
((emacs-event-id . 1)(emacs-session-id . 1)(output . ((id . "14187429124963392915")(mode . hiragana)(consumed . t)(status . ((activated . t)(mode . hiragana)(comeback-mode . hiragana))))))
((emacs-event-id . 2)(emacs-session-id . 1)(output . ((id . "14187429124963392915")(mode . hiragana)(consumed . t)(preedit . ((cursor . 1)(segment ((annotation . underline)(value . "あ")(value-length . 1)(key . "あ")))))(candidates . ((size . 3)(candidate ((index . 0)(value . "あああ")(annotation . ((deletable . t)))(id . 0))((index . 1)(value . "安比")(annotation . ((deletable . t)))(id . 1))((index . 2)(value . "あ")(annotation . ((description . "ひらがな")))(id . 2)))(position . 0)(category . suggestion)(display-type . main)(footer . ((label . "Tabキーで選択")))))(status . ((activated . t)(mode . hiragana)(comeback-mode . hiragana)))(all-candidate-words . ((candidates ((id . 0)(index . 0)(key . "あああ")(value . "あああ")(annotation . ((deletable . t))))((id . 1)(index . 1)(key . "あっぴ")(value . "安比")(annotation . ((deletable . t))))((id . 2)(index . 2)(value . "あ")(annotation . ((description . "ひらがな")))))(category . suggestion))))))
※ Linux で mozc_emacs_helper を実行した場合は、セッション接続直後に hiraganaモード になるのですが、Windows の環境では directモード になるようです。このため、「(1 SendKey 1 Hankaku/Zenkaku)」を挟んでいます。このための対策を「emacs-mozc を動かすための設定(Emacs 設定編)」の設定で行っています。

※ Windows 8.1 では、一回の「Hankaku/Zenkaku」キーの発行だけでは hiraganaモード に移行しない場合があるようです。その場合は次のコマンドをお試しください。ただし、この現象による「emacs-mozc を動かすための設定(Emacs 設定編)」の変更は必要ありませんでした。(※ 2016/10/12 追記: 時間的なタイミングの問題の可能性もあるので、「Hankaku/Zenkaku」キーの発行の後に delay(sleep)を入れることでも解決するかもしれません。現在、Windows 8.1 の環境がない(全て、Windows 10 に upgrade してしまった)ため、確認ができておりません。)
$  echo -e '(0 CreateSession)\n(1 SendKey 1 Hankaku/Zenkaku)\n(2 SendKey 1 Hankaku/Zenkaku)\n(3 SendKey 1 97)' | ./mozc_emacs_helper.exe

9) Windows版 Emacs を使っている方は、mozc_emacs_helper.exe をコマンドパスの通ったディレクトリ(~/bin 等)に配置する。WSL の Emacs を使っている方は、次に進む。

10) Windows版 Emacs を使っている方は「emacs-mozc を動かすための設定(Emacs 設定編)」を、WSL の Emacs を使っている方は「emacs-mozc を動かすための設定(WSL 設定編)」の設定を行う。


<変更履歴>
  • 2014/11/17 このページを作成した。
  • 2014/11/19 mozc_emacs_helper のバイナリを追加した。
  • 2015/07/04 Windows8.1 で検証を行った結果のコメントを追記した。