com.yamicha.romanx2
インタフェース TypingX

既知の実装クラスの一覧:
Hiragana, RomanX

public interface TypingX

このインタフェースは、入力変換ライブラリに実装しなければなりません。
プログラマは、このインタフェース型のオブジェクトを作り、それに任意のクラスのインスタンスを代入することで、複数の入力方法を使用できます。

TypingX tpx = null;
 if(roman_input){
        tpx = new RomanX("にゅうりょくもじ");
 }else{
        tpx = new Hiragana("にゅうりょくもじ");
 }
メソッド名のうち、コンストラクタで渡されたひらがなの一部または全部を返す(つまりローマ字などに変換しないものを返す)メソッドには、末尾に「Kana」がつけてあります。
メソッドの用例を以下に示します。
作業ひらがなローマ字など
未入力部分を含めて全文(ローマ字などの場合は、未入力部分についてはガイド)を取得するgetTextKana()getGuide()
ローマ字などのうち、もう入力した部分のみを表示する-getHistory()
入力済み文字のうち、入力が確定した部分を表示するgetHistoryKana()getInputFinishedHistory()
以下は、実際にアプレットで用いている記述です。例えばローマ字の場合、「しょうきゃく」を「syouky」まで打った時のそれぞれのメソッドの返り値も同時に示します。
 TypingX rmx = new RomanX();

 // ひらがな表記
 // 黒字で問題全部のひらがなを表示(しょうきゃく)
 g.setColor(Color.black);
 g.drawString(rmx.getTextKana() , 5 , 80);
 // マゼンタで既入力部分と現在入力中のひらがな部分を表示(しょうきゃ)
 g.setColor(Color.magenta);
 g.drawString(rmx.getHistoryKana() + rmx.getNowGuideKana() , 5 , 80);
 // グレーで入力が終わった部分を表示(しょう)
 g.setColor(Color.gray);
 g.drawString(rmx.getHistoryKana() , 5 , 80);

 // ローマ字表記
 // 黒字で問題全部のひらがなを表示(syoukyaku)
 g.setColor(Color.black);
 g.drawString(rmx.getGuide() , 5 , 100);
 // マゼンタで既入力部分と現在入力中の文字のガイドを表示(syoukya)
 // getInputFinishiedHistory() の返り値は「syou」、getNowGuide() の返り値は「kya」
 g.setColor(Color.magenta);
 g.drawString(rmx.getInputFinishedHistory() + rmx.getNowGuide() , 5 , 100);
 // グレーで入力が終わった部分を表示(syouky)
 g.setColor(Color.gray);
 g.drawString(rmx.getHistory() , 5 , 100);
 
これは、以下のように表示されます。
 しょうきゃ
 syoukyaku
 


メソッドの概要
 void backDelete()
          文字をひらがなベースで1つ削除します。
 void backSpace()
          文字を入力ベースで1つ削除します。
 java.lang.String getGuide()
          入力されている部分までは入力文字を表示し、それ以降の部分はガイド文字列を返します。
 int getGuidePositionKana()
          現在のひらがなガイド位置を返します。
 java.lang.String getHistory()
          すでにユーザーが入力した文字列を返します。
 java.lang.String getHistoryKana()
          ユーザーが入力した部分のうち、すでに確定した部分までのひらがなを返します。
 java.lang.String getInputFinishedHistory()
          すでにユーザーが入力した部分のうち、すでに確定した部分を返します。
 int getInputLengthKana()
          すでに入力した文字数を返します。
 int getLeftLengthKana()
          まだ入力されていない文字数を返します。
 java.lang.String getNowGuide()
          ローマ字などの入力中の部分を返します。
 java.lang.String getNowGuideKana()
          現在ユーザーが入力中のひらがなを返します。
 java.lang.String getTextKana()
          登録されたひらがな文字列を取得します。
 int inputString(java.lang.String str)
          文字列をインプットします。
 boolean inputText(char c)
          1文字をインプットします。
 java.lang.String makeGuide()
          登録されたひらがなをローマ字など任意の方法で変換したガイド文字列を返します。
 java.lang.String makeGuide(int pos)
          登録されたひらがなを、ローマ字など任意の方法で変換したガイド文字列を返します。
 int[] typeHistory()
          1確定ごとの入力ひらがな数のリストを返します。
 int[] typeLength()
          1確定ごとの入力文字数を返します。
 

メソッドの詳細

getTextKana

java.lang.String getTextKana()
登録されたひらがな文字列を取得します。

戻り値:
登録されたひらがな文字列。

getGuide

java.lang.String getGuide()
入力されている部分までは入力文字を表示し、それ以降の部分はガイド文字列を返します。
例えばローマ字変換の場合、「てっきょう」を「text」まで入力していたら、既入力部分「text」とガイド「ukyou」を結合した結果を返します。
ローマ字入力など複数通りの入力があるものに関しては、ユーザーの入力が正解である限り、それをミスとして処理せず、既入力文字にあわせて返されるガイドを変えるようにしなければなりません。
例えば、「てっきょう」に関して「te」と入力された時点では「tekkyou」としても構いませんが、その次に「x」が来たら「textukyou」のようにガイドを修正するよう実装しなければなりません。

戻り値:
既入力部分に関しては入力した文字、それ以降はガイド文字列。

getHistory

java.lang.String getHistory()
すでにユーザーが入力した文字列を返します。
例えばローマ字の場合で、ユーザーが「hiragana」のうち「hirag」まで入力した場合、「hirag」が返されます。

戻り値:
ユーザーが入力した文字

getLeftLengthKana

int getLeftLengthKana()
まだ入力されていない文字数を返します。
文字数はひらがなベースです。つまり、「ひらがな」を「hirag」まで入力した場合、まだ残っているのは「がな」であるため、「2」が返されます。

戻り値:
ひらがな換算でまだ入力されていない文字数。入力途中の文字も未入力とみなす。

getInputLengthKana

int getInputLengthKana()
すでに入力した文字数を返します。
文字数はひらがなベースです。つまり、「ひらがな」を「hirag」まで入力した場合、既入力は「ひら」であるため、「2」が返されます。

戻り値:
ひらがな換算で既に入力された文字数。入力途中の文字は含まない。

getGuidePositionKana

int getGuidePositionKana()
現在のひらがなガイド位置を返します。
文字数はひらがなベースです。つまり、「しぇりー」を「sy」まで入力しており、「sye」がガイドに出ている場合、、この部分は「しぇ」ですから、2 文字ということで「2」が返されます。
なお、文字「s」まで入力されているような場合、ガイドが「syeri-」なら「しぇ」がガイドされているため 2 を返し、「sixeri-」なら「し」がガイドされているため 1 というように、これはガイドの実装によっても変動します。

戻り値:
現在入力中の部分を示す値。

getNowGuide

java.lang.String getNowGuide()
ローマ字などの入力中の部分を返します。
例えば「ひらがな」と入力する際、「hirag」まで入力されていたら、「が」の部分のガイドである「ga」を返します。「じゃば」のような場合で、「j」と入力された場合は、ライブラリの実装によって「ja」や「jya」を返します。

戻り値:
現在入力中の部分のガイド。

getInputFinishedHistory

java.lang.String getInputFinishedHistory()
すでにユーザーが入力した部分のうち、すでに確定した部分を返します。
例えばローマ字などでは、「hirag」と入力していたら「ひら」まで確定していますので「hira」を返します。
「ぜんりゃく」が「zenry」までの場合は、「ry」はまだ確定していないため、「ぜん」までを返します。

戻り値:
入力済み文字のうち、入力が確定した部分。

getHistoryKana

java.lang.String getHistoryKana()
ユーザーが入力した部分のうち、すでに確定した部分までのひらがなを返します。
これは要するに、ひらがなのうち、先頭から getInputLengthKana 文字を得るのと同じです。

戻り値:
すでに確定したひらがなを返す。

getNowGuideKana

java.lang.String getNowGuideKana()
現在ユーザーが入力中のひらがなを返します。
例えば「ぜんりゃく」が「zenry」までの場合、「りゃ」を返します。
これは要するに、ひらがなのうち、getInputLengthKana から getInputLengthKana + getGuidePositionKana 文字までの部分を取得するのと同じです。

戻り値:
ユーザーが入力中のひらがなを返す。

inputText

boolean inputText(char c)
1文字をインプットします。
これは、例えばローマ字入力ならアルファベットになります。
このインタフェースを実装するクラスは、入力された文字に対する正否を判定し、正解なら true、間違いなら false を返します。
文字が続いていく関係上、判定は厳密でなければならず、誤りを見逃してはいけません。また、正解の可能性がある入力は、もれなく正解とみなさなければなりません。
例えばローマ字入力の場合、様々な入力が可能ですから、絶対にローマ字入力としてありえない文字が入力されない限り、false を返してはいけません。

パラメータ:
c - インプットする文字。
戻り値:
入力された文字が正解なら true、誤りなら false。

inputString

int inputString(java.lang.String str)
文字列をインプットします。
これは、例えばローマ字入力ならアルファベットの文字列になります。
このメソッドの適切なふるまいとして、この文字列に対して inputText メソッドを1文字ずつコールすることが挙げられます。
文字列の中に1つでも間違いが見つかったら、その時点で即座に登録処理(既インプット文字列への文字の登録、ガイドの更新など)を停止し、正解文字数を返すようにします。
つまり、文字列のすべてが正しくインプットされた場合には、文字長と同じ数値が返ります。
なお、入力すべき残り文字数よりも渡された文字数の方が長い場合には、入力すべき文字数の部分までに間違いがなければそこまでの文字数(つまり残文字数)、間違いがあれば通常通り正解文字数を返します。

パラメータ:
str - インプットする文字列。
戻り値:
渡された値のうち、正解だった文字数。全部正解なら文字長と同じ数値。

backSpace

void backSpace()
文字を入力ベースで1つ削除します。
これは、例えばローマ字入力ならローマ字ベースでなければなりません。
具体的には、「hirag」の時点でこれが呼び出されたら「g」を削除して「hira」とし、ガイドなどを修正します。さらにこれが呼び出されたら、次は「hir」とし、ガイドなどを修正します。


backDelete

void backDelete()
文字をひらがなベースで1つ削除します。現在入力中の文字があるなら、その文字に当たるものを全部削除します。
具体的には、「hirag」の時点でこれが呼び出されたら、現在入力部分の「g」を削除して「hira」とし、ガイドなどを修正します。
さらにこれが呼び出されたら、次は「ら」に当たる部分を削除、つまり「hi」とし、ガイドなどを修正します。
「てっきょう」で「tekkyo」まで入力されている場合にコールされたら、「っきょ」が1ブロックとして入力されていますので、「っきょ」を全部削除し、「て」に修正します。


makeGuide

java.lang.String makeGuide()
登録されたひらがなをローマ字など任意の方法で変換したガイド文字列を返します。

戻り値:
入力のガイド文字列。ただし、ガイドはあくまでユーザーへの利便のためのものとして、ローマ字など複数の入力方法がある入力の場合、ガイド以外の正解も受け入れること。

makeGuide

java.lang.String makeGuide(int pos)
登録されたひらがなを、ローマ字など任意の方法で変換したガイド文字列を返します。
例えばローマ字変換の場合、「ひらがな」を「hiragana」などと変換して返します。
ただし、引数以後の文字に関してのみガイド変換を行います。例えば「ひらがな」を変換する際、「2」が引数として渡されたら、2文字を飛ばして「がな」のみを変換して結果を返します。
ローマ字の場合、「さっか」と入力すべき時に「1」が引数として渡されたら、「っか」だけが残りますので、「xtuka」のように変換しなければなりません。

パラメータ:
pos - ひらがなベースで、この文字数目の部分からガイドを生成する。
戻り値:
入力のガイド文字列。ただし、ガイドはあくまでユーザーへの利便のためのものとして、ローマ字など複数の入力方法がある入力の場合、ガイド以外の正解も受け入れること。

typeHistory

int[] typeHistory()
1確定ごとの入力ひらがな数のリストを返します。
例えば「a」や「ka」、「nn」などは1文字、「sya」などは「しゃ」ですから2文字、「kkyo」などは「っきょ」ですから3文字です。
これを順に配列に格納した結果を返します。例えば「しゅっちょう」を「syuttyou」と打ったなら、「しゅ , っちょ , う」で{2 , 3 , 1}が返ります。

戻り値:
1確定ごとの入力ひらがな数。

typeLength

int[] typeLength()
1確定ごとの入力文字数を返します。
例えば、「あ」でも「っちょ」でも1確定ですが、前者は 1(a)、後者は 4(ttyo) を返します。
これは typeHistory メソッドと組み合わせると便利です。両方の配列を取得し、現在の getGuide メソッドの文字数に達するまでループさせれば、1確定ごとの文字数と入力数が取得できます。
ユーザーが入力した文字、あるいはローマ字を、1確定ごとに区切って表示する場合などには、これらのメソッドを使う必要があります。

戻り値:
1確定ごとの入力文字数。