独自のキーボード配列を編み出す

QWERTYやらDvorakやらColemakやらあるキーボード配列の世界。ファームウェアでこれを自由にできる環境に置かれたとき、みんなの使う配列に合わせる必要があるでしょうか？ いや、ありませんね。すべては自由です。自由であれば、試行錯誤ですね？

私は試行錯誤の末、収束しました。そして今ではずいぶん慣れてきましたので、それをどうやって決めたのか、忘れないうちに記録しておきます。あなたも収束ですか？

# 0. 方針
というわけで、ざっくり以下のような方針を立てました。

* 対象とするのは3行×10列のアルファベット部分
* ローマ字で日本語を入力しやすいことを最優先する
    * かな入力とか覚えたくないんや
    * Dvorakのように母音を片側に寄せたい
* ただ、Vimを使うのでHJKLは自然に押せるようにしておきたい
* 迷ったら以下も適宜考慮する
    * 英語の入力しやすさ
    * QWERTYをそのまま残せるか
    * よく使うキーボードショートカット
* WASDにはこだわらない。ゲームやるときにはレイヤ切り替えて使えばいいので

この方針は[Eucalyn配列](http://eucalyn.hatenadiary.jp/entry/saikyo-interface)に大きく影響を受けており、参考にしつつももう一度イチから配列し直したのが本稿となります。また、ローマ字入力における[アルファベットの頻度調査](http://www7.plala.or.jp/dvorakjp/hinshutu.htm)も参考にしています。

以下では、次に示すキーボードを埋めていく過程を追っていきます。

```
 _ _ _ _ _   _ _ _ _ _
 _ _ _ _ _   _ _ _ _ _
 _ _ _ _ _   _ _ _ _ _
```

ちなみに、結論を先取りすると下記のようになります。

```
 Q , E . F   W M R Y P
 A O U I G   D T K N S
 / X C V B   Z H J L ;
```

それではいってみましょう。

# 1. とりあえずHJKLを置く
おそらくいちばん制限が大きいのはHJKLの配置です。どう配置するかについては、以下のような候補があります。

* QWERTYと同じく横に並べる
* ダイヤモンドカーソル状に並べる
* WASDっぽく逆T字に並べる

それぞれ検討するにあたって考慮したいのは、「日本語ローマ字入力においては、Kの頻度が非常に高く、Hはそこそこ、Jはほとんど使わず、Lはまったく使わない」ということです（SKKだとJとLは頻出なんですが、僕は最近SKKを使うのをやめたので考えないことにしました）。これをもとにそれぞれ検討してみましょう。

## 横に並べる
上段はさすがにカーソル移動に使いづらい、下段はKを押すのが辛くなってしまう……ということで、必然的にQWERTYと同じ配置になります。しかし、これではめったに使わないJやLにいい位置を与えることになってしまうので却下しました。

## ダイヤモンドカーソル
おそらく下記のような配置になるんですが……

```
 _ _ _ _ _   _ _ K _ _
 _ _ _ _ _   _ H L _ _
 _ _ _ _ _   _ _ J _ _
```

非常に頻度の高いKの位置は十分に良い（後述するとおり中指を伸ばすのは簡単）んですが、やっぱりLにかなりいい位置を与えてしまうので微妙ですね。

## 逆T字
前掲のEucalyn配列はまさにこれですね。

```
 _ _ _ _ _   _ _ _ _ _
 _ _ _ _ _   _ _ K _ _
 _ _ _ _ _   _ H J L _
```

非常に頻度の高いKにかなり良い位置を与えていますし、JはともかくLをうまく追いやれていますね。採用です！

# 2. 母音を置く
次は母音を置きましょう。さっきHJKLを右側に置いたので、必然的に左側に置くことになります。もちろん逆にHJKLを左に母音を右に置くという手もあるのですが、後述するAとEの位置の件や、やっぱりHJKLは右手にしたいという理由などから却下しています。

で、どう置くかという話ですが……母音をとにかく押しやすくしたいです。そこで最初に思いつくのが、Dvorakと同じ以下の配置です。

```
 _ _ _ _ _   _ _ _ _ _
 A O E U I   _ _ K _ _
 _ _ _ _ _   _ H J L _
```

ただ、実際に使ってみるとわかるのですが、人差し指を右に伸ばすのは案外やりづらいです。中指を上方向に動かすほうがよっぽど楽なんですね。そこで以下の`*`の位置に母音を置くことにしました。

```
 _ _ * _ _   _ _ _ _ _
 * * * * _   _ _ K _ _
 _ _ _ _ _   _ H J L _
```

どれをどれに置いてもいいのですが、以下を考慮してみます。

* QWERTYではAとEがすでにこの範囲にある
* 日本語ローマ字入力ではEの頻度が最も低いっぽい
    * 英語ではEが卓越しているが……

主に前者の理由から、とりあえず以下のようにしておきましょう。Ctrl+AやCtrl+Eみたいなよく使うショートカットがそのまま使えるのもうれしいですし。

```
 _ _ E _ _   _ _ _ _ _
 A * * * _   _ _ K _ _
 _ _ _ _ _   _ H J L _
```

あとはIOUをどうするかですね。あんまり指針はないのですが、二重母音の頻度を考えるとEとIは同じ指で叩きたくありません。とりあえずIを中指にするのだけ避けて、以下のようにしてみました。

```
 _ _ E _ _   _ _ _ _ _
 A O U I _   _ _ K _ _
 _ _ _ _ _   _ H J L _
```

Dvorakの並びからEを抜いた形になっていますが、打つ指が変わってくるわけですし、それほど意味はないですね……。

# 3. 頻出子音を置く
左手と同じ理由で、以下の`*`の位置には頻出子音を置きたいですよね。Kはすでに決まっているので、残り４つです。

```
 _ _ E _ _   _ _ * _ _
 A O U I _   _ * K * *
 _ _ _ _ _   _ H J L _
```

頻度表を見てみると、子音の頻度は上からNTKSRの順のようですね。というわけで、NTSRを置きましょう。

```
 _ _ E _ _   _ _ R _ _
 A O U I _   _ T K N S
 _ _ _ _ _   _ H J L _
```

正直ここも、どれをどこに置くかにあんまり意味はありません。さきほどと同じように、とりあえず雰囲気だけDvorakに似た形をとってみました。

さらに、上述した子音の次によく出てくるのがYです。拗音にも使うので重要なキーです。人差し指を左に伸ばすのはやっぱり嫌ですね。まだ薬指を上に伸ばすほうがましです。

```
 _ _ E _ _   _ _ R Y _
 A O U I _   _ T K N S
 _ _ _ _ _   _ H J L _
```

# 4. XCVを置く
ローマ字入力において重要性の高いキー配置が一段落しましたので、一旦休憩してキーボードショートカットのことを考えてみましょう。そうです、やっぱりXCVは横に並べたいんですよね。ありがたいことにローマ字入力ではほとんど使うことがないキーばかりですので、QWERTYと同じ場所に置いちゃいましょう。

```
 _ _ E _ _   _ _ R Y _
 A O U I _   _ T K N S
 _ X C V _   _ H J L _
```

# 5. 使わないキーを小指に追いやる
小指の上下はキツいですよね……これも幸いなことに、QWERTYにおいて小指を伸ばす位置にあるのはQとPです（というか、ここは薬指を伸ばすほうが普通か）。Qはまったく使いませんし、Pもまあ、頻度が低いですよね。ここはそのままでいいんじゃないかな。あとは、記号である`/`と`;`も小指を縮める位置に追いやっちゃいましょう。

```
 Q _ E _ _   _ _ R Y P
 A O U I _   _ T K N S
 / X C V _   _ H J L ;
```

# 6. 左にはなるべく子音を置きたくない
左右交互打鍵を目指していたので、左にはなるべく子音を置きたくありません。そういえば、まだ`,`と`.`を置いていませんでしたね。`<`と`>`のわかりやすさも考えて、以下のようにします。

```
 Q , E . _   _ _ R Y P
 A O U I _   _ T K N S
 / X C V _   _ H J L ;
```

# 7. 残りの子音を配置する
残った子音はBDFGMWZです。このうち、QWERTYと同じ位置に置けるBとGはそのまま置いちゃいましょう。また、Ctrl+FとCtrl+Bは行ったり来たりしやすくしたいですので、Fも同じ側に置いたほうがよさそう。いずれも左手になっちゃいますが、幸い頻度は高くありません。

```
 Q , E . F   _ _ R Y P
 A O U I G   _ T K N S
 / X C V B   _ H J L ;
```

残りはDWMZです。ローマ字入力の頻度から言えばMWDZの順らしいのですが、「元に戻す」やZ+HJKLでの矢印に使うZ、Delの代わりによく使うCtrl+D、ウィンドウを閉じるときに使うCmd+Wなども考えると迷うところです。

……ええい！めんどくさい！適当でいいや！！

```
 Q , E . F   W M R Y P
 A O U I G   D T K N S
 / X C V B   Z H J L ;
```

- - -

……なんだかんだ言いつつエイヤで決めちゃったところもあるのですが、現在はこの配列で落ち着いています。IOUあたりやDWMZあたりは未だにこれでいいのか迷うところはあるのですが、慣れてしまいました。

とはいえ、なにか良い理由づけが見つかれば変更もやぶさかではありません。ですからみなさん、みなさんのキー配列を教えてください。収束したらぜひ教えてください。

ただ、これによってなにかいいことがあるのかというと……わからないですよね……。