このブログを検索

開発思想説明

こぶりローマ字変換は、当初はカタカナ語の入力に便利なようにGoogle日本語入力のローマ字テーブルをカスタマイズしていたが、やっていくとGoogle日本語入力の可能性に目が開いた。

一見、MS-IMEと同じ様な機能に見えるが、カナに限らずどんなユニコードの文字でも定義出来ること、未確定状態を積極的に利用する事で部分的に重なる定義でも「かな」が表示出来る事、で従来のローマ字変換とは一味違うものが出来た。
従来のローマ字変換では、n は「ん」と定義してあるが、次いで a が来ると「な」になる可能性があるから、n を入力した段階では n のままで、次いで母音字や y 以外のアルファベットが来た時点でようやく n が「ん」と表示される。しかし、Google日本語入力では、未確定状態の n を「ん」と表示し、次いで a が来ると「ん」が「な」に変化するような定義が可能になる。
そして、折角作った素晴らしいものだから広く使って貰えるように以下の事を考えて修正した。

使うためのメリット

新しいローマ字変換を世の中の人に幅広く使ってもらう為には、使う為のメリットが必要だ。それが、互換性、統一性、利便性である。
  • 互換性: 従来のローマ字変換と同じ入力で同じ変換が得られるようにする。
  • 統一性: 少しの規則を覚えるだけで新しい機能を使いこなせるようにする。
  • 利便性: 従来のローマ字変換よりも楽に入力出来るようにする。
実は、過去にローマ字入力にはJIS X4063:2000 という基準があったが、2010年に廃止された。これにはパソコン各社に共通する内容を必須項目とし、それ以外を推奨項目として纏めたものだった。

従って、新しいローマ字変換では不都合がない限りはJIS X4063:2000の必須項目の互換性を保つことにした。
ローマ字変換のやり方として主に訓令式ヘボン式のやり方がある。かなの入力に関しては、訓令式は規則的かつ入力に要するキー数がヘボン式よりも少ない。(例:「つ」の入力: 訓令式→ tu、ヘボン式→ tsu) JIS X4063:2000では、このどちらでも入力可能なようにしている。
もし、ヘボン式のみ採用すれば、かなの入力で tu は未定義になるので、これを「トゥ」などの入力に割り当てる事も可能になるのだが、訓令式もサポートするので、別の方法でカタカナ語を入力する事を考える。 

利便性

未確定状態の柔軟性を最大限活かす為に、全てのアルファベットに「かな」を割り当てた。これによって、カタカナ語の入力に於いて有りもしない母音キーを押す必要が無くなり、非常に快適に入力出来る。
英語の綴りと全く同じ入力も。例: prompt → 「ぷろんぷと」
長音符には r を使うようにしたので、指の動きが楽になる。- は記号の入力専用にしたので、マイナス符号等の入力がやり易くなった。
例: mark → 「まーく」
こぶりローマ字変換では n を押した時点で「ん」が表示されるから n を表示させるためだけに n を余分に押す(通常のローマ字変換では nn で「ん」が確定する)必要性が大きく減少した。

それで、「ん」の入力では nn で「ん」を確定させない事にした。そうすると、「ん」の後に「な」行が来る場合でもローマ字の通りに入力出来る。
nn を「ん」にしない事で、ヘボン式に完全に対応出来るようにもなった。
そしてカタカナ語以外でも、母音キーを押さずに入力出来る「かな」があるから、打鍵数の節約を図ることも可能になる。
意外にも、母音キーを押さない方法に私は直ぐに慣れた。それは、子音キーを押した時点でもう欲しいカナが表示されているいるし、その後に母音キーを押しても表示は何も変わらない事を体感したからだと思う。それは「ん」の入力に関しても同様で、当初は nn でも「ん」となるようにしていたが、「な」行が続く場合に邪魔と感じるようになったので取りやめた 。
この他に、c で「ちゃ」行を表す事にした。「じゃ」行の子音が j だけで入力出来るのに「ちゃ」行の子音は ch でも ty でも j に較べるとキーが増えて不満だったのだ。
c の子音が「ち」で、ch の子音が「チ」の理由: どちらも同じ「ち」とすると、c の入力後に h をどんなに沢山入力しても状態が変わらない事になるので不都合が生じる。その為に一方をひらがな、もう一方をカタカナにする。カタカナ語でない場合も含めて c の利用を勧めているので c の方をかなにした。それでも、chi なら「ち」になる訳で、ヘボン式の範疇なら従来と変わらないし、カタカナ語なら ch を 「チ」と読ませたいだろうからカタカナで支障ないはず。

確定させる為に ' と ; を定義する

子音の文字を押しただけで表示される子音のカナは、未確定な状態にある。例えば、t を押すと「と」が表示されているが、続けて a を押せば「と」 → 「た」へと表示が変化する。その時、実は「とあ」と入力したかったのなら、to と押してから a を押せば良いのだ。

to と押した後に表示されている「と」は確定した状態で、その後にどんなキーが押されようとも変化することは無い。しかし、例えば、「てぃ」を確定したくても続けて母音のキーを押せば「ちゃ」行のカナに変化してしまうから、「てぃあ」を入力するには「てぃ」を確定させる何らかのキーを定義した方が良い。

それで、未確定状態のカナを確定させるキーとして ' を定義した。従来も、n を「ん」に確定させる為に ' が定義されていたのを全ての未確定カナに広めたのだ。勿論、「た」のように ' 以外に o という確定させるキーを持つ未確定カナもあるのだが、そこは統一性を重視した。(例外: q の一度押しでは、次に q か e か o が来ると変化するので未確定だが、' は定義していない。)
q の確定キーを定義しない理由: 「えゃ」の表記は英語発音の[æ]をカナで表す為のもので、この発音は閉音節…つまり、この後に必ず子音が来る…のものだから次に q も e も o も(英語発音なら)絶対に来ないのだ。
そのように決めてから、後で日本語キーボード上で ' の位置が使い難く、またShiftキーまで押さなければ使えない事を知った。そこで、 ' の他に ; も確定させるキーとして使えるように変更した。この ; キーの位置はUSキーボードと日本語キーボードで同じで使い易い位置にあるし、Shiftキーを押す必要も無い。
かな漢字の[変換]やEnterによる文字列の確定によっても未確定状態の文字は確定するが、その場合はその未確定状態の文字に続く文字も含めた(かな漢字)変換は出来なくなる。(例: sin↵an と入力しても 「しんあん」 にはなるが、しん案 としか変換出来なくなる。「しんあん」 → 新案 と変換したい時は sin;an と入力して変換する。

小書き文字について

小書きの文字に関しては、促音「っ」、拗音「ゃ」、「ゅ」、「ょ」、「ゎ」 以外に 「てぃ」のようにカナに含まれる母音と小書きの母音が異なる場合は、カナの子音+小書きの母音 の組み合わせで発音する表現だと言える。

しかし、カナに含まれる母音と小書きの母音が同じ場合は 音がフェードアウトする表現だと感ずる。例えば、「こらー」、「こらぁ」、「こら」 「こらっ」 の表現は この順で短くなる感覚がある。このように小書き文字には表現力がある。

そこで、使えそうなキーには小書き文字を割り当てた。
  • x → 「っ」 特殊文字を示すインデックスで何を割り当てても大丈夫だから
  • y → 「ぃ」 半母音の「い」を表すアルファベットだから
  • w → 「ぅ」 半母音の「う」を表すアルファベットだから
これで、感情を込めた表現がし易くなる。例: damex →「だめっ」

残念ながら「ぁ」と「ぇ」と「ぉ」はキーの1回押しでは実現出来ない。だが、a を押す代わりに q を2度押しすることで実質キーの1度押しで「ぁ」を入力することは可能である。例: bakqq → 「ばかぁ」

又、「お」段のカナには「ぉ」を加えるよりも「ぅ」を加える傾向があるから、「ぉ」をキー1度押しで入力出来なくても構わないとも言える。例: 「だめだぞぉ」 → 「だめだぞぅ」

アイヌ語カナ表記用の小書き文字を追加

小書き文字入力の形式を同じにして実現出来るので追加してみた。
  • ㇰ、ㇱ、ㇲ、ㇳ、ㇺ、ㇴ、ㇷ゚、ㇵ、ㇶ、ㇷ、ㇸ、ㇹ、ㇻ、ㇼ、ㇽ、ㇾ、ㇿ が入力出来る。
入力の形式は通常のかなと同一にしたので、子音を入力した時点で表示される。ユニコードには ㇷ゚ の文字コードが無いので、ㇷ と ゚  で文字合成している。

記号や特殊文字の入力について

Google日本語入力のデフォルトの変換テーブルでは、かな入力以外に記号などの入力機能(例: z, → 「‥」)がある。しかし、多くの機能は z から始まるコマンドであるためにかな入力で不都合が生じてそのままの形では実装出来てない。しかし、別のキーを割り当ててデフォルトで入力出来た特殊文字は 〜 を除き入力が可能なようにしている。
〜 (波ダッシュ)は ~ キーを押した後に[変換]キーを押す事で得られる。デフォルトではローマ字テーブルでの定義は 波ダッシュ だったが、ローマ字かな変換で得られた文字は(Windowsの問題により)字体は同じだが別の文字(全角チルダ)だった。
そして、ユニコードで定義しているどんな文字や記号でも定義出来る事の重要性にも気が付いた。

従来のローマ字変換では、かな以外の入力は変換して辞書が出してくる変換候補の中から選択するか、或いは文字パレットから選択するかしか方法は無かった。

しかし、キー入力が可能になればその状況が一変する。例えば、最近の文章中に「」以外の括弧は殆ど使われてないが、キー入力が可能になれば、〔〕 〈〉 《》 【】 等の括弧も気軽に使えるようになって、日本語の文体を変化させるかも知れない。

それに、従来は困難だった 10⁻³ や H₂O といった表記も簡単に出来るから科学知識の表現力も向上する。

詳しくは[記号の説明]で解説する。但し、長音符、読点、句点、中黒、左右カギ括弧は半角カナまで定義されていることから「かな」扱いとし、更に下記の文字も含めてローマ字変換テーブルの方に記載した。
xc任意の1文字を表す文字
xd前と同じを表す文字
xdd前の漢字と同じ漢字を表す文字
xddd前のかなと同じで清音のかなを表す文字
xdddd前のかなと同じで濁音のかなを表す文字

上記の文字は何れもアルファベットの組み合わせのみで入力出来る事も「かな」扱いする理由。xc の c は circle のつもり、xd 以下の d は どう を変換して得られる事から。

カタカナ語の入力

文章中にカタカナ語が増えている。そのカタカナ語の読み書きをする度に、もっとマトモなカナを当てていたら、どんなに英語の聞き取りと発音に役立つだろうと思っていた。

カタカナ語が元の発音と似ても似つかぬ姿(例: スマホ)なら、誰もその通りに発音して通じるとは思わないだろう。しかし、最近増えだしたカタカナ語は、原音通りと思わせるようなものが多い。それらのカタカナ語から元の外国の言葉の発音が再生出来れば良いのだが、似ているようで異なるのなら、かえって外国語の学習の障害になる。

そこで、カナ空間から正しい(少なくとも通じるレベルの)英語発音が再生出来るような変換規則。そういう規則で作った英語のカタカナ表現で世の中に出回っているカタカナ語を置き換える事が出来れば良いなと考えた。

その規則とは、カナの読みそのものが英語発音に近いかどうかでは無く、カナの配列で発音記号が特定出来ること、そして、カナの読みが日本語としてあり得る範囲である事が重要である。
異なる英語発音には必ず異なるカタカナが対応するので、数学的(集合論)に言うと、英語発音集合からカタカナ集合への単射である。
そして、パソコンのローマ字変換入力にその規則を組み込めば、変換規則を統一し、そしてこの世に広める事が出来るかもしれないと考えた。
それに、こぶりローマ字変換が世の中に広まらなくとも、自分の英語学習の為に英語のカタカナ表現を使う事も出来るし、こぶりローマ字変換を使っていると日本語を入力していても「かな」ではなく、子音と母音を体感することが出来るので、語学力の向上につながる。

発音記号の入力に割り当てるキーの決定

発音記号に対してどのようなカナを割り当てるのか、の問題についての考えは[英語発音のカタカナ表現]に纏めてあるので、ここには載せない。

それで、入力に割り当てるキーの原則は 「発音記号と同じアルファベットを割り当てる」、「アルファベットには無い発音記号には英語の綴りと同じにする」 事とした。

まず、英語で使っている発音記号を分類する。
  • アルファベット系: a b d e f g h i(y) j(y) k l m n o p r s t u v w(wh) z
  • 母音系: ɑ(o) æ(q) ɔ(o) ʌ(a) ɪ(i) ʊ(u) ə(a) ɚ(qq)
  • 子音系: ʃ(sh) ʒ(sx) θ(tx) ð(dx) tʃ(ch) dʒ(jx) ŋ(ng)
  • 長音符: ɑː(ar) iː(ir) uː(ur) əː(qe) ɔː(qo)
アルファベット系 の発音記号については、[i] [j] [w]を除き同じアルファベットを割り当てた。

[i]は「い」を表すもう一つのアルファベット y を使う。( i は[ɪ]に使う為。)
[j]は「や」行音を表すので y を使う。( j は既に「じゃ」行音の入力に使われている。)
[w]は「わ」行音を表し、w は「わ」行音の入力に使われている。しかし、助詞の「を」の入力のために wo の入力では「うぉ」ではなく「を」に変換される。

旧仮名を積極的に使う気なら w のままでも良いはずだ。: [wæ]は「ゑゃ」、[wɪ][wi]は「ゐ」、[we]は「ゑ」、[wɑ][wo][wɔ]は「を」になる。

しかし、カタカナ語の現状では「わ」行は「わ」、「うぃ」、「うぅ」、「うぇ」、「うぉ」という表現も書けるようにしたかった。その場合は、w を使わず、英語の綴りでも使われている wh にした。

英語の母音は複雑で、これを a i u e o のキーだけに頼るのは無理だと思っていたので、第2の a として q のキーを割り当てる事にした。これは、キーボード上の位置で a のキーのすぐ上だし、小文字の形も良く似ている。これに、qq qe qo の組み合わせも母音として定義することで母音の数を5から9に増やし、更に子音のみも追加した10段のローマ字定義テーブルに拡張し、異なる母音には異なるカナを割り付ける事を可能にした。

キー a には、[a] [ʌ] [ə] の3つの発音記号が割り当てられているが、[a]の後ろには必ず[ɪ]か[ʊ]が来るという性質から[ʌ]とは区別が付くし、[ə]は必ずアクセントの無い音節なので、アクセントの有無から区別が付く。

キー o には、[ɑ] [ɔ] の2つの発音記号が割り当てられているが、[ɔ]の後ろには必ず[ɪ]か[ɚ]が来るという性質から[ɑ]とは区別が付く。

キー y には、[i] [j] の2つの発音記号が割り当てられているが、[j]の後ろには必ず母音が来るという性質から[i]とは区別が付く。

子音について、[ʃ] [ŋ] については英語の綴りと同じで問題無い。[tʃ] も、短い表現(c)でも良いが、英語の綴りと同じ(ch)を推奨する。
ch の方を推奨するのは、英語発音記号入力専用のローマ字変換の定義ファイルと同じにしたいという理由。その定義ファイルで C は [ɔ] の入力用に既に使われているので Ch を入力キーに割り当ててある。
訓令式でもヘボン式でも表せないその他の子音には、新しいローマ字を割り当てる必要がある。

しかし、こぶりローマ字変換では全てのアルファベットに何らかのカナを割り当てている為に、新しい子音を表すローマ字の組み合わせは日本語のカナとしてあり得ないものに限られてくる。それで、特殊文字のインデックスとして使っている x と組み合わせることにした。
  • [ʒ]の英語の綴りは s の場合が多いので sx にした。
  • [θ]と[ð]はそれぞれ tx  と dx にした。
  • [dʒ]の英語の綴りは j の場合が多いが、j は「じゃ」行音の入力に既に使われているため、jx とした。
  • 長音符は英語の綴りからキー r を割り当てる事にした。
これらの新しい子音字を定義しなくてもカナの記述は可能なのだが、記述を規則的にする為は必要。(例: sx は大半が j と同じ定義なのだが、子音は sx が 「じゅ」 に対して j は「じ」 になる点が異なる。)
そして、長音符の付いた母音についても、当初は[əː]と[ɔː]をそれぞれ「エー」と「オー」で表現すれば良いと考えていた。しかし、日本語話者にとって、[エー」と「エイ」、「オー」と「オウ」 は言い分けても記憶上は同一の音価だと気付いた。

これでは[eɪ]や[oʊ]と区別出来なくなるから、別の表現を考え、「アェ」と「アォ」に決め、キーとして qe と qo を割り当てた。

キー q との組み合わせなら、更に qi と qu も割り当て可能だが、英語の音には [aɪ]も[aʊ]も存在していて、これと混同する恐れがあるので使わない。

発音記号入力上の例外

上記のように発音記号に対応するキーを入力するだけで自動的にカタカナが作成されるようになったが、幾つかの例外も生じた。
  • [ŋ]の後に[k]か[g]が続く場合は ng では無く n を入力する。
  • [ŋ]の後に母音が続く場合は ng では無く n; を入力する。
  • [s] [z] [t] [d]の後に[ɪ] [i] [iː]が続く場合は i では無く y を入力する。
  • [t] [d] [h]の後に[ʊ] [u] [uː]が続く場合は u では無く w を入力する。
  • [s] [z] [t] [d]の後に[jʊ] [ju] [juː]が続く場合は yu では無く yw を入力する。
[ŋ]に関して生じる例外は、日本語の「ん」の音価が後ろの音によって[n] [m] [ŋ] [N]等に変化する性質から生じる。尤も、英語の綴りも[ŋ]専用の文字が無いために無理が生じていて、例えば singer [ˈsɪŋɚ]と finger [ˈfɪŋgɚ]の[g]有無は綴りからは判断出来ない。

残りの例外については、「さ」行、「ざ」行、「た」行、「だ」行、「は」行の音の性質により生じる。ローマ字入力の方法をヘボン式のみにすれば例外は避ける事が出来るが、日本語の入力を優先する為に訓令式も使える事は堅持する

元々のローマ字入力では、「てぃ」、「でぃ」、「てゅ」、「でゅ」を入力するために thi dhi thu dhu という割り当てをしていた。しかし、「い」と「う」の段について i ・ u とは異なるキーが必要な場合には y ・ w を使うという統一的で分かり易い方法にした。