日本語が打ちやすいキー配列を作りました

キー配列の沼にはまってから気付けば1年。俺は一体ずっと何してるんだろう。まじで。ひとまず現時点で納得感のあるキー配列(↓)が作成できたので、制作過程を書いておきます。日本語8割、英語2割くらいの使用を想定。

しゃ行は sh、ちゃ行は ty、じは zi、にゃ行は y を中指で取ると打ちやすい

ノートパソコン付属のキーボードを使って入力することが多いので物理配列は変えず、癖のあるロウスタッガード(一般的なキーボードの形状)を活かす方向で考えました。

ホームポジションと運指を変える

一般的なホームポジションと運指です↓

日本語入力をする際、英語にはない「変換→確定」という作業をこなす必要があるのでEnterキーを頻繁に使います。また文字を消すBSキーは近い方が良いので、BSやEnterが押しやすいように右手のホームポジションを右に寄せます ↓

us配列(こちらで制作を進めていく)
jis配列

この操作によって「ノーパソで右手親指の付け根がトラックパッドにあたる現象」を低減できたり、物理配列を変えないまま左右分離風を気取ることができます(私は一年ほど前から左右分離型の corne cherry を使用していましたが、配線が煩わしくてやめました)。
そしてロウスタッガード型の列ごとのずれ方ですが、1列目と2列目は少し(0.25unit)しかずれていないのに対して、2列目と3列目は半マス分(0.5unit)ずれています。言い換えれば2列目のマスとマスのちょうど中間に3列目のマスがくる形ですね。なので対称性を意識して左手3列目の運指を変えます ↓

いわゆる Angle Mod というやつ

さらに「小指は横移動であれば割といけるが、短いので縦移動が辛い」「薬指は長いので手首の回転で小指上部をカバーしやすい」などの理由から薬指担当を増やします↓

感覚的に違う気がするが経験則的に正しい。

あとタッチタイピングするとき、突起のある人差し指はホームポジションにばしっと置くけど、他の指は割と適当ですよね。指の長さ的にこんな感じかな?

要するに、中指と薬指は長いから上段中段は押しやすいけど下段押しにくいよねーということを留意しておきます。

配列作成で気を付けること

さて、これから色のついたマスにローマ字A~Zを配置していく訳ですが、打ちやすい配列を作るためにいくつか気を付けるべきことがあります。
①打ちやすい場所に頻度の高いキーを配置する
打ちやすい場所↓(1~5の5段階評価)

論理配列の評価をしている KLA では、ホームポジションからの距離によってのみ打ちやすい場所か否かを判断しています。んが、それでは中指のような「上段は打ちやすいけど下段は打ちにくい」といった場合を無視していたり、というかそもそも中指と薬指はホームポジがマス内に収まってなかったりで、KLA の distance 評価に私は少し懐疑的だったりします。

②同じ指の連続使用を避ける
日本語はたいてい子音と母音の繰り返しで文が構成されているので、とりあえず「同じ指で子音と母音の両方を担当しない」を守っていればOKです。例外は拗音(しゃ、きゃ、etc)と「ん」。ただこの「同じ指の連続使用(以下 CFU; Consecutive Finger Use)」、薬指でやる場合と人差し指でやる場合とでは煩わしさの度合いが全く異なる点は考慮しておきたいですね。

などなど、他にも考慮すべき事はたくさんありますが、細かいことは後々。

日本語入力における各ローマ字の出現頻度

打ちやすい場所に頻度の高いキーを配置するために、各ローマ字の出現頻度を調べます。文字データはX(旧twitter)とQuoraから約15万字をピックしました。小説や利用規約からとったものではないのと、一人が書いた文章ではなく数百人が書いたものなので、データに偏りはないはず。分析の基にするデータが駄目だとその後のすべてが駄目になるので、基データの選定やローマ字への置換はかなり慎重に行いました。

日本語→ローマ字への変換ルール
・基本的に打鍵が少ない方(zya, chi, teli ではなく ja, ti, thi)
・ちゃ行→ch
・しゃ行→sh
・じ→zi
・ふ→hu
・文末の「っ」、「なぁ」など → L で小文字化( Xでない)
・ん + な行 や行 あ行 → nn
・それ以外の ん → n
・「、。」を使うのは意味上の切れ目であるという観点から、「、。」の後に半角スペースを挿入(余分な CFU カウントを防ぐため)

頻度分析の結果です ↓

英語も日本語と同じく15万字集めましたが、英語には×0.2をして比率を「日:英=5:1」としています

kは英語じゃほとんど使わないんですね。ほぇ~

母音の配置

まず母音から配置していきます。両手の人差し指~小指の8本の指に母音5つを振り分けていくのですが、8本中5本を母音で占領すると後々子音が置けなくて苦労します。なので母音5つのうちどれか2つを同じ指で担当し、4本の指に母音を納める必要があります。でも CFU はできるだけ避けたいので、母音同士のつながりやすさを調べます。

14.8万字中それぞれの文字列が出てくる回数。多いのは ou, ai, ei あたり。
ou は「方法」「~しよう」、ai は「~したい」「~ない」などでよく使われる。

ue ペアが一番つながりにくいので、この2つを同じ指に担当させます。どの指に担当させるかですが、母音は人差し指への配置は避けたい(人差し指は担当マスが多く、母音を入れるとほかのマスを埋めずらい)ので中指担当とします。

片手に母音を集めると左右交互打鍵ができる代わりに、逆手の中指とかの上段・下段それぞれにそこそこ頻度がある子音を置かざるを得ない。すると中指の上段と下段の一文字飛ばしCFUがきつい。一文字挟んだだけで上から下まで中指移動させるの地獄。KLAで評価できない部分。

ただここで、「ue を同じ指担当にすると頻出の ~です とか打ちにくくないかな?」と思い始めます。desu は e と u の間に s が一応入っていますが、打鍵速度が上がれば同じ指の連続使用みたいなもんです。それなら2番目に CFU が少なかった au, eo あたりを同じ指担当にしても良い気がします。
なので基データから子音を消したデータを作り、母音の一文字飛ばしの CFU を調べました ↓

tt, nn, ky などの子音の連続をスペースに置換した後に子音をすべて除去したデータにおける、母音の連続使用。ゆえに基データの母音連続も含まれる。

感覚とは異なり、ue は割と良いスコアです。au はちょっと厳しそうですね。eo が一番スコアが良いですが、当たり前に
CFU  >  一文字飛ばしの CFU
なので順当に ue を中指担当とします。

このような「一文字飛ばしの CFU」の懸念は子音側でも出てくるだろうと思ったので、子音のそれも一応全部調べました ↓

縦軸はそれぞれの子音の%計、横は一文字飛ばし CFU の回数。
線の右下にあるやつはなるべく同指担当しないほうがいい。rm, sh, sm, kr, ts, ns, tk, nk など。同指担当でも隣り合ったマスならなんとか許容範囲だが、上段と下段にわけて配置していると地獄。

この膨大な作業の結果わかったことは「n と k だけは同じ指担当にしない方がいい」という至極当たり前な事実でした。ぴえん。

話を戻しますが、この母音の配置は「ai, ou, ei の打ちやすさ」「中途半端に母音を分散する(左手2個、右手3個など)とかえって打ちにくかったこと」「o は a o i の中で一番「、。」との CFU が少ないかつ「、。」は薬指上段に置きたいこと」などを考慮した結果です。「、。」は基本的に母音としか連続しないため子音と同じ担当指に入れたくなりますが、そうすると o の上部に子音を入れざるを得なくなり結果的に CFU が伸びます(日本語のことだけを考えるなら L, F あたりを o の上に置けば良いが英語のことを考えるとそうもいかない)。また「、。」を押した後はほぼ確定で Enter を押すことを考慮すると、薬指上段が最適だなーと思ったのでこのような配置にしています。

ちなみに ue の頻度がほとんど同じなのにこの並びにしたのには、深淵なる理由が存在します。深淵すぎて現時点では説明できません。

N, T, S, K, R の配置

もう一度頻度表を置いておきます。

英語も日本語と同じく15万字集めましたが、英語には×0.2をして比率を「日:英=5:1」としています

n, t, s, k, r は子音の中でもかなり頻出なのでホームポジションに入れたい。でもホームポジションの残り枠は4つなので、英語ではほとんど使わない K を中指上段に配置します。

次に●ですが、事実として「薬指→小指は少し打ちにくい」があります(Qwerty配列で sa, da, fa それぞれを連打すればわかる)。逆の「小指→薬指」なら少し楽なんですけどね。なので●にくる子音は a と繋がりにくいものが好ましいです。

なので S を●に配置。残りの子音は R, T, N ですが、N は1文字飛ばしの CFU の観点から K と同じ指担当は絶対に避けたい。そんなこんなを色々考えて残りの配置が決定します。n, t はこの時点では逆でも良いですが後々の都合上このような配置にしました。

「おいおい例外的に他の子音と連続しやすい N を人差し指に置くとかありえねぇだろ」派閥から改宗しました。実際に打ってみると全く気にならない。人差し指は速い。ので CFU に強い。

n, t という頻出 top2 の子音を人差し指のホームポジで取れて嬉しいです。またかなりよく出てくる「ない」「たい」を気持ちよく打てる点も良いですね。

そしてちょっと補足をすると、「CFU を避ける」だとか「一文字飛ばしの CFU を避ける」だとかは、どちらもロールオーバー打ちがしやすいキーマップを作ることを最終ゴールに据えてます。ロールオーバー打ちとは要するにタイピング超速ぇ状態(?)を維持しやすいやつのことですね、はい。

残りの子音の配置

ちょっと説明がめんどくさくなってきたので駆け足でやります。
残りの子音配置における主なレギュレーションは
「n と同じ担当マスには n と連続しやすい子音を置かない」
「T の上のマスには E と繋がりやすい子音を置かない」
「T の下2マスには U と繋がりやすい子音を置かない」
「T の左マスには a につながる確率の高い子音を置く」
あたりですね。ue をこの順で配置した理由はここら辺のレギュレーションと関係しています。

左手の説明
①/? を ! の下において感覚的なわかりやすさを担保ぽ(実際の配列では/?の上に1!がある)
②N とその上のマスは適度な傾斜もあることから ny を「人差し指→中指」で打つという最適化がしやすい

右手の説明
① j は je だけではなく ej も少ないので、T の上が最適である
②d w は u との連続が少ないこと、頻出の de wo が打ちやすいことから配置
③g のマスを押すと右手が持ってかれて e, o が押しにくいことが経験則的にわかっている。このマスには ga で頻出な g を置く

ざっとこんな感じでしょうか。英語で頻出の CFU を踏まないことにも気を付けました。hy は押しにくいですがほとんど出てきません。出てきたら各自頑張りましょう。

拗音の出現回数

残りの子音も英語での CFU を考慮して配置しました ↓

人によっては q と - の入れ替えあり。

ly は英語でかなり連続しますが、L を人差し指で取ったら y はほぼ確実に中指で取るのでセーフということでお願い申し上げます。

この配列 ↑ でしばらく打っていたら ry が若干打ちにくかったので、s と r を入れ替えました ↓

薬指→小指で打つ回数は少し上がりましたが、ry が打ちやすいこと、kr より ks の方が一文字飛ばし CFU が少ないこと、sh が打ちやすいなどのメリットがあるので良しとします。くる とか する とか打ちやすいしね。hy 打ちにくいのに hm の入れ替えをしないのは sh の打ちやすさや英語頻出の ch の打ちやすさを考慮しています。

その他もろもろ

この配列を作ったのは2023/12/10。この文章もこの配列を使って書きました。ノートパソコンのキーも包丁を使って張り替えたよ。人差し指のホームポジには突起がついていないのでセロハンテープを貼って特徴を付けてるよ

12/11追記
伸ばし棒が押しにくかったので q, p, - の配置を変えました。p, - を逆に配置しないのは -d が割とあるからです。ki-bo-do とか ka-do とか o-da- とかのカタカナ英語に多い印象。


この記事が気に入ったらサポートをしてみませんか?