見出し画像

ローマ字入力に最適なキー配列を考える(制作編)

日本語のローマ字入力において、一般的なQWERTY配列に比べて指の移動距離が半分以下に、同じ指の連続が約9分の1になる「大西配列」を考えた話。

0. 疑問を持つ

パソコン仕事を始めて数年、一向にブラインドタイピングができない。
何度か教材にも向き合ったが、上達するのは「手段を目的化させるのは道具側のバッドデザインだろ」という文句ばかり。

そこで調べてみると、従来のキーボードにはハードにもソフトにもさまざまな批判とオルタナティヴがあることがわかった。

画像

私はすぐに遊舎工房で人間工学的に正しいキーボード*を入手し、VIAでキーマップを弄り始めた。

始めはぼんやりと、自分はプログラムを書くから英語と日本語がバランスよく打ちやすければと思っていた。
だが考えているうちに、速度がもどかしいのはもっぱら検索・作文・チャットで日本語をローマ字入力するときだと気づき、「ローマ字入力に第一に最適化された配列」という課題設定**を明確にした。
さらに、同様の理念から生み出された複数の「ローマ字用」配列に調べ当たったものの、その悉くが不透明なプロセスのなかに完成し、最適さの証明を放棄している(じっさい最適化も不十分である)ことにムカついた。
ここに自分の手で新しい、共有可能な合理性をもった配列を考えてみよう。


Corne Cherry Light v1.1の両外側1列を自己責任カットし、ボトムプレートを粘着スポンジに代えたもの。スイッチはBoba U4、キャッププロファイルはDSA。

**
もっとも、ローマ字入力という方式自体は、英語のキーと同じ音で入力できるという「覚えやすさ最適」なものだ。
純粋に日本語入力の終端速度を追い求めるなら、M式DvorakJPに見られるローマ字テーブルの拡張や、そもそも1ストローク1音のかな入力、それをレイヤーでまとめた◯指シフト、作用方向でまとめた物理フリック、果ては1ストローク1単語のステノグラフィーなど、入力方式そのものから考え直す必要に迫られる。
「ローマ字入力に最適なキー配列」というのは「日本で一番いい大学」のように、移行コストを無視すれば存在しなくなる極大点であることに気づいていたい。

1. 片手の連続使用を減らす

まずは、右手と左手の担当キーを決めるところからだ。

ここで参考になるのは科学的キーマップの元祖、Dvorak配列(1936, August Dvorak)である。
母音を片手に固めて左右交互打鍵による高速化を狙うというかの配列のフィロソフィーは、基本的に子音と母音が交互に連なる日本語のローマ字入力でこそ真価を発揮するはずだ。
そこで、おおざっぱに母音(AIUEO)と句読点・使わない子音を左手に、ローマ字でよく使う子音を右手に割り当てる。

画像

とはいえ、Dvorak配列は博士の生涯を懸けた布教も虚しく規格化バトルに敗れ、それから今日まで続くQWERTYの支配下で、あらゆるOSやソフトウェアはQWERTY前提のキーバインドを敷いてきた歴史的経緯がある。
それでColemak配列(2006, Shai Coleman)に端を発するいわゆる英語用「モダン配列」の多くは、コピペなどの基本的なショートカットに使うZXCVQWあたりのキーを、QWERTYと同じ位置に保存するのがセオリーになっている。
私も右手でカーソルを動かしながら左手でバシバシコマンドを打つ操作に慣れているので、ZXCVとその左のシフトキー*は左手下段に既定とした。

画像


シフトキーは本来3×10の外側にあるのだが、私の改造Corneにはその列が無いので、いったん中に入れさせてほしい。

2. 指の移動を減らす

次に、指をできるだけ動かさずに済むほうが速く楽にタイピングできるので、両手の中でホームポジションから押しやすい場所に使用頻度の高いキーを集めたい。

まずは「押しやすい場所」を調べるために、ホームポジションから各キーを100回連打するのに要した時間を計測し、16段階に正規化した。

画像

次に各キーとその指のホームキーを交互に100連打して差分をとれば移動コストが測れると思ったが、指が疲れてやる気次第になったのでここは感覚で補正した。

画像

それらを合計して押しにくさと評価してみる。同じ暗さでも赤みがかっているほうが、打鍵回数に占める連打率が高い(移動コストが省略される)キーに向いているということだ。

画像

とはいえ、この後の最重要ステップを控えて一定以上の厳密性を捨象し、以降は5段階で下図のように「○等地」と呼ぶことにする。

画像

それが終わったら今度は「使用頻度の高いキー」を調べる。
青空文庫から適当に*ローマ字を100万字集めて頻度分析をし、スプレッドシートでソートする。実際のシートはこちら

画像

出現頻度の高い順に1〜5等地に仮置きする。

画像


文体の新しさと多様性を考えて選んだ、
太宰 治『人間失格』
片岡 義男『物のかたちのバラッド』
富田 倫生『パソコン創世記』
カーペンター ケニス・J/水上 茂樹『栄養学小史』
高橋 悠治『音楽の反方法論序説』
の各全文を、gooラボのAPIでひらがな化してから変換サイトでローマ字にしたもの。ただし、複数の入力法がある文字については、打鍵数が違う場合は少ないほう(chi→ti, zyu→ju…)、同じ場合はキー使用率が偏るほう(fu→hu, sya→sha…)に修正して揃えた。また、母音にもYにも続かない「ん」はすべて2つめのnを省略し、実際の入力に近づけた。あとあとの都合により、句読点(、。)と長音符(ー)意外の記号は半角スペースに置き換えてある。合計998,589字。実際のファイルはこちら

3. 指の連続使用を減らす

いよいよ仕上げに入る。
各キーの位置を決定するにあたっては極力、タイピングの流れを堰き止める同じ指の連続使用を回避できるよう気をつけたい。

画像

さっき集めた100万字で、今度は連続する2字(bigram;二連字)の頻度分析を行う。結果はスプシの2ページめを参照。
これらの多くは母音と子音で手を分けた時点で解消されているのだが、それでも避けられない幾つかを、同じ手の中でもせめて違う指の守備範囲に分離していく。

3-1. 連母音

まず、母音5個を指4本で捌く以上、「母音→母音」の二連字を踏む指が出る。
母音どうしが互いに連なる頻度*は、低い順に
・ue (9) + eu (2) = 11‱
・au (9) + ua (5) = 14‱
・eo (5) + oe (12) = 17‱
・ao (13) + oa (15) = 28‱
・ae (25) + ea (12) = 37‱
・iu (16) + ui (22) = 38‱
・io (12) + oi (39) = 51‱
・ie (10) + ei (81) = 91‱
・ai (125) + ia (16) = 141‱
・uo(4) + ou(171) = 175‱
だが、中指中段は1等地でありUとEとかいう二軍母音は入れられないから、2番めに連なりにくいAとUのペアを充てる。

画像


母音の連続頻度についてはこちらの統計も大規模。

3-2. ザ行

次に、ZXCVを固定した弊害として、ザ行が左手でジャミングしてしまう。
だが「zi」に関しては「ji」と打つことで回避できるので、IがZの上に置ける。
この操作は、出現および連打率の高いIをより強い指に置くべきであることと、連母音の頻度2位である「ai」が押しやすくなる*ことからも正当化できる。

画像


片手内でも、「隣り合う指」かつ「親指→小指の方向」など特定の条件を満たす指の連続は非常に(左右交互打鍵よりも)速くなることが経験的に知られており、俗にアルペジオ打鍵とかロールオーバー打法と呼ばれる。この並びにすれば、連母音全体の78.4%を隣り合う指で、71.0%を小指方向に打ち連ねることになり、1位の「ou」・2位の「ai」を含む56.9%はその両条件を満たす。

3-3. 母音→, . -

また、句読点・長音も母音からの連続を避けられない。
これら3つと互いに繋がりにくい母音は順にE(54‱),O(55‱),U(73‱),I(73‱),A(147‱)だが、Eには5等の空き地が1つあるだけだ。
句読点と長音どうしは互いにほとんど連続しないことも考えると、全部まとめて人差し指(O)の広い守備範囲を埋めるのが適当だろう。

画像

長音はUと繋がりやすいので上に置き*、使用頻度の低い句点は隅へ。これで左手側がすべて確定した。


2022/12/11追記;普及版『大西配列』では、直感性のために「ー」と「、」を入れ替えた。

3-4. 子音→Y

右手では、「きゃ」などの拗音を打つ際にYがほかの子音に連続する。
これはYを母音サイド、特にIの指に移すことでも解消できるが、代わりに「イ段→ヤ行」を踏む量がばかにならない。
子音サイドのなかでYを伴って拗音を作らないのはWとJだけだが、シャ行に限っては「sh→母音」でも入力できるので、Sの指にWかJと並置することができる。

画像

3-5. N→子音

また、「ん」という字は例外的に子音で打ち終わるので、Nはすべての子音に連続する。
ルームメイトが5人いる人差し指はまず避けなければならず、配属先は中指一択。指をシェアする2等地と3等地にふさわしいのは、Nのあとに続きにくいF(0‱), R(5‱), Y(6‱だが前述の理由で不適), B(6‱), M(6‱), P(8‱)…のなかではRとMだろう。

画像

3-6. T・D→Hと同鍵連打

この作業をしていて初めて知ったが、「てぃ」「でぃ」はそれぞれ「thi」「dhi」で出すものらしい。「th」は英語の最頻二連字でもあるので、できればHを人差し指から追い出したい。
同時に、テクニカルには指の連続使用に含まれる「同じキーの連打」について考えてみると、比較的頻繁に連打される*Kが(2節でみたように)連打の遅い小指にあるのが気になる。
そこで、まず連打しないが使用頻度は低くないHに小指のホームを譲る。シャ行も打ちやすくなるし。

画像


連打されるキーは、多い順にN(118‱), T(74‱), U(36‱), I(23‱), O(22‱), K(20‱), A(16‱), S(12‱), P(8‱), E(2‱)。

3-7. (清濁隣接)

子音側のタブーはそんなところなので、あとの采配は好みだ。
ここで、M式のように濁音・半濁音(ガザダバパ)が清音(カサタハ)の上下に来る法則がまだ実現できることに気づく。
ブラインドタイピングが当初の目的だったから、覚えやすいに越したことはないだろう。

画像

GとPを5等地に追いやるのは心苦しいが、ロウスタッガードに輸出することも考えればこれらの位置は悪くない。

こうして、すべてのキーの位置が確定した。

4. 先行研究を葬る

長くなったので別記事にまとめる。

結果としては、Keyboard Layout Analyzerのローマ字スコアにおいて既存の「ローマ字用」入れ替え配列6種を無事に蹴散らすことができた。
さらに、ローマ字テーブルを弄って打鍵数自体を減らしているIME拡張配列のほとんどにも(理論上)勝っており、現在出回っているなかでもっとも「ローマ字入力に適した」キー配列のひとつになったと言っていいだろう。
なにより、デフォルトのローマ字入力の効率において「大西配列」より大きく優れた配列は、原理的に今後も現れないのではないか。

もちろん、KLAのローマ字スコアだけを追えばもう1ポイントほど上げることもできるのだが、

・Dvorakの母子分離
・Colmak以降のZXCV保存
・M式の清濁隣接
・Eukalyn以降の日英両道

と古今東西のキーマップ哲学のいいとこ取りが成立した点に、いったんの納得感を得ることができた。

5. 慣れる

画像

レイヤーも含めた最終的なCorneのキーマップはこうなった。
親指キーがあるなら、句読点はそちらに移した方が便利なことには途中から気づいていた。

画像

環境を統一するため、MacBook本体のキーマップもKarabiner-Elementsで書き換え、

画像

キャップも包丁の刃先で張り替えた

当初の目的だったブラインドタイピングは初めからできたし、一週間ほど練習して速度も問題ない水準に達している(この記事も大西配列で書いている)。
これから一年くらい使ってみて、どこまでタイピングが気持ちよくなるか楽しみだ。

2022/12/11追記:
1ヶ月練習して300打鍵/分くらいは出るようになった。マイナーチェンジ( , と - を交換)して、試し打ちができるホームページも作ったよ!

ここから先は

424字
500円の買い切りで過去・未来すべての記事の有料部分が丸見えになるぜ!!!!

大西拓磨のこと好きな人向けの情報。近況、思い出話、グロいポエム、新コンテンツのβ公開(テストプレイ募集)とか。

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

ピックアップされています

自分語りをしている部分

  • 21本
  • ¥500

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
大学を出ていないので素朴なことしか言えない様子
ローマ字入力に最適なキー配列を考える(制作編)|大西拓磨
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1