RGT(ローマ字互換単打)による日本語入力の効率化

## はじめに
現在、日本語入力の方式はローマ字方式が主流となっていますが、入力効率はあまり良くありません。
入力効率が悪いにも関わらず、どうして普及しているかというと、学習コストの低さが大きな理由だと言われています。

ローマ字入力方式は、他の方式（かな入力など）と比べて覚えるキーが非常に少なく、初めてキーボードに触れて操作を覚えようとしている学習者にとっては非常に大きなメリットとなります。

ローマ字入力を一度覚えた段階で、いくら入力効率が良くなるといっても、ローマ字入力とかけ離れた新たな入力方式を高い学習コストをかけて習得しようとする人が少ないのは当然ともいえます。

そこで、現在習得しているローマ字入力と互換性が高く、しかも学習コストが低い入力方法で、多少でも入力効率を上げることができないかということが考えられます。

このようなもので代表的なのはＡＺＩＫという入力方式で、ローマ字入力との互換性が高く、学習コストもそれほど高くなく、打鍵数をローマ字入力に対して１０％程度下げることができるようです。

私も、長らくＡＺＩＫ方式で入力してましたが、最近自分でキー入力関連のツールをつく作っているうちに同じような目的で、もっと良いものができないかと考え、新たな入力方式を作ってみたところ、かなり良好な結果が得られたので、ここで紹介することにしました。

## きっかけ
ＡＺＩＫを使い続けてきた私が、新たな入力方式を作ろうとしたきっかけは、いろいろな入力方式を調べていたときに、たまたま[jacql打鍵法](http://jgrammar.life.coocan.jp/ja/tools/imekeys.htm#Jacql)というもの見つけたからです。

その理論のなかで、以下のような記述がありました。

>Jacql の特徴は、「J,C,Q,L」を単体で仮名に割り当てることである。 AZIKが数多くの定義を追加したわりには打鍵数が減らない(*1)のは、 元々、出現頻度が少なく打鍵数もさほど多くない組み合わせを対象にしているからである。 例えば、「かい(KAI→KQ)」では、３打鍵が２打鍵へと３３％の減少になる。 また、「さい(SAI→SQ)」「たい(TAI→TQ)」も同様である。 しかし、Jacqlの「か(KA→Q)」単体は、「かい」「さい」「たい」などを合計したものよりも、 はるかに出現率が高く、しかも、５０％の減少率になる(*2)。

ここでjacqlが「J,C,Q,L」に絞って単体割り当てしているのは、ローマ字入力では「C,F,J,L,Q,V,X」は、任意使用の文字となっており、ローマ字入力との互換性を保たれるからです。

私が啓発されたのは、jacql打鍵法の最大の着眼点である「キーの割り当てには、**単体の文字を割り当てれば５０％の削減になる**」ということです。

これを応用すれば、もっと面白い入力方式ができるのではと考えたのです。

## ローマ字で連想しやすい単打をできるだけ割り当てる
「単打（単体で仮名に割り当てる）」ことで入力効率が上がるのであれば、jacqlのように「C,F,J,L,Q,V,X」に限らず、できるだけ多くのキーに単打を割り当ててはどうかと考えました。

「連想しやすい」とは「R」なら「る」に割り当てるといったように、ローマ字の延長に単打を割り当てるということです。

かなの出現頻度から、以下の子音キーに単打を割り当てました。
Ｗ：を　Ｒ：る　Ｔ：た　Ｓ：し　Ｄ：で　Ｇ：が　Ｈ：は　Ｋ：か　Ｍ：ま

他の子音キーには、連想しやすいローマ字延長の文字で出現頻度の高いものがなかったので、多少学習コストは上がりますが、出現頻度の高い文字を割り当てました。
Ｐ：こ　Ｆ：と　Ｊ：の　Ｌ：す　Ｚ：て　Ｘ：っ　Ｃ：く　Ｖ：に　Ｂ：な

## 一度入力したものを取り消す
ただ単に、単打を割り当てただけでは、非常に大きな問題があります。
誰でも気がつきますが「Ｒ」と入力して「る」としてしまったら「ra（ら）ri（り）re（れ）ro（ろ）」が入力できなくなります。

ですが、一度入力しても「ra」と連続して入力したら「ら」に置き換えるようにすれば、単打も活かせますし、ローマ字入力との互換性も守ることができます。

このようにして、上記の単打割り当てを全てツールに実装しました。

## 問題１　単打の後に母音や「y」「h」が続く
一度入力したものを取り消すことで、単打を活かせるようになりましたが、別の問題が発生します。
「かいぎ」のように単打の「か」の後に「い」のような母音が続くと「き」となります。これは、当り前で「ki」と連続して入力したのですから「き」になるのは当然です。

しかし、単打で入力をし始めると「k」を入力したら「か」と表示されるので、思わず「i」と入力して「かい」となるように入力しようとするようになります。

また、「C,S,W」の後に「H」が続く場合は、ローマ字互換性から同じく単打の打ち消しが必要となります。

これを回避する方法は、いくつか考えられます。
#### 1. 「ka」と入力する
この場合だけ「k」の後に「a」を入力して「か」を確定させる。
ローマ字入力からすると素直そうですが、単打の例外となり、しばらくこの方法を試してみましたが「k」と「ka」の打ち分けで混乱するのであきらめることにしました。
#### 2. 他の文字を入れてから「i」を入力する
この問題が起きるのは、単打の後に母音や「y」が続く場合なので決まった特定の文字を入力する方が混乱が少ないので、実際の実装ではスペースを割り当てました。

## 問題２　「っ」の入力
ローマ字入力との互換性を守るには「っ」の入力が単打の連続でできなければなりません。
しかし「かけい」のように「kkei」と単打と同じ子音が続くと「っ」になるので、問題１と同様にスペース入力による回避が必要になります。

このように、単打による入力効率の向上というメリットは得られますが、適宜スペース入力による取消問題回避が必要になることがデメリットとなります。

## 使用頻度の低い子音の活用
「p,f,j,l,z,c,v,b」などは、どの母音との組合せでも出現率は１％を下回り、子音を活かした単打の割り当て、例えば「P」を「ぱ」に割り当てても、ほとんど効果が見込めません。
学習コストはかかりますが、これらの子音には、出現頻度の高い単打を割り当てました。

Ｐ：こ　Ｆ：と　Ｊ：の　Ｌ：す　Ｚ：て　Ｃ：く　Ｖ：に　Ｂ：な

連想で覚えすい「W,R,T,S,D,G,H,K」ものを先に覚えて、慣れてきた段階でこれらの単打を拡張して使えばストレスなしに使えると思います。

## まとめ
ＲＧＴ（ローマ字互換単打）は、以下の特長を持っています。

#### 1. ローマ字入力との高い互換性
「tsu」「kwa」「gwa」以外は訓令表（第２表を含む）、ヘボン式の全てをローマ字入力が可能で、ローマ字入力との高い互換性があります。他に、このようなローマ字入力との互換性が高いのはjacql打鍵方式ぐらいしかないと思います。
これにより、新しい入力方法を学習するときのストレスが低くなります。
#### 2. 学習コストの低さ
ローマ字入力で慣れ親しんだ子音との連想で、簡単に主要な単打を学習することができます。
例えば「しました」（smst）や「はかる」（hkr）などは、非常に素直に覚えられるので、早い段階から単打が可能となります。
#### 3. 入力効率の高さ
[「文字は読むため、文は伝えるため」](http://semialt.hatenablog.com/entry/2016/12/25/181638)の記事では、２１８文字の例文で色々な方式の比較をしています。
ＲＧＴ方式でも同じ例文を入力してみたところ、２９３打数となりました。
AZIKと同じくシフトが無いので「動作数」と「総打数」は一致しています。

AZIKの３４０打数、Nicolaの３１２打数よりも低い打数となり、ローマ字入力と比べると２０％以上の削減となり、かなり入力効率の高いことが分かりました。
#### 4. 使用するキーがホームポジションのみ
日本語の入力効率だけ考えると、数字キーなども利用することは考えられますが、学習コストを低いままに抑えること、入力しやすいことを配慮して、使用するキーはホームポジションに限定しています。
#### 5. シフト動作が無い
同時にキーを押すシフト動作がありません。操作性が良く、学習コストも低く抑えられます。
 
## 課題
単打で入力したものを**取り消す**という操作に頭の切り替えが必要で単打による打鍵スピードを上げる妨げになります。
今のところ、スペースキーでの取消としてますが、もう少し工夫が必要かも知れません。

この文章も全てＲＧＴ方式で入力しました。いくつかの語句は、非常に入力しやすいので「指が覚えた」状態になりました。
たとえば「しました」は頻繁に入力したので非常にスムーズに入力できるようになりました。

今後、もう少し改善できないか検討を続けます。