Yosemite で Mozc をビルド。当然 Emacs から使う(El Capitan 確認済み)

本ページはかなり古いので、

@TanukiTam さんの[コメント](https://qiita.com/scalper/items/a1ab77ae7b2b06fb3f49#comment-0eca4a44eb3105ae2268) のページがおすすめです。

2020.4.7追記
---
Mozc のビルドでコケる方、 PyObjC が入ってるか確認するとビルドが通るかもしれませんのでご確認を。
私の手元では2環境がビルドが通りませんでしたが、いずれも PyObjC のインストールで解決しました。

macOS 10.15.4
Xcode 11.3.1
Python 2.7.15
Mozc afb03dd

---


Mozc は Emacs 24.3 から使い始めてたのだが、諸事情で環境が変わってしまい、ビルドしようと思ったら、途中でコケる。

ということで、

- Mozc 公式にある [MacBuildInstructions](https://code.google.com/p/mozc/wiki/MacBuildInstructions) 
- [入口と出口:MacのEmacsでmozc.elを使う (Mozcのビルド)](http://igjit.blogspot.jp/2014/04/mac-emacs-mozc.html)

を参考に、ビルドが通るようにしてみた。
これをやる気になったのは、10.10.1 が出るまで不安定だった Japanese IM のおかげかもしれない...


## 環境

- OSX 10.10.1
- Xcode 6.1
- Emacs 24.4

## 環境 その2

- OSX 10.11.2
- Xcode 7.2
- Emacs 24.5.1

## Mozc の trunk を持ってくる

ここは Mozc 公式に従う。

```zsh
cd
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"
mkdir -p ~/src/mozc
cd ~/src/mozc
gclient config http://mozc.googlecode.com/svn/trunk/src
gclient sync
```

## （不要になってたのでここは不要）build_mozc.py にパッチを当てる

build_mozc.py が OSX 対応してた。
インストールページは[こちら](https://github.com/google/mozc/blob/master/doc/build_mozc_in_osx.md)

~~mozc_emacs_helper が不要な方は、[build_mozc.py.diff](https://gist.github.com/guehara/856103d2ba2b55dd6789) の 18 行目だけ適用するっつーことで。~~

```zsh
cd src
curl -O https://gist.githubusercontent.com/guehara/856103d2ba2b55dd6789/raw/02262a4ae3f4eab2f3a6bb61d23c303d78ff23c6/build_mozc.py.diff
patch -p0 < build_mozc.py.diff
```

## ビルド

参考にしたサイトから、必要なコマンドのみ抽出。

```zsh
cd src
GYP_DEFINES="mac_sdk=10.7 mac_deployment_target=10.7" python build_mozc.py gyp --noqt
python build_mozc.py build -c Release mac/mac.gyp:GoogleJapaneseInput mac/mac.gyp:gen_launchd_confs unix/emacs/emacs.gyp:mozc_emacs_helper
```

マシンスペック次第では時間がかかるので、落ち着いて待つ。

## Mozc インストール

公式のまま

```zsh
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
```


## Mozc の動作確認

一旦ログアウトして、
システム設定 -> キーボード -> 入力ソース -> +
と選択する。
英語に、

- 英数 (Mozc)

日本語に、

- カタカナ (Mozc)
- ひらがな (Mozc)
- 全角英数 (Mozc)
- 半角カナ (Mozc)

があればインストールは成功しているので、お好きなものを追加するなり、しないなり。

*入力ソースに追加しなくても、 mozc_emacs_helper からは使える*

*環境設定など、Mozc の設定ツールは Qt で書かれているようで、前述のビルド方法では動作しない。 Qt ありでビルドできたらコメントください...*

*[Google日本語入力付属のツール群でカバーするという手法](http://qiita.com/scalper/items/a1ab77ae7b2b06fb3f49#comment-a1088e5cd3ee17525e89) を教えていただきました。*
@minoruGH さんありがとうございます！


## mozc_emacs_helper の動作確認

ログアウトしたから ITerm 落としたんですけどな人用にディレクトリ変更から。
echo を実行した結果、3行目以降のelispが出力されればOK。

```shell-session
$ cd ~/src/mozc/src
$ echo -e '(0 CreateSession)\n(1 SendKey 1 97)' | out_mac/Release/mozc_emacs_helper
((mozc-emacs-helper . t)(version . "2.16.1924.101")(config . ((preedit-method . roman))))
((emacs-event-id . 0)(emacs-session-id . 1)(output . ()))
((emacs-event-id . 1)(emacs-session-id . 1)(output . ((id . "4165207393716365928")(mode . hiragana)(consumed . t)(preedit . ((cursor . 1)(segment ((annotation . underline)(value . "あ")(value-length . 1)(key . "あ")))))(candidates . ((size . 1)(candidate ((index . 0)(value . "あ")(annotation . ((description . "ひらがな")))(id . 0)))(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)(value . "あ")(annotation . ((description . "ひらがな")))))(category . suggestion))))))
```

Mozc のインストールを忘れてる(or 一旦ログアウトしてない)と

```shell-session
((mozc-emacs-helper . t)(version . "2.16.1924.101")(config . ((preedit-method . roman))))
((emacs-event-id . 0)(emacs-session-id . 1)(output . ()))
((error . session-error)(message . "Session failed"))
```

な感じの出力になるはず。

## mozc_emacs_helper の設置

インストールは Emacs の  exec-path が通った所ならどこでも良いけど、
ここでは /usr/local/bin に

```zsh
cp out_mac/Release/mozc_emacs_helper /usr/local/bin
```

mozc.el も必要になるので、 load-path の通った場所にコピー。
(ここでは ~/.emacs.d/lisp/mozc へ)

```zsh
mkdir -p ~/.emacs.d/lisp/mozc
cp unix/emacs/mozc.el ~/.emacs.d/lisp/mozc
```

## Emacs の設定

```el
(setq default-input-method "japanese-mozc")
(setq mozc-helper-program-name "/usr/local/bin/mozc_emacs_helper")
```

## ac-mozc で更に便利に

入り口と出口を書かれている方が公開されている [ac-mozc](https://github.com/igjit/ac-mozc) もセットで使いたいので持ってくる。
（ac-mozc は、 auto-complete, mozc.el が前提条件）

```zsh
cd ~/.emacs.d/lisp
git clone https://github.com/igjit/ac-mozc.git
```

最低限の設定は以下。

```el
(require 'ac-mozc)
(define-key ac-mode-map (kbd "C-c C-SPC") 'ac-complete-mozc)
```

すごく便利！
10年以上愛用してきた SKK 、今までありがとう...

今回から自分でもコピペしやすいように、基本的にはプロンプトの $ は書かないことにしてみた。
過去の記事も余裕があれば統一すr...統一したい...

# 変更履歴

- 2015.10.06 build_mozc.py へのパッチが不要になってたので更新
- 2015.12.14 環境その2追記。ビルドコマンドを公式に合せ更新、環境設定などのツール群について追記
- 2020.04.07 PyObjCについて追記