Ergodoxのメリット、デメリット



Ergodoxに大分慣れてきたので、慣れきってその前の感覚が薄れる前に経験をまとめる。なお購入したのはErgodox EZ。税込みで33000円ほど。注文してから一週間ほどでUPSで届いた。


# キーの選択

デフォルトの茶軸互換を選択。自分ごのみのキータッチで不満は全く無い。自分の経験ではHHKB Type-Sのキータッチが一番良かったが、この茶軸互換でも全くの許容範囲内。快適に打鍵できる。


# ティルト、パームレスト、姿勢

ティルトの最適な調整は個人の体格、姿勢によって異なる。自分は試行錯誤の結果、中央から端にゆるやかに傾斜をつけるにとどめ、付属のパームレストを併用することにした。左右のキーボードの間はそんなに開けたりはしていない。せいぜい間にコーヒーカップやスマートフォンを置ける程度。ノートを広げられるようなスペースが取れることを期待していたが、そうすると意外と打鍵しづらかったのでやめている。あくまで腕をゆったりとさせて自分にとって自然に手を下ろした先に設置するようにする。ワーキンチェアの肘掛けに腕を乗せて、その先にティルトで目一杯浮かせたキーボードを配置するスタイルも試したが、腕が早々にしびれてきたりしてこれも意外と打鍵しづらかった。

また、キーボードを奥に傾けすぎると、最下段のキーの角に指があたって押すと痛くなるので、ある程度水平にせざるを得ないという制限がある。

ティルトの調整には6角レンチが必須。製品に付属していないので、事前に用意すること。また片側のキーボードにつき3コーナーしかティルトがついていないので、うまく調整をしないとキーボードがグラグラしてしまう。

うまく調整すれば、姿勢が楽になって長時間の打鍵が苦ではなくなる。そして、肩こりと首のハリがErgodoxにしてから完全に解消された。これがErgodoxの一番のメリット。


# 物理キー配置
 
Ergodoxの物理キー配置は、特徴的な親指の島に目がいくが、それ以外にも標準のキーボードとは大分異なるので、それらを理解して受け入れないと購入後にこんなはずではなかったと後悔するだろう。

まず、一般的なキーボードとは異なり、キーがほぼ格子状に配置されている。慣れるとこちらの配置のほうが明らかに打鍵しやすいのだが、そうすると今度は世に出回っている一般的なキーボードに違和感を感じて打鍵が難しくなる。

また、一番困ったのが、右側のキーボードの右端のキーが不足しているためにキーマップを変更せざるをえないこと。例えば(QWERTY配置の)"\,=[]"、そして矢印キーにあたる物理キーがない。これはErgodoxのキーが左右対称になっていて、一般的なキーボードがそうなっていないギャップだ。Ergodoxではそのかわりに中央側に一列分キーが配置されているのだが、これにどうキーマップするかは使用者次第だ。この時点で従来のキーボードで慣れ親しんでいたキーマップを変更せざるを得ないため、もしあなたが現在のキーマップに不満を感じていなかったらこれは強いストレスになるだろう。

また、ファンクションキーとESCに相当する列の物理キーもない。IDE等ではよくショートカットキーにファンクションキーが割り当てられているので、Ergodoxかアプリケーションのキーマップを調整する必要がある。

加えて、意外と中央側一列のキー達と親指の島が遠い。ストレス無く押せるのは親指の島の一番外のキーのみで、それ以外のキーは慣れた今でもホームポジションを崩さずに押すのはやりずらい。親指の島は持て余し気味で、現状、使用頻度は低い。

Ergodoxにより強制的にキーマップと運指を変更させられるので、その後に一般的なキーボードと併用すると強いストレスが掛かる。つまり一度Ergodoxに慣れれば、ノートPCのキーボードを気軽に打鍵する気になれなくなってしまう。後戻りは難しい。

## MacOS用のキーボードの選択肢は少ない

MacOSではCommand keyが最重要なModifier keyなので、キーボードの選択においてはこのキーの押しやすさが重要になる。Command keyを親指で押下させるスタイルは自分がMacOSのUIの中で最も気に入っているものの一つで、将来MacOSから離れることがあってもこのスタイルは維持したい。しかし世の中のキーボードはPC用のキーボードがほとんどであり、長いSpaceキーが親指で押すキーの位置を専有していることが多い。そのようなキーボードをMacOSで使用するとCommand keyに相当するキーを親指で押すのはやや無理がある。例えば自分はHHKB Type-Sを昔使用していたが、親指の付け根が痛くてたまらず危うく慢性的な腱鞘炎になりかけた。Mac対応と明言している製品では配慮がありCommad keyがApple純正キーボードのように押しやすい位置にあることが多いが、選択肢がとても少なくなってしまう。

Ergodoxはその観点で言うと、無理なくCommand keyを押せるように設定できる物理キー配置となっているのが良い。


# Keymap

現状の自分のKeymap。まだWIP。

https://github.com/ntaoo/qmk_firmware/blob/master/keyboards/ergodox_ez/keymaps/ntaoo_v2/keymap.c

自分は長年Dvorak配列を使用しているため、Ergodoxでもそうしている。Dvorak配列は非常に打鍵しやすいため、今振り返っても素晴らしい決断だったと思う。
まだLANGキー、Layerキー、Spaceキー、矢印キーの配置に不満がある。親指で押下するキーの島は持て余し気味。

## 方針

### 従来のキーマップとの互換性をできるだけ維持する

アプリケーションのショートカットキーの設定は、特にModifier keys周辺(Cmd, Option, Shift, Ctrl, Tab等)が一般的なキーボードの物理配置
を暗黙の前提にしているため、これらの配置を下手に変更してしまうと無理な指のコンビネーションになってしまう場合が多い。アプリケーション側のショートカットキーをいちいち考えなおすコストは大きすぎるし、個人的にはそれらの配置には不満がないため、できるかぎり維持する。

### 変更せざるを得ないキーの配置

Enterキーは右親指で押すようにしている。慣れるまで1週間ほどかかった。右人差し指で押すように変更するかもしれない。英語キーボードを使用していたため、日本語キーボードとは異なりEnterキーを小指で楽に押すことができるのでなにも不満を感じていなかったが、Ergodoxでは右側にキーが足りないため仕方なく変更した。

`[]{}\|=+`についても仕方なく中央の人差し指で押すキーに配置している。これは従来でもあまり押しやすい位置にはなかったのでそれほど不満はないが、プログラミングする際に頻繁に使用する記号であるため、ノートPCでのプログラミングは避けるようになった。

### Langキー　

つまりKanaとEisuの切り替えキー。これが唯一のモード。それ以外はモードレスにする方針は崩さない。キーボードをモーダルにするのは良いアイデアではないため。
Kanaキーは右親指で押下する。Eisuキーは設定していない。Karabinerで設定している。以前はCmdキーと同一キーに配置していたが、この設定ではKarabinerとは異なり微妙なdelayがあり誤タイプが頻発していたため。
 
### Layerキー

ErgodoxにはLayerの概念があり、BaseレイヤーにレイヤーがStackされていくアーキテクチャ。Layerキーによりキー押下時にのみ一時的にStackが積まれたり、キーを押す毎にStackが積まれたりなど設定できる。キーにKC_TRNSと設定すれば下のレイヤーのキーコードが送出され、KC_NOとすればなにも送出されない。

自分はLayer1に記号群を、Layer2にナビゲーションキー（arrow keysとか）を配置して、Layerキー押下時のみ一時的にLayerが切り替わるようにしている。

注意点としては、Layerの切り替えには少しのdelayがあるような気がする。そのためか、modifier keyと同じ感覚で使用しようとすると認識が遅れて誤タイプになってしまう。

自分はLayer2にNavigation layerを設定し、そこに矢印キー、Deleteキーなどを割り当ててBase layerのCommand, Option, Shiftキーなどとのコンビネーションをしている。この設定は以前はKarabinerで実装しておりとても気に入っていたのでErgodoxでも実装をしたが、Layerのdelayにより誤タイプが増えているのが悩み。従来通りKarabinerの設定の実現しようにもMacbookで動作する設定がErgodoxでは動作しない。

Layer1には全ての記号キーを割り当てているが、Ergodoxの格子状の物理キー配置のおかげで最上段のキーも楽に打てるため、結局ほぼ使用していない。


# Keymapの変更方法

簡単な変更ならばGUIで編集できはする。
https://keyboard-configurator.massdrop.com/ext/ergodox

しかし複雑な設定(例えば自分は採用していないがSandS等)はできないので、結局はkeymap.cを編集し、バージョン管理するほうがいい。

公開されている豊富なキーマップ設定のサンプルを参考にする。例えば、
https://github.com/tyoto/qmk_firmware/blob/master/keyboard/ergodox_ez/keymaps/andrew_osx/keymap.c


変更手順はこの記事にお世話になった。
http://tyo.to/ergodox-ez/

手順としては、環境構築し、既存のkeymap.cをコピーしてそれを編集し、makeして出来たhexファイルをfirmwareに書き込む。

## 環境構築

### 必要なライブラリをインストール

MacOSのbrewが前提

	brew tap osx-cross/avr
	brew install avr-libc
	brew install dfu-programmer

### Forkしてgit clone

Fork対象 https://github.com/jackhumbert/qmk_firmware

### 既存の設定をコピー

keyboards/ergodox_ez直下にある適当なdirectoryをcopyして自分用のkeymapを編集するdirectoryをつくる。


## 編集する

特にC言語の知識は不要。既存のキーマップの設定を参考に自分用のキーマップを設定していく。
Modifier keys, Layer keysの設定方法は以下を参照した。
https://github.com/jackhumbert/qmk_firmware#going-beyond-the-keycodes

複雑な設定をするとたまにバグっぽい挙動に遭遇したりする。
また、なんらかの設定に失敗すると、キータイプ時に何かのはずみでキーボードがフリーズしたりする。貴重な経験だった。

LT()の設定は切り替えにdelayがある気がする。もしくは[roll over](https://en.wikipedia.org/wiki/Rollover_(key))に対応していないような気がする。
layer切り替えがmodifier keysよりも少し遅い気がする、もしくは[roll over](https://en.wikipedia.org/wiki/Rollover_(key))になっていないような気がするのでlayer切り替えとのコンビネーションを多用するのは残念ながら避けるほうが良さそうだ。 

## Make

keyboards/ergodox_ez/ directoryにて、

	make KEYMAP=your_keymap_directory

とするとhexファイルが生成される。

## ファームウェア書き換え

tenessyにhexファイルを読み込ませ、ファームウェアを更新させる。http://tyo.to/ergodox-ez/ を参照。

## その他

MacOSをスリープさせている間ずっと、Ergodoxの3色のLEDがかなりの光量で明滅を繰り返すのが非常に鬱陶しいのでこれを切る設定を探している。

追記: LEDをスリープ時に明滅させないオプションがあった。

	make KEYMAP=your_keymap_directory SLEEP_LED_ENABLE=no

http://rhysd.hatenablog.com/entry/2016/08/29/090105



# まとめ

## メリット

### 肩がこらなくなった

劇的。しかし調子に乗って長時間キーボードを叩き続けると首と肩は平気でも他の部分への負荷はそのままなので腰などを悪くするはず。一時間に一回の休憩や柔軟体操など適切なケアは怠らないほうが良い。
そもそも、良い姿勢で臨み適切に休憩をとって体をケアしていれば、このようなエルゴノミクスキーボードは必要ないはずだと思うが、そうはいっても集中して作業をしているとどうしても定期的な休憩を疎かにしがちなので、長時間キータイピングする場合は良いツールだ。

### 一日にタイピングできる量が明らかに増えた

格子状のキーとセパレートキーボードによって、明らかにタイピングのスピードと時間が増えた。

### Command keyを押しやすいメカニカルキーボードを手に入れた

この選択肢は残念ながら殆ど無いので、個人的には非常に重要な点だった。


## デメリット

### 従来のキーボードと併用するのは難しい

物理キー配置とキーマップがかなり異なるため、ノートPCのキーボードを打つことに違和感を感じるようになってしまう。これにより気分転換にノートPCで作業するということができなくなる。また外出中にもErgodoxを持参しないと作業に支障が出る。

### Keymapの編集が煩雑

そのため、プログラマー以外には全くお勧めできない。


## Ergodoxの価値の8割はセパレートキーボードにある

キーボードが換装可能なノートPCが出てきたり、格子状キーボードが普及したりなどして、徐々に変化が起こることを期待したいが、現状ではErogodoxにスイッチするハードルは高い。プログラマー以外には全くおすすめできない。プログラマーでも、既存の物理キー配置のキーボードのセパレートタイプが出てくれば、そちらを選択するほうが無難だろう。現在でもいくつか発売されているので、そちらを検討してみるのがよいかもしれない。自分個人としては、メリットのほうが上回っているのでこのままErgodoxを使い続けていく。


<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">ErgoDox Ezさわっての感想「HHKB Type-Sがセパレートになればそれでよかった」</p>&mdash; すーぱーりんぺー (@ngsw) <a href="https://twitter.com/ngsw/status/744187540492554240">June 18, 2016</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>