読者です 読者をやめる 読者になる 読者になる

AZIK拡張の余地を大幅に増やす方法

AZIKが本来持つ拡張に加えて、一定の規則性を伴って独自拡張を増やす方法に関する一検討です。英字のみの組み合わせからは離れるのでAZIKに限らず行段系配列ならどれでも使える話だと思います。

さて、昨日の日記で下のように偉そうに書きましたが、

ローマ字の組み合わせの余地は十分残っているので

実際のところAZIKが本来持つ拡張を使うと英字の組み合わせで使える余地はほとんどありません。では、どうやって拡張を増やせば良いのでしょうか。
まず使用できる英字の組み合わせについて確認していきます。

拡張の1打鍵目に使えないキー

例えば「あいうえお」「12345」「、。」といった文字キーは1打鍵で文字を確定させるため、拡張の最初の文字として使用することができません。

拡張として使用できる英字の組み合わせは残り少ない

これらを差し引いて一打鍵目に使えるものについて、例えば[k]で始まる組み合わせで定義されているものはこれぐらいあります。

k → [aiueoznkjdlqhwpyg]

さらに英字の組み合わせから連想できるものとして次のものが定義されています。

kr:から
km:かも
kt:こと

連想できるというのは重要ポイントで、残りの「kx,kc,kv」に連想できる単語を割り当てるというのはなかなか難しいものがあります。なにより残っている数が少なすぎます。そして、これはその他の子音の役割を持つ英字についても当てはまります。

禁断の数字キーを利用する

これまでは英字の組み合わせばかり考えていたのですが、ぽぷさんの独自拡張を見て目からうろこでした。確かに数字キーを2打鍵目以降に使うことで拡張の余地は無限大に広がります。僕の中で4段目というのはJISかなを経験した結果、使うべきではないという結論に至った忌避すべきものですが、拡張として頻出単語を短縮して打つことができるのであれば使うのもやぶさかではありません。

ナイーブな数字キーの利用

s01 = そこで
s02 = しかし
s03 = さながら
k01 = からだ
k02 = きびしい

のように英字から任意の数字へと遷移すればいくらでも定義を拡張することができます。しかし、これでは無連想漢直入力と同じであり、覚えるのも使用するのも難しいのは明らかです。ここでは1打鍵目に子音となる英字を使用していますが、それだけではヒントが少ないように思います。

また、数字を連続してつなげるということは、登録単語の数が10個だけであれば[s0][s1]で良いのですが、100個登録する場合は[s00][s01]のように0パディングする必要があります*1。この方法を取ると、徐々に定義を増やしていったときに以前までのルールを変更しなければならなくなる可能性があります。

数字キーに仮想的に母音を割り当てる

以上の二つの問題を解決するために数字に母音を割り当てる方法を提案してみます。ありがたいことに数字は10個ありますので、それぞれ5個ずつ仮想的にaiueoを割り当てます。

a i u e o a i u e o
1 2 3 4 5 6 7 8 9 0

ここで二つの「aiueo」に分けたのは左手の英字から始まる拡張の場合は右手の「67890」を2打鍵目に打ち、右手の英字で始まる場合は左手の「12345」を2打鍵目にするためです。

これによって例えば「s6〜」で始まる拡張に「さ」で始まる単語を、「s7〜」で始まる拡張に「し」で始まる単語を、というように区別して登録することができます。だいぶ覚えやすくなりました。
さらに、二つ目の問題である[s00]のような拡張定義が変化してしまう問題を解決するとともに、より覚えやすくするために3打鍵目に英字を使用することを提案します。
最終的には次のような拡張になります。

s7s:しかし
s6r:さようなら
s0d:そこで

初めの2打鍵で登録する単語のかな1文字目の情報を表し、最後の1打鍵で最後のかなの子音を表します。英字+数字の組み合わせだけで無連想入力をやるのに比べて、拡張定義自体にかなりの情報を盛り込むことができました。

この方法で定義できる拡張の個数は次のように求められます。

1打鍵目に使用できる英字(aiueoqを除く)
bcdfghjklmnprstvwxyz:20個

それぞれについて仮想的な母音(5個)を組み合わせ
20 * 5 = 100

さらに3打鍵目にすべての英字(26個)を組み合わせる
100 * 26 = 2600

すべてのかなについて26個ずつという制限はありますが、十分な規則性を持った上でこれだけの数の拡張の余地を増やせるのはかなりの武器になります。
しかも数字の部分については自由に増やすことができるので、[s6〜]で始まる単語テーブルがいっぱいになったときは、これまでの定義はそのままにして(!)[s66〜]という拡張を追加することが可能です*2

以上の方法をとることで、AZIKの拡張を土台にした上でタイプウェルの単語をすべて登録することも理論的には可能です。実際には、4段目のキーを使うことでかなり打ちづらくなってしまうので、拡張定義に登録する単語は3文字以上、できれば4文字以上の単語のみを登録するのが良さそうです。

母音で始まる拡張を強化する

ところで、この方法では「ありがとう」のように母音から始まる単語を登録することができません。そこで、「@」に犠牲になってもらって次のような拡張を実現することを提案します。

@au = ありがとう
@is = いらっしゃいませ
@@ = @

つまり、@から母音に遷移したときに拡張単語を使用することとし、初めの2打鍵の順番は数字の時とは逆になります。結果的に@は1打鍵で入力することはできなくなりますが、とりあえずそこまで頻度が高くないことを考えて、@を連続で2打鍵したときに入力できるようにしておけば良いでしょう。

で、どうやって実現する?

ACT on ATOK
にもあるとおり、またATOK2009を使用しているぽぷさんのコメントから、ローマ字カスタマイズの制限が数年前から変わっていないことが確認されています。ローマ字側の4文字という制限はともかく、濁点も1文字とカウントした上でかなに登録できるのは6文字までという制約は大きく、任意の単語を登録できない不満が募ります。
まぁ、そもそもAZIK定義を入れた時点で550個制限いっぱいいっぱいなので、独自拡張を使おうと考えた場合に、もはやATOKのローマ字カスタマイズを使うことはできません。

現状で使用できないのは困るので結局は姫踊子草等のカスタマイズソフトを別途使用することになりそうです。しかし、今愛用している繭姫もいろいろバグをはらんでるっぽいのでなかなか苦難の道ですね。


とりあえずみなさん。いつかATOKだけで完全にカスタマイズできるようにローマ字カスタマイズに関する要望をがんがん出しておきましょう!
製品・サービスに関するアンケート

*1:最短一致ルールを使用する場合

*2:最後に英字を追加したことによる利点です