日本語入力時だけDvorakJPにする設定を使い始めて約4年になるので紹介

PC用キーボードは数多くの製品がありますが、そのほぼ全てがQWERTY配列と呼ばれるキー並びになっています。もちろん、その中でもバリエーションは豊富にありますが、中心になるアルファベットの並びは同じです。

QWERTY配列よりも入力効率が良い配列がある、という言説は、PCに慣れ親しんだ人なら聞いたことがあるのではないでしょうか？ そして、まことしやかに囁かれながらも、QWERTYではない配列を触ったことがある人は案外少ない気がします。

この記事では、筆者がもう4年ぐらい試している「英字入力がQWERTYのまま、日本語入力をDvorakJPにする」ハイブリッド設定について書きます。

- なぜそんな設定をするのか。利点は？
- 混乱しないのか？
- （Macでの）やり方

などなど、筆者の経験について紹介していきます。

キーボード配列は、「エディタ」「きのこたけのこ」のように揉めやすいネタだと感じます。筆者は本記事で紹介する設定が比較的快適だと感じているので紹介しますが、同時にこれが最善だと信じているわけではないことを付記します。

## 背景知識
DvorakやColemak等のキーボード配列についての解説は、今回改めて書くまでもなくインターネット上に大量にあります。とはいえ、一応この記事（と記事からのリンク）だけ読めば理解できるように概要を整理し直してみました。

### QWERTYの何がまずいか
良いキー配列について考えるためには、一つのやり方として、入力するアルファベットの使用頻度と運指コストについて考察する方針があるようです。

英文で、どのアルファベットをよく入力するかの頻度は、昔からよく調べられています[^letter-freq]。

[^letter-freq]: 頻度分析は、古くは原始的な暗号を解読する際に用いられたりしたようです。サイモン・シンの『暗号解読』は読み物として面白いのでおすすめです。

![English letter frequency](https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/English_letter_frequency_%28frequency%29.svg/960px-English_letter_frequency_%28frequency%29.svg.png)

これによると（uを除く）母音とt, n, s, hなどが高頻度で出現するみたいです。26文字中、eとtだけで全体の20%を占めています。平均的には5文字に1文字はe, tになるのは少し驚きです。

日本語をローマ字入力をする場合についても、同様に頻度を調べた方がいます。
http://www7.plala.or.jp/dvorakjp/hinshutu.htm

これによると、母音がよく入力されるなど、日本語でも傾向はある程度似ていますが、英文と違いu, kが比較的よく使われるなど差異もあります。

さて、よく使うキーほど打ちやすい位置にあるなら、それは良いキーボード配列と言えるはずです。キーボードで打ちやすい位置とは、中段のホームポジションだとされます。なぜなら指を大きく動かさずに打てるからです。以上の前提を踏まえて、改めてQWERTY配列を眺めてみます。

![QWERTYキーボード](https://upload.wikimedia.org/wikipedia/commons/5/54/Kl_qwerty.png)

頻出のtやeが中段ではなく上段にあります。また、それほど使用頻度が高くないj, k, dなどが中段の打ちやすい位置を占めています。したがって、この節の観点だとQWERTY配列はそれほど優れていないことになります。

### QWERTY代替
QWERTYの欠点を補正するべく、代替のキー配列が多数提案されています。有名なものにDvorak, Colemak, Workman, Normanなどがあります。

https://qiita.com/miyaoka/items/4f363059e831bd003775

http://xahlee.info/kbd/dvorak_and_all_keyboard_layouts.html

https://normanlayout.info/compare.html

詳細な解説はリンク先のページがとても詳しいので省略します。基本的な考え方としては、tやeなど頻出のアルファベットを中段に移動させることで、運指コストを下げるように設計されているようです。

※ 実は、tとeを中段に入れ替える**だけ**でも、入力効率はそれなりに向上するという主張があります。[Minimak](http://www.minimak.org/)として知られるQWERTYからの変更数を最小化するアプローチです。

## QWERTY代替を使い始めたモチベーション

普通のキーボードを使った普通の文字入力を、より優れた文字入力インタフェースに改良する試みは、いろんな人がやっています。中には、物理的なキーの配置から再考する大胆な一派もあるようです。

https://www.itmedia.co.jp/news/articles/2005/01/news020.html

筆者もまた、速く効率的な文字入力方式を追い求めるのは大切なことだと感じていました。キーボードによる文字入力は今後もしばらく廃れなさそうですから、しばらく練習して効率が数%ぐらい改善するだけでも元が取れそうだなーとも想像していました。

とはいえですが、懸念点もありました。

- プログラマをやっていると、稀ながらたまに別のPCで作業するタイミングがあります。そういう時に非標準的な物理キー配置を使う入力に慣れていると困りそうだと考えました
- QWERTY代替配列はショートカットやコマンドの類（例えばhjkl移動やCtrl-cでのコピーなど）の物理位置が大きく変更されてしまうのは不便だと考えました
  - もちろんローカルPCであれば、キーバインドを調整すれば運指を変えずに済みます
  - ただ、筆者はサーバサイドの開発もするので、例えばssh先のvimでキーバインドが普段と違って大混乱する、みたいなのは嫌だなと考えていました

ここで改めて、自分がPCを使うときのことを思い出してみました。

- プログラミングで文字を大量入力することはあまりない
  - どちらかというと、考えてる時間のほうがずっと長い
- 日本語は普段から大量に入力する
  - Slack、技術文章の執筆、PRレビュー、ソースコードへのコメント、Twitterなど
- 英文は入力しないとまでは言わないが、それほど多くない

つまり、筆者の場合に改善したいのは、主に日本語入力だと考えました。前述の懸念点から、キーボードの物理的な配置はごく普通のものを前提にした上で、どうしようか考えていた記憶があります。

しばらく悩んで採用した方針は、**日本語入力モードの時だけキー配列をQWERTY代替にする**ことでした。これなら、日本語入力の効率が上がるはずですし、英字入力モードにすれば普通にショートカットが使えます。また、QWERTY配列を使い続ける以上は、ちゃんと覚えておけるはずなので別の環境でも困らないはずです。

さて、さまざまな代替キー配列がある中でDvorakを選んだ理由ですが、まず実績が多数ある事を重視しました。Dvorakはおよそ100年前に発明された配列で、よく枯れていて、少なくともQWERTYよりは優れているとする評価が固まっているように見えました。

もう一つの理由は、日本語ローマ字入力にDvorakを適用した場合について、DvorakJP（後述）によってよく検討・補強されていたように見えたからです。

現代では「Dvorakよりさらに優れた」とされる様々なキー配列が提案されています。しかし、多くの提案は海外発祥のもので、日本語ローマ字入力と組み合わせた場合にどうなるのか、深く評価されていないように感じていました。
例えばですが、日本語で「か」行は比較的頻出ですが、Minimak等はkが非常に打ちづらい位置に配列されています[^qwerty-k]。その点DvorakJPは「か」行にcキーを使えるように割り当てることで問題を軽減しています。

[^qwerty-k]: この点だと、むしろQWERTY配列は優れているとまで言えるかもしれません。kがとても良い位置にあるからです。

そんなわけで、日本語入力時にはDvorakJPを採用することにしました。

### DvorakJP

DvorakJPは、Dvorakをベースに、日本語ローマ字入力をする場合に便利なルールをいくつか追加したものです。

http://www7.plala.or.jp/dvorakjp/dvorakjp.htm

ルールの詳細は本家（？）ページを読んでいただくといいと思います。

- kキーのかわりにcキーも使えるようになっている。Dvorakではkは不便な位置にあるので、cを使えることで「か」行が大幅に打ちやすくなった
- 普通のDvorakだと日本語入力時に左手が忙しくなる（たぶん母音の入力比率が高いから）ところ、語尾の二重母音と撥音に専用キーを割り当てることで負担削減している

などなど、日本語入力時に発生する特有の問題をDvorakJPはうまく処理してあります。

## Macでの設定方法

Google日本語入力のローマ字テーブルをDvorakJPに置換するファイルを有志が配布しています。これを使うと簡単に導入できます。

https://github.com/shinespark/dvorakjp-romantable

入力ソースにDvorakを追加した上でGoogle日本語入力を（command+spaceキーで）選択すると、DvorakJPによる入力ができます。その状態で入力方式を（Dvorakではなく）英字に戻すと、command+spaceでQWERTYとDvorakJPを往復できる状態が作れます。

## 約3年を経ての経験

### 学習曲線はどうだったか

最初（2018年1月ごろ）はまともに入力ができず、壁紙をDvorakのキーレイアウトの画像に差し替えて練習していました。デスクの壁にもレイアウト画像を貼っていた気がします。

![start-dvorak.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64680/53674de8-e373-1351-3096-ea652e0de2d1.png)

あまりにも入力が遅いので当然お仕事などにも支障があり、特に素早く入力したいSlackチャット中などの局面では、普通のQWERTYに一時的に戻して操作していました。それ自体は、Mac標準のInput MethodをQWERTYのままにしておくことで、すぐに切り替えることが可能でした。

ちょっと遅いながらも現実的な速度でタイピングできるようになるには、半年以上かかった気がします。2年以上も経つと、QWERTYと同等かそれ以上の入力速度になっていたと思います（ただし、もともと入力はそれほど早い方ではありません）。

### 実際に入力効率は良くなったか

まず、やや手が疲れづらくなった気がします。

入力効率が上がったのも感じます。安価なキーボードをRealforceに替えたときのような劇的な改善ではないですが、ひと回りほんのり良くなった感じでしょうか。体感だと10-20%ぐらい効率upの雰囲気です。

### 二つのキー配列を混ぜて混乱しないのか

紹介したスタイルで面白いのは、Dvorak日本語入力とQWERTYの英字入力を、まったく混同しないことです。二つの配列では多くのアルファベットの位置が違うのですが、それ起因で打ち間違えることはありません。

![mix-input-demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64680/bf10c0c7-da07-9ba9-4aa4-bdfff66b04fe.gif)

こんな風に、英字入力と日本語入力を混ぜても、特に不都合は感じていません（ちなみにこのgifは1.5倍速になっているので本来の入力はもっと遅いです）。

関連してもうひとつ面白いのは、Dvorakでの日本語入力に慣れたにもかかわらず、Dvorakでの英字入力にはそれほど慣れなかった事です。全くできなくはないのですが、入力はとても遅くなってしまいます。

これらの体験は、論理的にはかなり奇妙なことです。なぜなら日本語ローマ字入力はローマ字を介しているので、アルファベットがどこにあるか覚えていないと成立しないはずだからです。ちゃんと手がローマ字の位置を覚えているのだとすると、なめらかにDvorak英字入力できてもよさそうなものです。

なんとなくですが、人間の脳はローマ字入力であってもローマ字を介して運指処理をしているわけではないみたいに感じています。「『か』は『ca』だから、Dvorakではあのキーとこのキーを押そう」ではなく、「か」から直接指がc, aの位置に伸びる感じです。アルファベットを介して考えていないので、英字入力の際には手間取ってしまうのかもしれません。

ちなみに、QWERTYでの日本語入力をやる頻度が減ったので、入力が少し遅くなりました。感じ方としては、ついうっかりDvorakJPのように指が動いてしまうみたいです。もちろんQWERTYでの英字入力は慣れたままなので、これも冷静に考えると不思議です。

筆者は、「人間がなぜキーボードを打てるようになるのか」の理論を分かっていないので、いつか識者に聞いてみたいなと思っています。ほとんど同じタスクに見える英字入力と日本語入力では、使っている脳の部位（？）とかが別だったりするんでしょうか？ 自分の身体のことなのに理由がわからず変な感じです。

## 類似したアプローチ

Dvorakだとショートカットが壊れる問題を回避する方法として、修飾キーを押している間だけ配列をQWERTYにする設定をしている方がいます。

https://qiita.com/ellreka/items/d065f3f41a8a6bc1d77c

このやり方だと、英字入力の際にもDvorakの効率性を享受できつつショートカットも壊さずに済むので、なかなか合理的に感じます。この修飾キーを使う方式自体は、Macでは`Dvorak - QWERTY ⌘`として標準に組み込まれているようです。

> Dvorak - QWERTY ⌘: Commandキーを押したままにしたときに、一時的にレイアウトをQWERTYに変更します。
> https://support.apple.com/ja-jp/guide/mac-help/mh27976/mac


## まとめ

キー配列のカスタマイズは、プログラマが行き着く先の1つなのかなと思っています。特に比較的最近はキーボード熱というか、キーボードのプログラマブル性が強化されたのを活用したり（c.f ErgoDox）、物理キーボードを自作する界隈が盛り上がっていたりするのを見かけます。

筆者は製品レベルで配列を変えるような大胆な冒険をしませんでした。逆に言うと、普通のキーボードがあれば本記事のスタイルを試すのは簡単なので、試し始めるハードルは低いです。

この記事でキーボード配列に興味をもたれた方がもしいれば嬉しいです。

## 関連記事・参考リンク

- https://qiita.com/miyaoka/items/e9118f01f924beb56b1d
- https://qiita.com/miyaoka/items/4f363059e831bd003775
- http://xahlee.info/kbd/dvorak_and_all_keyboard_layouts.html
- https://normanlayout.info/about