2018年12月02日

配列沼へのお誘い

(この記事は、自作キーボード Advent Calendar 2018 #3の2日目です)

え!? 自作キーボードなのに、まだQwerty配列なんですって!?
キーマップいじれるのに!?

こんにちは。
そのうち自キデビューしようと企んでいる配列沼の住人です。
自作キーボード沼と配列沼をつなげようと企みました。

これまで開発されてきた代表的な日本語配列(一部英語配列)を紹介します。
配列沼ガイドブックがわりにどうぞ。


「Qwerty配列は糞!」
これが配列沼の最初の一歩だと思います。

日本語を大量に書いたりしたときや、
日々タイピングして疑問に思うはずです。
「もうちょっと効率的な文字の配置ってないの?」ってね。


自作キーボード勢なら、
記号や修飾キーのキーマップをいじらざるを得ませんから、
日々効率的なキーマップのことを考えているはずです。
CtrlやAltはここでいいのか、スペースやエンターやBSやカーソルはこれがベストか、
DelやHomeやEndは…記号系は…
でも文字領域には、手つかずのままの人が多いのではないでしょうか?

そんなとき、
「効率的に日本語を入力するためには、Qwertyは効率が悪い。
文字を並べ替えてみよう。たとえば右手人差し指にA…」
などと考えるのが配列沼の入り口です。


配列の研究はキーボード誕生から行われてきましたが、
色々歴史をすっとばして、
以下のような代表的配列を紹介することで沼の紹介とします。

詳しくはその配列名で調べてみてください。
最後に参考サイトも上げます。


配列図つきで紹介するもの:

・Dvorak配列 英語専用、ローマ字も
・Colemak配列 英語専用
・Eucalyn配列 英語、ローマ字
・AZIK Qwertyのローマ字拡張

ローマ字専用:
・SKY配列
・けいならべ、ほか行段系配列
・つばめ配列
・カタナ式

かな専用:
・JIS配列
・親指シフト(Nicola配列)
・新JIS配列
・月配列
・飛鳥配列
・新下駄配列
・蜂蜜小梅配列
・薙刀式


以下説明。

配列は、おおきくわけると三系統あります。

・英語もローマ字も同じ配列で打つ
・英語とローマ字を、配列を切り替える(ローマ字配列)
・英語とカナを、配列を切り替える(カナ配列)

です。
上から順に、マイルドからアバンギャルドまでのグラデーションです。

まず英語も日本語も同じ配列にしたほうが、
楽だよね、と考える人は第一のグループです。
技術系のライターやプログラマーはこういう人が多いと聞きます。
Dvorak配列は古典的代表です。
Eucalyn配列は、自作キーボードの人にはおなじみですね。


しかし二つの言語は、
そもそも音の連接頻度や流れも違うから、
それぞれに合理的な指使いの配列を使い分けるべきだ、
と考えるのが二つ目と三つ目のグループになります。
日本語をローマ字で打つのが二つ目、
カナ配列で打つのが三番目。
ブロガーなど日本語メインの人が多いですね。

英語はQwerty配列のまんまにしておいて、
日本語を打つときだけ切り替える(IMEオンオフのタイミングで変える)
のが一般的でしょうか。
ショートカットはQwertyのままの方が指が覚えてるので、
そう設定する人もいます。

あとは、
日本語をローマ字入力する為の最適化配列の探求か、
カナ配列の最適化の探求か、という違いになります。

カナは50音覚える手間がありますが、一打で一音打てます。
ローマ字は20字程度を覚えればよいですが、一音に数打必要です。
両者はトレードオフの関係にあるので、
それぞれの事情によって、様々な選択がありえます。

カナ配列は、シフト(自作キーボード勢には、
RaiseやLowerでおなじみの、レイヤーでカナを振る)ことによって、
狭い打鍵範囲に50(以上)のカナを乗せるのがふつうです。




では各論に入りましょう。



・Qwerty配列(1882) 配列図省略
ていうか100年以上前の配列なのかよ。

ローマ字に関しては、
「最も使う(12%)Aが最弱の左小指というマックスの拷問」
「良く使うTY遠すぎ」「ほぼ使わないFJがホームポジションて」
「de、ki、muとか無理」「wazawazaなど左手殺しがある」
「カーソルもエンターもBSも遠すぎ」
「なんなんて、n何回?!」「ーなんて見ずに打てるか!」
などの、積年の恨みがありますね!


・Dvorak配列(1936) 英語専用、ローマ字も
Dvorak.jpg

英語圏で、Qwerty配列の効率の悪さが知られていないわけがありません。
配列の改良は昔からありました。
そのうちの最初の名作と呼べるものがこれです。

左手中段に母音が集まってるので、
「これローマ字に使えね?」と思った人たちが、
英語もローマ字もDvorak配列で使う、
というアイデアを思いつきました。

しかし実際には、
日本語では頻出するKが英語ではレアなので冷遇されていたり、
拗音のYが微妙だったり、
そのままでは使えないことがわかってきています。
これを改良するために、
「配列はそのままで、入力規則を変更」
(たとえばCでKを兼ねる)などで対応しているのが、
DvorakJP、DvorakYなどです。
DvorakJP.jpg

またこの配列を使うと、
「ショートカットのバインドがめちゃくちゃになる」現象があります。
なので「コントロールを押した時だけQwerty」と設定する人も多いですね。


・Colemak配列(2006) 英語専用
Colemak.jpg

現在最高に英語の効率がよいらしいです(異論あり)。
QWZXCVあたりがQwertyと同じなので、ショートカットが楽です。
僕は日本語入力のことをメインに考えているので、詳しくないので省略。


・Eucalyn配列(2018) 英語、ローマ字
Eucalyn.jpg

HJKLを十字に組むように配置しているのがポイント。
QWZXCVも心強い。
ショートカットをそのまま打つなら、なかなかの融合だと思います。
配列図は分割、格子を意識しておきました。


・AZIK Qwertyのローマ字拡張
AZIK.jpg

「Qwerty配列のままで、入力規則だけ拡張すればいいんじゃね?」
という考え方。
そのままQwertyローマ字を打ってもいいし、
拡張規則を使って省打鍵入力してもいいよ、
というもの。
IMEのローマ字テーブルをいじるだけで実装できるので、
キーボードや環境に左右されないという強みがあります。
でもQwertyローマ字の欠点はほとんど継承します。



ローマ字専用日本語配列

・SKY配列(1987)
SKY.jpg

「左手が子音、右手が母音だと、左右交互打鍵になって速いんじゃね?」
というアイデアは、比較的昔からありました。

これを、「行と段を別々に指定する」という意味で、
配列界隈では「行段系」とよばれています。
5母音しか右手側を使わないので、空いた上下段には、
二重母音拡張、撥音拡張が入っています。

行段系は簡単につくれるので、さまざまなバリエーションがあります。

・けいならべ(2006)、ほか行段系配列
けいならべ.jpg

行段系で一番効率がよさそうなのは「けいならべ」ではないかと思います。
日本語の再頻出連接は「ょう」ですが、
それを打ちやすい拗音位置になっています。

行段系は、子音部と母音部を別々の配列から持ってきて、
合成する、という配合も可能ですよ。
その他の行段系はこちら。
いぬふぐり.jpg

きゅうり改.jpg

Km式.jpg

和ならべ.jpg

こまどり.jpg


・つばめ配列(2011)
つばめ.jpg

変わり種。中段のみで打つ、というコンセプトです。
一打目で行、二打目で段を指定。
(フリック入力だって行段系でほぼ同原理)

・カタナ式(2017)
カタナ式.jpg

僕の作ったものです。
「左薬指小指、右小指不使用」
「中央にカーソル、エンター、BS」
をコンセプトにしています。
母音の配置が肝で、
二重母音ai, ei, ouとyouがアルペジオ入力(隣の指でタランと打つ高速入力)
で打ちやすくなっています。

使うキーが少ないから、
7×4のテンキー横づかいくらいの自作キーボードを作りたいんだよなあ……



カナ専用日本語配列

・(標準の)JIS配列(1980)
JIS.jpg

そもそもJISキーボードは、この配列を載せるために生まれました。
USキーボードにくらべ、キーの数が多くなっています。

日本語の50音が1キーに対応しないと直感的でない、
というのは当時の考え方に過ぎません。
この50キーをブラインドタッチできる人は、なかなかの変態だと僕は思います。
ちなみに次の動画は、今年のリアルフォースタイピングチャンピオンシップ決勝トーナメント。
https://www.youtube.com/watch?v=GEhx_ZGB5Hc
3:21:56からグランドファイナル。日本一のJISカナ入力が見れます。
ほとんど手がついていない浮きっぱなしの空間把握。
すごい変態が世の中にはいることよ。


・親指シフト(Nicola配列、1979)
Nicola.jpg

「文字キーを30キーに収めるには、
シフトを使って二種類出せばいいんだ」
というアイデアに基づいたものです。
自作キーボードでもレイヤーという考え方でおなじみですね。

そのために、親指キーという同時打鍵用のシフトキーがふたつあります。
ふたつあるのがミソで、
「右手のキーと右親指キーでシフト」
「右手のキーと左親指キーで濁音」(左手は逆)
という、同手シフト/逆手シフトを考え出して、
違う音を出すことに成功したものです。

むかしからあるので、古参作家には根強い人気。
自作キーボードの人にも既に実装した人がいると聞きます。
親指キーがいい位置にあるキーボードが最近ないので、
「自作してしまえ」と思っている親指シフト愛好家は、
わりといるんじゃないでしょうか。

僕個人も少し打てますが、
古い配列なので、運指効率がよいとは思えません。
以下に述べる後発配列の方が、楽で速いと考えています。


・新JIS配列(1986)
新JIS.jpg

「シフトはひとつ、30キー強に文字を収める」
という発想の、名作配列です。

スペースキーをシフトキーに使うのは、なかなかの発想です。
旧JISに変わって普及されるはずでしたが、
なぜか小指シフト(普通のシフトキーでしかシフトできない)に改悪され、
しかも各メーカーの足並みがそろわず、廃止された不遇の配列です。


・月配列(2003)
月.jpg

不遇の新JIS配列を、特別なエミュレータなし
(MS- IMEや、Google日本語入力のローマ字定義のみ)
で実装可能です。

シフトは、中指キー(DK)のあとに打ったものにかかる、
という「中指前置シフト」を採用。
これはIMEの「使ってないローマ字定義領域」を使う為です。
これにより、新JISの中指キーにあたる部分を少し変更した、
「一文字打鍵または二文字打鍵でカナを打つ」
という配列ができました。

歴史的にいうと、なんと2ちゃんで作られた、という出自を持ちます。
(2スレ目の263レス目で確定したからこの名がある)
使い手もそこそこ多い、と聞きます。
欠点は、一部の音に弱いこと。(たとえば「ぴゅ」は5打かかる)
これらを改良、または濁音拡張、半濁音拡張、拗音拡張などをした、
月配列U、月配列E、月配列K、月配列Y、月配列T、
叢雲配列、ミズナラ配列、ブナ配列などがバリエーションとして存在します。
気になったら、色々調べてみてください。


・飛鳥配列(2010)
飛鳥.jpg

親指シフトは運指効率が悪い。
しかし親指でシフトするという操作自体は悪く無い。
だったら、配字を工夫すればよいのではないか。

こう考える人はたくさんいました。
その中で名作がたくさん生まれます。
その中で指のつながりがよいのが飛鳥配列。

親指シフトでは「清音と逆手のシフトで濁音」
という基本ルールがありましたが、
飛鳥配列では清濁関係なくばらばらにする、というルールで並べられています。
マスターが難しいですが、
清音濁音で別々に運指経路を組めるので、
各音に最適化された配置になっています。

またこのシフト方式は「連続シフト」といって、
「押しっぱなしでもシフトがかかる」のが特徴です。
シフトを押しっぱなしにしたままの運指連携がいくつも用意されているので、
「ぬるぬる繋がる運指」が特徴です。

最速配列候補の一です。


・新下駄配列(2010)
新下駄.jpg

もうひとつの最速候補です。
「親指? うぜえ。キーボードによって位置が違うし」
という考えから、
「中指、薬指と同時押しすればいいじゃん」
と発想、同時押しによってシフトします。

運指に工夫があり、
中指や薬指から人差し指に、
アルペジオで繋がるよう配置が工夫されているのが速さの秘密です。

またこの配列は、「右手上段中指・薬指」との同時押しによって、
「拗音が同時押し一発で出る」事を特色としています。
「しょ」などは二文字表記ですが、発音上は1単位(モーラ)です。
「1アクション1モーラ」によって、
アクションを少なく打っていけるのが特徴です。

欠点はその定義の多さでしょうか。
ローマ字に比べれば、とても覚えることが多いです。
(覚えれば最速のうわさあり。作者もXタイパーだし)


・蜂蜜小梅配列(2014)
蜂蜜小梅.jpg

「最速よりも、日常の打鍵を楽にする」
というコンセプトの親指シフト系配列です。
清濁同置なので楽に使えます。
また蜂蜜マトリックスという拗音同時押しで、拗音1アクションを実現。
清濁拗同置を実現しています。


・薙刀式(2018)
薙刀式v10配列図simple.jpg

僕の作った配列。カラー図なのは作者特権で。笑。
ついでにリンク: http://oookaworks.seesaa.net/article/456099128.html

短時間最速よりも、長文(小説、脚本)に特化しています。
候補選択の左右矢印(縦書き想定)、BSが配列内にあるのは、
カタナ式同様の考え方です。

特徴は、拗音が「し」「よ」同時押しで「しょ」になるなど、
「使う二つの音の同時押し」にしたことにあります。
拗音や「ティ」(「て」「い」同時押し)などの外来音は、
これまでの配列では無連想の位置にあり、
全て覚えるのは困難でしたが、
薙刀式では覚えていなくても原理さえわかれば打てるので、楽。

同時押しによる「編集モード」が充実していて、
長文編集用のショートカットが多数集められています。



実装について。

キー配列エミュレータ、
DvorakJややまぶきR(Windows)、
Karabiner(Mac)によるものが一般的です。
月配列のように、IMEのローマ字定義でするものもあります。

また「かえうち」なる、キー配列変更USBアダプタも作られています。
(OSフリー、エミュレータフリー!)

自作キーボードでQwerty配列だとしても、
これらのものをかませば配列が変更できます。
強者はファームウェアに焼くでしょうが。



以上、駆け足配列沼ガイドでした。


わりと名作を上げましたが、いろんな配列が世の中にはあります。
飛鳥の改造版かえであすか配列、4段使用の龍配列、
行段系同時押しカナ配列のよだか配列などが有名ですかね。
また現在も開発中のものに、
かわせみ配列、蛇配列、月光などがあることを付記しておきます。


新配列をマスターするのにどれくらいかかるか?
という問いですが、
自作キーボードの配列に慣れるくらいの手間だと考えると、
そんなには大したことないと思います。
人や配列や相性によりますが、一ヶ月くらいで実用レベル、
三ヶ月とか半年で以前の配列を越えることが多いですね。

また、複数の配列をブラインドタッチすることも可能です。
自作キーボードとふつうのキーボードを使い分けられる程度には、
複数の配列も使えます。
インストール禁止の会社ではデフォのqwerty、
自宅では別配列を使っている人も多いですね。


以下参考になるリンク。

http://jisx6004.client.jp/layout.html
http://anomy.jp.land.to/layouts/key_layout_links.html
atwiki「指に宿る記憶」より、
行段系https://www4.atwiki.jp/japanese_keyboard_layout/sp/pages/5.html
カナ系https://www4.atwiki.jp/japanese_keyboard_layout/sp/pages/6.html
情報がやや古いですが。
あとは気になった配列名でググると、色々出て来ると思います。
古いですが、2ちゃんの「よろしければ配列について教えろ」過去スレが参考になるかも知れません。

ついでにローマ字のアルファベット頻度表、カナの頻度表も貼っときますね。
http://www7.plala.or.jp/dvorakjp/hinshutu.htm(ローマ字、11万字)
https://kouy.exblog.jp/9731073/(カナ、100万字)


なお、このブログの「カタナ式」カテゴリでは、
カタナ式と薙刀式の開発記を書いていて、
時々他の配列の研究をした話も書いてます。



え? そんなオリジナルのキーボード作ったのに、
糞Qwerty?オリジナル配列をつくろうぜ!
逆に配列沼の住人!
物理配列ごとオリジナル配置を考えて、ビルドするんだ!


ーー最善の入力方式はなにか?
答えはまだ、決まっていない。(沼)



この記事は、
NiZ Plum 75(静電容量式で35gの中華キーボード。
高さの違うOEMキーキャップで疑似tentingしたもの)と、
薙刀式で書きました。
O4-1.jpg
posted by おおおかとしひこ at 00:00| Comment(5) | カタナ式 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして。

かな専用配列の実装について質問させていただきたいのですが、kinesis advantage2やHHKB(US),NIZのキーマップ変更機能などでは実装できず、

複数PC/OSで使用したい場合は、それぞれのPCで専用ソフトを使って設定を行うか、有線接続しかえうちを使用するか、変更機能を持つ自作キーボードを使用する必要があるということでよろしいでしょうか?
Posted by ねこ at 2020年08月27日 00:17
>ねこさん

カナ配列に関してはほぼそうですね。
1キーに2文字出力する機能があれば、kaを出力、などで実装できるかもしれませんが、同時押しなどの複雑な入力まで対応していないことがほとんどです。(あるかどうかは分かりません。それぞれの仕様を調べてみてください。わかる範囲だと、NiZとvortex coreでは無理です)

また、かえうちは複数のOSには対応しますが、Macの英数かなキーはWinにはないし、Winの変換キーはMacにはないので、「どんなOSに繋いでも望み通りの挙動をする」設定は厳密には無理です。記号も全てには対応していないし。(カナ配列を動かす程度なら可能です)
これは自作キーボードでも原理的に同じです。
(大抵の場合、Win用のキーマップとMac用のキーマップを両方つくり、
切り替えキーを定義して切り替えるのが現実的)

また、残念ながらかえうちは3キー同時押しには対応していないので、我らが薙刀式は理想通りには動きません。(2キー同時妥協版は定義だけは存在します)

カナ配列文化は、おもにWinのデスクトップPCで発達したので、Win上で、一台で、配列変更エミュレータを使うのが一般的といえますね。


どのマシンでもどのOS(スマホやiPadなどを含めて)でも同じカナ配列を使えれば最高なのですが、今現在は、それぞれ個別に対応か、自作キーボードで都度プログラミングする以外に手段はないと思われます。

あ、あと日本語入力環境をGoogle日本語入力に全て統一できれば、月配列だけは実装可能です。(月配列はそのために作られた)
Posted by おおおかとしひこ at 2020年08月27日 05:34
>大岡さん

返信ありがとうございます

以前から興味もあったため自作キーボードの購入を検討してみようと思います。

QMK_firmwareというものを使うのですね。

OSはWindowsとたまにLinuxを使うのですが、日本語の文章は主にWindowsで入力するため、Linux上については日本語入力はあきらめようと思います。
Posted by ねこ at 2020年08月28日 20:19
>ねこさん

QMKを自由に使うならプログラマーレベルの知識は必要なのでご注意を。

キー入れ替えだけならQMK_configuratorを使うだけでいいですが、
カナ配列実装となるといきなりc++必須です。
ちなみにQMKのマニュアルは全部英語です。
(最近有志が邦訳しつつありますが)
linuxが出てくるあたり、そのあたり慣れてらっしゃるかも知れませんが。

また、eswaiさんをはじめ、有志の方々がカナ配列をQMKで実装しているので、それらを探すと近道だと思います。
Posted by おおおかとしひこ at 2020年08月28日 22:06
>大岡さん

ありがとうございます。色々と勉強しながら挑戦してみようと思います
Posted by ねこ at 2020年09月03日 02:08
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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