(57)【特許請求の範囲】
【請求項１】
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段を備えた情報処理装置のコンピュータを、
ユーザによる文字の入力を受け付ける文字入力受付手段、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力手段、
前記未確定文字に対応する少なくとも１つの候補文字列を前記候補文字列データベースから取得する第１候補取得手段、
前記第１候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段、及び
前記確定文字列を出力する第２出力手段、
として機能させ、
前記確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
入力プログラム。
【請求項２】
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段を備えた情報処理装置のコンピュータを、
ユーザによる文字の入力を受け付ける文字入力受付手段、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力手段、
前記未確定文字に対応する少なくとも１つの候補文字列を前記候補文字列データベースから取得する第１候補取得手段、
前記第１候補取得手段によって取得された候補文字列のうち、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しない候補文字列を取得する第２候補取得手段、
前記第２候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段、及び
前記確定文字列を出力する第２出力手段、
として機能させ、
前記確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられたときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
入力プログラム。
【請求項３】
前記コンピュータを、
前記未確定文字の前後の少なくとも何れかの文字列を判別する前後判別手段として更に機能させ、
前記第２候補取得手段は、前記前後判別手段によって判別された文字列に関して前記所定の条件に合致しない候補文字列を、前記第１候補取得手段によって取得された候補文字列から取得する、
請求項２に記載の入力プログラム。
【請求項４】
前記第１候補取得手段によって取得された前記候補文字列を出力する第３出力手段として前記コンピュータを更に機能させる請求項１に記載の入力プログラム。
【請求項５】
前記コンピュータを、
ユーザによって入力された文字を他の情報処理装置に対して送信する指示を受け付ける送信指示入力受付手段、
前記送信指示入力受付手段によって前記指示が受け付けられたとき、前記確定文字列のみから構成されるテキストを含む送信データを前記他の情報処理装置に対して送信する送信手段、として更に機能させる請求項１〜４の何れかに記載の入力プログラム。
【請求項６】
前記文字入力受付手段は、受け付けた前記文字を未確定文字として前記記憶手段に記憶させ、
前記第１出力手段は、前記記憶手段の記憶する前記未確定文字を出力し、
前記コンピュータを、
送信指示入力受付手段によって前記指示が受け付けられたとき、前記送信データの送信より前に、前記未確定文字を前記記憶手段から消去する第１消去手段、
として更に機能させる請求項５に記載の入力プログラム。
【請求項７】
前記第１出力手段は、情報処理装置の表示手段における所定の表示領域にマーカを表示し、かつ、前記未確定文字を出力するときに、前記所定の表示領域における前記マーカの表示位置に関連する位置に前記未確定文字を表示し、
前記文字入力受付手段は、前記マーカの表示位置を変更するための指示入力を受け付け、
前記コンピュータを、
前記文字入力受付手段によって、前記マーカの表示位置を変更するための指示入力を受け付けたとき、前記未確定文字を前記所定の表示領域から消去する第２消去手段として更に機能させる、
請求項１から６の何れかに記載の入力プログラム。
【請求項８】
前記コンピュータを、
前記未確定文字の前後の少なくとも何れかの文字列を判別する前後判別手段として更に機能させ、
前記確定文字列決定手段は、前記選択された候補文字列と、前記前後判別手段によって判別された文字列とが前記所定の条件に合致するか否かを判別し、前記所定の条件に合致しない場合に前記選択された候補文字列を確定文字列と決定する、
請求項１に記載の入力プログラム。
【請求項９】
前記前後判別手段は、前記未確定文字の前の文字列と後ろの文字列を判別し、
前記第２候補取得手段は、前記前後判別手段によって判別された前記未確定文字の前に位置する文字列に関して前記所定の条件に合致しない候補文字列を、前記第１候補取得手段によって取得された候補文字列から取得し、
前記選択入力受付手段は、前記第２候補取得手段によって取得された前記候補文字列から、何れかの候補文字列を選択するためのユーザによる操作を受け付け、
前記確定文字列決定手段は、前記選択された候補文字列と、前記前後判別手段によって判別された前記未確定文字の後ろに位置する文字列とが前記所定の条件に合致するか否かを判別し、前記所定の条件に合致しない場合に前記選択された候補文字列を確定文字列と決定する、
請求項３に記載の入力プログラム。
【請求項１０】
前記コンピュータを、
前記確定文字列の削除の指示をユーザから受け付ける削除指示受付手段、
前記削除指示の対象となる前記確定文字列の前および後の文字列を判別する前後判別手段、
前記前後判別手段によって判別された前記確定文字列の前の文字列と後の文字列が前記所定の条件に合致するか否かを判別する接続判別手段、及び
前記接続判別手段によって前記所定の条件に合致しないと判別されたとき、前記削除指示の対象となる前記確定文字列を未確定文字に変更する状態変更手段として機能させる、
請求項１または２に記載の入力プログラム。
【請求項１１】
前記第１候補取得手段は、前記状態変更手段によって変更された未確定文字に対応する候補文字列を前記候補文字列データベースに基づいて取得する、
請求項１０に記載の入力プログラム。
【請求項１２】
前記接続判別手段は、前記確定文字列の前の文字列と後の文字列が前記所定の条件に合致すると判別したとき、前記確定文字列より前に位置し、かつ前記後の文字列に関して前記所定の条件に合致しない文字列の中から、最も後ろに位置する文字列を接続可能文字列として判別し、
前記状態変更手段は、前記接続可能文字列と前記後の文字列の間の文字列を全て未確定
文字に変更する、
請求項１０又は１１に記載の入力プログラム。
【請求項１３】
前記コンピュータを、
前記確定文字列決定手段によって前記選択された候補文字列を確定文字列と決定した場合に、当該確定文字列に対応する候補文字列を前記候補文字列データベースから取得する第３候補取得手段として更に機能させ、
前記選択入力受付手段は、前記第３候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける、
請求項１または２に記載の入力プログラム。
【請求項１４】
前記第３候補取得手段は、前記確定文字列に関して前記所定の条件に合致しない候補文字列を前記候補文字列データベースから取得する
請求項１３に記載の入力プログラム。
【請求項１５】
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段と、
ユーザによる文字の入力を受け付ける文字入力受付手段と、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力手段と、
前記未確定文字に対応する少なくとも１つの候補文字列を前記候補文字列データベースから取得する第１候補取得手段と、
前記第１候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段と、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段と、
前記確定文字列を出力する第２出力手段と、
を有し、
前記確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
入力装置。
【請求項１６】
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段と、
ユーザによる文字の入力を受け付ける文字入力受付手段と、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力手段と、
前記未確定文字に対応する少なくとも１つの候補文字列を前記候補文字列データベースから取得する第１候補取得手段と、
前記第１候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段と、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段と、
前記確定文字列を出力する第２出力手段と、
を有し、
前記確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
システム。
【請求項１７】
ユーザによる文字の入力を受け付ける文字入力受付ステップと、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力ステップと、
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースから、前記未確定文字に対応する少なくとも１つの候補文字列を取得する第１候補取得ステップと、
前記第１候補取得ステップにおいて取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付ステップと、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定ステップと、
前記確定文字列を出力する第２出力ステップと、を含み、
前記確定文字列決定ステップにおいて、前記何れかの候補文字列を選択するための操作が前記選択入力受付ステップで受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
入力方法。
【請求項１８】
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段と、
ユーザによる文字の入力を受け付ける文字入力受付手段と、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力手段と、
前記未確定文字に対応する少なくとも１つの候補文字列を前記候補文字列データベースから取得する第１候補取得手段と、
前記第１候補取得手段によって取得された候補文字列のうち、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しない候補文字列を取得する第２候補取得手段と、
前記第２候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段と、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段と、
前記確定文字列を出力する第２出力手段と、
を有し、
前記確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられたときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
入力装置。
【請求項１９】
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段と、
ユーザによる文字の入力を受け付ける文字入力受付手段と、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力手段と、
前記未確定文字に対応する少なくとも１つの候補文字列を前記候補文字列データベースから取得する第１候補取得手段と、
前記第１候補取得手段によって取得された候補文字列のうち、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しない候補文字列を取得する第２候補取得手段と、
前記第２候補取得手段によって取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段と、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段と、
前記確定文字列を出力する第２出力手段と、
を有し、
前記確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられたときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
システム。
【請求項２０】
ユーザによる文字の入力を受け付ける文字入力受付ステップと、
前記文字入力受付手段によって受け付けた前記文字を未確定文字として出力する第１出力ステップと、
１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースから、前記未確定文字に対応する少なくとも１つの候補文字列を取得する第１候補取得ステップと、
前記第１候補取得ステップによって取得された候補文字列のうち、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しない候補文字列を取得する第２候補取得ステップと、
前記第２候補取得ステップにおいて取得された前記候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付ステップと、
確定文字列を決定するための確定文字列決定処理を行う確定文字列決定ステップと、
前記確定文字列を出力する第２出力ステップと、を含み、
前記確定文字列決定ステップにおいて、前記何れかの候補文字列を選択するための操作が前記選択入力受付ステップで受け付けられたときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する、
入力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力プログラム、情報処理装置、情報処理システム及び情報処理方法に関し、より特定的には、ユーザが不適切な用語を確定的に入力することを防止するための入力プログラム、入力装置、システム及び入力方法に関する。
【背景技術】
【０００２】
通信端末が、ユーザから入力されたメッセージを他の通信端末に送信することによって、他の通信端末のユーザと自端末のユーザとの間でチャット等を行わせる技術は広く知られている。この通信端末に対して不適切な表現の単語がユーザから入力されてしまうと、不適切な表現を含むメッセージが他の通信端末に送信されてしまい、他の通信端末のユーザに不快感を与えてしまう。このように、不適切な表現を含むメッセージが他の通信端末に送信されることを防止するための技術としては、例えば特許文献１のように、予め通信端末に不適切な表現の文字列（単語等）のリストを記憶し、ユーザによって入力された文にリストに含まれる文字列があるときに、この文字列を塗り潰した状態で表示する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２９６２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、リストに含まれる単語については塗り潰された状態で表示されるものの、ユーザがキーボードや携帯電話のキー等を用いて入力した文がそのまま表示されて相手方の通信端末に送信されてしまう。従って、不適切な表現の文字列をユーザが入力してしまった場合であっても、リストに含まれない文字列であれば塗り潰されることなく表示されて相手方の通信端末に送信されてしまう。また、文章の一部が塗りつぶされているので、相手方に完結しない文章を送信してしまうことになる。
【０００５】
それ故に本発明の目的は、不適切な表現が確定的に入力されてしまうことを効果的に防止することができる入力プログラム、入力装置、システム及び入力方法を提供することである。
【課題を解決するための手段】
【０００６】
第１の発明のプログラムは、上記目的を達成するために、１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段を備えた情報処理装置のコンピュータを、文字入力受付手段、第１出力手段、第１候補取得手段、選択入力受付手段及び第２出力手段として機能させる。文字入力受付手段はユーザによる文字の入力を受け付ける。第１出力手段は文字入力受付手段によって受け付けた前記文字を未確定文字として出力する。第１候補取得手段は、未確定文字に対応する少なくとも１つの候補文字列を候補文字列データベースから取得する。選択入力受付手段は、第１候補取得手段によって取得された候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける。確定文字列決定手段は、確定文字列を決定するための確定文字列決定処理を行う。ここで、確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する。第２出力手段は、確定文字列を出力する。
【０００７】
上記構成によれば、ユーザの入力した未確定文字に対応する候補文字列が取得され、この中からユーザによって選択された文字列が確定文字列となる（ユーザによって確定的に入力される）。そして、本発明では、確定文字列の決定のための処理が、候補文字列の選択がなされた場合しか行われない。すなわち、ユーザによって入力された文字そのものを確定文字列とすることができず、確定文字列とすることができるのは選択された候補文字列だけである。このため、候補文字列として取得される候補文字列に不適切な表現を表す文字列が含まれてさえいなければ、不適切な表現を示す文字列が確定的に入力されることがない。
【０００８】
第２の発明のプログラムは、第１候補取得手段によって取得された候補文字列を出力する第３出力手段として前記コンピュータを更に機能させる。この構成によれば、ユーザに選択可能な候補文字列を報知することができる。
【０００９】
第３の発明のプログラムは、コンピュータを、送信指示入力受付手段及び送信手段として更に機能させる。送信指示入力受付手段はユーザによって入力された文字を他の情報処理装置に対して送信する指示を受け付ける。ユーザによって入力された文字を他の情報処理装置に対して送信する指示が送信指示入力受付手段によって受け付けられたとき、送信手段は確定文字列のみから構成されるテキストを含む送信データを他の情報処理装置に対して送信する。この構成によれば、他の情報処理装置に対して送信されるテキストは確定文字列、すなわち確定的に入力された文字列のみから構成されることになり、不適切な表現を示す可能性のある未確定状態の文字が他の情報処理装置に送信されてしまうことを効果的に防止することができる。
【００１０】
第４の発明のプログラムは、コンピュータを第１消去手段として更に機能させる。また、第４の発明のプログラムでは、文字入力受付手段は、受け付けた文字を未確定文字として記憶手段に記憶させ、第１出力手段は、記憶手段の記憶する未確定文字を出力する。第１消去手段は、送信指示入力受付手段によって指示が受け付けられたとき、送信データの送信より前に、未確定文字列を記憶手段から消去する。この構成によれば、不適切な表現を示す可能性のある未確定状態の文字が他の情報処理装置に送信されてしまうことをより効果的に防止することができる。
【００１１】
第５の発明のプログラムは、コンピュータを第２消去手段として更に機能させる。第５の発明では、第１出力手段は、情報処理装置の表示手段における所定の表示領域にマーカを表示し、かつ、未確定文字を出力するときに、所定の表示領域におけるマーカの表示位置に関連する位置に未確定文字を表示する。文字入力受付手段は、マーカの表示位置を変更するための指示入力を受け付ける。また、第２消去手段は、文字入力受付手段によって、マーカの表示位置を変更するための指示入力を受け付けたとき、未確定文字を所定の表示領域から消去する。この構成によれば、マーカの表示位置を変更するための指示、すなわち、次に入力される文字の表示位置（文字の入力位置）を変更するための指示が入力されることを契機に、未確定文字が所定の表示領域から消去される。ここで、マーカの表示位置の変更が指示されたときには、ユーザがマーカの表示位置の変更前とは異なった文字列を入力したい可能性が高い。このため、マーカの表示位置の変更が指示されたときには、マーカの表示位置の変更前に記憶されている未確定文字を無用な文字として表示領域から削除して、不適切な表現を示す可能性のある未確定文字が無用に表示されていることを防止することができる。
【００１２】
第６の発明のプログラムは、１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する記憶手段を備えた情報処理装置のコンピュータを、ユーザによる文字の入力を受け付ける文字入力受付手段、文字入力受付手段によって受け付けた文字を未確定文字として出力する第１出力手段、未確定文字に対応する少なくとも１つの候補文字列を候補文字列データベースから取得する第１候補取得手段、第１候補取得手段によって取得された候補文字列のうち、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しない候補文字列を取得する第２候補取得手段、第２候補取得手段によって取得された候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける選択入力受付手段、確定文字列を決定するための確定文字列決定処理を行う確定文字列決定手段、及び確定文字列を出力する第２出力手段、として機能させ、確定文字列決定手段は、何れかの候補文字列を選択するための操作が選択入力受付手段によって受け付けられたときに確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する。この構成によれば、第１候補取得手段によって取得された候補文字列のうち、所定の条件に合致した候補文字列のみが取得されて、確定文字列として決定される。この点が、不適切な表現を示す文字列であるとして登録されている文字列に合致する入力文字のみが確定的に入力されていない（塗り潰して表示される）文字とされていた従来技術とは異なる。
【００１３】
従って、本発明の構成によれば、従来技術のように、不適切な表現を示すとして登録しそこねている文字が確定的に入力されてしまうということがなく、より効果的に不適切な表現が確定的に入力されてしまうことを防止することが可能になる。
【００１４】
第７の発明のプログラムは、コンピュータを、前後判別手段として更に機能させる。前後判別手段は、未確定文字の前後の少なくとも何れかの文字列を判別する。更に、第２候補取得手段は、前後判別手段によって判別された文字列と接続可能な関係にある文字列の条件を規定した前記所定の条件に合致する候補文字列を、第１候補取得手段によって取得された候補文字列から取得する。
【００１５】
ここで、１の候補文字列が選択されて確定文字列として決定されると、この確定文字列が未確定文字の前又は後の文字列と続けて解釈されることもある。上記構成によれば、第１候補取得手段によって取得された候補文字列のうち、未確定文字の前後の少なくとも何れかの文字列と接続可能な候補文字列のみがユーザによって確定的に入力可能な候補文字列として選択されるため、未確定文字の前又は後の文字列と続けて解釈されることで、不適切な表現を示すような候補文字列が確定的に入力されてしまうことを効果的に防止することができる。
【００１６】
なお、本発明において、未確定文字の前後の文字列とは、例えば、出力の順番（例えば表示領域における表示の並び順）において未確定文字の前後に位置する文字列のことである。
【００１７】
第８の発明のプログラムは、コンピュータを、前後判別手段として更に機能させる。前後判別手段は、未確定文字の前後の少なくとも何れかの文字列を判別する。本発明では、確定文字列決定手段は、選択された候補文字列と、前後判別手段によって判別された文字列とが所定の条件に合致するか否かを判別し、所定の条件に合致しない場合に選択された候補文字列を確定文字列と決定する。
【００１８】
上記構成によれば、ユーザによって選択された候補文字列のうち、未確定文字の前後の少なくとも何れかの文字列と接続可能な候補文字列のみが確定文字列として決定される。ここで、第６の発明に関して上述したように、１の候補文字列が選択されて確定文字列として決定されると、この確定文字列が未確定文字の前又は後の文字列と続けて解釈されることもある。本発明でも、第６の発明と同様に、未確定文字の前又は後の文字列と続けて解釈されることで、不適切な表現を示すような候補文字列が確定的に入力されてしまうことを効果的に防止することが可能になる。
【００１９】
第９の発明のプログラムによれば、判別手段は、未確定文字の前の文字列と後ろの文字列を判別する。また、第２候補取得手段は、前後判別手段によって判別された未確定文字列の前に位置する文字列に関して所定の条件に合致しない候補文字列を、第１候補取得手段によって取得された候補文字列から取得する。また、選択入力受付手段は、第２候補取得手段によって取得された前記候補文字列から、何れかの候補文字列を選択するためのユーザによる操作
を受け付ける。更に、確定文字列決定手段は、選択された候補文字列と、前後判別手段によって判別された未確定文字列の後ろに位置する文字列とが所定の条件に合致するか否かを判別し、所定の条件に合致しない場合に選択された候補文字列を確定文字列と決定する。
【００２０】
上記構成によれば、第１候補取得手段によって取得された候補文字列のうち、入力文字の前の順番の文字列と接続可能な候補文字列のみが更に取得される。この構成では、入力文字の前に位置する文字列及び後ろに位置する文字列の両方と接続可能な候補文字列を、第２候補取得手段によって取得する構成と比較して、より多様な候補文字列を第２候補取得手段によって取得することが可能になる。そして、多様に表示された候補文字列の中からユーザによって候補文字列が選択されたとき、選択された候補文字列が、入力文字の後ろの順番の文字列と接続可能なときにのみ、確定文字列として決定される。このため、多様な候補文字列を第２候補取得手段によって取得することで候補文字列の多様な選択肢を確保しながら、入力文字の前後両方の文字列との間で接続可能な候補文字列のみを確定文字列として決定することができる。
【００２１】
第１０の発明のプログラムによれば、コンピュータを、削除指示受付手段、前後判別手段、接続判別手段及び状態変更手段として更に機能させる。削除指示受付手段は確定文字列の削除の指示をユーザから受け付ける。前後判別手段は、削除指示の対象となる確定文字列の前および後の文字列を判別する。接続判別手段は前後判別手段によって判別された確定文字列の前の文字列と後の文字列が所定の条件に合致するか否かを判別する。状態変更手段は、接続判別手段によって所定の条件に合致しないと判別されたとき、削除指示の対象となる確定文字列を未確定文字に変更する。
【００２２】
上記構成によれば、削除指示の対象となる確定文字の前の文字列と後の文字列が判別され、これらの文字列が接続可能な関係にあるか判別される。ここで、これらの文字列が接続可能な関係にあると判別されたときのみ、削除指示の対象となる確定文字列が未確定文字に変更される。従って、例えば、確定文字列の削除を行うことができず、未確定文字のみ削除を行うことができる構成を採用することで、削除指示の対象となる確定文字の前の文字列と後の文字列とが接続可能であるときにのみ、削除されることが可能になる。これによって、削除対象の確定文字列が削除されることで、この確定文字列の前の文字列と後ろの文字列が接続不可能であるにもかかわらず、接続してしまうことが効果的に防止される。
【００２３】
第１１の発明では、第１候補取得手段は、状態変更手段によって変更された未確定文字に対応する候補文字列を前記候補文字列データベースに基づいて取得する。この構成によれば、未確定文字に対応する候補文字列の中から新たな候補文字列を選択することでユーザの任意の文字列を入力することが可能になる。
【００２４】
第１２の発明のプログラムによれば、接続判別手段は、確定文字列の前の文字列と後の文字列が所定の条件に合致すると判別したとき、確定文字列より前に位置し、かつ前記後の文字列に関して所定の条件に合致しない文字列の中から、最も後ろに位置する文字列を接続可能文字列として判別する。そして、状態変更手段は、接続可能文字列と後の文字列の間の文字列を全て未確定文字に変更する。
【００２５】
上記構成によれば、削除指示の対象となる確定文字列の前の順番に位置する確定文字列であって確定文字列の直後の文字列と接続不可能な文字列、すなわち、削除指示の対象となる確定文字列の直後の文字列と接続可能な文字列（接続可能文字列）に挟まれた文字列が全て未確定状態に変更される。これによって、削除指示の対象となる確定文字列が削除されることで、接続不可能な２つの文字列が確定文字列として連続することが効果的に防止される。
【００２６】
第１３の発明のプログラムによれば、コンピュータを、第３候補取得手段として更に機能させる。ここで、第３候補取得手段は確定文字列決定手段によって前記選択された候補文字列を確定文字列と決定した場合に、当該確定文字列に対応する候補文字列を前記候補文字列データベースから取得する。更に、第１１の発明のプログラムによれば、選択入力受付手段は、第３候補取得手段によって取得された候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける。この構成によれば、確定文字列が決定されたときには、ユーザが文字を入力しなくても、確定文字列に対応する候補文字列が取得されることになり、ユーザの文字入力の手間を軽減することができる。
【００２７】
第１４の発明のプログラムによれば、第３候補取得手段は、確定文字列に関して所定の条件に合致しない候補文字列を前記候補文字列データベースから取得する。この構成によれば、確定文字列と接続して解釈されることで不適切な表現となるような候補文字列は取得されず、このような候補文字列が確定的に入力されることを効果的に防止することが可能になる。
【００２８】
第１５の発明の入力装置は、記憶手段、文字入力受付手段、第１出力手段、第１候補取得手段、選択入力受付手段、確定文字列決定手段及び第２出力手段を有する。
【００２９】
記憶手段は、１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する。文字入力受付手段は、ユーザによる文字の入力を受け付ける。第１出力手段は、文字入力受付手段によって受け付けた前記文字を未確定文字として出力する。第１候補取得手段は、未確定文字に対応する少なくとも１つの候補文字列を候補文字列データベースから取得する。選択入力受付手段は、第１候補取得手段によって取得された候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける。確定文字列決定手段は、確定文字列を決定するための確定文字列決定処理を行う。ここで、確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する。第２出力手段は、確定文字列を出力する。
【００３０】
第１６の発明のシステムは、記憶手段、文字入力受付手段、第１出力手段、第１候補取得手段、選択入力受付手段、確定文字列決定手段及び第２出力手段を有する。記憶手段は、１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースを記憶する。文字入力受付手段は、ユーザによる文字の入力を受け付ける。第１出力手段は、文字入力受付手段によって受け付けた前記文字を未確定文字として出力する。第１候補取得手段は、未確定文字に対応する少なくとも１つの候補文字列を候補文字列データベースから取得する。選択入力受付手段は、第１候補取得手段によって取得された候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける。確定文字列決定手段は、確定文字列を決定するための確定文字列決定処理を行う。ここで、確定文字列決定手段は、前記何れかの候補文字列を選択するための操作が前記選択入力受付手段によって受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する。第２出力手段は、確定文字列を出力する。
【００３１】
第１７の発明の入力方法は、文字入力受付ステップ、第１出力ステップ、第１候補取得ステップ、選択入力受付ステップ、確定文字列決定ステップ、及び第２出力ステップを含む。文字入力受付ステップにおいて、ユーザによる文字の入力を受け付ける。第１出力ステップにおいて、文字入力受付ステップにおいて受け付けた文字を未確定文字として出力する。第１候補取得ステップにおいて、１以上の文字と当該文字に対応する候補文字列の組み合わせを定義した候補文字列データベースから、未確定文字に対応する少なくとも１つの候補文字列を取得する。選択入力受付ステップにおいて、第１候補取得ステップにおいて取得された候補文字列から何れかの候補文字列を選択するためのユーザによる操作を受け付ける。確定文字列決定ステップにおいて、確定文字列を決定するための確定文字列決定処理を行う。ここで、前記何れかの候補文字列を選択するための操作が前記選択入力受付ステップで受け付けられ、かつ、選択された候補文字列が、その配置予定位置の前後の少なくとも何れかの文字列に関して、当該文字列と結合することによって不適切な用語である所定の用語を構成するという所定の条件に合致しないときに前記確定文字列決定処理を行って、当該候補文字列を確定文字列と決定する。第２出力ステップにおいて、確定文字列を出力する。
【００３２】
上記第１５〜１７の発明によれば、上記第１の発明と同様の作用効果を奏する。
【発明の効果】
【００３３】
本発明によれば、ユーザが入力した文字を確定文字列とすることはできず、この文字に対応する候補文字列が取得され、この候補文字列の中からユーザが選択した文字列のみが確定文字列とされる。従って、不適切な表現となる候補文字列を取得さえしなければ、不適切な表現が確定文字列となることが防止され、不適切な用語が確定的に入力されてしまうことを効果的に防止することができる。
【図面の簡単な説明】
【００３４】
【図１】第１の実施形態にかかるゲーム装置の外観図
【図２】ゲーム装置の内部構成の一例を示すブロック図
【図３】本ゲーム装置が他のゲーム装置と通信する様子を示す図
【図４】下側ＬＣＤに表示される文字入力画像の一例を示す図
【図５】下側ＬＣＤに表示される文字入力画像の一例を示す図
【図６】下側ＬＣＤに表示される文字入力画像の一例を示す図
【図７】下側ＬＣＤに表示される文字入力画像の一例を示す図
【図８】下側ＬＣＤに表示される文字入力画像の一例を示す図
【図９】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１０】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１１】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１２】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１３】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１４】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１５】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１６Ａ】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１６Ｂ】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１６Ｃ】下側ＬＣＤに表示される文字入力ウィンドウの一例を示す図
【図１７】ゲーム装置が記憶するプログラムや各種データの一例を示す図
【図１８】ホワイトリストテーブルの一例を示す図
【図１９】ブラックリストテーブルの一例を示す図
【図２０】確定文字列データのデータ構造の一例を示す図
【図２１】編集文字列データのデータ構造の一例を示す図
【図２２】入力文字データのデータ構造の一例を示す図
【図２３】候補文字列データのデータ構造の一例を示す図
【図２４】ゲーム装置が実行する文字入力処理の一例を示すフローチャート（その１                      ）
【図２５】ゲーム装置が実行する文字入力処理の一例を示すフローチャート（その２）
【図２６】図２４のステップＳ４で実行される候補検索処理の一例を示すフローチャート
【図２７】図２４のステップＳ６で実行される単語確定処理の一例を示すフローチャート
【図２８】図２６のステップＳ２６及び図２７のステップＳ４４で実行される連結チェック処理の一例を示すフローチャート
【図２９】図２４のステップＳ１０で実行されるキャレット移動処理の一例を示すフローチャート
【図３０】図２４のステップＳ１２で実行される投稿処理の一例を示すフローチャート
【図３１】図２４のステップＳ８で実行されるＢａｃｋｓｐａｃｅ入力処理の一例を示すフローチャート
【図３２】「今日は」をユーザから確定的に入力されるときの文字入力処理の一例を示す図
【図３３】「寒かっ」の削除の指示がユーザから入力されたときの文字入力処理の一例を示す図
【図３４】「暖かかった」の入力指示がユーザによって入力されたときの文字入力処理の一例を示す図
【発明を実施するための形態】
【００３５】
以下に図面を参照して、本発明を適用した一実施形態にかかるゲーム装置（本発明の情報処理装置に対応）について説明する。ゲーム装置は、ユーザからの所望の文字の入力を受け付けることができる文字入力機能を備えるとともに、この入力された文字を示すテキストデータを他のゲーム装置に対して送信可能な通信機能を備えている。ゲーム装置は、他のゲーム装置との間で通信を行うことで、本ゲーム装置と他のゲーム装置のユーザ間でチャットを行わせることができる。以下に図１及び図２を用いてゲーム装置の構成を説明する。
【００３６】
図１は、第１の実施形態にかかるゲーム装置の概観図である。
【００３７】
図１において、ゲーム装置１は、折り畳み型の携帯ゲーム装置であり、開いた状態（開状態）のゲーム装置１を示している。ゲーム装置１は、開いた状態においてもユーザが両手又は片手で把持することができるようなサイズで構成される。
【００３８】
ゲーム装置１は、下側ハウジング１１及び上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に連結されている。図１の例では、下側ハウジング１１及び上側ハウジング２１は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置１を使用する。また、ユーザは、ゲーム装置１を使用しないときには閉状態としてゲーム装置１を保管する。また、図１に示した例では、ゲーム装置１は、上記閉状態及び開状態のみでなく、下側ハウジング１１と上側ハウジング２１とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング２１を下側ハウジング１１に対して任意の角度で静止させることができる。
【００３９】
下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２が設けられる。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置１に内蔵されている表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置１は、任意の解像度の表示装置を利用することができる。なお、詳細は後述するが、下側ＬＣＤ１２は、内側カメラ２３又は外側カメラ２５で撮影されている画像をリアルタイムに表示するために用いられる。また、相手方のゲーム装置１に未だ送信されていない、ユーザの入力途中の文章を表示するために用いられる。このユーザによる入力途中の文章の表示に関する詳細は、図４及び図５を用いて後述する。
【００４０】
下側ハウジング１１には、入力装置として、各操作ボタン１４Ａ〜１４Ｋ及びタッチパネル１３が設けられる。図１に示されるように、各操作ボタン１４Ａ〜１４Ｋのうち、方向入力ボタン１４Ａ、操作ボタン１４Ｂ、操作ボタン１４Ｃ、操作ボタン１４Ｄ、操作ボタン１４Ｅ、電源ボタン１４Ｆ、スタートボタン１４Ｇ、及びセレクトボタン１４Ｈは、上側ハウジング２１と下側ハウジング１１とを折りたたんだときに内側となる、下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａは、例えば選択操作等に用いられる。各操作ボタン１４Ｂ〜１４Ｅは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン１４Ｆは、ゲーム装置１の電源をオン／オフするために用いられる。図１に示す例では、方向入力ボタン１４Ａ及び電源ボタン１４Ｆは、下側ハウジング１１の内側主面中央付近に設けられる下側ＬＣＤ１２に対して、左右一方側（図１では左側）の当該主面上に設けられる。また、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、及びセレクトボタン１４Ｈは、下側ＬＣＤ１２に対して左右他方側（図１では右側）となる下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａ、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、及びセレクトボタン１４Ｈは、ゲーム装置１に対する各種操作を行うために用いられる。
【００４１】
なお、図１においては、操作ボタン１４Ｉ〜１４Ｋの図示を省略している。例えば、Ｌボタン１４Ｉは、下側ハウジング１１の上側面の左端部に設けられ、Ｒボタン１４Ｊは、下側ハウジング１１の上側面の右端部に設けられる。Ｌボタン１４Ｉ及びＲボタン１４Ｊは、ゲーム装置１に対して、例えば撮影指示操作（シャッター操作）を行うために用いられる。更に、音量ボタン１４Ｋは、下側ハウジング１１の左側面に設けられる。音量ボタン１４Ｋは、ゲーム装置１が備えるスピーカの音量を調整するために用いられる。
【００４２】
また、ゲーム装置１は、各操作ボタン１４Ａ〜１４Ｋとは別の入力装置として、更にタッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル１３は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル１３は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル１３として、例えば下側ＬＣＤ１２の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度とが一致している必要はない。また、下側ハウジング１１の右側面には、挿入口（図１に示す破線）が設けられている。挿入口は、タッチパネル１３に対する操作を行うために用いられるタッチペン２７を収納することができる。なお、タッチパネル１３に対する入力は、通常タッチペン２７を用いて行われるが、タッチペン２７に限らずユーザの指でタッチパネル１３を操作することも可能である。
【００４３】
また、下側ハウジング１１の右側面には、メモリカード２８を収納するための挿入口（図１では、二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、例えばＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカードであり、コネクタに着脱自在に装着される。メモリカード２８は、例えば、ゲーム装置１によって撮影された画像を記憶（保存）したり、他の装置で生成された画像をゲーム装置１に読み込んだりするために用いられる。
【００４４】
更に、下側ハウジング１１の上側面には、カートリッジ２９を収納するための挿入口（図１では、一点鎖線で示している）が設けられている。この挿入口の内側にも、ゲーム装置１とカートリッジ２９とを電気的に接続するためのコネクタ（図示せず）が設けられる。カートリッジ２９は、ゲームプログラム等を記録した記録媒体であり、下側ハウジング１１に設けられた挿入口に着脱自在に装着される。
【００４５】
下側ハウジング１１と上側ハウジング２１との連結部の左側部分には、３つのＬＥＤ１５Ａ〜１５Ｃが取り付けられる。ここで、ゲーム装置１は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１５Ａは、ゲーム装置１の電源がオンであるときに点灯する。第２ＬＥＤ１５Ｂは、ゲーム装置１の充電中に点灯する。第３ＬＥＤ１５Ｃは、無線通信が確立している場合に点灯する。従って、３つのＬＥＤ１５Ａ〜１５Ｃによって、ゲーム装置１の電源のオン／オフ状況、充電状況、及び、通信確立状況をユーザに通知することができる。
【００４６】
一方、上側ハウジング２１には、上側ＬＣＤ２２が設けられる。上側ＬＣＤ２２は横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。なお、下側ＬＣＤ１２と同様、上側ＬＣＤ２２に代えて、他の任意の方式及び任意の解像度の表示装置を利用してもよい。なお、上側ＬＣＤ２２上を覆うように、タッチパネルを設けてもかまわない。例えば、上側ＬＣＤ２２には、ユーザに各操作ボタン１４Ａ〜１４Ｋやタッチパネル１３の役割を教えるための、操作説明画面が表示される。
【００４７】
また、上側ハウジング２１には、２つのカメラ（内側カメラ２３及び外側カメラ２５）が設けられる。図１に示されるように、内側カメラ２３は、上側ハウジング２１の連結部付近の内側主面に取り付けられる。一方、外側カメラ２５は、内側カメラ２３が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング２１の外側主面（ゲーム装置１が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング２１の背面）に取り付けられる。なお、図１においては、外側カメラ２５を破線で示している。これによって、内側カメラ２３は、上側ハウジング２１の内側主面が向く方向を撮影することが可能であり、外側カメラ２５は、内側カメラ２３の撮影方向の逆方向、すなわち、上側ハウジング２１の外側主面が向く方向を撮影することが可能である。このように、本実施形態では、２つの内側カメラ２３及び外側カメラ２５の撮影方向が互いに逆方向となるように設けられる。例えば、ユーザは、ゲーム装置１からユーザの方を見た景色を内側カメラ２３で撮影することができるとともに、ゲーム装置１からユーザの反対側の方向を見た景色を外側カメラ２５で撮影することができる。
【００４８】
なお、上記連結部付近の内側主面には、音声入力装置としてマイク（図２に示すマイク４１）が収納されている。そして、上記連結部付近の内側主面には、マイク４１がゲーム装置１外部の音を検知できるように、マイクロフォン用孔１６が形成される。マイク４１を収納する位置及びマイクロフォン用孔１６の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング１１にマイク４１を収納し、マイク４１を収納位置に対応させて下側ハウジング１１にマイクロフォン用孔１６を設けるようにしてもよい。
【００４９】
また、上側ハウジング２１の外側主面には、第４ＬＥＤ２６（図１では、破線で示す）が取り付けられる。第４ＬＥＤ２６は、外側カメラ２５によって撮影が行われた（シャッターボタンが押下された）時点で点灯する。また、外側カメラ２５によって動画が撮影される間点灯する。第４ＬＥＤ２６によって、ゲーム装置１による撮影が行われた（行われている）ことを撮影対象者や周囲に通知することができる。
【００５０】
また、上側ハウジング２１の内側主面中央付近に設けられる上側ＬＣＤ２２に対して、左右両側の当該主面に音抜き孔２４がそれぞれ形成される。音抜き孔２４の奥の上側ハウジング２１内にはスピーカが収納されている。音抜き孔２４は、スピーカからの音をゲーム装置１の外部に放出するための孔である。
【００５１】
以上に説明したように、上側ハウジング２１には、画像を撮影するための構成である内側カメラ２３及び外側カメラ２５と、例えば撮影の際に操作説明画面を表示する表示手段である上側ＬＣＤ２２とが設けられる。一方、下側ハウジング１１には、ゲーム装置１に対する操作入力を行うための入力装置（タッチパネル１３及び各ボタン１４Ａ〜１４Ｋ）と、ゲーム画面及びチャット画面を表示するための表示手段である下側ＬＣＤ１２とが設けられる。従って、ゲーム装置１を使用する際には、ユーザは、下側ＬＣＤ１２に表示される撮影画像（カメラによって撮影された画像）を見ながら、下側ハウジング１１を把持して入力装置に対する入力を行うことができる。
【００５２】
次に、図２を参照して、ゲーム装置１の内部構成を説明する。なお、図２は、ゲーム装置１の内部構成の一例を示すブロック図である。
【００５３】
図２において、ゲーム装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１、メインメモリ３２、メモリ制御回路３３、保存用データメモリ３４、プリセットデータ用メモリ３５、メモリカードインターフェース（メモリカードＩ／Ｆ）３６及びカートリッジＩ／Ｆ４３、無線通信モジュール３７、リアルタイムクロック（ＲＴＣ）３８、電源回路３９、及びインターフェース回路（Ｉ／Ｆ回路）４０等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング１１（又は上側ハウジング２１でもよい）内に収納される。
【００５４】
ＣＰＵ３１は、所定のプログラム（本発明の入力プログラムを含む）を実行するための情報処理手段である。本実施形態では、所定のプログラムがゲーム装置１内のメモリ（例えば保存用データメモリ３４）やメモリカード２８及び／又は２９に記憶されており、ＣＰＵ３１は、当該所定のプログラムを実行することによって、図２４及び図２５を用いて後述する文字入力処理を実行する。なお、ＣＰＵ３１によって実行されるプログラムは、ゲーム装置１内のメモリに予め記憶されていてもよいし、メモリカード２８及び／又はカートリッジ２９から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。例えば、インターネットを経由して所定のサーバからダウンロードすることで取得してもよいし、据置型ゲーム装置と通信を行うことで、当該据置型ゲーム装置に記憶されている所定のプログラムをダウンロードすることで取得してもよい。
【００５５】
ＣＰＵ３１には、メインメモリ３２、メモリ制御回路３３、及びプリセットデータ用メモリ３５が接続される。また、メモリ制御回路３３には、保存用データメモリ３４が接続される。メインメモリ３２は、ＣＰＵ３１のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ３２は、上記文字入力処理又は通信処理に用いられる各種データを記憶したり、外部（メモリカード２８及び２９や他の機器等）から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ３２として、例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ３４は、ＣＰＵ３１によって実行されるプログラムや内側カメラ２３及び外側カメラ２５によって撮影された画像のデータ等を記憶するための記憶手段である。保存用データメモリ３４は、不揮発性の記憶媒体によって構成されており、例えば本実施例ではＮＡＮＤ型フラッシュメモリで構成される。メモリ制御回路３３は、ＣＰＵ３１の指示に従ってって、保存用データメモリ３４に対するデータの読み出し及び書き込みを制御する回路である。プリセットデータ用メモリ３５は、ゲーム装置１において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ３５としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ３１と接続されるフラッシュメモリを用いることができる。
【００５６】
メモリカードＩ／Ｆ３６は、ＣＰＵ３１に接続される。メモリカードＩ／Ｆ３６は、コネクタに装着されたメモリカード２８に対するデータの読み出し及び書き込みを、ＣＰＵ３１の指示に応じて行う。本実施形態では、外側カメラ２５によって撮像された画像データがメモリカード２８に書き込まれたり、メモリカード２８に記憶された画像データがメモリカード２８から読み出されて保存用データメモリ３４に記憶されたりする。
【００５７】
カートリッジＩ／Ｆ４３はＣＰＵ３１に接続される。カートリッジＩ／Ｆ４３は、コネクタに装着されたカートリッジ２９に対するデータの読み出し及び書き込みをＣＰＵ３１の指示に従ってって行う。本実施形態では、ゲーム装置１が実行することが可能なアプリケーションプログラムがカートリッジ２９から読み出されてＣＰＵ３１によって実行されたり、当該アプリケーションプログラムに関するデータ（例えばゲームのセーブデータ等）がカートリッジ２９に書き込まれたりする。
【００５８】
無線通信モジュール３７は、例えばＩＥＥＥ８０２．１１ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、無線通信モジュール３７は、所定の通信方式により同種のゲーム装置との間で例えばデータ伝送距離が１０ｍの範囲内の無線通信を行う機能を有する。無線通信モジュール３７は、ＣＰＵ３１に接続される。ＣＰＵ３１は、無線通信モジュール３７を用いてインターネットを介して、又は介さないで他の機器（例えば据置型ゲーム機や、同種のゲーム装置、パーソナルコンピュータ等）との間でデータを送受信することができる。例えば、ＣＰＵ３１は、他の機器との間でテキストデータの送受信を行い、これによって、本ゲーム装置１のユーザと他の機器のユーザとの間でチャットを行わせることができる。
【００５９】
また、ＣＰＵ３１は、無線通信モジュール３７を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。例えば、ＣＰＵ３１は、自機と他のゲーム装置とが互いに通信可能範囲内（例えば、両機間の距離が１０ｍ以内）に位置するときにデータを送受信することができる。例えば、ＣＰＵ３１は、他のゲーム装置との間でテキストデータの送受信を行い、これによって、本ゲーム装置１のユーザと他のゲーム装置のユーザとの間でチャットを行わせることができる。
【００６０】
また、ＣＰＵ３１には、ＲＴＣ３８及び電源回路３９が接続される。ＲＴＣ３８は、時間をカウントしてＣＰＵ３１に出力する。例えば、ＣＰＵ３１は、ＲＴＣ３８によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。電源回路３９は、ゲーム装置１が有する電源（典型的には電池であり、下側ハウジング１１に収納される）から供給される電力を制御し、ゲーム装置１の各部品に電力を供給する。
【００６１】
また、ゲーム装置１は、マイク４１及びアンプ４２を備えている。マイク４１及びアンプ４２は、それぞれＩ／Ｆ回路４０に接続される。マイク４１は、ゲーム装置１に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をＩ／Ｆ回路４０に出力する。アンプ４２は、Ｉ／Ｆ回路４０から音声信号を増幅してスピーカ（図示せず）から出力させる。Ｉ／Ｆ回路４０は、ＣＰＵ３１に接続される。
【００６２】
また、タッチパネル１３は、Ｉ／Ｆ回路４０に接続される。Ｉ／Ｆ回路４０は、マイク４１及びアンプ４２（スピーカ）の制御を行う音声制御回路と、タッチパネル１３の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換及びＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成してＣＰＵ３１に出力する。例えば、タッチ位置データは、タッチパネル１３の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、及び、タッチ位置データの生成を所定時間に１回の割合で行う。ＣＰＵ３１は、Ｉ／Ｆ回路４０を介して、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００６３】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｋから構成され、ＣＰＵ３１に接続される。操作ボタン１４からＣＰＵ３１へは、各操作ボタン１４Ａ〜１４Ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に応じた処理を実行する。
【００６４】
内側カメラ２３及び外側カメラ２５は、それぞれＣＰＵ３１に接続される。内側カメラ２３及び外側カメラ２５は、ＣＰＵ３１の指示に応じて画像を撮影し、撮影した画像データをＣＰＵ３１に出力する。本実施形態では、ＣＰＵ３１は、内側カメラ２３及び外側カメラ２５の何れか一方に対して撮影指示を行い、撮影指示を受けたカメラが画像を撮影して画像データをＣＰＵ３１に送る。
【００６５】
また、下側ＬＣＤ１２及び上側ＬＣＤ２２は、それぞれＣＰＵ３１に接続される。下側ＬＣＤ１２及び上側ＬＣＤ２２は、それぞれＣＰＵ３１の指示に従って画像を表示する。
【００６６】
以下、図３を用いてゲーム装置１が他のゲーム装置１と行う通信を説明する。図３は、ゲーム装置１と他のゲーム装置１との間の通信を説明するための図である。２つのゲーム装置１は、最寄り（例えば、１０ｍ以内に位置する）のアクセスポイント２と無線通信を行い、このアクセスポイント２及びアクセスポイント２が接続された広域ネットワーク３（インターネット、ＷＡＮ等）を介して、相互に通信を行う。本実施形態では、ゲーム装置１は、他のゲーム装置１との間でテキストデータを送受信する。このテキストデータはゲーム装置１のユーザによって入力された文字を示し、このため、テキストデータの送受信によって２つのゲーム装置１のユーザ間でチャットを行わせることができる。
【００６７】
なお、図３では、通信を行うゲーム装置１の数は２台であるがこれに限定されず複数台のゲーム装置１間でチャットのための通信を行う構成であってもよい。また、アクセスポイント２及び広域ネットワーク３を介さずに、複数のゲーム装置１の間で直接にチャットのための通信を行ってもよい。また、ゲーム装置１は、据置型のゲーム装置又は汎用機との間で通信を行ってもよい。
【００６８】
以下、図４〜図１６Ｂを用いて、ゲーム装置１が他のゲーム装置１に対して送信するデータに含まれる文字列の入力方法を説明する。この文字列の入力方法が本実施形態の特徴となる。図４〜図８、図１２は、本実施形態にかかるゲーム装置１で表示されるチャット画像の一例を示す図である。図９〜図１１、図１３〜図１６Ｂは、本実施形態にかかるゲーム装置１で表示されるチャットウィンドウの一例を示す図である。
【００６９】
（本実施形態の第１の特徴）
以下、図４及び図５を用いて本実施形態の第１の特徴を説明する。
【００７０】
図４を参照して、本実施形態ではユーザに文字入力をさせるために図４で示すようなチャット画像を表示する。チャット画像とは、ユーザの文字入力を受け付けるためのインターフェースとなる画像である。チャット画像は、下側ＬＣＤ１２に表示され、キーウィンドウＷ１、候補文字列ウィンドウＷ２及びチャットウィンドウＷ３を含む。
【００７１】
キーウィンドウＷ１は、入力可能な文字（例えば日本語５０音等）のキーを表示するためのウィンドウである。ユーザがタッチペン２７を用いてキーウィンドウＷ１に表示されているキー上のタッチパネル１３をタッチすることで、このキーの文字の入力が行われる。ここで入力される文字を、以下「入力文字ａ１」と記載する。
【００７２】
候補文字列ウィンドウＷ２は、上記入力文字ａ１に対応する候補文字列ａ２を表示するためのウィンドウである。候補文字列ａ２とは、入力文字ａ１に対応付けて候補文字列データベースに登録されている文字列（１文字のみを含む）である。この候補文字列データベースについては、詳細は図１７を用いて後述する。ユーザから入力文字ａ１の入力があったときに、この入力文字ａ１に対応する候補文字列ａ２が入力候補文字列データベースから取得されて、候補文字列ウィンドウＷ２に表示される。
【００７３】
なお、「文字列」は文字が文章を構成する際に一定のまとまりを持つ構成要素を示し、例えば、単語、文節、句読点、形態素及び語幹等を示す。本実施形態では、主に単語を文字列としているため、文字列に代えて単語と記載する場合がある。なお、本実施形態では、「文字列」は主に単語であるが、文節、句読点、形態素及び語幹等も含んでいてもよい。また、文字列は１の文字から構成される場合もある。また、本実施形態では、「文字」は文字列のように一定のまとまりを持たない１以上の文字を示す。
【００７４】
チャットウィンドウＷ３は、ユーザが入力する文を表示するためのウィンドウである。チャットウィンドウＷ３には、入力文字ａ１が表示されるとともに、文字の入力位置を示すマークであるキャレットａ３が表示される。ユーザによって入力された入力文字ａ１は、未だ確定されていない未確定文字の状態である。未確定文字の状態では、入力文字ａ１のデータは相手方のゲーム装置１に送信することができず、キャレットａ３を移動させればチャットウィンドウＷ３の表示から削除されてしまう。
【００７５】
また、チャットウィンドウＷ３には確定的に入力された文字列ａ４（以下「確定文字列ａ４」と記載する）も表示される。確定文字列ａ４は、候補ウィンドウＷ２に表示されている候補文字列ａ２のうち１つがユーザに選択されたときに表示される。確定文字列ａ４は選択された候補文字列ａ２と同じ文字列となる。
【００７６】
本実施形態の第１の特徴としては、ユーザが選択した候補文字列ａ２のみが確定文字列ａ４となること、及び、確定文字列ａ４のデータのみがゲーム装置１からゲーム装置１に送信されること（未確定文字の状態での文字列は送信不可能なこと）である。例えば図４の例では、他のゲーム装置１に対するテキストデータの送信指示をゲーム装置１が受け付けたとき、確定文字列ａ４である「今日は」のみが送信され、未確定文字の状態である「あつ」は送信されない。これによって、候補文字列ａ２として表示する文字列を不適切な表現を示すものとならないように選別することで、不適切な用語が確定文字列ａ４として入力され、他のゲーム装置１に対して送信されることを効果的に防止することができる。すなわち、ユーザがいくら不適切な表現を表す単語（入力文字ａ１）を入力したところで、候補文字列データベースに登録されていない限り、この入力文字ａ１を確定文字列ａ４とすることができず、不適切な単語が確定的に入力されて他のゲーム装置１に送信されることを効果的に防止することができる。ここで、不適切な用語とは、誹謗中傷など相手を不快にさせる表現のほか、住所、氏名などの個人情報を含むものとして考える。
【００７７】
なお、入力文字ａ１及び確定文字列ａ４はユーザに識別可能な状態で表示されることが好ましい。図４中では入力文字ａ１の周辺部分がグレーに着色されているが、例えば入力文字ａ１の周辺部分の背景を青にして文字を黒字で表示し、確定文字列ａ４の周辺部分の背景を他の背景部分と同色にして文字を黒字で表示する方法がある。もっとも、入力文字ａ１と確定文字列ａ４の表示はこれに限定されず、識別可能な状態で表示されなくてもよい。
【００７８】
なお、本実施形態では、図４で示すチャット画像には英語入力切替キーｋ１が表示されている。この英語入力切替キーｋ１の上に位置するタッチパネル１３の領域をタッチすることで、図５で示すような英語入力対応のチャット画像が表示される。英語入力対応のチャット画像は、図４で示す日本語入力対応のチャット画像と同様にウィンドウＷ１〜Ｗ３を含む。ウィンドウＷ２、Ｗ３の表示内容は日本語が英語に変わった点以外は図４で示す日本語入力対応のチャット画像と同様である。キーウィンドウＷ１は、ａからｚまでのアルファベットのキーが５０音キーに代えて表示される点は異なっているが用途は図４で示す日本語入力対応のチャット画像と同様である。英語入力対応のチャット画像には英語入力切替キーｋ１に代えて日本語入力切替キーｋ２が表示され、日本語入力切替キーｋ２の上に位置するタッチパネル１３の領域をタッチすることで、図４で示すような日本語入力対応のチャット画像に切り替えて表示される。なお、本実施形態では、ゲーム装置１は英語入力と日本語入力の両方に対応しているが何れか一方のみに対応していてもよい。また、ゲーム装置１は３以上の言語の入力に対応していてもよい。
【００７９】
（本実施形態の第２の特徴）
図６及び図７を用いて、以下に本実施形態の第２の特徴を説明する。図６では、入力文字ａ１として「き」が表示されている。この場合には、「き」を先頭に含む候補文字列ａ２が候補文字列データベースから抽出されて候補文字列ウィンドウＷ２に表示される。本例では、「気持ち、今日、来た」という３つの単語が候補文字列ａ２として表示されている。そして、図７では、ユーザが「き」の後に「ょ」を入力しているため入力文字ａ１が「きょ」となり、「きょ」を先頭に含む候補文字列ａ２が候補文字列データベースから抽出されて候補文字列ウィンドウＷ２に表示される。本例では、「今日、曲、強化」の３つの単語が候補文字列ａ２として表示されている。
【００８０】
本実施形態の第２の特徴としては、候補文字列ａ２として表示されるのは、候補文字列データベースから抽出された候補文字列のうち、確定文字列ａ４の適格を有する（所定の条件を満たした）候補文字列のみである点である。具体的には、直前の単語（入力文字ａ１の直前の単語）と接続可能な所定の条件に合致した単語だけが表示される。図６及び図７の例では、入力文字ａ１である「き」、「きょ」の直前には何の単語も存在しないため、直前の単語は「空（から）」とされる。なお、本実施形態において「空」とは情報が未入力（前の単語として何も設定されていない）状態を示すが、この構成に代えて存在しないことを示す情報が前の単語として設定されていてもよい。候補文字列データベースから取得した候補文字列ａ２が「空」に接続可能かどうかの条件を満たしたかどうかが判断され、成立した候補文字列ａ２のみが表示される。なお、「空」に対しては全ての候補文字列ａ２が接続可能なように所定の条件が設定されている。
【００８１】
例えば、図７の例では、「きょ」に対応する「今日、曲、強化」の候補文字列ａ２が候補文字列データベースから取得されたとすると、「今日」「曲」「強化」のそれぞれが「空」に接続可能かどうかの条件が成立したかどうかが判断される。そして、「空」に対しては全ての候補文字列ａ２が接続可能なように所定の条件が設定されているため、「今日」「曲」「強化」の全ての単語について所定の条件を満たしたと判断され、これら全ての単語が候補文字列ａ２として表示される。
【００８２】
上述したように、本実施形態の第２の特徴によれば、所定の条件に合致した単語のみが候補文字列ａ２として表示されることになる。従って、不適切な用語のリストが予め装置に記憶され、このリストに合致する用語のみが塗り潰して表示される従来の構成と比較すると、不適切な表現が確定的に入力されることを効果的に防止することができる。すなわち、不適切な用語のリストを予め用意する構成では、このリストに漏れがあった場合にこの漏れてしまった不適切な用語を入力することが可能になってしまう。本実施形態の第２の特徴では、所定の条件に合致した単語のみが候補文字列ａ２となるため、従来技術に比較して効果的に不適切な表現の確定的な入力を防止することができる。
【００８３】
更に、入力文字ａ１の直前の単語と接続可能であるかが候補文字列ａ２として表示されるための条件であるため、「馬」という単語の直後にユーザが入力文字ａ１として「しか」を入力した場合でも、「馬」に接続可能な条件として「鹿」が設定されていなければ「鹿」が候補文字列ａ２として表示されず、不適切な表現である「馬鹿」を入力することができない。すなわち、連続する２つの単語を別々に候補文字列ａ２から選択して不適切な単語を入力することができない。これによって、更に効果的に不適切な表現の入力を防止することができる。なお、本実施形態では、入力文字ａ１の直前に位置する単語と道義的に接続可能な単語について所定の条件として設定されるのに加えて、入力文字ａ１の直前に位置する単語の品詞と接続可能な品詞についても所定の条件として設定されており、文法的に不適切な表現の確定的な入力についても効果的に防止することができる。
【００８４】
（本実施形態の第３の特徴）
次に、図７〜図１１を用いて本実施形態の第３の特徴を説明する。図７で示す候補文字列ウィンドウＷ２に表示されている候補文字列ａ２のうち「今日」が選択された場合に図８で示すチャット画像が表示される。なお、選択したい候補文字列ａ２上に位置するタッチパネル１３の領域をタッチすることで、ユーザが候補文字列ａ２の選択を行うことができる。選択した候補文字列ａ２は所定の時間だけ着色される等して識別可能に表示され、この後に、図８で示すように、候補文字列ウィンドウＷ２内の候補文字列ａ２（今日、曲、強化）が全て消去される。同じタイミングで、選択された候補文字列ａ２（今日）が確定文字列ａ４としてチャットウィンドウＷ３に表示される。ここで、選択された候補文字列ａ２（今日）は入力文字ａ１（きょ）に置き換えて表示される。
【００８５】
本実施形態の第３の特徴は、候補文字列ａ２がユーザにより選択されると、入力文字ａ１の直後の単語と候補文字列ａ２が接続可能かどうか判断され、接続可能と判断された候補文字列ａ２のみが確定文字列ａ４になる点である。図７及び図８の例では、「きょ」の直後は何も表示されておらずこの場合には「空（から）」であると判別される。選択された候補文字列ａ２である「今日」と「空」とが接続可能かどうかが判断され、接続可能であると判断された場合に「今日」が確定文字列ａ４としてチャットウィンドウＷ３に表示される。なお、「空」に対しては全ての候補文字列ａ２が接続可能なように所定の条件が設定されており、図８では「今日」が確定文字列ａ４として表示されている。
【００８６】
また、入力文字ａ１の直後の単語と候補文字列ａ２が接続可能ではないと判断された候補文字列ａ２は未確定状態の編集文字列ａ５（図９を参照）としてチャットウィンドウＷ３に表示されることになる。図９では、入力文字ａ１「きょ」の直後の単語は「寒かっ」である。従って、「今日」と「寒かっ」は接続可能な条件を満たさないため、「今日」という単語が編集文字列ａ５として識別可能な状態でチャットウィンドウＷ３に表示される。
【００８７】
編集文字列ａ５が表示されてしまった場合には、それに続く新たな候補文字列ａ２を選択することで編集文字列ａ５を確定文字列ａ４とすることができる場合がある。具体的には、図１０で示すように、ユーザは編集文字列ａ５（「今日」）の後に新たな入力文字ａ１（本例では「は」）を入力する。この場合には新たな候補文字列ａ２（例えば、「は」「判明」「ハワイ」）が表示される。ここで、ユーザが新たな候補文字列ａ２（例えば「は」）を選択した場合に、この候補文字列ａ２（例えば「は」）が直後の単語（「寒かっ」）と接続可能な場合には新たな候補文字列ａ２が確定文字列ａ４になり、また、直前の編集文字列ａ５（「今日」）が新たな候補文字列ａ２（例えば「は」）と接続可能な場合には編集文字列ａ５が確定文字列ａ４に変更して表示される（図１１を参照）。
【００８８】
上述したように、本実施形態の第３の特徴は、入力文字ａ１の直後の単語と候補文字列ａ２が接続可能な場合のみに候補文字列ａ２が確定文字列ａ４とされるため、「鹿」という単語の直前にユーザが入力文字ａ１として「うま」を入力した場合でも、「鹿」に接続可能な条件として「馬」が設定されていなければ「馬」が候補文字列ａ２として表示されたとしても確定文字列ａ４にすることができないので、不適切な表現である「馬鹿」を入力することができない。すなわち、連続する２つの単語を別々に候補文字列ａ２から選択して不適切な単語を入力することができない。これによって、更に効果的に不適切な表現の入力を防止することができる。なお、本実施形態では、入力文字ａ１の直後に位置する単語と道義的に接続可能な単語について所定の条件として設定されるのに加えて、入力文字ａ１の直後に位置する単語の品詞と接続可能な品詞についても所定の条件として設定されており、文法的に不適切な表現の確定的な入力についても効果的に防止することができる。
【００８９】
ここで、表示対象となる候補文字列ａ２の選別の際に入力文字ａ１の前および後の文字と接続可能な候補文字列ａ２を表示する構成を採用せずに、上述したような構成を採用したのは次の理由による。なお、上述したような構成とは、表示対象となる候補文字列ａ２の選別のためには入力文字ａ１の直前の単語と候補文字列ａ２が接続可能であるか判別され、選択された候補文字列ａ２を確定文字列ａ４とするか否かを判別するためには入力文字ａ１の直後の単語と候補文字列ａ２が接続可能であるか判別される構成である。
【００９０】
すなわち、表示対象となる候補文字列ａ２の選別の際に入力文字ａ１の前後の文字と接続可能な候補文字列ａ２を表示する構成に比較すると、２つの確定文字列ａ４の間に文章を入力することが容易になるからである。例えば、「Ａ」という確定文字列ａ４と「Ｂ」という確定文字列ａ４が続けて表示され、「Ａ」と「Ｂ」の間に単語を入力する場合を例に挙げると、入力文字ａ１の前後の文字列「Ａ」「Ｂ」と接続可能な候補文字列ａ２のみを表示してしまうと候補文字列ａ２として表示される単語の種類が少なくなってしまいユーザが所望の単語が表示され難くなってしまう。すなわち、「Ａ」と「Ｂ」の間に２語以上追加挿入するような場合に、先頭の追加語のみに注目して候補文字列ａ２を選別してしまうため、後ろの追加語を入力することによって確定文字列ａ４とすることができるような文字列が候補文字列ａ２として選別されなくなってしまう。
【００９１】
本実施形態の構成では、前の文字列「Ａ」と接続可能な単語を候補文字列ａ２として表示することで、より多様な単語を候補文字列ａ２として表示することができる。そして、これらの中からユーザが選択した候補文字列ａ２（例えば、「Ｃ」）が後の文字「Ｂ」と接続不可能な場合には確定文字列ａ４とはならないが（編集文字列ａ５となるが）、続いて入力文字ａ１を入力してこの入力文字ａ１に対応する候補文字列ａ２（例えば、「Ｄ」）を選択することで、文字列「Ｃ」「Ｄ」ともに確定文字列ａ４とすることができる場合がある。すなわち、「Ｄ」が「Ｂ」と接続可能ならば確定文字列ａ４となり、「Ｃ」が「Ｄ」と接続可能ならば確定文字列ａ４となる。従って、本実施形態では、不適切な表現の確定的な入力も防止することができながら、多様な候補文字列ａ２を表示してユーザによる候補文字列ａ２の選択肢を広げることができる。
【００９２】
（本実施形態の第４の特徴）
以下に、図８及び図１２を用いて本実施形態の第４の特徴を説明する。図８で示すように、本実施形態では、確定文字列ａ４が表示された場合にはこの確定文字列ａ４に対応する候補文字列ａ２が候補文字列データベースから取得されて表示される。これによって、ユーザが入力文字ａ１を入力する手間なく候補文字列ａ２を表示することができる。ここで表示される候補文字列ａ２もまた上述した本実施形態の第２の特徴と同様に直前の確定文字列ａ４と接続可能な条件を満たす単語である。
【００９３】
なお、図１２で示すように、確定文字列ａ４に対応する候補文字列ａ２が表示されている状態で入力文字ａ１が入力された場合には、候補文字列ウィンドウＷ２に表示される候補文字列ａ２は入力文字ａ１に対応する候補文字列ａ２に切り替えられる。
【００９４】
（本実施形態の第５の特徴）
以下に図５、図１１、図１３〜図１６Ｂを用いて本実施形態の第５の特徴を説明する。
【００９５】
本実施形態の第５の特徴は、ゲーム装置１が、表示されている確定文字列ａ４を削除する場合に、この削除対象となる確定文字列ａ４の前後の単語が接続可能であるかを判断する点である。以下に、具体例を説明する。図１１で示すように「今日は寒かったみたいです」との確定文字列ａ４からなる文がチャットウィンドウＷ３に表示されていることとする。ここで、キャレットａ３を「寒かった」の直後に移動させ、バックスペースキー（キーウィンドウＷ１に表示される）上のタッチパネル１３が押下されると、「た」が削除対象の単語とされる。具体的には、図１３で示すようにチャットウィンドウＷ３の表示が変更されて、「た」が入力文字ａ１に変更されて未確定状態になる。
【００９６】
ここで、削除対象となった「た」の前の単語「寒かっ」と後の単語「みたい」とが接続可能かどうかが判断され、接続可能な場合には「た」が入力文字ａ１に変更されるだけである。一方、接続不可能な場合には図１３で示すように、更に「寒かっ」が編集文字列ａ５に変更されて未確定状態になる。この場合には、更に、削除対象の単語である「た」より前でかつ最も「た」に近い並びの単語（遅い順番の単語）であって、削除対象の単語である「た」の直後の単語である「みたい」と接続可能な関係にある単語（接続可能文字列）を判別する。図１３の例では、「寒かっ」の前の単語「は」と後ろの単語である「みたい」との接続が可能であると判断され、「は」が接続可能文字列と判別される。この場合に、図１３で示すように、接続可能文字列の「は」と「みたい」に挟まれる「寒かった」が未確定状態になる。具体的には、「寒かっ」が編集文字列ａ５に変更して表示され、「た」が入力文字ａ１に変更して表示される。
【００９７】
なお、入力文字ａ１でなければ単語の削除を行うことができず、この状態で更にバックスペースキー（キーウィンドウＷ１に表示される）上のタッチパネル１３が押下されると、図１４で示すように「た」をチャットウィンドウＷ３から削除することができる。更に、バックスペースキー（キーウィンドウＷ１に表示される）上のタッチパネル１３が押下されると、図１５で示すように、今後は編集文字列ａ５である「寒かっ」が入力文字ａ１に変更されて表示される。入力文字ａ１はひらがな表記なので、「寒かっ」がひらがな表記に変更されて「さむかっ」という入力文字ａ１として表示される。その後は、バックスペースキー（キーウィンドウＷ１に表示される）上のタッチパネル１３が押下される毎に、「さむかっ」の末尾から順番に文字が削除される。
【００９８】
ここで、図５で示すような英語対応のチャット画像が表示されている場合を例に本実施形態の第５の特徴を説明する。図１６Ａで示すように「Ｉ  ｗｉｌｌ  ｇｅｔ  ｔｈｅ  ｔｒｕｔｈ  ｏｕｔ  ｏｆ  ｙｏｕ」との文がチャットウィンドウＷ３に表示されている。この英文は「私は貴方から真実を得るでしょう」という意味である。ここで、「ｔｒｕｔｈ」を削除すると、「ｔｒｕｔｈ」の前の単語「ｔｈｅ」と、「ｔｒｕｔｈ」の後ろの単語「ｏｕｔ」とが接続可能かどうかが判断される。なお、英語の場合、例えば「ｏｕｔ」という単語は名詞、形容詞、動詞、副詞のどの品詞としても使用することができるように、品詞での接続可否のチェックは難しいため、基本的には、表記のみによって行うこととする。ただし、その限りではない。ここでは、「ｔｈｅ」と「ｏｕｔ」は接続可能と判断されるとする。すると、図１６Ｂで示すように、単語「ｔｒｕｔｈ」が入力文字ａ１に変更して表示される。続けて削除を指示し、「ｈ」―「ｔ」―「ｕ」―「ｒ」―「ｔ」と順に後退して削除していき、単語「ｔｒｕｔｈ」が全て削除される。この後、「ｔｈｅ」を削除する場合、すなわち、「ｔｈｅ」が削除対象の単語となった場合に、「ｔｈｅ」の前の単語「ｇｅｔ」と、「ｔｈｅ」の後ろの単語「ｏｕｔ」とが接続可能かどうかが判断される。ここで、「ｇｅｔ  ｏｕｔ」は「出て行け」という意味の表現となり得、不適切な表現が入力されてしまうことになるため、「ｇｅｔ」と「ｏｕｔ」が接続不可能であるとされているとすると、「ｇｅｔ」と「ｏｕｔ」は接続可能ではなく、「ｇｅｔ」の直前の「ｗｉｌｌ」と「ｏｕｔ」とが接続可能かどうかを判断する。ここで「ｗｉｌｌ」と「ｏｕｔ」が接続可能であるとすると、図１６Ｃで示すように、「ｇｅｔ」が編集文字列ａ５に変更される。なお、「ｔｈｅ」は削除対象であるため入力文字ａ１に変更して表示される。
【００９９】
図１６Ａ及び図１６Ｂで示した例では、同義的に好ましくない表現が入力されることを防止するための例であるが、例えば、住所等の個人情報の入力を防止するために「Ｎｅｗ」の後に「Ｙｏｒｋ」が表示されないように、「Ｎｅｗ」と「Ｙｏｒｋ」を接続可能としないようにする等してもよい。
【０１００】
上述したように、本実施形態の第５の特徴によれば、削除対象の文字の直前に位置する単語と直後に位置する単語が接続可能かどうか判断される。そして、削除対象の単語の前後に位置する単語が接続不可能であれば、削除対象の単語の更に前に位置する単語と、削除対象の単語の直後に位置する単語との間の連結チェックが行われる。接続可能となるまで、連結チェック対象とする単語を前の単語に繰り上げて判断がなされてゆき、接続可能となったときに、接続可能となった単語同士に挟まれた単語が未確定状態（編集文字列ａ５又は入力文字ａ１）になる。このように、接続可能な単語同士に挟まれた単語が未確定状態に変更される、すなわち、削除対象の単語の直後に配置された単語と連結不可能な単語が未確定状態に変更されるため、単語の削除によって、接続不可能な２つの単語が連続的に並んだ状態で確定的に入力されることを効果的に防止することができる。
【０１０１】
なお、本実施形態では、削除対象の文字の直前に位置する単語と直後に位置する単語が接続可能でなくても削除対象の単語は未確定状態に変更されるが、接続可能でないときには未確定状態に変更することができない構成を採用してもよい。この構成では、削除対象の文字の直前に位置する単語と直後に位置する単語が接続可能でないときには、削除対象の文字を削除することができない。このため、単語の削除によって、接続不可能な２つの単語が連続的に並んだ状態で確定的に入力されることを効果的に防止することができる。
【０１０２】
なお、図４〜１６Ｂで示すチャット画像及びチャットウィンドウＷ３はあくまで一例であり、ウィンドウＷ１〜Ｗ３のレイアウトも図示する例に限定されない。更に、入力文字ａ１、確定文字列ａ４及び候補文字列ａ２をウィンドウ内に表示することは必須ではなく背景に表示されてもよい。また、キーウィンドウＷ１も必ずしも表示される必要はない。この場合には、ユーザによる入力文字ａ１の入力は、ゲーム装置１の操作ボタン１４Ａ〜１４Ｋ等の操作や外付けで取り付けられた入力装置（キーボード等）等の操作によってなされる。
【０１０３】
次に、図４及び図１７〜図１９を用いてゲーム装置１が記憶するプログラム及びデータを説明する。図１７は、図２で示すメインメモリ３２に記憶されるプログラム及びデータを示す図である。メインメモリ３２は、本ゲーム装置１が実行するプログラムを記憶するプログラム記憶領域３２ａと、このプログラムの実行に応じて各種データを記憶するためのデータ記憶領域３２ｂを有する。
【０１０４】
プログラム記憶領域３２ａは、通信プログラムＰ１、チャットプログラムＰ２及びゲームプログラムＰ３等を記憶する。通信プログラムＰ１は本ゲーム装置１に他のゲーム装置１との間の通信を実行させるためのプログラムである。チャットプログラムＰ２は、本ゲーム装置１と他のゲーム装置１のユーザ間でチャットを行わせるためのプログラムである。すなわち、チャットプログラムＰ２は、本ゲーム装置１に対してユーザに文字入力を行わせるための文字入力処理をゲーム装置１に実行させるプログラム（文字入力プログラム）、入力された文字（メッセージ）を他のゲーム装置１に対して送信するための送信処理をゲーム装置１に実行させるプログラム、及び他のゲーム装置１から受信した文字（メッセージ）をゲーム装置１に表示させるための表示処理を行わせるプログラムを含む。なお、文字入力処理については、詳細は図２４〜図３１を用いて後述する。
【０１０５】
ゲームプログラムＰ３は、ゲーム装置１で実行するゲーム処理全体を定義するプログラムである。ゲームプログラムＰ３を実行することで、ゲーム装置１は自機のユーザにゲームを提供することができる。なお、本実施形態では、ゲームプログラムＰ３とチャットプログラムＰ２とが分かれているが、ゲームプログラムＰ３にチャットプログラムＰ２が含まれていてもよく、ゲーム実行中に特定のイベントが発生した場合のみユーザ間でチャットを行うことができる構成等を採用してもよい。
【０１０６】
なお、上記プログラムＰ１、Ｐ２は、保存用データメモリ３４に記憶されたプログラムから適宜読み出されて記憶される。保存用データメモリ３４に記憶されたプログラムは、出荷段階から記憶されていたり、図略のサーバからダウンロードされたり、メモリカード２８や２９から読み出されたりして予め記憶される。また、ゲームプログラムＰ３は、例えば、ゲームの進行に応じて、メモリカード２８や２９から適宜読み出されて記憶される。もっとも、本発明はこの構成に限定されない。例えば、プログラムＰ１、Ｐ２も、ゲームプログラムＰ３と同様に、メモリカード２８や２９から適宜読み出されて記憶されてもよい。また、プログラムＰ１〜Ｐ３は、図略のサーバから一括してダウンロードされるか、ゲームの進行に応じて適宜ダウンロードされることで記憶されてもよい。
【０１０７】
データ記憶領域３２ｂは、入力バッファ３２１、候補バッファ３２２、編集バッファ３２３及び確定バッファ３２４を有する。入力バッファ３２１は、ユーザから入力された入力文字ａ１を示すデータＤ１（以下、「入力文字データＤ１」と記載する）を記憶する。入力文字データＤ１の詳細については図２２を用いて後述する。候補バッファ３２２は、入力文字ａ１に対応する候補文字列ａ２を示すデータＤ２（以下、「候補文字列データＤ２」と記載する）を記憶する。編集バッファ３２３は、ユーザから選択された候補文字列ａ２を編集文字列ａ５として示すデータＤ３（以下、「編集文字列データＤ３」と記載する）を記憶する。編集文字列データＤ３は、編集文字列ａ５が確定文字列ａ４としての適格があると判断されたときに削除される。すなわち、編集文字列データＤ３は当該適格があると判断されるまで編集バッファ３２３に記憶され続ける。編集文字列データＤ３の詳細については図２１を用いて後述する。
【０１０８】
確定バッファ３２４は、確定文字列ａ４としての適格があると判断された編集文字列ａ５を確定文字列ａ４として示すデータＤ４（以下、「確定文字列データＤ４」と記載する）を記憶する。確定文字列データＤ４の詳細については図２０を用いて後述する。
【０１０９】
また、データ記憶領域３２ｂは、送信データ記憶領域３２５及び受信データ記憶領域３２６を更に有する。送信データ記憶領域３２５は他のゲーム装置１に送信済みのテキストデータＤ５（以下、「送信文字列データＤ５」と記載する）を記憶する。送信文字列データＤ５は、ユーザから他のゲーム装置１に対するメッセージの送信指示があったときに、確定文字列データＤ４のみから構成されるようにＣＰＵ３１（図２を参照）によって生成されたテキストデータである。送信文字列データＤ５に確定文字列データのみを含め、入力文字データＤ１及び編集文字列データＤ３を含めないことで、他のゲーム装置１に対して不適切な表現を含まないテキストデータのみを送信することができる。なお、送信文字列データＤ５は上側ＬＣＤ２２に表示されてもよい。受信データ記憶領域３２６は、他のゲーム装置１から受信した送信文字列データＤ５を受信文字列データＤ６として記憶する。受信文字列データＤ６は上側ＬＣＤ２２に表示される。
【０１１０】
データ記憶領域３２ｂはリスト記憶領域３２７を有する。リスト記憶領域３２７は、候補文字列データベースＤＢ、ホワイトリストテーブルＤ７、ブラックリストテーブルＤ８及び抽出リストテーブルＤ９を記憶する。
【０１１１】
候補文字列データベースＤＢは、入力文字ａ１に対応する候補文字列ａ２の組み合わせが定義されたデータベースである。この候補文字列データベースＤＢから入力文字ａ１に対応する候補文字列ａ２を取得する技術は広く一般に知られた技術である。例えば、候補文字列データベースＤＢは、候補文字列ａ２の「表記」、「読み方」、「文字長」が登録され、更に「品詞」と「活用形」が登録されている。例えば、「今日」という候補文字列ａ２については、「今日」という「表記」、「きょう」という「読み方」、２文字という「文字長」、「名詞」という品詞、「なし」という「活用形」が登録されることになる。
【０１１２】
以下に、ゲーム装置１が候補文字列データベースＤＢから入力文字ａ１に対応する候補文字列ａ２を抽出する方法を説明する。上述したように、候補文字列データベースＤＢには候補文字列ａ２の「読み」が登録されている。入力文字ａ１がこの「読み」の先頭部分に含まれている候補文字列ａ２が抽出される。例えば、「き」という入力文字ａ１に対応する候補文字列ａ２とは、「読み方」の先頭に「き」が含まれる候補文字列ａ２であり、例えば、今日、機能、昨日等である。また、「きょ」という入力文字ａ１に対応する候補文字列ａ２とは、「読み方」の先頭に「きょ」が含まれる候補文字列ａ２であり、例えば、今日、曲、強化等である。
【０１１３】
なお、本実施形態では、入力文字ａ１がこの「読み方」の先頭部分に含まれている候補文字列ａ２が抽出されるが、入力文字ａ１が「読み方」である候補文字列ａ２を抽出する構成であってもよい。この構成によれば、入力文字ａ１の「かわ」が入力されたときには、「可愛い、瓦」のような「読み方」の先頭部分に「かわ」が含まれている単語は抽出されず、「川、革」のような「読み方」そのものが「かわ」である単語のみが抽出される。
【０１１４】
ホワイトリストテーブルＤ７には、確定文字列ａ４の適格を有する候補文字列ａ２の所定の条件が定義されている。以下、ホワイトリストテーブルＤ７について詳細に説明する。
【０１１５】
図１８はホワイトリストテーブルＤ７の一例を示す図である。ホワイトリストテーブルＤ７には、接続可能となる単語同士の「品詞」、「活用形」及び「表記」が定義される。なお、リストの空白部は、どのようなものが入っても良いという意味である。すなわち、空白部に何が入っても、空白部でない条件が合致すれば、当該組み合わせはホワイトリストに存在すると判別されるということである。ホワイトリストテーブルＤ７は表示される候補文字列ａ２を選別するために使用される。すなわち、候補文字列データベースＤＢから抽出された候補文字列ａ２は、ホワイトリストテーブルＤ７に定義された条件に合致する文字列のみが更に抽出される。例えば、「馬」という確定文字列ａ４の直後に「しか」という入力文字ａ１が入力された場合に、「しか、叱る、鹿」という候補文字列ａ２が候補文字列データベースＤＢから抽出されたとする。この場合に、ホワイトリストテーブルＤ７は「名詞（前の単語）と助詞（後ろの単語）」、「名詞（前の単語）、名詞（後ろの単語）」の組み合わせは定義されており、「名詞（前の単語）と動詞（後ろの単語）」の組み合わせは定義されていないとすると、「馬」という名詞に接続可能であるのは「助詞」「名詞」であり、「動詞」は接続不可能である。従って、「助詞」である「しか」と名詞である「鹿」だけが抽出され、「動詞」である「叱る」は抽出されない。
【０１１６】
また、ホワイトリストテーブルＤ７はユーザによって選択された候補文字列ａ２を確定文字列ａ４に変更可能かどうかを判別するためにも使用される。例えば、「鹿」という確定文字列ａ４の直前に「うま」という入力文字ａ１が入力されたとき、候補文字列データベースＤＢから「上手い、上手く、馬」という候補文字列ａ２が表示されたとする。ホワイトリストテーブルＤ７には、「形容詞（前の単語）と名詞（後の単語）」、「名詞（前の単語）と名詞（後の単語）」および「動詞（連体形）（前の単語）と名詞（後の単語）」のみが定義され、「副詞（前の単語）と名詞（後の単語）」は定義されていない。従って、「鹿」という「名詞」の直前には「形容詞」か「名詞」か「動詞の連体形」でなければ接続可能とならないため、候補文字列データベースから抽出された「上手い、上手く、馬」のうち、「名詞」である「鹿」の直前に接続可能なのは「形容詞」である「上手い」か「名詞」である「馬」だけである。ゆえに、ユーザが「上手い」か「馬」を選択した場合にのみ「鹿」の直前に接続可能であると判断され、「上手く」を選択した場合には「鹿」と接続可能であると判断されない。
【０１１７】
図１７に戻って、ブラックリストテーブルＤ８には、確定文字列ａ４の適格を有さない候補文字列ａの条件が定義されている。以下、ブラックリストテーブルＤ８について詳細に説明する。
【０１１８】
図１９はブラックリストテーブルＤ８の一例を示す図である。ブラックリストテーブルＤ８には、接続不可能となる単語同士（前の単語と後ろの単語）の「品詞」、「活用形」及び「表記」が定義される。ブラックリストテーブルＤ８もホワイトリストテーブルＤ７と同様に、表示される候補文字列ａ２を選別するために使用される。例えば、「馬」という確定文字列ａ４の直後に「しか」という入力文字ａ１が入力された場合に、上述のようなホワイトリストテーブルＤ７の条件に合致して抽出された候補文字列ａ２は「しか」と「鹿」とする。ここで、ブラックリストテーブルＤ８には「表記が馬」と「表記が鹿」が定義されているため、「鹿」は候補文字列ａ２として表示することができないと判断される。この例では、「しか」のみが候補文字列ａ２として表示される。
【０１１９】
また、ブラックリストテーブルＤ８は、ホワイトリストテーブルＤ７と同様に、選択された候補文字列ａ２を確定文字列ａ４に変更可能かどうかを判別するためにも使用される。ホワイトリストテーブルＤ８の定義によれば、「名詞」である「鹿」の直前に接続可能なのは「形容詞」である「上手い」か「名詞」である「馬」であり、ユーザが「上手い」か「馬」を選択した場合にのみ「鹿」の直前に接続可能であると判断される。しかしながら、ブラックリストテーブルＤ８には「表記が馬」と「表記が鹿」が定義されているため、「馬」という候補文字列ａ２が選択されたときには確定文字列ａ４に変更されずに編集文字列ａ５に変更される。
【０１２０】
図１７に戻って、抽出リストテーブルＤ９には確定文字列ａ４（キャレットａ３の直前に位置する確定文字列ａ４）に対応する候補文字列ａ２の条件が定義されている。例えば、抽出リストテーブルＤ９には、キャレットａ３の直前に位置する確定文字列ａ４の品詞と、これに対応する候補文字列ａ２の品詞とが対応付けられて登録されている。例えば、キャレットａ３の直前に位置する確定文字列ａ４の品詞が「名詞」だとすると、これに対応する候補文字列ａ２の品詞が「助詞」と対応付けられている。このため、直前の確定文字列ａ４の品詞が「名詞」であれば、「名詞」に対応する「助詞」で候補文字列データベースＤＢが検索され、「品詞」が「助詞」である候補文字列ａ２が所定個数だけランダムに抽出されて表示される。ここで、「品詞」が「助詞」である候補文字列ａ２の総数が多くないようであれば、ランダムに抽出する必要はなく、「品詞」が「助詞」である候補文字列ａ２を全て表示するようにしてもよい。
【０１２１】
なお、本ゲーム装置１は上述したように複数言語の入力を受け付けることができるが、ホワイトリストテーブルＤ７、ブラックリストテーブルＤ８、抽出リストテーブルＤ９及び候補文字列データベースＤＢは入力言語に対応する個数だけ記憶される。そして、ゲーム装置１は後述する選択言語データＤ１１の示す言語に対応するリストテーブルを使用して単語入力処理を実行する。
【０１２２】
また、データ記憶領域３２ｂは、他のデータ記憶領域３２８及びゲームデータ記憶領域３２９を有する。他のデータ記憶領域３２８は、キャレットａ３の位置を示すキャレット位置データＤ１０と、ユーザに選択された入力言語を示す選択言語データＤ１１を記憶する。キャレット位置データＤ１０は例えば先頭から何文字目の後ろにキャレットａ３を表示するかを示す。また、選択言語データＤ１１はユーザによって選択された言語を示しデフォルトでは日本語を示す。図４で示す英語入力切替キーｋ１がタッチされたときには英語を示す選択言語データＤ１１が記憶され、図５で示す日本語入力切替キーｋ２がタッチされたときには日本語を示す選択言語データＤ１１が記憶される。そして、チャット画像は選択言語データＤ１１によって示される画像が表示される。すなわち、日本語を示す選択言語データＤ１１が記憶されているときには図４で示す日本語入力対応のチャット画像が表示され、英語を示す選択言語データＤ１１が記憶されているときには、図５で示す英語入力対応のチャット画像が表示される。また、ゲームデータ記憶領域３２９にはゲームプログラムＰ３の実行によってゲームデータＤ１２が記憶される。ゲームデータは、例えば画像データ及び音声データ等である。
【０１２３】
以下に図２０〜図２３を用いて、図１７で示す入力文字データＤ１、候補文字列データＤ２、編集文字列データＤ３及び確定文字列データＤ４を説明する。図２０〜図２３で示す入力文字データＤ１、編集文字列データＤ３及び確定文字列データＤ４に基づいてチャットウィンドウＷ３（図４を参照）に表示される文が生成されると、「今日は寒かったみたいです」との文が生成される。確定文字列データＤ４の示す単語は確定文字列ａ４として表示されるため、「今日は」「みたいです」が確定文字列ａ４として表示される。また、編集文字列データＤ３の示す単語は編集文字列ａ５として表示されるため、「寒かっ」が編集文字列ａ５として表示される。また、入力文字データＤ１の示す文字は入力文字ａ１として表示されるため、「た」が入力文字ａ１として表示される。
【０１２４】
図２０は確定文字列データＤ４のデータ構造の一例を示す図である。図２１は編集文字列データＤ３のデータ構造の一例を示す図である。図２２は入力文字データＤ１のデータ構造の一例を示す図である。
【０１２５】
データＤ１、Ｄ３及びＤ４は、文字（入力文字ａ１）又は文字列（編集文字列ａ５及び確定文字列ａ４）毎の「順番」、「表記」、「読み方」、「文字列長」、「開始位置」、「終了位置」、「品詞」、及び「活用形」の情報を示す。なお、編集文字列データＤ３及び確定文字列データＤ４には、複数の編集文字列ａ５又は確定文字列ａ４の情報を示す場合がある。本実施形態で、「編集文字列ａ５を編集バッファ３２３から削除する」と記載したときには、編集文字列データＤ３から削除対象の編集文字列ａ５の情報を削除することを示す。また、「編集文字列ａ５を編集バッファ３２３に記憶する」と記載したときには、編集文字列データＤ３に対して追加対象の編集文字列ａ５の情報を追加することを示す。確定文字列ａ４を確定バッファ３２４に追加する、又は削除すると記載したときも、同様である。なお、入力文字データＤ１では、入力文字ａ１の長さに関わらず、１つのレコードがテーブルに記憶される。
【０１２６】
データＤ１、Ｄ３及びＤ４の示す「順番」とは、チャットウィンドウＷ３に表示される文章における並び順の意味である。例えば、「今日」という単語は「順番」が１番であるため文章の先頭に表示され、「は」という単語は「順番」が２番であるため文章の２番目の位置すなわち「今日」の後に表示される。続いて、３番〜５番までの「順番」通り「寒かっ」「た」「みたいです」が表示される。
【０１２７】
「表記」とは、通常（確定文字列ａ４、編集文字列ａ５を表示するときに）チャットウィンドウＷ３に表示される文字列である。「読み方」とは「表記」の読み方のことであり、入力文字ａ１を表示するときには「表記」ではなく「読み方」が表示される。「文字列長」とは「表記」の文字の個数を示す。例えば、確定文字列データＤ４は「表記」が「今日」の「文字列長」として「２」を示す。また、「開始位置」は単語を表示する開始の位置を示し、「終了位置」は単語を表示する終了の位置を示す。例えば、「表記」が「今日」の場合には、「順番」が１番で「文字列長」が２なので「開始位置」が１となり「終了位置」が２となる。また、「表記」が「は」の場合には、「今日」の直後に続くため「開始位置」が３となり、「文字列長」が１なので「終了位置」も３となる。「品詞」は「表記」で示す単語の品詞であり、「活用形」は「表記」で示す単語の「活用形」である。ここで、「開始位置」と「終了位置」は、「順番」と「文字列長」を参照し計算によって求めることが可能であるため、特別に設けなくても良い。
【０１２８】
候補文字列データＤ２は、上述したデータＤ１、Ｄ２及びＤ３とほぼ同様のデータ構造である。もっとも、候補文字列データＤ２はデータＤ１、Ｄ２及びＤ３と異なり、「開始位置」「終了位置」「順番」を示すものではない。また、「順番」を示さなくてもよい理由は、候補文字列データＤ２の示す候補文字列ａ２の「順番」は入力文字ａ１と同じであるため入力文字ａ１の「順番」を参照することで取得することができるからである。候補文字列データＤ２は、入力文字ａ１が入力されたときに候補文字列データベースＤＢ（図１７を参照）から取得した情報（表記、読み方、文字列長、品詞及び活用形）を示すように生成される。なお、図２３では、候補文字列データＤ２は１つの候補文字列ａ２しか示さないが、複数の候補文字列ａ２が取得されたときには候補文字列データＤ２は複数の候補文字列ａ２の情報を示すように生成される。ここで、本実施形態では、「候補文字列ａ２を候補バッファ３２２から削除する」と記載したときには、候補文字列データＤ２から削除対象の候補文字列ａ２に関する情報を削除することを示す。
【０１２９】
以下、図２４及び図２５を用いて本実施形態にかかる文字入力処理について説明する。図２４はゲーム装置１が実行する文字入力処理の一例を示すフローチャート（その１）であり、図２５はゲーム装置１が実行する文字入力処理の一例を示すフローチャート（その２）である。文字入力処理は、ユーザから何らかの操作入力を受け付けたときに、図２で示すＣＰＵ３１によって実行される。まず、ＣＰＵ３１は受け付けた操作入力の種別を判別する（Ｓ１）。次に、判別した操作入力の種別が入力文字ａ１の入力であるかどうかをＣＰＵ３１は判断する（Ｓ２）。操作入力の種別が入力文字ａ１であると判断したときには（Ｓ２でＹＥＳ）、ＣＰＵ３１は、入力バッファ３２１に入力文字ａ１を記憶させ（Ｓ３）、入力文字ａ１に対応する候補文字列ａ２を取得するための処理（候補検索処理）を実行する（Ｓ４）。ＣＰＵ３１は、候補検索処理において、上述したように、候補文字列データベースＤＢから取得した候補文字列ａ２がホワイトリストテーブルＤ７の条件に合致するか及びブラックリストテーブルＤ８の条件に合致しないかを判断し、両方の条件を満たす候補文字列ａ２のみを候補バッファ３２２に記憶する。候補検索処理については詳しくは図２６を用いて後述する。この後、ＣＰＵ３１は続くステップＳ１３に処理を進める。
【０１３０】
一方、判別した操作入力の種別が入力文字ａ１の入力ではないと判断したときには（Ｓ２でＮＯ）、ＣＰＵ３１は判別した操作入力の種別が候補文字列ａ２の選択であるかどうかを判断する（Ｓ５）。すなわち、候補文字列ウィンドウＷ２に表示されている候補文字列ａ２のうちの何れかがユーザにより選択されたかどうかが判断される。判別した操作入力の種別が候補文字列ａ２の選択であると判断したときには（Ｓ５でＹＥＳ）、ＣＰＵ３１はユーザに選択された候補文字列ａ２を確定文字列ａ４に変更するための処理（単語確定処理）を実行する（Ｓ６）。ＣＰＵ３１は、上述したように、単語確定処理において、ユーザに選択された候補文字列ａ２が確定文字列ａ４としての適格を有するかどうかを判断し、この適格を有するときにのみ選択された候補文字列ａ２を確定文字列ａ４として確定バッファ３２４に記憶させる。この適格を有さないときには、選択された候補文字列ａ２は編集文字列ａ５に変更される。なお、候補バッファ３２２は空にされる。単語確定処理については図２７を用いて詳しくは後述する。
【０１３１】
この後、ＣＰＵ３１は候補検索処理を実行する（Ｓ４）。この候補検索処理において、ＣＰＵ３１は、ステップＳ６によって確定バッファに記憶された確定文字列ａ４に続く候補文字列ａ２を取得して、候補バッファ３２２に記憶させる（Ｓ４）。この候補検索処理において、ＣＰＵ３１は上述したように候補文字列データベースＤＢから抽出リストテーブルＤ９の条件に合致する候補文字列ａ２を取得する。そして、ＣＰＵ３１は、取得した候補文字列ａ２がホワイトリストテーブルＤ７の条件に合致するか及びブラックリストテーブルＤ８の条件に合致しないかを判断し、両方の条件を満たす候補文字列ａ２のみを候補バッファ３２２に記憶する。ＣＰＵ３１は続くステップＳ１３に処理を進める。
【０１３２】
また、判別した操作入力の種別が候補文字列ａ２の選択ではないと判断したときには（Ｓ５でＮＯ）、ＣＰＵ３１は判別した操作入力の種別が文字の削除（バックスペースキーのタッチ）であるかどうかを判断する（Ｓ７）。判別した操作入力の種別が文字の削除であると判断したときには（Ｓ７でＹＥＳ）、ＣＰＵ３１は削除対象の確定文字列ａ４を未確定状態、すなわち入力文字ａ１に変更するための処理（Ｂａｃｋｓｐａｃｅ入力処理）を実行する（Ｓ８）。このＢａｃｋｓｐａｃｅ入力処理において、ＣＰＵ３１は削除対象の確定文字列ａ４を確定バッファ３２４から削除するとともに入力文字ａ１として入力バッファ３２１に記憶させる。そして、ＣＰＵ３１は、削除対象である確定文字列ａ４の直後の単語（（ｋ））と直前の単語（単語（ｊ））とが接続可能であるか判断する。この判断で接続不可能なときには、単語（ｊ）の更に前の単語と単語（ｋ）との間の連結チェックが行われる。すなわち、単語（ｋ）と接続可能な単語が判断対象となるまで、順に更に前の単語と単語（ｋ）との間の連結チェックが実行されることとなる。そして、単語（ｋ）に対して接続可能である単語が判別されると、この単語と単語（ｋ）に挟まれる単語を全て編集文字列ａ５に変更する。Ｂａｃｋｓｐａｃｅ入力処理については図３１を用いて後述する。ＣＰＵ３１は続くステップＳ１３に処理を進める。
【０１３３】
上記ステップＳ７において、判別した操作入力の種別が文字の削除ではないと判断したときには（Ｓ７でＮＯ）、ＣＰＵ３１は判別した操作入力の種別がキャレットａ３の位置の変更であるかどうかを判断する（Ｓ９）。ここで、例えば、タッチパネル１３におけるチャットウィンドウＷ３上の領域がタッチされたときにキャレットａ３の位置の変更が入力されたと判断される。判別した操作入力の種別がキャレットａ３の位置の変更であると判断したときには（Ｓ９でＹＥＳ）、ＣＰＵ３１はキャレットａ３の表示位置を移動させる処理（キャレット移動処理）を実行する（Ｓ１０）。本処理では、ＣＰＵ３１はユーザのタッチ位置に対応する位置を算出し、この位置を示すようにキャレット位置データＤ１０（図１７を参照）を更新する。なお、ＣＰＵ３１は、キャレットの位置を変更するときに、未確定状態の単語（編集文字列ａ５）及び文字（入力文字ａ１）を編集バッファ３２３及び入力バッファ３２１から削除する。なお、キャレット移動処理についての詳細は図２９を用いて後述する。ＣＰＵ３１は続くステップＳ１３に処理を進める。
【０１３４】
一方、判別した操作入力の種別がキャレットａ３の位置の変更ではないと判断したときには（Ｓ９でＮＯ）、ＣＰＵ３１は判別した操作入力の種別がメッセージの送信指示であるかどうかを判断する（Ｓ１１）。判別した操作入力の種別がメッセージの送信指示であると判断したときには（Ｓ１１でＹＥＳ）、ＣＰＵ３１は確定的に入力されている単語から構成される文を示すテキストデータを他のゲーム装置１に送信するための処理（投稿処理）を実行する（Ｓ１２）。ここで、ＣＰＵ３１は、上述したように、投稿処理において、確定バッファ３２４に記憶されている確定文字列ａ４のみを他のゲーム装置１に送信し、入力バッファ３２１に記憶されている文字及び編集バッファ３２３に記憶されている単語を削除する。なお、投稿処理についての詳細は図３０を用いて後述する。ＣＰＵ３１は続くステップＳ１３に処理を進める。
【０１３５】
ＣＰＵ３１は判別した操作入力の種別がメッセージの送信指示ではないと判断したときには（Ｓ１１でＮＯ）、ＣＰＵ３１は本文字入力処理を終了させる。
【０１３６】
次に、ステップＳ１３の処理について説明する。図２５を参照して、ＣＰＵ３１は入力文字データＤ１、編集文字列データＤ３及び確定文字列データＤ４で示す順番に従って、入力文字ａ１、編集文字列ａ５及び確定文字列ａ４を順番に並べた表示用の文字データを生成する（Ｓ１３）。文字データの生成方法は図２０〜図２２を用いて上述した通りである。この後、ＣＰＵ３１は、生成した文字データのうち確定文字列ａ４をメインメモリ３２に予め用意されたＶＲＡＭ領域に書き込む、すなわち描画する（Ｓ１４）。本処理においてＣＰＵ３１は、ＶＲＡＭ領域内の確定文字列ａ４の表示位置を算出し、この算出した位置に確定文字列ａ４を書き込む。ここで、本実施形態では、確定文字列ａ４は白背景に黒字で表示されるように書き込まれる。
【０１３７】
次に、ＣＰＵ３１は、生成した文字データのうち編集文字列ａ５をメインメモリ３２におけるＶＲＡＭ領域に書き込む、すなわち描画する（Ｓ１５）。本処理においてＣＰＵ３１は、ＶＲＡＭ領域内の編集文字列ａ５の表示位置を算出し、この算出した位置に編集文字列ａ５を書き込む。ここで、本実施形態では、編集文字列ａ５は黄色背景に黒字で表示されるように書き込まれる。続いて、ＣＰＵ３１は、生成した文字データのうち入力文字ａ１をメインメモリ３２におけるＶＲＡＭ領域に書き込む、すなわち描画する（Ｓ１６）。本処理においてＣＰＵ３１は、ＶＲＡＭ領域内の入力文字ａ１の表示位置を算出し、この算出した位置に入力文字ａ１を書き込む。ここで、本実施形態では、入力文字ａ１は青背景に黒字で表示されるように書き込まれる。
【０１３８】
次に、ＣＰＵ３１は、候補文字列ａ２をメインメモリ３２におけるＶＲＡＭ領域に書き込む、すなわち描画する（Ｓ１７）。本処理においてＣＰＵ３１は、ＶＲＡＭ領域内の候補文字列ａ２の表示位置を算出し、この算出した位置（候補文字列ウィンドウＷ２内）に候補文字列ａ２を書き込む。
【０１３９】
ＣＰＵ３１はステップＳ１４〜Ｓ１７でＶＲＡＭ領域に書き込まれた文字を下側ＬＣＤ１２に表示（出力）させる（Ｓ１８）。この後、ＣＰＵ３１は本処理を終了する。
【０１４０】
以下、図２６を用いて図２４のステップＳ４で実行される候補検索処理を説明する。図２６は、図２４のステップＳ４で実行される候補検索処理の一例を示すフローチャートである。
【０１４１】
ＣＰＵ３１は入力バッファ３２１に入力文字ａ１が記憶されているかどうかを判断する（Ｓ２１）。入力バッファ３２１に入力文字ａ１が記憶されていると判断したときには（Ｓ２１でＹＥＳ）、ＣＰＵ３１は、入力文字ａ１から始まる単語を候補文字列ａ２として候補文字列データベースＤＢから取得して候補文字列データＤ２（図２３を参照）を生成し、候補バッファ３２２に記憶させる（Ｓ２２）。ここで、図２３を用いて上述したように、ＣＰＵ３１は、候補文字列データベースＤＢの「読み方」を入力文字ａ１で検索して、この「読み方」の先頭に入力文字ａ１を含む候補文字列ａ２の「表記」、「読み方」、「文字列長」、「品詞」及び「活用形」の情報を取得し、これらの情報を含めて候補文字列データＤ２を生成する。
【０１４２】
この後、ＣＰＵ３１はキャレットａ３の位置を入力文字ａ１の最後尾の位置に移動する（Ｓ２３）。具体的には、ＣＰＵ３１は入力文字ａ１の最後尾の位置を示すようにキャレット位置データＤ１０（図１７を参照）を変更する。
【０１４３】
続いて、ＣＰＵ３１は、ステップＳ２４〜Ｓ２８を実行することによって、ステップＳ２２で取得した候補文字列ａ２が入力文字ａ１の直前に位置する文字列に接続可能であるかを判別するための処理を実行する。この判別を以下、「連結チェック」と記載する。
【０１４４】
まず、ＣＰＵ３１はＳ２２で取得した全ての候補文字列ａ２に対して連結チェックを行ったかどうかを判断する（Ｓ２４）。Ｓ２２で取得した全ての候補文字列ａ２に対して連結チェックを行っていないと判断したときには（Ｓ２４でＮＯ）、ＣＰＵ３１はＳ２２で取得した候補文字列ａ２を１つ選択し（Ｓ２５）、この選択した候補文字列ａ２と入力文字ａ１の直前の単語との間で連結チェック処理を行う（Ｓ２６）。連結チェック処理については図２８を用いて詳細は後述するが、ステップＳ２６で実行される連結チェック処理においては、入力文字ａ１の直前の単語を「前の単語」とし、選択した候補文字列ａ２を「後ろの単語」として連結チェックが行われる。
【０１４５】
続いて、ＣＰＵ３１は、ステップＳ２６の連結チェックの結果、入力文字ａ１と選択した候補文字列ａ２が接続可能でないと判断したときには（Ｓ２７でＮＯ）、選択した候補文字列ａ２を候補バッファ３２２から削除し（Ｓ２８）、接続可能であると判断したときには（Ｓ２７でＹＥＳ）、選択した候補文字列ａ２を削除しない。これにより、入力文字ａ１の直前の単語と接続可能な候補文字列ａ２のみに絞られる。この後、ＣＰＵ３１は処理をステップＳ２４に戻して、全ての候補文字列ａ２に対して連結チェックを行ったかを判断する。
【０１４６】
全ての候補文字列ａ２に対して連結チェックを行ったと判断するまで、ＣＰＵ３１は、ステップＳ２４〜ステップＳ２８までの処理を繰り返し実行する。そして、全ての候補文字列ａ２に対して連結チェックを行ったと判断したときに（Ｓ２４でＹＥＳ）、この後、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ１３の処理を実行する）。
【０１４７】
一方、上記ステップＳ２１の判断の結果、入力バッファ３２１に入力文字ａ１が記憶されていないと判断したときには（Ｓ２１でＮＯ）、ＣＰＵ３１は、キャレットａ３の直前に位置する確定文字列ａ４に対応する候補文字列ａ２を抽出リストテーブルＤ９の示す条件に基づいて候補文字列データベースＤＢから取得する（Ｓ３０）。ステップＳ３０の処理の一例を以下に記載する。抽出リストテーブルＤ９には例えば上述したように確定文字列ａ４の品詞とこの品詞に対応する候補文字列ａ２の品詞が定義されている。ＣＰＵ３１は、キャレットａ３の直前に位置する確定文字列ａ４の属性（品詞及び活用形）を取得し、この属性に対応する属性を抽出リストテーブルＤ９に基づいて取得する。従って、例えば、抽出リストテーブルＤ９に、確定文字列ａ４が「名詞」であることに対応づけて候補文字列ａ２が「助詞」であることが定義されているとき、確定文字列ａ４が「名詞」であれば、「助詞」の候補文字列ａ２が候補文字列データベースＤＢからランダムに取得される。
【０１４８】
この後、ＣＰＵ３１は、ステップＳ３０によって取得した全ての候補文字列ａ２に対して連結チェックを行うため、上述したステップＳ２４〜Ｓ２８の処理を実行する。上述したように、入力文字ａ１の入力がないときでも、確定文字列ａ４に対応する候補文字列ａ２が取得されるためユーザが入力文字ａ１を入力する手間を省くことができる。また、ステップＳ３０で取得された候補文字列ａ２についても連結チェックがなされるため、効果的に不適切な表現が確定的に入力されてしまうことを防止することができる。
【０１４９】
以下、図２１〜図２３、図２７を用いて、図２４のステップＳ６で実行される単語確定処理を説明する。図２７は、図２４のステップＳ６で実行される単語確定処理の一例を示すフローチャートである。まず、ＣＰＵ３１は、入力バッファ３２１から入力文字ａ１を削除して（Ｓ４１）、ユーザに選択された候補文字列ａ２を編集文字列ａ５として編集バッファ３２３に記憶させる（Ｓ４２）。ここで、図２１〜図２３を参照してステップＳ４２の処理を具体的に説明すると、選択された候補文字列ａ２の「表記」「読み方」「文字列長」「品詞」「活用形」を候補文字列データＤ２から読み出し、入力文字ａ１の「順番」「開始位置」を入力文字データＤ１から読み出し、これらを統合して編集バッファ３２３に記憶させる。すなわち、選択された候補文字列ａ２に関する「順番」「開始位置」「終了位置」の情報を入力文字データＤ１から補完して編集バッファ３２３に記憶させる。また、「終了位置」は、入力文字データＤ１の「開始位置」に候補文字列データＤ２の「文字列長」を加算して１減算した数が算出されて記憶される。
【０１５０】
この後、ＣＰＵ３１は、編集バッファ３２３に記憶される編集文字列ａ５とこの直後の単語との連結チェックを行うため、連結チェック処理を実行する（Ｓ４３）。連結チェック処理の詳細については図２８を用いて後述するが、ここで、ＣＰＵ３１は、編集バッファ３２３のうち最も後ろの編集文字列ａ５を取得し、この編集文字列ａ５を「前の単語」として、この直後の確定文字列ａ４を「後ろの単語」として、「前の単語」と「後ろの単語」との連結チェックを行う。例えば、「暖かかっ」と「た」の両方が編集文字列ａ５であり、最も後ろが「た」であるときには、「た」とこの直後の確定文字列ａ４である「みたいです」との間の連結チェックが実行される。なお、本実施形態における、入力バッファ３２１、編集バッファ３２３及び確定バッファ３２４に記憶されている文字及び文字列間の順番は、データＤ１，Ｄ３，Ｄ４における「順番」の情報を参照して判別される。そして、ＣＰＵ３１は候補バッファ３２２に記憶されている全ての候補文字列ａ２を削除、すなわち候補文字列データＤ２（図２３を参照）を削除する（Ｓ４４）。
【０１５１】
ＣＰＵ３１は、ステップＳ４３による連結チェックの結果が「接続可能（ＯＫ）」であるかどうかを判断し（Ｓ４５）、ステップＳ４３による連結チェックの結果が「接続可能（ＯＫ）」でないときには（Ｓ４５でＮＯ）、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ４の候補検索処理を実行する）。一方、ステップＳ４３による連結チェックの結果が「接続可能（ＯＫ）」であるときには（Ｓ４５でＹＥＳ）、ＣＰＵ３１は編集文字列ａ５を確定文字列ａ４として確定バッファ３２４に記憶させる（Ｓ４６）。この後、ＣＰＵ３１はステップＳ４６で確定バッファ３２４に記憶された編集文字列ａ５を編集バッファ３２３から削除し（Ｓ４７）、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ４の候補検索処理を実行する）。
【０１５２】
次に、図１８、図１９及び図２８を参照して、図２６で示す候補検索処理及び図２７で示す単語確定処理において実行される連結チェック処理（ステップＳ２６及びステップＳ４３で実行される処理）を説明する。図２８は、図２６のステップＳ２６及び図２７のステップＳ４３で実行される連結チェック処理の一例を示すフローチャートである。
【０１５３】
まず、ＣＰＵ３１は、「前の単語」と「後ろの単語」を設定する（Ｓ５１）。なお、連結チェック処理の説明に関しては、「前の単語」を「単語Ａ」と記載し、「後ろの単語」を「単語Ｂ」と記載する。ここで、上述したように、図２６で示す候補検索処理においては入力文字ａ１の直前の単語が「単語Ａ」と設定され、選択された候補文字列ａ２が「単語Ｂ」と設定される。図２７で示す単語確定処理においては、編集バッファ３２３に記憶されている編集文字列ａ５のうち１の編集文字列ａ５が「単語Ａ」となり、この編集文字列ａ５の直後の単語（確定文字列ａ４）が「単語Ｂ」となる。
【０１５４】
この後、ＣＰＵ３１は、単語Ａか単語Ｂが存在しないかどうかを判断する（Ｓ５２）。本実施形態では、この判断は、単語Ａか単語Ｂが「空」、すなわち設定が未入力であるかどうかで行われる。
【０１５５】
単語Ａ及び単語Ｂが存在すると判断されたときには（Ｓ５２でＮＯ）、ＣＰＵ３１は、単語Ａの属性を取得するとともに（Ｓ５３）、単語Ｂの属性を取得する（Ｓ５４）。ここで取得される属性は、「品詞」、「活用形」及び「表記」のことである。なお、属性の取得対象となる単語が候補文字列ａ２であるときには、候補文字列データＤ２の「品詞」、「活用形」及び「表記」を参照して属性が取得される。また、属性の取得対象となる単語が編集文字列ａ５であるときには、編集文字列データＤ３の「品詞」、「活用形」及び「表記」を参照して属性が取得される。また、属性の取得対象となる単語が確定文字列ａ４であるときには、確定文字列データＤ４の「品詞」、「活用形」及び「表記」を参照して属性が取得される。
【０１５６】
この後、ＣＰＵ３１は、単語Ａと単語Ｂの属性の組み合わせがホワイトリストテーブルＤ７に存在するかどうかを判断し（Ｓ５５）、存在すると判断した場合には（Ｓ５５でＹＥＳ）、今度は単語Ａと単語Ｂの属性の組み合わせがブラックリストテーブルＤ８に存在するかどうかを判断する（Ｓ５６）。ステップＳ５６でＮＯのときには（Ｓ５６でＮＯ）、単語Ａと単語Ｂの属性の組み合わせがホワイトリストテーブルＤ７に存在し、かつブラックリストテーブルＤ８に存在しないことになり、ＣＰＵ３１は単語Ａと単語Ｂとを「接続可能（ＯＫ）」と判断してこの判断結果をメインメモリ３２に記憶させる（Ｓ５７）。
【０１５７】
一方、単語Ａと単語Ｂの属性の組み合わせがホワイトリストテーブルＤ７に存在しないと判断されたり（Ｓ５５でＮＯ）、単語Ａと単語Ｂの属性の組み合わせがブラックリストテーブルＤ８に存在するとき（Ｓ５６でＹＥＳ）、ＣＰＵ３１は単語Ａと単語Ｂとを「連結不可能（ＮＧ）」と判断してこの判断結果をメインメモリ３２に記憶させる（Ｓ５８）。この後、ＣＰＵ３１は本サブルーチンを終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ４の候補検索処理を実行する）。
【０１５８】
上述したように、単語Ａと単語Ｂとが接続可能となるのは、単語Ａと単語Ｂの属性がホワイトリストテーブルＤ７に存在するときだけである。従って、ホワイトリストテーブルＤ７に存在しない組み合わせの属性を有する単語同士が連続的に表示されることは決してないため、不適切な表現が確定的に入力されることを効果的に防止することができる。更に、単語Ａと単語Ｂの属性がブラックリストテーブルＤ８に存在しないときだけ、単語Ａと単語Ｂとが接続可能となるので、ホワイトリストテーブルＤ７だけでは十分に不適切な表現の確定的な入力を防止することが困難なときにも、ブラックリストテーブルＤ８を使用することで不適切な表現の確定的な入力の防止を補助することができる。
【０１５９】
例えば、ホワイトリストテーブルＤ７には単語Ａの品詞が「名詞」であり単語Ｂの品詞が「名詞」である組み合わせが定義されており、ホワイトリストテーブルＤ７によると単語Ａが「馬（名詞）」であり、単語Ｂが「鹿（名詞）」であるときには、ホワイトリストテーブルＤ７によって単語Ａと単語Ｂの接続が可能であると判断される。しかしながら、ブラックリストテーブルＤ８には、単語Ａが「表記が馬」であり、単語Ｂが「表記が鹿」が定義されている。このため、ブラックリストテーブルＤ８によって、単語Ａである「馬」と単語Ｂである「鹿」の接続が不可能となって、「馬鹿」との不適切な表現が確定的に入力されてしまうことを効果的に防止することができる。
【０１６０】
なお、単語Ａ又は単語Ｂが存在しないと判断されたときには（Ｓ５２でＹＥＳ）、ＣＰＵ３１はステップＳ５３〜Ｓ５６を実行することなく、単語Ａと単語Ｂとを「接続可能（ＯＫ）」と判断してこの判断結果をメインメモリ３２に記憶させる（Ｓ５７）。従って、単語Ａ又は単語Ｂが存在しないときには、連結チェックの対象となった何れの候補文字列ａ２も候補バッファ３２２から削除されずに表示され、また、編集文字列ａ５も確定文字列ａ４に変更されるのである。この後、ＣＰＵ３１は本サブルーチンを終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ４の候補検索処理を実行する）。
【０１６１】
以下に、図１７及び図２９を用いて、図２４のステップＳ１０で実行されるキャレット移動処理を説明する。図２９は、図２４のステップＳ１０で実行されるキャレット移動処理の一例を示すフローチャートである。まず、ＣＰＵ３１はタッチパネル１３における単語の境界部分上の領域がタッチされたかどうかを判断する（Ｓ６１）。境界部分の領域とは、タッチパネル１３における連続する２文字間（文字が表示されていないスペース部分）の上、かつ、確定文字列ａ４、編集文字列ａ５、または入力文字ａ１の開始位置又は終了位置と一致する領域である。具体的には、ＣＰＵ３１は、タッチされたタッチパネル１３上の座標を検出したときに、この座標が境界部分の領域にあるかどうかを判断する。入力文字ａ１、確定文字列ａ４及び編集文字列ａ５の各文字はチャットウィンドウＷ３の左端から順番に予め定められた位置に表示される。従って、境界部分の領域の座標は固定的に定まる。この座標が、境界部分の座標として予め用意されており（メモリカードＩ／Ｆ３６等に記憶されており）、読み出されてメインメモリ３２に記憶される。そして、この境界部分の座標とタッチ位置の座標とが一致するか判断され、一致したときには、文字間の位置であると判断される。さらに、入力文字データＤ１、編集文字列データＤ３又は確定文字列データＤ４の「開始位置」「終了位置」と一致する位置か否かを判断し、一致したと判断された場合、単語の境界部分がタッチされたと判断される。一方、一致しないときにはタッチパネル１３（チャットウィンドウＷ３上の領域）における他の位置がタッチされたと判断される。
【０１６２】
単語の境界部分上の領域がタッチされたと判断したときには（Ｓ６１でＹＥＳ）、ＣＰＵ３１はキャレットａ３の位置をタッチされた領域に対応する位置に変更する（Ｓ６２）。具体的には、ＣＰＵ３１はキャレット位置データＤ１０を更新する。キャレット位置データＤ１０は、キャレットａ３の表示位置の直前に位置する文字がチャットウィンドウＷ３の左端から何番目の順番であるかを示すことで、キャレット位置を示す。例えば、図４で示すような「今日はあつ」の文の後にキャレットａ３を表示するときには、キャレット位置データＤ１０は５を示す。上述したように、境界部分の領域の座標は固定的に定まるため、この順番が、境界部分の座標に対応付けて予め用意されており（メモリカードＩ／Ｆ３６等に記憶されており）、読み出されてメインメモリ３２に記憶される。そして、タッチされた境界部分の座標に対応する順番を示すように、ＣＰＵ３１はキャレット位置データＤ１０を更新する。
【０１６３】
一方、単語の境界部分上の領域がタッチされていないと判断されたときには（Ｓ６１でＮＯ）、ＣＰＵ３１はタッチ位置に最寄りの境界部分に対応する位置をキャレットａ３の位置に設定する（Ｓ６３）。具体的には、ＣＰＵ３１は、タッチ位置の座標に最も近い境界部分の座標を取得し、ＣＰＵ３１はこの座標に対応する順番を示すようにキャレット位置データＤ１０を更新する。
【０１６４】
この後、ＣＰＵ３１は、入力バッファ３２１に記憶されている入力文字ａ１を削除し（Ｓ６４）、編集バッファ３２３に記憶されている編集文字列ａ５を削除し（Ｓ６５）、候補バッファ３２２に記憶されている候補文字列ａ２を削除する（Ｓ６６）。そして、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ１３の処理を実行する）。
【０１６５】
以下に、図１７及び図３０を用いて、図２４のステップＳ１２で実行される投稿処理を説明する。図３０は、図２４のステップＳ１２で実行される投稿処理の一例を示すフローチャートである。まず、ＣＰＵ３１は入力バッファ３２１に記憶されている入力文字データＤ１を削除し（Ｓ７１）、編集バッファ３２３に記憶されている編集文字列データＤ３を削除し（Ｓ７２）、候補バッファ３２２に記憶されている候補文字列データＤ２を削除する（Ｓ７３）。この後、ＣＰＵ３１は、確定文字列ａ４のみからなるテキストデータを生成して、通信相手である他のゲーム装置１に送信する（Ｓ７４）。送信が成功したときには、ＣＰＵ３１は送信したテキストデータを送信文字列データＤ５として送信データ記憶領域３２５に記憶させる。この後、ＣＰＵ３１は、確定バッファ３２４に記憶されている確定文字列ａ４を全て削除し（Ｓ７５）、キャレットａ３の位置をチャットウィンドウＷ３における文の表示位置の先頭（左端）に移動させる（Ｓ７６）。すなわち、ＣＰＵ３１はキャレット位置データＤ１０が「０」を示すように更新する。そして、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ１３の処理を実行する）。
【０１６６】
以下に、図１７、図２０〜２３及び図３１を用いて、図２４のステップＳ８で実行されるＢａｃｋｓｐａｃｅ入力処理を説明する。図３１は、図２４のステップＳ８で実行されるＢａｃｋｓｐａｃｅ入力処理の一例を示すフローチャートである。まず、ＣＰＵ３１は入力バッファ３２１に入力文字ａ１（入力文字データＤ１）が記憶されているかどうかを判断する（Ｓ８１）。入力バッファ３２１に入力文字データＤ１が記憶されているときには（Ｓ８１でＹＥＳ）、ＣＰＵ３１は入力バッファ３２１に記憶されている入力文字ａ１の末尾の文字を削除する（Ｓ８２）。例えば、「さむかっ」の入力文字ａ１が入力バッファ３２１に記憶されていると末尾の「っ」が削除され、入力文字ａ１が「さむか」になる。なお、ステップＳ８２の具体的な処理を説明すると、ＣＰＵ３１は、入力文字データＤ１の「表記」と「読み方」から末尾の文字を削除し、「文字列長」と「終了位置」の数から１減算するように、入力文字データＤ１を更新する。入力文字ａ１が一文字だけのときには、入力文字データＤ１が入力バッファ３２１から削除される。
【０１６７】
この後、ＣＰＵ３１は、編集バッファ３２３及び確定バッファ３２４において、入力文字ａ１よりも後ろに編集文字列ａ５または確定文字列ａ４が存在するように編集文字列データＤ３又は確定文字列データＤ４が記憶されているときには、これらのデータＤ３，Ｄ４の「開始位置」「終了位置」を更新する（Ｓ８３）。すなわち、ＣＰＵ３１は入力文字ａ１よりも後ろにある編集文字列データＤ３及び確定文字列データＤ４の「開始位置」「終了位置」からそれぞれ１減算して編集文字列データＤ３及び確定文字列データＤ４を更新する。また、ステップＳ８４において入力文字データＤ１が削除されたときには、ＣＰＵ３１は入力文字データＤ１の後ろの順番のデータＤ３，Ｄ４の「順番」も１減算するように変更する。この後、ＣＰＵ３１はキャレットａ３の位置が入力文字ａ１の直後に位置するようにキャレット位置データＤ１０を更新する（Ｓ８４）。
【０１６８】
次に、ＣＰＵ３１は候補検索処理を実行する（Ｓ８５）。ここで実行される候補検索処理は、図２６を用いて上述した処理と同じである。この処理によって、ステップＳ８２で更新された新たな入力文字ａ１に対応する候補文字列ａ２が取得されて、候補バッファ３２２に記憶される。なお、ステップＳ８２によって入力文字データＤ１が全て削除されたときには、キャレットａ３の直前の確定文字列ａ４に対応する候補文字列ａ２が取得されて、候補バッファ３２２に記憶される（図２６でＳ３０を経由する）。この後、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ１３の処理を実行する）。
【０１６９】
次に、入力バッファ３２１に入力文字データＤ１が記憶されていないとき（Ｓ８１でＮＯ）の処理を説明する。この場合には、ＣＰＵ３１は編集バッファ３２３に編集文字列データＤ３が記憶されているかどうかが判断する（Ｓ８６）。編集文字列データＤ３が記憶されていると判断したときには（Ｓ８６でＹＥＳ）、ＣＰＵ３１は編集バッファ３２３に記憶されている編集文字列ａ５の中から末尾の（最後の順番の）編集文字列ａ５を削除する（Ｓ８７）。そして、ＣＰＵ３１は削除した編集文字列ａ５を入力文字ａ１として入力バッファ３２１に記憶させる（Ｓ８８）。具体的には、ＣＰＵ３１は、削除した編集文字列ａ５の「読み方」を入力文字データＤ１の「表記」と「読み方」に追加する。また、ＣＰＵ３１は、入力文字データＤ１の「文字列長」を削除した編集文字列ａ５の「読み方」の文字数とする。更に、ＣＰＵ３１は入力文字データＤ１の「開始位置」を削除した編集文字列ａ５の開始位置と同一にし、「終了位置」を「削除した編集文字列ａ５の終了位置＋削除した編集文字列ａ５の読み方の文字数−削除した編集文字列ａ５の表記の文字数」とする。
【０１７０】
上述のように、ステップＳ８８によって編集文字列ａ５が読み方表記（ひらがな表記）のみの入力文字ａ１に変更されることで、入力文字データＤ１の「終了位置」は変更される。この変更にともなって、入力文字ａ１の後ろに位置する確定文字列ａ４の「開始位置」及び「終了位置」を変える必要がある。従って、確定バッファ３２４に入力文字ａ１の後に位置する確定文字列ａ４が記憶されているときには、ＣＰＵ３１は確定文字列データＤ４の「開始位置」「終了位置」を更新する。具体的には、ＣＰＵ３１は「削除した編集文字列ａ５の読み方の文字数−削除した編集文字列ａ５の表記の文字数」で算出した値を「開始位置」及び「終了位置」に加算する。
【０１７１】
この後、ＣＰＵ３１はキャレットａ３の位置が入力文字ａ１の直後に位置するようにキャレット位置データＤ１０を更新する（Ｓ８９）。ＣＰＵ３１は候補検索処理を実行する（Ｓ９０）。ここで実行される候補検索処理は、図２６を用いて上述した処理と同じである。この処理によって、ステップＳ８８によって生成された入力文字ａ１に対応する候補文字列ａ２が取得されて、候補バッファ３２２に記憶される。この後、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ１３の処理を実行する）。
【０１７２】
次に、編集バッファ３２３に編集文字列データＤ３が記憶されていないとき（Ｓ８６でＮＯ）の処理を説明する。この場合には、ＣＰＵ３１は削除対象となる確定文字列ａ４を特定する（Ｓ９１）。ここで、キャレットａ３の直前に位置する確定文字列ａ４が削除対象と特定される。キャレット位置データＤ１０はキャレットａ３の直前に位置する文字の順番（左端から何番目の文字かという順番）を示すが、この順番の文字を末尾に含む確定文字列ａ４が削除対象となる。具体的には、確定文字列データＤ４の「終了位置」がキャレット位置データＤ１０の示す順番と同じときには、この確定文字列データＤ４が削除対象となる。なお、Ｂａｃｋｓｐａｃｅ入力処理の説明では、削除対象の確定文字列ａ４を単語（ｉ）と記載する。次に、ＣＰＵ３１は単語（ｉ）を編集バッファ３２３に書き込んで、確定バッファ３２４から削除する（Ｓ９２）。具体的には、ＣＰＵ３１は、確定文字列データＤ４から単語（ｉ）の情報を削除して、この情報を編集文字列データＤ３に追加する。
【０１７３】
次に、ＣＰＵ３１は、単語（ｉ）の直前に位置する単語（以下、単語（ｊ）と記載する）を特定する（Ｓ９３）。単語（ｊ）の特定は、単語（ｉ）の編集文字列データＤ３の示す「順番」及び確定文字列データＤ４の示す「順番」を参照することで行われる。具体的には、編集文字列データＤ３の「順番」の１つ前に「順番」が設定されている確定文字列データＤ４が単語（ｊ）に設定される。次に、ＣＰＵ３１は、図２８を用いて上述した連結チェック処理を実行する（Ｓ９４）。具体的には、ＣＰＵ３１は、単語（ｊ）を「前の単語（単語Ａ）」とし、単語（ｉ）の直後の単語（以下、単語（ｋ）と記載する）を「後ろの単語（単語Ｂ）」として連結チェックを行う。ここで、単語（ｋ）の特定は、単語（ｊ）の特定と同様に、編集文字列データＤ３および確定文字列データＤ４を参照することにより行うことができる。この後、ＣＰＵ３１は連結チェックにおいて単語（ｋ）と単語（ｊ）が接続可能（ＯＫ）と判別されたかどうかを判断し（Ｓ９５）、単語（ｋ）と単語（ｊ）が接続可能（ＯＫ）と判別されていないと判断したときには（Ｓ９５でＮＯ）、ＣＰＵ３１は単語（ｊ）を確定バッファ３２４から削除するとともに、編集文字列ａ５として編集バッファ３２３に記憶させる（Ｓ９６）。ここで、編集文字列データＤ３の示す単語（ｊ）の配置位置は単語（ｉ）の直前となる。
【０１７４】
この後、ＣＰＵ３１は、単語（ｊ）の直前に位置する確定文字列ａ４を新たな単語（ｊ）に設定し（Ｓ９７）、新たな単語（ｊ）を「前の単語（単語Ａ）」とし、かつ単語（ｋ）を「後ろの単語（単語Ｂ）」として上述したステップＳ９４の処理（連結チェック処理）を行う。連結チェックによって、単語（ｊ）と単語（ｋ）が接続可能であると判別される（Ｓ９６でＹＥＳ）まで、ＣＰＵ３１は繰り返しステップＳ９４，Ｓ９６，Ｓ９７の処理を実行する。これによって、単語（ｋ）とこの単語に接続可能な単語（ｊ）の間の単語が全て編集文字列ａ５に変更されることになり、ユーザが単語を削除することで不適切な表現を確定的に入力することを効果的に防止することができる。
【０１７５】
一方、連結チェックによって、単語（ｊ）と単語（ｋ）が接続可能であると判別されたときには（Ｓ９５でＹＥＳ）、ＣＰＵ３１は上述したステップＳ８７〜Ｓ９０の処理を実行する。具体的には、編集バッファ３２３に記憶されている末尾の単語、すなわち単語（ｉ）が、削除されて（Ｓ８７）、入力文字ａ１に変更される（Ｓ８８）。この後、キャレットａ３の位置も入力文字ａ１の直後に位置するように変更されて（Ｓ８９）、入力文字ａ１となった単語（ｉ）の候補文字列ａ２が取得されて候補バッファ３２２に記憶される（Ｓ９０）。この後、ＣＰＵ３１は本サブルーチンの処理を終了させて図２４及び図２５で示すメインルーチンに処理を戻す（ステップＳ１３の処理を実行する）。
【０１７６】
以下に、図６、図７、図１７、図２４、図２５、図２６、図２７、図２８及び図３２を用いて、図２４〜図２８で上述した文字入力処理を、具体的な事例を用いて更に説明する。この事例では、ゲーム装置１が「今日は」をユーザから確定的に入力される場合を例として説明する。図３２は、「今日は」をユーザから確定的に入力されるときの文字入力処理の一例を示す図である。なお、ここでの説明においては、キャレット位置の移動のための処理及びデータＤ１、Ｄ３及びＤ４の「文字列長」「開始位置」「終了位置」の説明については省略する。また、図３２の「表示およびバッファの内容」においては、太字が入力文字ａ１を示し、下線付きの太字が編集文字列ａ５を示し、通常の太さの文字が確定文字列ａ４を示す。また、三角がキャレットａ３を示す。そして、「／」の挿入箇所が、文字列と文字列、又は文字と文字列の境界を示す。また、後述の図３３及び図３４の「表示およびバッファの内容」においても同様である。
【０１７７】
まず、図３２の（１）で示す処理、すなわち「き」がゲーム装置１に入力されたときの処理を説明する。ユーザがゲーム装置１に「き」を入力すると、操作種別が入力文字ａ１の入力であると判別されて（Ｓ１）、入力文字ａ１が入力されたと判断され（Ｓ２でＹＥＳ）、入力文字ａ１の「き」が入力バッファ３２１に記憶される（Ｓ３）。
【０１７８】
そして、入力文字ａ１の「き」に対応する候補文字列ａ２が取得される（Ｓ４）。具体的には、図２６を参照して、入力文字ａ１が記憶されていると判断されて（Ｓ２１でＹＥＳ）、入力文字ａ１の「き」に対応する候補文字列ａ２が取得される（Ｓ２２）。ここでは、「気持ち」「来た」「今日」が候補文字列ａ２として選択されて候補バッファ３２２に記憶される。まだ、どの候補文字列ａ２に対しても連結チェックを行っていないため、候補文字列ａ２に対する連結チェックは完了していないと判断され（Ｓ２４でＮＯ）、これらの候補文字列ａ２の中から１の候補文字列ａ２、例えば「気持ち」が選択される（Ｓ２５）。
【０１７９】
次に、選択された「気持ち」に対する連結チェックが行われる（Ｓ２６）。図２８を参照して、具体的には、単語Ａが「空」に設定され、単語Ｂが「気持ち」に設定される（Ｓ５１）。単語Ａが「空」に設定されるのは入力文字ａ１の前には何の単語も表示されていないからである。単語Ａが「空」なので、単語Ａが存在しないと判断されて（Ｓ５２でＹＥＳ）、単語Ａと単語Ｂは接続可能であると判断される（Ｓ５７）。図２６を参照して、この後、連結チェックの結果が接続可能であると判断されて（Ｓ２７でＹＥＳ）、「気持ち」は候補バッファ３２２から削除されない。
【０１８０】
この後、取得された全ての単語（「気持ち」「来た」「今日」）の連結チェックが完了したかどうかが再度判断され（Ｓ２４）、「来た」「今日」の連結チェックが終わるまで上述したような連結チェックが繰り返される（Ｓ２５〜Ｓ２８）。ここでは、単語Ａが「空」なので、取得された全ての単語（「気持ち」「来た」「今日」）が接続可能と判断される（Ｓ２７でＹＥＳ）。全ての単語（「気持ち」「来た」「今日」）の連結チェックが完了したときには（Ｓ２４でＹＥＳ）、ステップＳ１３〜Ｓ１８までの表示処理が行われ（図２５を参照）、「き」の入力文字ａ１と「気持ち」「来た」「今日」の候補文字列ａ２が表示される。具体的には、図６で示すようなチャット画像が表示される。
【０１８１】
次に、図３２の（２）で示す処理、すなわち、「き」に続いて「ょ」がゲーム装置１に入力されたときの処理を説明する。まず、ユーザがゲーム装置１に「ょ」を入力する。この（２）で示す処理は、「き」が入力されたときの（１）で示す処理と同様である。もっとも、この処理においては、入力文字ａ１が「きょ」となり、「きょ」の入力文字ａ１に対応する候補文字列ａ２（「今日」「曲」「強化」）が取得され（Ｓ４、Ｓ２１、Ｓ２２）、「今日」「曲」「強化」に対して連結チェックが行われる（Ｓ２４〜Ｓ２８、Ｓ５１〜Ｓ５７）。そして、ステップＳ１３〜Ｓ１８までの表示処理が行われ（図２５を参照）、入力文字ａ１の「きょ」と候補文字列ａ２の「今日」「曲」「強化」が表示される。具体的には、図７で示すようなチャット画像が表示される。
【０１８２】
次に、図３２の（３）で示す処理、すなわち「今日」の候補文字列ａ２の選択が入力されたときの処理を説明する。ここでは、図７で示すチャット画像が表示されている。すなわち、候補文字列ウィンドウＷ２内に、候補文字列ａ２の「今日」「曲」「強化」が表示されている。ユーザはこれらの候補文字列ａ２のうち選択したい任意の候補文字列ａ２、例えば「今日」（タッチパネル１３における「今日」上の領域）をタッチする。この操作が「今日」という候補文字列ａ２を選択する操作となる。
【０１８３】
まず、操作種別が候補文字列ａ２の選択であると判別され（Ｓ１）、操作種別が文字の入力ではなく（Ｓ２でＮＯ）、候補文字列ａ２の選択であると判断され（Ｓ５でＹＥＳ）、候補文字列ａ２の「今日」を確定文字列ａ４に変更するため、単語確定処理が行われる（Ｓ６）。具体的には、図２７を参照して、入力文字ａ１の「きょ」が入力バッファ３２１から削除されて（Ｓ４１）、選択された「今日」という候補文字列ａ２が編集バッファ３２３に記憶される（Ｓ４２）。そして、選択された「今日」という候補文字列ａ２と、削除された入力文字ａ１の直後の単語との間の連結チェック処理が行われる（Ｓ４３）。
【０１８４】
具体的には、図２８を参照して、単語Ａが「今日」に設定され、単語Ｂが「空」に設定される（Ｓ５１）。単語Ｂが「空」に設定されるのは入力文字ａ１の後には何の単語も表示されていないからである。単語Ｂが「空」なので、単語Ｂが存在しないと判断されて（Ｓ５２でＹＥＳ）、単語Ａと単語Ｂは接続可能であると判断される（Ｓ５７）。図２７に戻って、候補バッファ３２２に記憶されている全ての候補文字列ａ２（「今日」「曲」「強化」）が削除され（Ｓ４４）、連結チェックの結果が「接続可能」と判断される（Ｓ４５でＹＥＳ）。この後、単語の「今日」が、確定文字列ａ４として確定バッファ３２４に記憶され（Ｓ４６）、かつ、編集バッファ３２３から削除される（Ｓ４７）。
【０１８５】
この後、図２４に戻って、候補検索処理が実行される（Ｓ４）。具体的には、新たに追加された確定文字列ａ４の「今日」に対応する候補文字列ａ２（「も」「の」「と」「を」）が取得され（Ｓ３０）、取得された候補文字列ａ２に対してステップＳ２４〜Ｓ２８の連結チェック処理が施される。ここでは、全ての候補文字列ａ２に対する連結チェックの結果が接続可能であるとする。この後、ステップＳ１３〜Ｓ１８までの表示処理が行われ（図２５を参照）、確定文字列ａ４の「今日」と候補文字列ａ２の「も」「の」「と」「を」が表示される。具体的には、図８で示すようなチャット画像が表示される。
【０１８６】
次に、図３２の（４）で示す処理、すなわち、図８で示すチャット画像が表示されているときに、図１２のように、ユーザによって入力文字ａ１の「は」が入力されたときの処理を説明する。ここでは、図２４を参照して、操作種別が入力文字ａ１の入力であると判別されて（Ｓ１）、入力文字ａ１が入力されたと判断され（Ｓ２でＹＥＳ）、入力文字ａ１の「は」が入力バッファ３２１に記憶される（Ｓ３）。
【０１８７】
この後、「は」に対応する候補文字列ａ２を取得するため、候補検索処理が実行される（Ｓ４）。具体的には、図２６を参照して、入力文字ａ１が記憶されていると判断され（Ｓ２１でＹＥＳ）、入力文字ａ１の「は」に対応する候補文字列ａ２が候補文字列データベースＤＢから取得される（Ｓ２２）。ここでは、候補文字列ａ２の「は」「ハワイ」「はい」「判明」が取得される。この後、全ての候補文字列ａ２に対して連結チェック処理が終了したかどうかが判断され（Ｓ２４）、終了していないと判断されて（Ｓ２４でＮＯ）、候補文字列ａ２の「は」「ハワイ」「はい」「判明」の中から１の候補文字列ａ２（ここでは、「は」）が選択される（Ｓ２５）。
【０１８８】
そして、選択された「は」に対する連結チェックが行われる（Ｓ２６）。図２８を参照して、具体的には、単語Ａが「今日」に設定され、単語Ｂが「は」に設定される（Ｓ５１）。単語Ａが「今日」に設定されるのは入力文字ａ１の直前に位置するからである。このときには、単語Ａと単語Ｂとはともに存在すると判断され（Ｓ５２でＮＯ）、単語Ａである「今日」の属性（品詞、活用形及び表記）が取得されるとともに（Ｓ５３）、単語Ｂである「は」の属性（品詞、活用形及び表記）が取得される（Ｓ５４）。「今日」の品詞は「名詞」であり、「は」の属性は「助詞」である。
【０１８９】
この後、単語Ａ（「今日」）の属性と単語Ｂ（「は」）の属性の組み合わせがホワイトリストテーブルＤ７に登録されているかどうかが判断される（Ｓ５５）。単語Ａの品詞が「名詞」であり、単語Ｂの品詞が「助詞」という組み合わせはホワイトリストテーブルＤ７に登録されているため、単語Ａ（「今日」）の属性と単語Ｂ（「は」）の属性の組み合わせがホワイトリストテーブルＤ７に登録されていると判断される（Ｓ５５でＹＥＳ）。次に、この後、単語Ａ（「今日」）と単語Ｂ（「は」）の属性の組み合わせがブラックリストテーブルＤ８に登録されているかどうか判断される（Ｓ５６）。単語Ａの品詞が「名詞」であり、単語Ｂの品詞が「助詞」という組み合わせはブラックリストテーブルＤ８に登録されていないため、単語Ａ（「今日」）の属性と単語Ｂ（「は」）の属性の組み合わせがブラックリストテーブルＤ８に登録されていないと判断される（Ｓ５６でＮＯ）。このため、ホワイトリストテーブルＤ７とブラックリストテーブルＤ８を用いての、「今日」と「は」に対する連結チェックの結果は「接続可能」と決定される（Ｓ５７）。
【０１９０】
図２６に戻って、「今日」と「は」に対する連結チェックの結果は「接続可能」であると判断され（Ｓ２７でＹＥＳ）、候補文字列ａ２の「今日」が候補バッファ３２２から削除されることなく、再度、全ての候補文字列ａ２に対して連結チェック処理が終了したかどうかが判断される（Ｓ２４）。未だ連結チェックの対象となっていない候補文字列ａ２があるため、連結チェック処理が終了していないと判断されて（Ｓ２４でＮＯ）、残りの候補文字列ａ２の「ハワイ」「はい」「判明」の中から１の候補文字列ａ２（ここでは、「はい」）が選択される（Ｓ２５）。
【０１９１】
そして、選択された「はい」に対する連結チェックが行われる（Ｓ２６）。図２８を参照して、具体的には、単語Ａが入力文字ａ１の直前に位置する「今日」に設定され、単語Ｂが「はい」に設定される（Ｓ５１）。このときには、単語Ａと単語Ｂとはともに存在すると判断され（Ｓ５２でＮＯ）、単語Ａである「今日」の属性（品詞、活用形及び表記）が取得されるとともに（Ｓ５３）、単語Ｂである「はい」の属性（品詞、活用形及び表記）が取得される（Ｓ５４）。「今日」の品詞は「名詞」、「はい」の品詞は「感動詞」である。
【０１９２】
この後、単語Ａ（「今日」）の属性と単語Ｂ（「はい」）の属性の組み合わせがホワイトリストテーブルＤ７に登録されているかどうかが判断される（Ｓ５５）。単語Ａの品詞が「名詞」であり、単語Ｂの品詞が「感動詞」という組み合わせはホワイトリストテーブルＤ７に登録されていないため、単語Ａ（「今日」）の属性と単語Ｂ（「はい」）の属性の組み合わせがホワイトリストテーブルＤ７に登録されていないと判断される（Ｓ５５でＮＯ）。このため、ホワイトリストテーブルＤ７を用いての、「今日」と「はい」に対する連結チェックの結果は「接続不可能」と決定される（Ｓ５７）。
【０１９３】
図２６に戻って、「今日」と「はい」に対する連結チェックの結果は「接続不可能」であると判断され（Ｓ２７でＮＯ）、候補文字列ａ２の「はい」が候補バッファ３２２から削除され（Ｓ２８）、再度、全ての候補文字列ａ２に対して連結チェック処理が終了したかどうかが判断される（Ｓ２４）。未だ連結チェックの対象となっていない候補文字列ａ２があるため、連結チェック処理が終了していないと判断されて（Ｓ２４でＮＯ）、残りの候補文字列ａ２の「ハワイ」と「判明」に対して連結チェック処理が行われる（Ｓ２４〜Ｓ２８）。「ハワイ」と「判明」に対しての連結チェックも終了したら、全ての候補文字列ａ２に対しての連結チェック処理が終了したと判断され（Ｓ２４でＹＥＳ）、ステップＳ１３〜Ｓ１８までの表示処理が行われ（図２５を参照）、確定文字列ａ４の「今日」、入力文字ａ１の「は」、及び候補文字列ａ２の「は」「ハワイ」「判明」が表示される。具体的には、図１２で示すようなチャット画像が表示される。なお、候補文字列ａ２の「ハワイ」「判明」は、全て連結チェックの結果が「接続可能」と判断されている（図２６のＳ２７でＹＥＳ）。
【０１９４】
以下に、図４、図１３、図１５、図１７、図２０、図２１、図２６及び図３３を用いて、図２４〜図２８及び図３１で上述した文字入力処理を、他の具体的な事例を用いて更に説明する。この事例では、「今日は寒かったみたいです。」がユーザから確定的に入力された後、「寒かっ」の削除の指示が入力されたときの、ゲーム装置１の文字入力処理を説明する。図３３は、「寒かっ」の削除の指示がユーザから入力されたときの文字入力処理の一例を示す図である。なお、ここでの説明においては、キャレット位置の移動のための処理及びデータＤ１、Ｄ３及びＤ４の「文字列長」「開始位置」「終了位置」の変更の説明については省略する。
【０１９５】
まず、図３３の（１）で示す処理、すなわち、「今日」「は」「寒かっ」「た」「みたいです」「。」が確定文字列ａ４として表示されているときに、「た」の削除の指示がゲーム装置１に入力されたときの処理を説明する。
【０１９６】
キーウィンドウＷ１（図４を参照）におけるバックスペースキー（このキー上のタッチパネル１３）をタッチすることによって、ユーザがゲーム装置１に文字の削除の指示を入力すると、操作種別が文字の削除であると判別されて（Ｓ１）、文字の削除の指示が入力されたと判断され（Ｓ７でＹＥＳ）、Ｂａｃｋｓｐａｃｅ入力処理が実行される（Ｓ８）。図３１を参照して、具体的には、入力文字ａ１は記憶されていないと判断され（Ｓ８１でＮＯ）、かつ編集文字列ａ５は記憶されていないと判断される（Ｓ８６でＮＯ）。そして、「た」が削除対象となる単語（ｉ）として特定される（Ｓ９１）。この後、この「た」の確定文字列ａ４が確定バッファ３２４から削除され、かつ編集バッファ３２３に記憶される（Ｓ９２）。この後、「た」の直前に位置する「寒かっ」が単語（ｊ）に特定される（Ｓ９３）。
【０１９７】
そして、「た」の直後に位置する単語（ｋ）と単語（ｊ）との連結チェック処理が実行される（Ｓ９４）。ここでは、「た」の直後に位置する単語は「みたいです」となる。従って、「寒かっ」と「みたいです」に対する連結チェック処理が実行される。なお、ここでは「寒かっ」と「みたいです」に対する連結チェック処理の詳細については省略するが、連結チェックの結果が「接続不可能」と判断される（Ｓ９５でＮＯ）。このため、単語（ｊ）の「寒かっ」は確定バッファ３２４から削除されて、編集バッファ３２３に記憶される（Ｓ９６）。なお、「寒かっ」と「た」の何れも確定文字列ａ４であったときから配置順は変更されないため（確定文字列データＤ４の「順番」が変更なく編集文字列データＤ３の「順番」として引き継がれるため）、「寒かっ」の配置順は「た」の直前となる。
【０１９８】
この時点で、確定バッファ３２４に記憶されている単語は「今日」「は」「みたいです」であり、編集バッファ３２３に記憶されているのは「寒かっ」「た」となる。この後、単語（ｊ）すなわち「寒かっ」の直前に位置する単語が新たな単語（ｊ）として特定される（Ｓ９７）。ここでは、単語の「は」が新たな単語（ｊ）として特定される。そして、新たな単語（ｊ）である「は」と単語（ｋ）である「みたいです」とに対する連結チェック処理が実行される（Ｓ９４）。このように、削除対象となる単語（ｉ）の直後に位置する単語（ｋ）との間で接続可能な単語が単語（ｊ）になるまで、繰り返し、単語（ｊ）を前の単語に遡って特定しつつ、単語（ｋ）と単語（ｊ）に対する連結チェック処理が実行される。なお、ここでは「は」と「みたいです」に対する連結チェック処理の詳細については省略するが、連結チェックの結果が「接続可能」と決定され、連結チェックの結果が「接続可能」と判断される（Ｓ９５でＹＥＳ）。
【０１９９】
この後、編集バッファ３２３に記憶されている編集文字列ａ５のうち配置順の最も遅い単語が削除され（Ｓ８７）、かつ、この単語の「読み方」が入力バッファ３２１に記憶される（Ｓ８８）。ここでは、「た」が編集バッファ３２３から削除されて、「た」の「読み方」（「た」）が入力文字ａ１として入力バッファ３２１に記憶される。そして、入力文字ａ１の「た」の候補文字列ａ２を取得するため、候補検索処理が実行される（Ｓ９０）。この後、ステップＳ１３〜Ｓ１８までの表示処理が行われる（図２５を参照）。これによって、「今日」「は」「みたいです」が確定文字列ａ４として表示され、「寒かっ」が編集文字列ａ５として表示され、「た」が入力文字ａ１として表示され、かつ「た」に対応する候補文字列ａ２が表示される。具体的には、図１３で示すようなチャット画像が表示される。
【０２００】
次に、図３３の（２）で示す処理、すなわち、図１３で示すチャット画像が表示されているときに、文字の削除の指示が入力されると実行される処理を説明する。
【０２０１】
まず、操作種別が文字の削除であると判別されて（Ｓ１）、文字の削除の指示が入力されたと判断され（Ｓ７でＹＥＳ）、Ｂａｃｋｓｐａｃｅ入力処理が実行される（Ｓ８）。図３１を参照して、具体的には、入力文字ａ１は記憶されていると判断され（Ｓ８１でＹＥＳ）、入力文字ａ１の最後の文字が削除される（Ｓ８２）。ここでは、入力文字ａ１は「た」なので、最後の文字である「た」が削除される。この時点で、入力バッファ３２１には入力文字ａ１が全く記憶されていなくなる。続いて候補検索処理が実行される（Ｓ８５）。具体的には、図２６を参照して、入力バッファ３２１に入力文字ａ１が記憶されていないと判断され（Ｓ２１）。キャレットａ３の直前に位置する単語である「寒かっ」に対応する候補文字列ａ２が取得される（Ｓ３０）。この後、この候補文字列ａ２と「寒かっ」に対して連結チェック処理が実行される（Ｓ２４〜Ｓ２８）。
【０２０２】
そして、ステップＳ１３〜Ｓ１８までの表示処理が行われる（図２５を参照）。これによって、「今日」「は」「みたいです」が確定文字列ａ４として表示され、「寒かっ」が編集文字列ａ５として表示され、かつ「寒かっ」に対応する候補文字列ａ２が表示される。ここで、「た」は入力バッファ３２１から削除されているため表示されない。具体的には、図１４で示すようなチャット画像が表示される。
【０２０３】
次に、図３３の（３）で示す処理、すなわち、図１４で示すチャット画像が表示されているときに、文字の削除の指示が入力されると実行される処理を説明する。この処理では、操作種別が文字の削除であると判別されて（Ｓ１）、文字の削除の指示が入力されたと判断され（Ｓ７でＹＥＳ）、Ｂａｃｋｓｐａｃｅ入力処理が実行される（Ｓ８）。図３１を参照して、具体的には、入力文字ａ１は記憶されていないと判断され（Ｓ８１でＮＯ）、かつ編集文字列ａ５は記憶されていると判断される（Ｓ８６でＹＥＳ）。この時点では、「寒かっ」が編集文字列ａ５として記憶されているからである。
【０２０４】
この後、編集バッファ３２３に記憶されている編集文字列ａ５のうち配置順の最も遅い単語が削除され（Ｓ８７）、かつ、この単語の「読み方」が入力バッファ３２１に記憶される。ここでは、「寒かっ」が編集バッファ３２３から削除されて、「寒かっ」の「読み方（「さむかっ」）が入力文字ａ１として入力バッファ３２１に記憶される（Ｓ８８）。そして、入力文字ａ１の「さむかっ」の候補文字列ａ２を取得するため、候補検索処理が実行される（Ｓ９０）。この後、ステップＳ１３〜Ｓ１８までの表示処理が行われる（図２５を参照）。これによって、「今日」「は」「みたいです」が確定文字列ａ４として表示され、「さむかっ」が入力文字ａ１として表示され、かつ「さむかっ」に対応する候補文字列ａ２が表示される。具体的には、図１５で示すようなチャット画像が表示される。
【０２０５】
図３３の（４）〜（７）で示す処理は、図１５で示すようなチャット画像が表示されているときに、入力文字ａ１の「さむかっ」を一文字ずつ削除するための文字入力処理である。ユーザから文字の削除の指示が入力される毎に末尾から順番に一文字ずつ削除される。この削除のための処理については、上述した図３３の（２）で示す処理と同一であるため、説明を省略する。なお、図３３の（７）で示す処理では、「さむかっ」を構成する文字の中で最後に削除される文字、すなわち「さ」が削除された後は、直前の「は」に対応する候補文字列ａ２が取得され、この点については図３３の（７）で示す処理と図３３の（２）で示す処理とで異なる。
【０２０６】
次に、図４、図１７、図２４、図２６、図２７及び図３４を用いて、図３３の（７）の処理が実行された状態で（「今日はみたいです。」がユーザから確定的に入力されている状態で）、「暖かかっ」と「た」の追加の指示が入力されたときの、ゲーム装置１の文字入力処理を説明する。ここでは、「今日は」と「みたいです」の間に「暖かかった」の確定的な入力が行われる場合を説明する。図３４は、「暖かかった」の入力指示がユーザによって入力されたときの文字入力処理の一例を示す図である。なお、ここでの説明においては、キャレット位置の移動のための処理及びデータＤ１、Ｄ３及びＤ４の「文字列長」「開始位置」「終了位置」の変更の説明については省略する。
【０２０７】
まず、図３４の（１）で示す処理を説明する。図３４の（１）で示す処理は、「今日」「は」「みたいです」「。」が確定文字列ａ４として表示されているときに、入力文字ａ１の「あ」が「は」と「みたいです」の間の位置に入力されたときの文字入力処理である。操作種別が入力文字ａ１の入力であると判別されて（Ｓ１）、入力文字ａ１が入力されたと判断され（Ｓ２でＹＥＳ）、入力文字ａ１の「あ」が入力バッファ３２１に記憶される（Ｓ３）。
【０２０８】
そして、入力文字ａ１の「あ」に対応する候補文字列ａ２を取得するため、候補検索処理が実行される（Ｓ４）。候補検索処理については、図３２の（１）の処理に関して記載したため説明を省略する。ここでは、候補検索処理の実行後、「雨」「朝」「暖かかっ」が候補バッファ３２２に記憶されているとする。この後、ステップＳ１３〜Ｓ１８までの表示処理が行われる（図２５を参照）。これによって、「今日」「は」「みたいです」が確定文字列ａ４として表示され、「あ」が入力文字ａ１として「は」と「みたいです」の間に表示され、かつ「あ」に対応する候補文字列ａ２が表示される。
【０２０９】
次に、図３４の（２）で示す処理を説明する。図３４の（２）で示す処理は、「雨」「朝」「暖かかっ」が候補文字列ａ２として表示されているときに、ユーザから「暖かかっ」の選択が入力されたときの文字入力処理である。まず、操作種別が候補文字列ａ２の選択であると判別され（Ｓ１）、操作種別が文字の入力ではなく（Ｓ２でＮＯ）、候補文字列ａ２の選択であると判断され（Ｓ５でＹＥＳ）、候補文字列ａ２の「暖かかっ」を確定文字列ａ４に変更するため、単語確定処理が行われる（Ｓ６）。この単語確定処理において、単語Ａを「暖かかっ」とし、かつ単語Ｂを「みたいです」として、連結チェック処理が行われる。この連結チェック処理の結果はここでは「連結不可能」とされ（Ｓ５８）、「暖かかっ」は確定文字列ａ４ではなく編集文字列ａ５となる（Ｓ４６、Ｓ４７が実行されない）。なお、単語確定処理については、図３２の（３）の処理に関して記載したため詳しい説明は省略する。
【０２１０】
上述したように、単語確定処理の実行後には候補バッファ３２２から候補文字列ａ２が削除されている（Ｓ４４）。この後、図２４に戻って、新たに候補文字列ａ２を取得するため、候補検索処理が実行される（Ｓ４）。図２６を参照してこの候補検索処理を具体的に説明する。上述したように、単語確定処理の実行後には入力バッファ３２１から入力文字ａ１が削除されている（Ｓ４１）。従って、キャレット位置の直前の単語である「暖かかっ」に対応する候補文字列ａ２が取得され（Ｓ３０）、この候補文字列ａ２を単語Ｂとし、かつ「暖かかっ」を単語Ａとして連結チェック処理が行われる（Ｓ２４〜Ｓ２８）。
【０２１１】
ここでは、候補検索処理の実行後、候補文字列ａ２の「た」のみが候補バッファ３２２に記憶されているとする。この後、ステップＳ１３〜Ｓ１８までの表示処理が行われる（図２５を参照）。これによって、「今日」「は」「みたいです」が確定文字列ａ４として表示され、「暖かかっ」が編集文字列ａ５として「は」と「みたいです」の間に表示され、かつ「暖かかっ」に対応する候補文字列ａ２（「た」）が表示される。
【０２１２】
次に、図３４の（３）で示す処理を説明する。図３４の（３）で示す処理は、「た」が候補文字列ａ２として表示されているときに、ユーザから「た」の選択が入力されたときの文字入力処理である。
【０２１３】
まず、操作種別が候補文字列ａ２の選択であると判別され（Ｓ１）、操作種別が文字の入力ではなく（Ｓ２でＮＯ）、候補文字列ａ２の選択であると判断され（Ｓ５でＹＥＳ）、編集文字列ａ５の「暖かかっ」および、候補文字列ａ２の「た」を確定文字列ａ４に変更するため、単語確定処理が行われる（Ｓ６）。図２７を参照して、この単語確定処理において、単語Ａを「た」とし、かつ単語Ｂを「みたいです」として、連結チェック処理が行われる。この連結チェック処理の結果はここでは「接続可能」とされ（図２８のＳ５７）、ステップＳ４５でＹＥＳと判断されて、編集文字列ａ５として記憶されている「暖かかった」は確定文字列ａ４となる（Ｓ４６、Ｓ４７が実行される）。
【０２１４】
この時点で、「今日」「は」「暖かかっ」「た」「みたい」「です」「。」が確定バッファ３２４に記憶されており、入力バッファ３２１、候補バッファ３２２、及び編集バッファ３２３には何の単語も文字も記憶されていない。また、キャレットａ３の位置は、「た」の後に移動される。
【０２１５】
この後、図２４に戻って、候補検索処理が実行される（Ｓ４）。なお、この候補検索処理では「た」に対応する候補文字列ａ２が取得されるが、候補検索処理については図３２の（１）の処理に関して記載したため説明を省略する。この後、ステップＳ１３〜Ｓ１８までの表示処理が行われる（図２５を参照）。これによって、「今日」「は」「暖かかっ」「た」「みたいです」「。」が確定文字列ａ４として表示され、かつ「た」に対応する候補文字列ａ２が表示される。
【０２１６】
上述したように、本実施形態にかかるゲーム装置１は、ユーザによって選択された候補文字列ａ２のみが確定文字列ａ４となるという第１の特徴を備えるため、これによって、候補文字列ａ２として表示する文字列を不適切な表現を示すものとならないように選別することで、不適切な用語が確定文字列ａ４として入力され、他のゲーム装置１に対して送信されることを効果的に防止することができる。
【０２１７】
また、ゲーム装置１は、所定の条件に合致した単語のみが候補文字列ａ２として表示されるという第２の特徴を備えるため、不適切な用語のリストが予め装置に記憶され、このリストに合致する用語のみが塗り潰して表示される従来の構成と比較すると、不適切な表現が確定的に入力されることを効果的に防止することができる。すなわち、不適切な用語のリストを予め用意する構成では、このリストに漏れがあった場合にこの漏れてしまった不適切な用語を入力することが可能になってしまう。本実施形態の第２の特徴では、所定の条件に合致した単語のみが表示される候補文字列ａ２となるため、従来技術に比較して効果的に不適切な表現の確定的な入力を防止することができる。
【０２１８】
また、この所定の条件が入力文字ａ１の直前の単語と候補文字列ａ２が接続可能であることであるため、連続する２つの単語を別々に候補文字列ａ２から選択して不適切な単語を入力することができない。これによって、更に効果的に不適切な表現の入力を防止することができる。
【０２１９】
入力文字ａ１の直後の単語と候補文字列ａ２が接続可能な場合のみに候補文字列ａ２が確定文字列ａ４とされるという本実施形態の第３の特徴によって、連続する２つの単語を別々に候補文字列ａ２から選択して不適切な単語をユーザによって確定的に入力されることを防止することができる。これによって、更に効果的に不適切な表現の確定的な入力を防止することができる。
【０２２０】
また、確定文字列ａ４が表示された場合にはこの確定文字列ａ４に対応する候補文字列ａ２を候補文字列データベースから取得して表示するという本実施形態の第４の特徴によって、ユーザが入力文字ａ１を入力する手間なく候補文字列ａ２を表示することができる。
【０２２１】
また、ゲーム装置１は、次のような本実施形態の第５の特徴を備える。すなわち、削除対象の単語（ｉ）の直前に位置する単語（ｊ）と直後に位置する単語（ｋ）が接続可能かどうか判断される。そして、削除対象の単語（ｉ）の前に位置する単語（ｊ）と後に位置する単語（ｋ）が接続不可能であれば、単語（ｊ）の更に前に位置する単語を新たな単語（ｊ）として、単語（ｋ）との間の連結チェックが行われる。接続可能となるまで、連結チェック対象とする単語（ｊ）を前の単語に繰り上げて判断がなされてゆき、接続可能となったときに、接続可能となった単語（ｊ）と単語（ｋ）に挟まれた単語が未確定状態（編集文字列ａ５又は入力文字ａ１）になる。本実施形態の第５の特徴によれば、接続可能な単語（ｊ）と単語（ｋ）に挟まれた単語が未確定状態に変更されるため、単語（ｉ）の削除によって、接続不可能な２つの単語が連続的に並んだ状態で確定的に入力されることを効果的に防止することができる。
【０２２２】
次に、本実施形態の変形例を以下に記載する。
【０２２３】
（１）本実施形態では、候補検索処理の連結チェック処理（図２６のステップＳ２６）において、前方の単語（単語Ａ）を入力文字ａ１の直前の単語とし、後方の単語（単語Ｂ）を候補文字列ａ２として連結チェックが実行されているが、この連結チェックに代えて又は加えて、単語Ａを候補文字列ａ２とし、単語Ｂを入力文字ａ１の直後の単語として連結チェックが実行されてもよい。
【０２２４】
（２）また、本実施形態では、単語確定処理の連結チェック処理（図２７のステップＳ４３）において、前方の単語（単語Ａ）を選択された候補文字列ａ２とし、後方の単語（単語Ｂ）を入力文字ａ１の直後の単語として連結チェックが実行されているが、この連結チェックに代えて又は加えて、単語Ａを入力文字ａ１の直前の単語とし、単語Ｂを選択された候補文字列ａ２として連結チェックが実行されてもよい。
【０２２５】
（３）また、本実施形態では、単語確定処理と候補検索処理の両方で連結チェック処理を実行しているが、どちらか一方の処理で連結チェック処理を実行する構成であってもよい。
【０２２６】
（４）なお、本実施形態では、図２８で示す連結チェック処理において、ホワイトリストテーブルＤ７とブラックリストテーブルＤ８を使用して連結チェックを行っているが、ブラックリストテーブルＤ８を使用せず、ホワイトリストテーブルＤ７のみを使用して連結チェックが実行されてもよい。
【０２２７】
（５）本実施形態では、文字の削除の指示がユーザから入力されたときには、ゲーム装置１はキャレットａ３（図４を参照）の直前に位置する文字が削除されたり、この直前に位置する単語が削除対象とされるが、キャレットａ３の直後に位置する単語及び文字が削除されたり削除対象となってもよい。
【０２２８】
（６）本実施形態では、キャレットａ３（図４を参照）の位置の移動の指示が入力されたときにゲーム装置が未確定状態の単語（図４で示す入力文字ａ１、候補文字列ａ２及び編集文字列ａ５）をメインメモリ３２から削除する構成が採用されるが（図２９のステップＳ６４〜Ｓ６６）、この構成に代えて、未確定状態の単語がメインメモリ３２に記憶されている状態では、キャレットの移動の指示が入力されてもゲーム装置１がキャレットａ３の位置の移動を行わない構成を採用してもよい。
【０２２９】
（７）また、本実施形態では、メッセージの送信指示が入力されたときにゲーム装置が未確定状態の単語（図４で示す入力文字ａ１、候補文字列ａ２及び編集文字列ａ５）をメインメモリ３２から削除する構成が採用されるが（図３０のステップＳ７１〜Ｓ７３）、この構成に代えて、未確定状態の単語がメインメモリ３２に記憶されている状態では、メッセージの送信指示が入力されてもゲーム装置１が他のゲーム装置１に対してメッセージの送信を行わない構成を採用してもよい。
【０２３０】
（８）本実施形態では、ゲーム装置１は、他のゲーム装置１とテキストデータを送受信することで、ユーザ間でチャットを行わせるチャット機能を備えるが、この機能を備えなくてもよく、ゲーム装置１が他のゲーム装置１に対してテキストデータを送信する機能を備えていればよい。
【０２３１】
（９）もっとも、ゲーム装置１は必ずしも通信機能を備える必要がなく、ユーザの指示によって確定的に入力されている単語のみを不揮発性のメモリ（例えば、図２で示す保存用データメモリ３４等）記憶することができる構成であってもよい。例えば、ワードプロセッサのアプリケーションの機能の一部として備えるようにしてもよい。
【０２３２】
（１０）なお、本実施形態では、ゲーム装置１は入力文字ａ１、候補文字列ａ２、確定文字列ａ４及び編集文字列ａ５を下側ＬＣＤ１２に表示することで出力しているが、アンプ４２を介してスピーカから出力したり、図略の印刷装置を用いて出力してもよい。
【０２３３】
（１１）本実施形態は、本発明の情報処理装置をゲーム装置１に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機（ＰＨＳ）、携帯情報端末（ＰＤＡ）、据置型ゲーム装置や、パーソナルコンピュータ等にも本発明の適用は可能である。
【産業上の利用可能性】
【０２３４】
本発明の入力プログラム、入力装置、システム及び入力方法は、不適切な表現が確定的に入力されてしまうことを効果的に防止することができ、ユーザが任意の文字や単語を入力することができる入力プログラム、入力装置、システム及び入力方法において有用である。
【符号の説明】
【０２３５】
１…ゲーム装置
１１…下側ハウジング
１２…下側ＬＣＤ
１３…タッチパネル
１４…操作ボタン
１５、２６…ＬＥＤ
１６…マイクロフォン用孔
２１…上側ハウジング
２２…上側ＬＣＤ
２３…内側カメラ
２４…音抜き孔
２５…外側カメラ
２７…タッチペン
２８、２９…メモリカード
３１…ＣＰＵ
３２…メインメモリ
３３…メモリ制御回路
３４…保存用データメモリ
３５…プリセットデータ用メモリ
３６…メモリカードＩ／Ｆ
３７…無線通信モジュール
３８…ＲＴＣ
３９…電源回路
４０…Ｉ／Ｆ回路
４１…マイク
４２…アンプ
【図１】
0005592679.tif 000002
【図２】
0005592679.tif 000003
【図３】
0005592679.tif 000004
【図４】
0005592679.tif 000005
【図５】
0005592679.tif 000006
【図６】
0005592679.tif 000007
【図７】
0005592679.tif 000008
【図８】
0005592679.tif 000009
【図９】
0005592679.tif 000010
【図１０】
0005592679.tif 000011
【図１１】
0005592679.tif 000012
【図１２】
0005592679.tif 000013
【図１３】
0005592679.tif 000014
【図１４】
0005592679.tif 000015
【図１５】
0005592679.tif 000016
【図１６Ａ】
0005592679.tif 000017
【図１６Ｂ】
0005592679.tif 000018
【図１６Ｃ】
0005592679.tif 000019
【図１７】
0005592679.tif 000020
【図１８】
0005592679.tif 000021
【図１９】
0005592679.tif 000022
【図２０】
0005592679.tif 000023
【図２１】
0005592679.tif 000024
【図２２】
0005592679.tif 000025
【図２３】
0005592679.tif 000026
【図２４】
0005592679.tif 000027
【図２５】
0005592679.tif 000028
【図２６】
0005592679.tif 000029
【図２７】
0005592679.tif 000030
【図２８】
0005592679.tif 000031
【図２９】
0005592679.tif 000032
【図３０】
0005592679.tif 000033
【図３１】
0005592679.tif 000034
【図３２】
0005592679.tif 000035
【図３３】
0005592679.tif 000036
【図３４】
0005592679.tif 000037