feature image

2021年4月24日 | ブログ記事

キーボードの論理配列の話

キーボードの論理配列の話

この記事は新歓ブログリレー 2021 47 日目の記事です。

初めまして、20B の Lum1narie と申します。この記事では、私の趣味であるキーボードの配列についてお話ししたいと思います。

論理配列とは

今回は論理配列のみを話題として取り扱います。

論理配列とは、キーボード上のキーの場所が定まった上で、どのキーがどの文字に対応するかというものです。

これに対し、キーボード上のキーそのものの場所を物理配列と言います。

物理配列にも、キーの数だったり、格子状の配列だったり[1]と話題があるのですが、今回は取り扱わないことにします。

対象言語

また、入力する文は英語とします。

入力する文が日本語だった場合は、ローマ字入力の場合は母音の優先度が更に上がったり、英文に比べて特に'k'の重要度が上がったりなどといった変化がありますが、基本的には英文のものに近いです。ただし、ローマ字以外の入力形式が入ると別の話になるので、その件についてはまたの機会にしたいと思います。

まだ QWERTY で消耗してるの?

QWERTY 配列というのは、皆様が恐らく使っているであろう一般的なアルファベット配列のことです。キーボードの左上からのキーの並びが"QWERTY"なので、このように命名されています。

世間一般のキーボードは九分九厘が QWERTY 配列で、それを恐らく疑問に思われることは少ないと思います。裏を返せば、論理配列を考えたいということは QWERTY 配列から離れることに何らかの動機があるということです。

その理由は、QWERTY 配列が入力に関して非効率であるからです。

入力効率は様々な側面から測られるものですが、良く合意される要素の一つとして、ホーム列の使用頻度があります。ホーム列にないキーを押すということは手が前後に動くことになるので、疲労や安定性といった観点から効率に影響します。

ここでは導入として、まずこの 1 要素のみについて紹介します。

ホーム列のデータ

データはCarpalxというプロジェクトのものを参照させて頂きます。これは、キーボードの最適な配列を追求するプロジェクトの一つで、
Carpalx/typing effortのような評価関数を用いて配列を評価するプログラムを作り、QGMLWY などの配列を考案しています。

データの元になった文書は先程のCarpalx/typing effortの一番下に書いてある通りで、全て英語の本で、主に文学作品からデータが取られています。

Carpalx/keyboard layoutsのrowhの列がホーム列の使用頻度で以下の通りです。

keyboard name rowh
QWERTY 0.34
Dvorak 0.71
Colemak 0.74
Workman 0.68
Norman 0.68
qgmlwy 0.74

(表はCarpalx/keyboard layoutsより一部抜粋)

QWERTY 以外の配列でメジャー所と言えば Dvorak, Colemak, Workman, Norman あたりですが、これらはホーム列の使用頻度が 68%以上あります。一方、QWERTY におけるホーム列の使用頻度は 38%です。

主張

英アルファベット 1 文字の出現頻度は偏りが大きく、今回のデータで言えば 26 種類あるうちの上位 5 種類で 44%を、上位 10 種類で出現回数の 74%を占めています。そのように考えると、ホーム列で 38%しか打てていないのはかなり少ない数値であり、更に、その他の配列と比べて 10 打鍵に 3 打鍵分多く手を動かさなければいけないと考えると、かなり非効率であると言えます。

論理配列の例

上のような理由でQWERTYに満足できない人達によって、様々な論理配列が考えられています。

筆者が良く名前を聞くと認識している配列には以下のものがあります。この中ではDvorakが一番歴史が古く、QWERTY以外では英語用の配列として一番メジャーどころだと思います。

その他の配列は古くても2000年あたりから現在に作られたものです。キーボードの配列を凝り出す人が増えたのがそのあたりと把えられるでしょう。

これらを大きく分類すると、Dvorakとその他になると思います。

Dvorakは左手に母音を集めているのが特徴で、特にQWERTYとの差異が大きものになっています。ちなみに、左手に母音を集める都合上日本語ローマ字入力とは少しだけ相性が悪く、その為Dvorakを拡張した日本語用の入力方式も存在します。

その他の配列は右手に母音を集めているものが多いです。また、ZXCVやAなどショートカットキーとしてよく用いられる文字をQWERTYから動かさないことで、一部の互換性にも考慮しているものが多いといえます。

配列の評価方法

良く評価基準として挙げられるのは以下の要素です

n-gramというのは、配列の要素のうち連続したn要素の部分配列を並べたものです。

例えば、"fortune"を2-gramにしたものは["fo", "or", "rt", "tu", "un", "ne"]になります。

この中でどれを特に重視するかは人の好みによるところで、中には"頻度の左右差をつける"と"左右交互に手を使う"というように相反する概念もあったりするので、自分で採用する配列を考えるときは、この優先順位を各自決めるのが良いと思われます。

論理配列の変更方法

実際に配列を変えたい場合、その方法は大分すると、ソフトウェアで配列を変える方法とハードウェア(キーボード)自体の配列を変える方法の2通りに分けられます。基本的にソフトで行った方が安上がりで比較的簡便なので、より初心者向けです。

ソフト

キー配列を変えるソフトを用います。

WindowsではDvorakJが一番使いやすいと思います。インストール不要なので、環境を移すのも楽です。中でAutoHotKeyが動いているそうです。

設定方法は公式サイトを参照してください。

昔から使っている人だと窓使いの憂鬱やのどかを使ったことがあるかもしれません。

Macは実際に使ったことはありませんが、Karabinerを使う人が多いようです。

Linuxでは、この手のソフトの話はあまり聞かないような気がします。アルファベットの配列を変える方法は一般的なディストリビューションに最初から入っているような機能にあったような気がしますが、今日扱っていないひらがな入力系統まで賄えるソフトが無かったように思えます

ハード

基本的には自作キーボードに組み込む形になります。

もう少し簡便なものだと、かえうち2をキーボードとPCの間に噛ませるという方法もあります。

かえうちは使ったことがないのですが、画像を見た感じ設定画面が分かりやすく、比較的丁寧なように感じました。

自作キーボードの作り方は調べれば色々出てくるのでそちらに任せますが、種類で言うとPlanckあたりから入る人が多かったように思います。

ファームウェアはQMK firmwareがメジャーどころで、単に文字を入れ替えるだけならQMK configuratorというGUI環境(webサイト)が用意されています。

また、複雑な事をしたい場合、QMKはC言語で記述されているので、コードを書けるなら色々な事ができます。特殊なひらがな入力[3]を実装したり、変わり種ではモールス信号入力を実装した人もいます。

キットで作るQMK対応キーボードの文字を入れ替えるだけの場合、キーの内容を格納している配列を少し書き換えるだけでできるので、キーボードを組み立てる機会がありましたら、怖がらずにQMKを触ってもらえたらと思います。

まとめ

皆も色んな配列を使ってみよう!

ただし、配列を変更するとしばらく速度は出なくなるので、業務等ではない日記のようなもので練習すると良いと思います。数週間すれば慣れます。


明日の担当者は @Komichi です。どうぞお楽しみに。


  1. 筆者のキーボードは左右分離型で、column staggered のものを使っています ↩︎

  2. pが小指の上側というものすごく打ち辛い位置にあるため、QWERTYで"display"が打ち易いかと言われると微妙だが、これは別の問題です ↩︎

  3. QMKの作り(レイヤー)自体が、親指シフト等とは相性が良いと思われます ↩︎

lum1narie icon
この記事を書いた人
lum1narie

電子工作とプログラミングが好き、自作キーボードとかキー配列に興味あり

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2021年3月19日
traPグラフィック班の活動紹介
NABE icon NABE
2021年4月2日
DXライブラリで重力パズルゲームを作る
Macky1_2 icon Macky1_2
2021年4月17日
競プロと CTFの 体験会(CPCTF) を開催します!
Hmcmch icon Hmcmch
2021年3月24日
traQのメンション・チャンネルリンク機能について【新歓ブログリレー16日目】
reyu icon reyu
2021年3月15日
Qアノンを知ろう!
Azon icon Azon
2021年4月29日
UnityでEvalを実装して、そしてゲームも作っちゃおう
Renard icon Renard
記事一覧 タグ一覧 Google アナリティクスについて