endgameにキーレイアウトからも近づくために、Google日本語入力を使ってMacOSでローマ字入力時にcでカ行を打てるようにする

##はじめに
どうも、最近ergodox ezを購入して初めてendgame[^1]という単語を知りました。 @convto です。

endgameにはキーボードにこだわるだけではなくキーレイアウトを最適化することも大切です。
英語はK入力頻度が少なく、日本語はK入力頻度が多いので、どちらでも矛盾しない(=指の負担が最も少なくなる)レイアウトはとても組みづらいです。

他のキーも英語とローマ字で入力頻度の差はありますが、特にKが顕著です。
こいつの取扱は本当に難しく、日本語に寄せると英語での一等地を消費してしまうし、英語に寄せるとかな入力がめっちゃきつくなります。

そのためcでカ行を入力できるように[^2]設定してみました。誰かの助けになればと思い投稿します。

タイトルにもありますが、一応 MacOS X 想定[^3]です

## 英語と日本語でKの入力頻度がどのくらい違うのか分析

どのくらいずれてるかというと、このくらいずれます。ざっくりヒートマップ取りました。
分析には http://patorjk.com/keyboard-layout-analyzer/ を使用しました

### 不思議の国のアリス全文をkeyboardanalyzerに食わせた分析結果
こんなかんじです
<img width="761" alt="heatmap_en.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/2010e96a-dbac-bd0a-aae5-01141892b65c.png">
全147264 文字の中で、Kは1158回入力されました

### 我輩は猫である、をローマ字に変換してkeyboardanalyzerに食わせた分析結果
日本語 -> ローマ字アルファベットの変換は http://kakasi.namazu.org/index.html.en を使いました。
ふつうに `brew install kakasi` で入ります。青空文庫からテキトーに引っ張ってきた全文をkakasiに食わせてanalyzerにつっこみました。

```bash
$ kakasi -Ja -Ha -Ka -Ea -i utf-8 -o utf-8 < neko.txt | pbcopy
```

解析結果です
<img width="761" alt="heatmap_ja.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/c9fb068c-0ebf-bf09-754d-ca99552368d9.png">
全759807文字中、Kは48957回入力されました。(ちなみにaは10万以上です)

### 英語とローマ字の入力キー傾向の違い
まぁ割と違うんですが、特にKの使用頻度が全然違います。他のキーは程度の差はあれ、使用頻度がある程度似通ってるんですけどね...
uも差があるっちゃありますが、もともとuは一等地に置くケースがほとんどで、ちょっと入力頻度が高いものがめちゃめちゃ高くなっても配列へのダメージは少ないです。結局一等地なので。

ようするに日本語ではKは重要なキーですが、英語ではKはどうでもいいキーです。
 
- 英語だとqwertyでいう q,z,t,b,y,n,p,/ あたりの場所に置きたい
- 日本語だとqwertyでいう a,s,d,f,j,k,l,; もしくは weiovm あたりの位置に置きたい

とこのように、キーレイアウトを決める上でお互いに真っ向から対立します

それぞれ入力頻度の差にによってどちらかに寄せてバランスを取るしかないのでしょうが、ソフトウェアエンジニアをやってると、日本語と英語のどちらも入力するので調整にすごく困ります

頑張って調整しようとしていたましたが、あちらを立てればこちらが立たずで、結局どこまで行っても納得はできませんでした。
ので、cでカ行を入力できるようにして解決させました。日本語でもKを打たない方向で合わせた感じですね。

## 事前準備
基本的にことえりだと高度な設定がしづらい(できない？)のでgoogle日本語入力を入れます。
今回はgoogle日本語入力で設定いじってcでカ行を打てるように対応します。なので、試してはいませんがGoogleがIME提供してるOSならどこでも行けるはずです。

また、endgame目指してるMacユーザーだと [Karabiner-Elementsの本家が「英数/かな」の切り替えに対応したみたい - Qiita](https://qiita.com/emonuh/items/ba5f12ef459f3a34f83e) みたいな設定している人も多いと思うのですが、入力ソースの数が多いと？英数キーとかなキーで対象が確定できないパターンがあるらしく、そのあたりも雑に対応したので書いておきました。

### google日本語入力のインストール
おもむろにgoogle日本語入力を入れます. ことえりは滅ぼす
下記リンクに従い入力ソースを追加します
https://www.google.co.jp/ime/

何も考えずにyes yes yesで入ります

### 入力ソースの整理
実行するといろいろな入力ソースが追加されますが、そのままだとkarabinerの英かなが効きません。
多分入力ソースが多いと英数キーとかなキーが対象となる入力ソースを解決できないんだと思います。この辺深掘りするつもりはないので適当に設定しました。これ以外での組み合わせでも英かな効くかもです。

今回は入力ソースを適当に消してUSとgoogle日本語入力のひらがなだけにしたところ動作しました、karabiner勢の方はお気をつけください。
<img width="619" alt="input_sources.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/1a32a300-c7d9-e6c4-a0ca-e8692d9378a5.png">

これで事前準備は終わりです。

## google日本語入力の環境設定をカスタマイズ
さて本題です。やっていきましょう。
先程も言ったとおり、google日本語入力の設定をいじるだけで対応できます。

メニューから `ひらがな(Google) > 環境設定...` を開きます
<img width="278" alt="setting_banner.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/f2faf2f0-d12e-6c21-bed0-6ec9efe9a560.png">
romaji table の customise を押します
<img width="525" alt="settings.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/cbabb23c-7c22-d993-fbff-46d11aa981c9.png">
適当に眺めると ca ci cu ce co のあたりの設定があります
<img width="401" alt="c_pattern.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/5d4906c6-ce42-4791-bc13-da03c7aefea9.png">
ci, ceがそれぞれ 「し,せ」になっています。発音上はそれで正しいですが、これだと結局Kを入力しないと「き,け」が打てません。Kを打ちたくないのでこちらをそれぞれ「け、こ」に変えます
<img width="215" alt="c_after_pattern.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/0a07cc7a-5acf-11b6-a26c-8483b1df6e87.png">
「きゃきゅきょ」のパターンもやっておきましょう。
cya cyi cyu cye cyo あたりの設定を探して、同じくこのように変更します
<img width="238" alt="cy_after_pattern.png" src="https://qiita-image-store.s3.amazonaws.com/0/175975/a8f6d2bb-32f0-58d2-2c06-1cfb4d765bbc.png">
OKを押して編集を終了し、設定を完了します

これで基本的なパターンの設定は完了です。
お好みで「kwi = くぃ」など、他のパターンの再現[^4]をしてもいいでしょう。

## 動作
こんな感じになります
![result.gif](https://qiita-image-store.s3.amazonaws.com/0/175975/01df62ac-68f9-4290-4488-decb6c005df8.gif)

## まとめ
Kなんて対して使わない[^5]ので、もういっそのこと捨てちゃって心置きなくDvorakなりMTGAPなりに行っちゃってください。
また、google日本語入力は結構いろいろとカスタマイズできるので、ローマ字入力をより最適化できます。これを機にいじってみるのもいいかもですね。

vimmerでキーバインドを気にする方は https://github.com/xudongzheng/dotfiles/blob/master/.vimrc などを参考にキーバーインド当て直せば(気合があれば)移行できると思います。

この記事を見てくれたあなたが、すてきなendgameにたどり着けますように！

[^1]: https://scrapbox.io/self-made-kbds-ja/Endgame
[^2]: dvorakユーザーの文化圏では以前から行われていたっぽいです
[^3]: karabinerの話を除けば、google日本語入力が対応してるOSなら多分いけます。試していませんが
[^4]: 個人的には「かきくけこ」「きゃきゅきょ」で十分だとは思います
[^5]: kubectlなど使うときは毎回打たなきゃなのでエイリアス貼ってcに差し替えるといい感じです