2024年07月02日

【薙刀式】論理配列入門

と、大げさなタイトルにして、
大まかに論理配列をめぐる状況をまとめてみたい。


論理配列とはなにか
論理配列の常識
論理配列の実装
論理配列のみかた



論理配列とはなにか

キーボードには109〜101のキーが並んでいる。
何を押せば何が出るか決まっている。
そしてこれは、「どこにどのキーがあるか、決まっている」。
バラバラだと使いにくいからだ(標準キーボード)。

だが、このキー配置は、
「すべての用途に対して最適化された、
至高の最小労力の配置」ではない。
タイプライターキーボードが誕生して200年近く、
増築改築、その時々の都合で並べられてきた、
「トータルの使い勝手」を考えられていない、
効率の悪いものである。
ピアノならば音の順、音階律によって整理されているが、
キーボードは、文字、記号、機能キーが、
ランダムに、バラバラに配置されている。

だから、
このキーとこのキーを入れ替えたり、
あっちのキーをここにまとめたりなどして、
キーボードの動線を整理して、
キーボードを使いやすくしよう、
と考えるのは、合理的な発想を持つ者ならば、
当然の発想だと思う。

キーボードには物理配列と論理配列がある。

物理配列とは、物理的にキーが何列何段あるかとか、
このキーは他より長いキーであるとか、
斜めにずれてる(ロウスタッガード)とか、
逆T字に並んでいるとかの、物理的配置のことだ。

一方論理配列とは、
「このキーを押すと何が出るか」を定義したものだ。

物理配列は物理設計、
論理配列は論理設計(プログラミング)だ。

論理配列の簡単な例は、「AとBを交換したもの」だ。
今までのAの位置のキーを押せば文字Bがでて、
今までのBの位置のキーを押せば文字Aが出るように、
プログラムで組むことができる。

ある物理キーを押した時に、
どんな文字が出るかは、一対一テーブルをつくることが出来るので、
その対応関係を変えれば、論理配列を変えたことになる。

もちろん、ABだけを交換するのは、
ただのイタズラ配列にすぎない。

実際には、
「バラバラの動線を整理した、
指の動線効率のいい配列をつくろう」
が目的で、
文字を再配置することが狭義の論理配列だ。

広義の論理配列は、
さらに機能キーやテンキーや記号キーなど、
キーボードにあるありとあらゆるキーを、
再配置して便利にしようとするものである。

たとえばkouyさんは、
キーボードの全キーに関して、
色々な再配置を行い、
自分カスタマイズをしている。
https://y-koutarou.hatenablog.com/entry/2020/01/30/192501
概要を見るための図だけ貼っておく。
5FDF6715-A3D8-47B5-BBD9-479E6F008334.png

文字部分は新下駄配列で、
その他のキーもいろいろ移動した使い方だ。


もちろん、物理配列は動かしていない。
リアルフォースというキーボードの、
論理配列だけを変更したものだ。
物理配列を変えるには、物理キーボードを変える、
自作キーボードで色々変える、などがある。

物理配列は物理配列で色々深いのだが、
この話は論理配列の話なので、
以下「どこにどのキーを置くべきか?」
だけに限定して話をする。

機能キーや記号キーに関する、
統一的な理論はまだ出来ていないが、
文字部分に関しては、
いくつかの理論的なものがあるので、
以下、狭義の文字部分の論理配列について考えよう。




論理配列の常識


文字部分の論理配列を変えると、効率的になる。
速度が速くなる。
疲れなくなる。
長く書けるようになる。
疲労が明日に持ち越さないから、コンスタントに書けるようになる。

論理配列とはすなわち、運指の効率化だ。
動線が整理され、最小化されれば、
運動が効率化されるのだ。


論理配列の大前提は、
ブラインドタッチの標準運指だ。

ホームポジションに構えて、
FJ位置に人差し指を置き、
中段を基準に、上段、下段に運指して戻す、
人差し指は二列担当する、
という、格子型の運指法である。

論理配列は、この標準運指法を前提に、
効率を最大化するように設計される。


デフォルトの配列、
qwerty英語、qwertyローマ字、JISカナは、
ブラインドタッチ前提に効率化されていない。
目で見て探して拾い打ちすることも、
視野に入れた上での配置をしている。

JISカナは「行で固まっているから探しやすい」
と主張する。
(実際文章を書く時に行からカナを探してたら、
全くもって実用速度には役に立たないのだが)
しかし結構例外があって、行で固まってないものもある。
中途半端極まりない。
フリックの方が規則的なのよね。

qwertyは左から右に、なんとなくアルファベット順になっている。
歴史的資料から、最初はもっとアルファベット順であったが、
徐々に崩れて現在の形になったらしい。
正確にいえば、
アルファベット順からはじまって、
使いやすいように入れ替えてきたら、
途中で爆発的に売れてしまい(レミントン)、
普及したバージョンを変更できなくなったため、
「より使いやすい配置の追求が、
途中で中止された状態」が、
現在のqwerty配列である。

僕は、これを使い続けることは、
人類の愚かさの象徴ですらあると考える。
文字という文明の基幹部分を、
このような中途半端な道具に委ねていることは、
人類の進歩と発展を妨げるものとすら考えている。

もちろん、色んな意見はあろう。

だがqwertyが素晴らしいという積極的な理由はない。
「qwertyは普及しているから普及している」
という小泉進次郎と同じIQで、qwertyは普及している。



さて、
標準運指を考えるにおいて、
ホームポジションはとても大事だ。

ここによく使うものを置き、
ここほど使わないものを上下段に散らせば、
運指の確率的効率性が保たれる。

したがって、
あらゆる論理配列では、
「よく使うものを近くに、そうでないものを遠くに置く」
を原則とする。


では、何を「よく使うもの」と考え、
何を「よく使わないもの」と考えるか?
という基準が重要になってくる。
「近く」とは、「遠く」とは。
ここにもいくつかの流派がある。


まず考えられるのは、統計的基準だ。
大量の自然文章を統計処理して、
「一番使われる文字はなにか?」
「使われる順に文字を並べるとどうなるか?」
があるわけだ。

英語ではEが最頻出だ。
(これは暗号解読や、失われた言語の解読でも使われる手法で、
一番多い文字をEと置いた場合、何かの言語にならないか?
を探る)

日本語では「い」が一番出る。
ベスト3は「い」「う」「ん」。

じゃあこれらを使いやすいところに置けば、
なんとかなるはずだ。

qwertyローマ字では、
たまたまNとIOが右手の押しやすいところにあった。
だが日本語ローマ字で最も出るA(英語では母音で最低)が、
左小指に当てられているなど、
日本語に最適化されたものとは思えない。

また、
統計的基準には、連なり(連接)というものがある。

「ある文字の後にはある文字がきやすい」
「逆にある文字の後には来ない文字がある」
などだ。

英語では、er、ed、gh、st、th、などがある。
日本語では「ょう」「てい」「こう」などがある。

マイナー組み合わせだと、
日本語では「んょ」とか「んぬ」とかかな。

二文字で考えるときを二連接、
以下n連接などという。
一文字の場合も含めて、
1gram、2gram、3gram…などとよぶ。
これらは、使う文字に関するマルコフ連鎖を考えていて、
「文字のマルコフ連鎖集合を最適動線にするには、
どのような配置がよいか?」
を考えている問題だ、
のように定式化できるかもしれない。


統計的基準のほかに、
構造的基準もある。

たとえば日本語ローマ字だと、
必ず子音と母音の組み合わせなのだから、
それらを左右に分離して置くことは、
使いやすさの点において合理的だ。
(左子音右母音のものと、逆の左母音右子音のものがある)

もちろん、運指効率において最適とはいえないが、
「とっつきやすく覚えやすい」ことも、
論理配列には大事なことなので、
左右子音母音分離型のローマ字配列は、
「qwerty以外の普及型論理配列を作ろう」
と考える時に、
まず最初に検討される事項である。


また日本語の場合、
ローマ字式を選択するか、カナ式を選択するかで、
論理配列は大きく異なる。

統計的には、カナ1文字=1.7アルファベットだ。

ローマ字を打つには26文字を覚えればよく、
指の範囲を狭くできる。
しかし打鍵数が多くなり疲れる。

カナを打つには50文字を覚える必要があり、
指の範囲が広くなる。
(以降に考える、レイヤーという概念で、
指の範囲自体は狭くできる)
このことで打鍵数が減り、
一打鍵一文字という、母国語の感覚を取り戻すことができる。

また、漢直(漢字直接入力)というのもある。
日本語は約2000の常用漢字を使うので、
これらを仮名漢字変換から出すのが普通だけど、
そんなまどろっこしいことをせずに、
2打ストロークに漢字コードを直接当てて、
それらを覚えさえすれば、
変換なしで漢字を直接出せる方式だ。
暗号を覚えるのが大変だが、
「一動作で母国語の一文字を出せる」
ことの快感、
仮名漢字変換に脳を使うブレーキを減らせるメリットは大きい。
(覚えて無意識化すれば、の話だけど)


そもそもキーボードは、
英語圏で発達した道具だ。
26文字文化のものを、
カナ50字、漢字2000字の言語で使うことが間違ってるだろう。
じゃあどうすればいいのか、
について、
変態的日本語を使う、変態的日本人は、
変態的方法によって、
色んなやり方を編み出したというわけだ。

その工夫の結晶が、
各論理配列に表れている。


統計的連接、構造による配置
(カナ配列では、濁音、半濁音、小書き、
拗音などの構造もある。句読点や長音なども)、
などのほかに、
レイヤーという概念を解説しておく。

レイヤーとは、なんらかの機構により、
あるキーを複数の使い方ができるようにしたものだ。

たとえばAというキーを、
親指キーと同時押ししたらBとして扱い、
Cを押しながら押したらDが出る、
などのように論理を組む(プログラムする)ことは可能だ。

Aに、BとDというキーが、2階、3階のようにある、
というイメージだ。

レイヤーなしのキーを単打面とよび、
2階、3階、…n階を、シフト面、レイヤー面などと呼ぶ。
そのトリガーを、シフトキー、レイヤーキーなどと呼び、
レイヤー移行方式(同時押し、押しながら、など)を、
シフト方式と呼ぶ。

たとえば、多くのカナ系論理配列では、
標準運指可能な30キーに、50のカナを配置する。
よく使うメジャーカナを単打面30に入れ、
残りの20をレイヤー2階に積むわけだ。
このようにして、
打鍵範囲を狭くして、
運指距離を縮めることが可能になる。

カナ系の配列図が一見ややこしく見えるのは、
一つのキーにレイヤーも書いてあるからだね。



レイヤーの概念は、
通常のキーボードよりも、
むしろ自作キーボードで発展している。

標準運指のことを考えれば、
109キーボードをフルでブラインドタッチできる人は、
世界にほとんどいるまい。
30キー+いくつかのキーこそが、
「容易にブラインドタッチできる範囲」だと僕は思う。

なので、僕は36キーのキーボードを使っている。
6ED7E2F4-1373-4E6E-BC08-A083BEAEDC2C.jpeg

もちろん、40キー台、50キー台…60〜70キー台の、
自作キーボードもある。
ブラインドタッチ可能範囲に広げてもよい。

36キーの場合、計4レイヤーあれば109キーは収まる。
すべてが手のひらの中に入るので、
ブラインドタッチとはこうあるべきだとすら思う。


で、
論理配列とは、
レイヤーや統計的構成的基準によって、
文字をブラインドタッチ可能に、
効率重視で並び替えたもの、と定義できるだろうか。

色んな論理配列が提案されている。

英語では、
Colmak、Dvorak、Workmanなどなど。
(僕が詳しくないのだが、100〜200単位で存在する)

ローマ字では、
SKY配列、和ならべ、けいならべ、カタナ式、
大西配列、tomisuke配列など200くらい。

カナ配列では、
薙刀式、新下駄、飛鳥配列、シン蜂蜜小梅配列、
月配列、新JIS、親指シフトなど100くらい。

漢直では、
T-Code、TUT-Codeなど10くらい。


どれがいいんですか?
はまだ定まっていない。
どれが向きますか?
についても、定式化された判別法は存在しない。
僕は薙刀式を勧めるのみだ。




論理配列の実装


PC側に、常駐プログラムをしこみ、
入力をフックして、変換してPCに渡す。
これは配列エミュレータと呼ばれるプログラムだ。
とある配列専用もあれば、
色んな配列に対応したり、自作配列をつくれるエミュレータもある。

各PCにある必要があるため、
個人専用なら問題ないが、
公共のPCでは難しい。
(USBメモリに常駐できるエミュレータもある)

有名どころでは、紅皿、漢直WSが現役。
DvorakJは簡易で便利だったが、先日公開停止。
(最終版などは辿れば自己責任で手に入る)
MacではKarabinar-Elements。


IME上で実装できる場合もある。
ローマ字テーブルを変更して、
定義することもできる。
月配列はそれを目的とした配列だ。
また、Google日本語入力が同時押しにも対応したので、
新下駄や親指シフトが、
実装され始めているね。


キーボードとPCの間に、
物理アダプタを噛ませるタイプもある。
かえうちのような独自UIもあれば、
qmk_firmwareで書ける、qmk_quantizerもある。


キーボードの中に、
論理配列を仕込む場合もある。

キーリマップ可能な、
可塑性のあるキーボードが昨今出てきているので、
それに書き込んだり、
またレイヤーを使う論理配列などは、
自作キーボードのqmk上で実装されたりしている。

「そのキーボードをPCに挿せば、
その論理配列になる」ので、
直感的にわかりやすかったりするね。

自作キーボードなら、物理配列も自由だし。




論理配列のみかた



英語専用/ローマ字専用/英語ローマ字兼用
カナ専用/漢直専用

でまず分類されよう。
英語ローマ字兼用は、日英共用配列などと呼ばれたりする。


英語配列では、
頻出文字がどこにあるかをチェックしよう。
たいていはホームポジションだ。
子音と母音が左右分離されてるのか、
それとも混在のままで合理化されてるのかも好みがわかれる。
また、頻出連接をどのように打てるのかも要チェックだね。


ローマ字配列では、
頻出のA、KTNがどこにあるかをチェックだ。
「ん」「っ」「ー」の場所も、
どのように合理化されてるかは大事。
左右分離なのか混在型かも、好みがわかれる。

また、出現率は3%だが、Yを使う拗音が、
どのように合理化されてるかを見ておくのも大事。

句読点は案外出現率が高い。(10位前後)
この位置も要チェック。

軽い単語をエア打鍵したり、
自分の名前をエア打鍵すると、
向いてるかがわかるかも?


日英共用の場合は、
上の二つをチェックするべきだ。
同じアルファベットを使いながらも、
二つの言語は連接が異なるため、
結局「二つの使い方をする」ことになるからだ。

だから二つの最適化配列を別々に使う、
と考えるか、ニコイチにするかは好みだ。


カナ配列は、いろいろな見方をしなければ、
良さが分からないことが多い。

まず打鍵範囲が自分の指能力で行けるかをチェックする。
僕個人は4段や@や:(;のさらに外)を使うのは無理なので、
30キーに収まることはかなり大事。

カナ配列では、
ヒートマップを公開しているものが多い。
ホームポジションがよく使われているか、
打ちにくいQPZ/やTYがどれくらい使われるかは、
ずっと使っていく上での参考になろう。


また、レイヤー移行方式(シフト方式)を確認することは、
使い勝手や好みに影響する。

同時打鍵方式が苦手な人もいるし、
連続シフト系は便利だが離しで手間取る人もいるし、
逐次シフトはそれを気にしなくていいが打鍵数は増えるし、
どれも一長一短だ。
自作キーボードでよく使われるTap/Holdは、
一定時間(100msが多い)ホールドするとレイヤー移行するが、
秒間3〜5打鍵以上の素早い打鍵では足枷になる。

レイヤーキー(シフトキー)が、
親指2キー(親指シフト系列)、
親指1キー(センターシフト系列)、
中指2キー(月配列系列)、
中指薬指4キー(下駄系列)、
人差し指ほかミックス(薙刀式)、
左と右を同時押ししてローマ字(よだか、かわせみ、phoenix)、
などでも、好みは分かれるに違いない。

レイヤーが何面あるかでも使用感はかわる。
多いと覚えにくいし、
少ないと覚えやすいが手が忙しいかもしれない。


運指感覚という言葉にしづらい感覚もある。
どんな言葉が指が繋がるか、繋がりにくいかは、
配列によって大きく異なるからだ。
確率分布に従う(新下駄)ものもあれば、
日本語の中核を打ちやすくする(薙刀式)もあれば、
よく使うフレーズを優遇(飛鳥)もある。

また、指の繋がり方、動線も、
左右交互打鍵重視、
アルペジオ(片手連続で隣指でタランと打ちやすい組み合わせ)重視もある。

結局は打ってみるまで、
この感覚を得ることは難しい。
なので、「自分の名前が打ちやすい配列はいい配列」
という、オカルトだがまあまあ当たる判別法
(その人にとって向く運指が、よく使う自分の名前で出てくれば、
たぶん好きになる)を僕は提唱している。


あとは、ホームポジションだけで打てる言葉を探すとか、
濁音や半濁音や小書きはどうやって打つかとか、
拗音や外来音はどうやって打つかとかで、
カナ配列は色々あったりする。



漢直はどうだろう?
4段使って2ストロークにするか、
3段だがもっと多いストロークになるか、
が最初の分かれ目だろう。

打ちやすいカナ配置か、はかなり重要だ。
T-Codeではカナと漢字が等価なので、
カナも漢字も法則性なくごっちゃになっている。

構成要素別に分けた方が使いやすいはず、
という一派もあり、
Phoenixなんかは、
わずか二段の中に左右子音母音分離型ローマ字を備える。
その代わり漢字は3ストロークも使う。

また、近年の岡さんの研究では、
任意の漢直と任意のカナ配列の融合の実用化を目指している。
カナ配列の運指の合理性に、漢直のカナ部分が勝てないからだ。
「ある打鍵列を与えた時、
○○漢直と○○カナ配列のミックスで打ったかのように、
確率的に解析する」というアルゴリズムで、
自動判定しようぜ、という野心的な研究である。
実用化したら革命よね。



と、いうわけで、
論理配列に関して概観してきた。

なんで急にこんなことを書きたくなったのかは知らないが、
まあ物理配列と論理配列を、
整理したくなったのだろう。笑


じゃあ何がいいの?
でいえばもちろん薙刀式だ。

・キー範囲30+スペースのミニマル系
・QTYにカナを置かない、最小の27カナ範囲
・記憶負荷は50と、カナ配列最小
・BSやエンター、カーソルやIMEオンオフが30の中にあり、
 入力から確定までシームレスに行える
・編集モードなる、ショートカットやマクロや記号類の面が二面あり、
 入力から訂正編集までシームレスに行える
・日本語の中核になる言葉がアルペジオ運指中心にあり、
 言葉を紡いで行きやすい運指になっている
・練習マニュアルがよく練られていて、
 最短1週間、平均3週間〜1ヶ月程度で打てるようになる

などが特徴だ。

薙刀式の動画を検索すれば、
多数打鍵例を見ることができる。
これが楽で速そうだ、と思えれば、薙刀式はむいている。
あとはあなたの名前を薙刀式で打ってみて、
「うむ」となれば、たぶん薙刀式はいいぞ。
posted by おおおかとしひこ at 13:13| Comment(0) | TrackBack(0) | カタナ式 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック