以下に図面を参照して、本発明を適用した一実施形態にかかるゲーム装置(本発明の情報処理装置に対応)について説明する。ゲーム装置は、ユーザからの所望の文字の入力を受け付けることができる文字入力機能を備えるとともに、この入力された文字を示すテキストデータを他のゲーム装置に対して送信可能な通信機能を備えている。ゲーム装置は、他のゲーム装置との間で通信を行うことで、本ゲーム装置と他のゲーム装置のユーザ間でチャットを行わせることができる。以下に図1及び図2を用いてゲーム装置の構成を説明する。
図1は、第1の実施形態にかかるゲーム装置の概観図である。
図1において、ゲーム装置1は、折り畳み型の携帯ゲーム装置であり、開いた状態(開状態)のゲーム装置1を示している。ゲーム装置1は、開いた状態においてもユーザが両手又は片手で把持することができるようなサイズで構成される。
ゲーム装置1は、下側ハウジング11及び上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11及び上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置1を使用する。また、ユーザは、ゲーム装置1を使用しないときには閉状態としてゲーム装置1を保管する。また、図1に示した例では、ゲーム装置1は、上記閉状態及び開状態のみでなく、下側ハウジング11と上側ハウジング21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング21を下側ハウジング11に対して任意の角度で静止させることができる。
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置1に内蔵されている表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置1は、任意の解像度の表示装置を利用することができる。なお、詳細は後述するが、下側LCD12は、内側カメラ23又は外側カメラ25で撮影されている画像をリアルタイムに表示するために用いられる。また、相手方のゲーム装置1に未だ送信されていない、ユーザの入力途中の文章を表示するために用いられる。このユーザによる入力途中の文章の表示に関する詳細は、図4及び図5を用いて後述する。
下側ハウジング11には、入力装置として、各操作ボタン14A〜14K及びタッチパネル13が設けられる。図1に示されるように、各操作ボタン14A〜14Kのうち、方向入力ボタン14A、操作ボタン14B、操作ボタン14C、操作ボタン14D、操作ボタン14E、電源ボタン14F、スタートボタン14G、及びセレクトボタン14Hは、上側ハウジング21と下側ハウジング11とを折りたたんだときに内側となる、下側ハウジング11の内側主面上に設けられる。方向入力ボタン14Aは、例えば選択操作等に用いられる。各操作ボタン14B〜14Eは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン14Fは、ゲーム装置1の電源をオン/オフするために用いられる。図1に示す例では、方向入力ボタン14A及び電源ボタン14Fは、下側ハウジング11の内側主面中央付近に設けられる下側LCD12に対して、左右一方側(図1では左側)の当該主面上に設けられる。また、操作ボタン14B〜14E、スタートボタン14G、及びセレクトボタン14Hは、下側LCD12に対して左右他方側(図1では右側)となる下側ハウジング11の内側主面上に設けられる。方向入力ボタン14A、操作ボタン14B〜14E、スタートボタン14G、及びセレクトボタン14Hは、ゲーム装置1に対する各種操作を行うために用いられる。
なお、図1においては、操作ボタン14I〜14Kの図示を省略している。例えば、Lボタン14Iは、下側ハウジング11の上側面の左端部に設けられ、Rボタン14Jは、下側ハウジング11の上側面の右端部に設けられる。Lボタン14I及びRボタン14Jは、ゲーム装置1に対して、例えば撮影指示操作(シャッター操作)を行うために用いられる。更に、音量ボタン14Kは、下側ハウジング11の左側面に設けられる。音量ボタン14Kは、ゲーム装置1が備えるスピーカの音量を調整するために用いられる。
また、ゲーム装置1は、各操作ボタン14A〜14Kとは別の入力装置として、更にタッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル13として、例えば下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。また、下側ハウジング11の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル13に対する操作を行うために用いられるタッチペン27を収納することができる。なお、タッチパネル13に対する入力は、通常タッチペン27を用いて行われるが、タッチペン27に限らずユーザの指でタッチパネル13を操作することも可能である。
また、下側ハウジング11の右側面には、メモリカード28を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置1とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、例えばSD(Secure Digital)メモリカードであり、コネクタに着脱自在に装着される。メモリカード28は、例えば、ゲーム装置1によって撮影された画像を記憶(保存)したり、他の装置で生成された画像をゲーム装置1に読み込んだりするために用いられる。
更に、下側ハウジング11の上側面には、カートリッジ29を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置1とカートリッジ29とを電気的に接続するためのコネクタ(図示せず)が設けられる。カートリッジ29は、ゲームプログラム等を記録した記録媒体であり、下側ハウジング11に設けられた挿入口に着脱自在に装着される。
下側ハウジング11と上側ハウジング21との連結部の左側部分には、3つのLED15A〜15Cが取り付けられる。ここで、ゲーム装置1は、他の機器との間で無線通信を行うことが可能であり、第1LED15Aは、ゲーム装置1の電源がオンであるときに点灯する。第2LED15Bは、ゲーム装置1の充電中に点灯する。第3LED15Cは、無線通信が確立している場合に点灯する。従って、3つのLED15A〜15Cによって、ゲーム装置1の電源のオン/オフ状況、充電状況、及び、通信確立状況をユーザに通知することができる。
一方、上側ハウジング21には、上側LCD22が設けられる。上側LCD22は横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。なお、下側LCD12と同様、上側LCD22に代えて、他の任意の方式及び任意の解像度の表示装置を利用してもよい。なお、上側LCD22上を覆うように、タッチパネルを設けてもかまわない。例えば、上側LCD22には、ユーザに各操作ボタン14A〜14Kやタッチパネル13の役割を教えるための、操作説明画面が表示される。
また、上側ハウジング21には、2つのカメラ(内側カメラ23及び外側カメラ25)が設けられる。図1に示されるように、内側カメラ23は、上側ハウジング21の連結部付近の内側主面に取り付けられる。一方、外側カメラ25は、内側カメラ23が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング21の外側主面(ゲーム装置1が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング21の背面)に取り付けられる。なお、図1においては、外側カメラ25を破線で示している。これによって、内側カメラ23は、上側ハウジング21の内側主面が向く方向を撮影することが可能であり、外側カメラ25は、内側カメラ23の撮影方向の逆方向、すなわち、上側ハウジング21の外側主面が向く方向を撮影することが可能である。このように、本実施形態では、2つの内側カメラ23及び外側カメラ25の撮影方向が互いに逆方向となるように設けられる。例えば、ユーザは、ゲーム装置1からユーザの方を見た景色を内側カメラ23で撮影することができるとともに、ゲーム装置1からユーザの反対側の方向を見た景色を外側カメラ25で撮影することができる。
なお、上記連結部付近の内側主面には、音声入力装置としてマイク(図2に示すマイク41)が収納されている。そして、上記連結部付近の内側主面には、マイク41がゲーム装置1外部の音を検知できるように、マイクロフォン用孔16が形成される。マイク41を収納する位置及びマイクロフォン用孔16の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング11にマイク41を収納し、マイク41を収納位置に対応させて下側ハウジング11にマイクロフォン用孔16を設けるようにしてもよい。
また、上側ハウジング21の外側主面には、第4LED26(図1では、破線で示す)が取り付けられる。第4LED26は、外側カメラ25によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、外側カメラ25によって動画が撮影される間点灯する。第4LED26によって、ゲーム装置1による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
また、上側ハウジング21の内側主面中央付近に設けられる上側LCD22に対して、左右両側の当該主面に音抜き孔24がそれぞれ形成される。音抜き孔24の奥の上側ハウジング21内にはスピーカが収納されている。音抜き孔24は、スピーカからの音をゲーム装置1の外部に放出するための孔である。
以上に説明したように、上側ハウジング21には、画像を撮影するための構成である内側カメラ23及び外側カメラ25と、例えば撮影の際に操作説明画面を表示する表示手段である上側LCD22とが設けられる。一方、下側ハウジング11には、ゲーム装置1に対する操作入力を行うための入力装置(タッチパネル13及び各ボタン14A〜14K)と、ゲーム画面及びチャット画面を表示するための表示手段である下側LCD12とが設けられる。従って、ゲーム装置1を使用する際には、ユーザは、下側LCD12に表示される撮影画像(カメラによって撮影された画像)を見ながら、下側ハウジング11を把持して入力装置に対する入力を行うことができる。
次に、図2を参照して、ゲーム装置1の内部構成を説明する。なお、図2は、ゲーム装置1の内部構成の一例を示すブロック図である。
図2において、ゲーム装置1は、CPU(Central Processing Unit)31、メインメモリ32、メモリ制御回路33、保存用データメモリ34、プリセットデータ用メモリ35、メモリカードインターフェース(メモリカードI/F)36及びカートリッジI/F43、無線通信モジュール37、リアルタイムクロック(RTC)38、電源回路39、及びインターフェース回路(I/F回路)40等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング11(又は上側ハウジング21でもよい)内に収納される。
CPU31は、所定のプログラム(本発明の入力プログラムを含む)を実行するための情報処理手段である。本実施形態では、所定のプログラムがゲーム装置1内のメモリ(例えば保存用データメモリ34)やメモリカード28及び/又は29に記憶されており、CPU31は、当該所定のプログラムを実行することによって、図24及び図25を用いて後述する文字入力処理を実行する。なお、CPU31によって実行されるプログラムは、ゲーム装置1内のメモリに予め記憶されていてもよいし、メモリカード28及び/又はカートリッジ29から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。例えば、インターネットを経由して所定のサーバからダウンロードすることで取得してもよいし、据置型ゲーム装置と通信を行うことで、当該据置型ゲーム装置に記憶されている所定のプログラムをダウンロードすることで取得してもよい。
CPU31には、メインメモリ32、メモリ制御回路33、及びプリセットデータ用メモリ35が接続される。また、メモリ制御回路33には、保存用データメモリ34が接続される。メインメモリ32は、CPU31のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ32は、上記文字入力処理又は通信処理に用いられる各種データを記憶したり、外部(メモリカード28及び29や他の機器等)から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ32として、例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ34は、CPU31によって実行されるプログラムや内側カメラ23及び外側カメラ25によって撮影された画像のデータ等を記憶するための記憶手段である。保存用データメモリ34は、不揮発性の記憶媒体によって構成されており、例えば本実施例ではNAND型フラッシュメモリで構成される。メモリ制御回路33は、CPU31の指示に従ってって、保存用データメモリ34に対するデータの読み出し及び書き込みを制御する回路である。プリセットデータ用メモリ35は、ゲーム装置1において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ35としては、SPI(Serial Peripheral Interface)バスによってCPU31と接続されるフラッシュメモリを用いることができる。
メモリカードI/F36は、CPU31に接続される。メモリカードI/F36は、コネクタに装着されたメモリカード28に対するデータの読み出し及び書き込みを、CPU31の指示に応じて行う。本実施形態では、外側カメラ25によって撮像された画像データがメモリカード28に書き込まれたり、メモリカード28に記憶された画像データがメモリカード28から読み出されて保存用データメモリ34に記憶されたりする。
カートリッジI/F43はCPU31に接続される。カートリッジI/F43は、コネクタに装着されたカートリッジ29に対するデータの読み出し及び書き込みをCPU31の指示に従ってって行う。本実施形態では、ゲーム装置1が実行することが可能なアプリケーションプログラムがカートリッジ29から読み出されてCPU31によって実行されたり、当該アプリケーションプログラムに関するデータ(例えばゲームのセーブデータ等)がカートリッジ29に書き込まれたりする。
無線通信モジュール37は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、無線通信モジュール37は、所定の通信方式により同種のゲーム装置との間で例えばデータ伝送距離が10mの範囲内の無線通信を行う機能を有する。無線通信モジュール37は、CPU31に接続される。CPU31は、無線通信モジュール37を用いてインターネットを介して、又は介さないで他の機器(例えば据置型ゲーム機や、同種のゲーム装置、パーソナルコンピュータ等)との間でデータを送受信することができる。例えば、CPU31は、他の機器との間でテキストデータの送受信を行い、これによって、本ゲーム装置1のユーザと他の機器のユーザとの間でチャットを行わせることができる。
また、CPU31は、無線通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。例えば、CPU31は、自機と他のゲーム装置とが互いに通信可能範囲内(例えば、両機間の距離が10m以内)に位置するときにデータを送受信することができる。例えば、CPU31は、他のゲーム装置との間でテキストデータの送受信を行い、これによって、本ゲーム装置1のユーザと他のゲーム装置のユーザとの間でチャットを行わせることができる。
また、CPU31には、RTC38及び電源回路39が接続される。RTC38は、時間をカウントしてCPU31に出力する。例えば、CPU31は、RTC38によって計時された時間に基づいて、現在時刻(日付)等を計算することもできる。電源回路39は、ゲーム装置1が有する電源(典型的には電池であり、下側ハウジング11に収納される)から供給される電力を制御し、ゲーム装置1の各部品に電力を供給する。
また、ゲーム装置1は、マイク41及びアンプ42を備えている。マイク41及びアンプ42は、それぞれI/F回路40に接続される。マイク41は、ゲーム装置1に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をI/F回路40に出力する。アンプ42は、I/F回路40から音声信号を増幅してスピーカ(図示せず)から出力させる。I/F回路40は、CPU31に接続される。
また、タッチパネル13は、I/F回路40に接続される。I/F回路40は、マイク41及びアンプ42(スピーカ)の制御を行う音声制御回路と、タッチパネル13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換及びD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成してCPU31に出力する。例えば、タッチ位置データは、タッチパネル13の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、及び、タッチ位置データの生成を所定時間に1回の割合で行う。CPU31は、I/F回路40を介して、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
操作ボタン14は、上記各操作ボタン14A〜14Kから構成され、CPU31に接続される。操作ボタン14からCPU31へは、各操作ボタン14A〜14Kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に応じた処理を実行する。
内側カメラ23及び外側カメラ25は、それぞれCPU31に接続される。内側カメラ23及び外側カメラ25は、CPU31の指示に応じて画像を撮影し、撮影した画像データをCPU31に出力する。本実施形態では、CPU31は、内側カメラ23及び外側カメラ25の何れか一方に対して撮影指示を行い、撮影指示を受けたカメラが画像を撮影して画像データをCPU31に送る。
また、下側LCD12及び上側LCD22は、それぞれCPU31に接続される。下側LCD12及び上側LCD22は、それぞれCPU31の指示に従って画像を表示する。
以下、図3を用いてゲーム装置1が他のゲーム装置1と行う通信を説明する。図3は、ゲーム装置1と他のゲーム装置1との間の通信を説明するための図である。2つのゲーム装置1は、最寄り(例えば、10m以内に位置する)のアクセスポイント2と無線通信を行い、このアクセスポイント2及びアクセスポイント2が接続された広域ネットワーク3(インターネット、WAN等)を介して、相互に通信を行う。本実施形態では、ゲーム装置1は、他のゲーム装置1との間でテキストデータを送受信する。このテキストデータはゲーム装置1のユーザによって入力された文字を示し、このため、テキストデータの送受信によって2つのゲーム装置1のユーザ間でチャットを行わせることができる。
なお、図3では、通信を行うゲーム装置1の数は2台であるがこれに限定されず複数台のゲーム装置1間でチャットのための通信を行う構成であってもよい。また、アクセスポイント2及び広域ネットワーク3を介さずに、複数のゲーム装置1の間で直接にチャットのための通信を行ってもよい。また、ゲーム装置1は、据置型のゲーム装置又は汎用機との間で通信を行ってもよい。
以下、図4〜図16Bを用いて、ゲーム装置1が他のゲーム装置1に対して送信するデータに含まれる文字列の入力方法を説明する。この文字列の入力方法が本実施形態の特徴となる。図4〜図8、図12は、本実施形態にかかるゲーム装置1で表示されるチャット画像の一例を示す図である。図9〜図11、図13〜図16Bは、本実施形態にかかるゲーム装置1で表示されるチャットウィンドウの一例を示す図である。
(本実施形態の第1の特徴)
以下、図4及び図5を用いて本実施形態の第1の特徴を説明する。
図4を参照して、本実施形態ではユーザに文字入力をさせるために図4で示すようなチャット画像を表示する。チャット画像とは、ユーザの文字入力を受け付けるためのインターフェースとなる画像である。チャット画像は、下側LCD12に表示され、キーウィンドウW1、候補文字列ウィンドウW2及びチャットウィンドウW3を含む。
キーウィンドウW1は、入力可能な文字(例えば日本語50音等)のキーを表示するためのウィンドウである。ユーザがタッチペン27を用いてキーウィンドウW1に表示されているキー上のタッチパネル13をタッチすることで、このキーの文字の入力が行われる。ここで入力される文字を、以下「入力文字a1」と記載する。
候補文字列ウィンドウW2は、上記入力文字a1に対応する候補文字列a2を表示するためのウィンドウである。候補文字列a2とは、入力文字a1に対応付けて候補文字列データベースに登録されている文字列(1文字のみを含む)である。この候補文字列データベースについては、詳細は図17を用いて後述する。ユーザから入力文字a1の入力があったときに、この入力文字a1に対応する候補文字列a2が入力候補文字列データベースから取得されて、候補文字列ウィンドウW2に表示される。
なお、「文字列」は文字が文章を構成する際に一定のまとまりを持つ構成要素を示し、例えば、単語、文節、句読点、形態素及び語幹等を示す。本実施形態では、主に単語を文字列としているため、文字列に代えて単語と記載する場合がある。なお、本実施形態では、「文字列」は主に単語であるが、文節、句読点、形態素及び語幹等も含んでいてもよい。また、文字列は1の文字から構成される場合もある。また、本実施形態では、「文字」は文字列のように一定のまとまりを持たない1以上の文字を示す。
チャットウィンドウW3は、ユーザが入力する文を表示するためのウィンドウである。チャットウィンドウW3には、入力文字a1が表示されるとともに、文字の入力位置を示すマークであるキャレットa3が表示される。ユーザによって入力された入力文字a1は、未だ確定されていない未確定文字の状態である。未確定文字の状態では、入力文字a1のデータは相手方のゲーム装置1に送信することができず、キャレットa3を移動させればチャットウィンドウW3の表示から削除されてしまう。
また、チャットウィンドウW3には確定的に入力された文字列a4(以下「確定文字列a4」と記載する)も表示される。確定文字列a4は、候補ウィンドウW2に表示されている候補文字列a2のうち1つがユーザに選択されたときに表示される。確定文字列a4は選択された候補文字列a2と同じ文字列となる。
本実施形態の第1の特徴としては、ユーザが選択した候補文字列a2のみが確定文字列a4となること、及び、確定文字列a4のデータのみがゲーム装置1からゲーム装置1に送信されること(未確定文字の状態での文字列は送信不可能なこと)である。例えば図4の例では、他のゲーム装置1に対するテキストデータの送信指示をゲーム装置1が受け付けたとき、確定文字列a4である「今日は」のみが送信され、未確定文字の状態である「あつ」は送信されない。これによって、候補文字列a2として表示する文字列を不適切な表現を示すものとならないように選別することで、不適切な用語が確定文字列a4として入力され、他のゲーム装置1に対して送信されることを効果的に防止することができる。すなわち、ユーザがいくら不適切な表現を表す単語(入力文字a1)を入力したところで、候補文字列データベースに登録されていない限り、この入力文字a1を確定文字列a4とすることができず、不適切な単語が確定的に入力されて他のゲーム装置1に送信されることを効果的に防止することができる。ここで、不適切な用語とは、誹謗中傷など相手を不快にさせる表現のほか、住所、氏名などの個人情報を含むものとして考える。
なお、入力文字a1及び確定文字列a4はユーザに識別可能な状態で表示されることが好ましい。図4中では入力文字a1の周辺部分がグレーに着色されているが、例えば入力文字a1の周辺部分の背景を青にして文字を黒字で表示し、確定文字列a4の周辺部分の背景を他の背景部分と同色にして文字を黒字で表示する方法がある。もっとも、入力文字a1と確定文字列a4の表示はこれに限定されず、識別可能な状態で表示されなくてもよい。
なお、本実施形態では、図4で示すチャット画像には英語入力切替キーk1が表示されている。この英語入力切替キーk1の上に位置するタッチパネル13の領域をタッチすることで、図5で示すような英語入力対応のチャット画像が表示される。英語入力対応のチャット画像は、図4で示す日本語入力対応のチャット画像と同様にウィンドウW1〜W3を含む。ウィンドウW2、W3の表示内容は日本語が英語に変わった点以外は図4で示す日本語入力対応のチャット画像と同様である。キーウィンドウW1は、aからzまでのアルファベットのキーが50音キーに代えて表示される点は異なっているが用途は図4で示す日本語入力対応のチャット画像と同様である。英語入力対応のチャット画像には英語入力切替キーk1に代えて日本語入力切替キーk2が表示され、日本語入力切替キーk2の上に位置するタッチパネル13の領域をタッチすることで、図4で示すような日本語入力対応のチャット画像に切り替えて表示される。なお、本実施形態では、ゲーム装置1は英語入力と日本語入力の両方に対応しているが何れか一方のみに対応していてもよい。また、ゲーム装置1は3以上の言語の入力に対応していてもよい。
(本実施形態の第2の特徴)
図6及び図7を用いて、以下に本実施形態の第2の特徴を説明する。図6では、入力文字a1として「き」が表示されている。この場合には、「き」を先頭に含む候補文字列a2が候補文字列データベースから抽出されて候補文字列ウィンドウW2に表示される。本例では、「気持ち、今日、来た」という3つの単語が候補文字列a2として表示されている。そして、図7では、ユーザが「き」の後に「ょ」を入力しているため入力文字a1が「きょ」となり、「きょ」を先頭に含む候補文字列a2が候補文字列データベースから抽出されて候補文字列ウィンドウW2に表示される。本例では、「今日、曲、強化」の3つの単語が候補文字列a2として表示されている。
本実施形態の第2の特徴としては、候補文字列a2として表示されるのは、候補文字列データベースから抽出された候補文字列のうち、確定文字列a4の適格を有する(所定の条件を満たした)候補文字列のみである点である。具体的には、直前の単語(入力文字a1の直前の単語)と接続可能な所定の条件に合致した単語だけが表示される。図6及び図7の例では、入力文字a1である「き」、「きょ」の直前には何の単語も存在しないため、直前の単語は「空(から)」とされる。なお、本実施形態において「空」とは情報が未入力(前の単語として何も設定されていない)状態を示すが、この構成に代えて存在しないことを示す情報が前の単語として設定されていてもよい。候補文字列データベースから取得した候補文字列a2が「空」に接続可能かどうかの条件を満たしたかどうかが判断され、成立した候補文字列a2のみが表示される。なお、「空」に対しては全ての候補文字列a2が接続可能なように所定の条件が設定されている。
例えば、図7の例では、「きょ」に対応する「今日、曲、強化」の候補文字列a2が候補文字列データベースから取得されたとすると、「今日」「曲」「強化」のそれぞれが「空」に接続可能かどうかの条件が成立したかどうかが判断される。そして、「空」に対しては全ての候補文字列a2が接続可能なように所定の条件が設定されているため、「今日」「曲」「強化」の全ての単語について所定の条件を満たしたと判断され、これら全ての単語が候補文字列a2として表示される。
上述したように、本実施形態の第2の特徴によれば、所定の条件に合致した単語のみが候補文字列a2として表示されることになる。従って、不適切な用語のリストが予め装置に記憶され、このリストに合致する用語のみが塗り潰して表示される従来の構成と比較すると、不適切な表現が確定的に入力されることを効果的に防止することができる。すなわち、不適切な用語のリストを予め用意する構成では、このリストに漏れがあった場合にこの漏れてしまった不適切な用語を入力することが可能になってしまう。本実施形態の第2の特徴では、所定の条件に合致した単語のみが候補文字列a2となるため、従来技術に比較して効果的に不適切な表現の確定的な入力を防止することができる。
更に、入力文字a1の直前の単語と接続可能であるかが候補文字列a2として表示されるための条件であるため、「馬」という単語の直後にユーザが入力文字a1として「しか」を入力した場合でも、「馬」に接続可能な条件として「鹿」が設定されていなければ「鹿」が候補文字列a2として表示されず、不適切な表現である「馬鹿」を入力することができない。すなわち、連続する2つの単語を別々に候補文字列a2から選択して不適切な単語を入力することができない。これによって、更に効果的に不適切な表現の入力を防止することができる。なお、本実施形態では、入力文字a1の直前に位置する単語と道義的に接続可能な単語について所定の条件として設定されるのに加えて、入力文字a1の直前に位置する単語の品詞と接続可能な品詞についても所定の条件として設定されており、文法的に不適切な表現の確定的な入力についても効果的に防止することができる。
(本実施形態の第3の特徴)
次に、図7〜図11を用いて本実施形態の第3の特徴を説明する。図7で示す候補文字列ウィンドウW2に表示されている候補文字列a2のうち「今日」が選択された場合に図8で示すチャット画像が表示される。なお、選択したい候補文字列a2上に位置するタッチパネル13の領域をタッチすることで、ユーザが候補文字列a2の選択を行うことができる。選択した候補文字列a2は所定の時間だけ着色される等して識別可能に表示され、この後に、図8で示すように、候補文字列ウィンドウW2内の候補文字列a2(今日、曲、強化)が全て消去される。同じタイミングで、選択された候補文字列a2(今日)が確定文字列a4としてチャットウィンドウW3に表示される。ここで、選択された候補文字列a2(今日)は入力文字a1(きょ)に置き換えて表示される。
本実施形態の第3の特徴は、候補文字列a2がユーザにより選択されると、入力文字a1の直後の単語と候補文字列a2が接続可能かどうか判断され、接続可能と判断された候補文字列a2のみが確定文字列a4になる点である。図7及び図8の例では、「きょ」の直後は何も表示されておらずこの場合には「空(から)」であると判別される。選択された候補文字列a2である「今日」と「空」とが接続可能かどうかが判断され、接続可能であると判断された場合に「今日」が確定文字列a4としてチャットウィンドウW3に表示される。なお、「空」に対しては全ての候補文字列a2が接続可能なように所定の条件が設定されており、図8では「今日」が確定文字列a4として表示されている。
また、入力文字a1の直後の単語と候補文字列a2が接続可能ではないと判断された候補文字列a2は未確定状態の編集文字列a5(図9を参照)としてチャットウィンドウW3に表示されることになる。図9では、入力文字a1「きょ」の直後の単語は「寒かっ」である。従って、「今日」と「寒かっ」は接続可能な条件を満たさないため、「今日」という単語が編集文字列a5として識別可能な状態でチャットウィンドウW3に表示される。
編集文字列a5が表示されてしまった場合には、それに続く新たな候補文字列a2を選択することで編集文字列a5を確定文字列a4とすることができる場合がある。具体的には、図10で示すように、ユーザは編集文字列a5(「今日」)の後に新たな入力文字a1(本例では「は」)を入力する。この場合には新たな候補文字列a2(例えば、「は」「判明」「ハワイ」)が表示される。ここで、ユーザが新たな候補文字列a2(例えば「は」)を選択した場合に、この候補文字列a2(例えば「は」)が直後の単語(「寒かっ」)と接続可能な場合には新たな候補文字列a2が確定文字列a4になり、また、直前の編集文字列a5(「今日」)が新たな候補文字列a2(例えば「は」)と接続可能な場合には編集文字列a5が確定文字列a4に変更して表示される(図11を参照)。
上述したように、本実施形態の第3の特徴は、入力文字a1の直後の単語と候補文字列a2が接続可能な場合のみに候補文字列a2が確定文字列a4とされるため、「鹿」という単語の直前にユーザが入力文字a1として「うま」を入力した場合でも、「鹿」に接続可能な条件として「馬」が設定されていなければ「馬」が候補文字列a2として表示されたとしても確定文字列a4にすることができないので、不適切な表現である「馬鹿」を入力することができない。すなわち、連続する2つの単語を別々に候補文字列a2から選択して不適切な単語を入力することができない。これによって、更に効果的に不適切な表現の入力を防止することができる。なお、本実施形態では、入力文字a1の直後に位置する単語と道義的に接続可能な単語について所定の条件として設定されるのに加えて、入力文字a1の直後に位置する単語の品詞と接続可能な品詞についても所定の条件として設定されており、文法的に不適切な表現の確定的な入力についても効果的に防止することができる。
ここで、表示対象となる候補文字列a2の選別の際に入力文字a1の前および後の文字と接続可能な候補文字列a2を表示する構成を採用せずに、上述したような構成を採用したのは次の理由による。なお、上述したような構成とは、表示対象となる候補文字列a2の選別のためには入力文字a1の直前の単語と候補文字列a2が接続可能であるか判別され、選択された候補文字列a2を確定文字列a4とするか否かを判別するためには入力文字a1の直後の単語と候補文字列a2が接続可能であるか判別される構成である。
すなわち、表示対象となる候補文字列a2の選別の際に入力文字a1の前後の文字と接続可能な候補文字列a2を表示する構成に比較すると、2つの確定文字列a4の間に文章を入力することが容易になるからである。例えば、「A」という確定文字列a4と「B」という確定文字列a4が続けて表示され、「A」と「B」の間に単語を入力する場合を例に挙げると、入力文字a1の前後の文字列「A」「B」と接続可能な候補文字列a2のみを表示してしまうと候補文字列a2として表示される単語の種類が少なくなってしまいユーザが所望の単語が表示され難くなってしまう。すなわち、「A」と「B」の間に2語以上追加挿入するような場合に、先頭の追加語のみに注目して候補文字列a2を選別してしまうため、後ろの追加語を入力することによって確定文字列a4とすることができるような文字列が候補文字列a2として選別されなくなってしまう。
本実施形態の構成では、前の文字列「A」と接続可能な単語を候補文字列a2として表示することで、より多様な単語を候補文字列a2として表示することができる。そして、これらの中からユーザが選択した候補文字列a2(例えば、「C」)が後の文字「B」と接続不可能な場合には確定文字列a4とはならないが(編集文字列a5となるが)、続いて入力文字a1を入力してこの入力文字a1に対応する候補文字列a2(例えば、「D」)を選択することで、文字列「C」「D」ともに確定文字列a4とすることができる場合がある。すなわち、「D」が「B」と接続可能ならば確定文字列a4となり、「C」が「D」と接続可能ならば確定文字列a4となる。従って、本実施形態では、不適切な表現の確定的な入力も防止することができながら、多様な候補文字列a2を表示してユーザによる候補文字列a2の選択肢を広げることができる。
(本実施形態の第4の特徴)
以下に、図8及び図12を用いて本実施形態の第4の特徴を説明する。図8で示すように、本実施形態では、確定文字列a4が表示された場合にはこの確定文字列a4に対応する候補文字列a2が候補文字列データベースから取得されて表示される。これによって、ユーザが入力文字a1を入力する手間なく候補文字列a2を表示することができる。ここで表示される候補文字列a2もまた上述した本実施形態の第2の特徴と同様に直前の確定文字列a4と接続可能な条件を満たす単語である。
なお、図12で示すように、確定文字列a4に対応する候補文字列a2が表示されている状態で入力文字a1が入力された場合には、候補文字列ウィンドウW2に表示される候補文字列a2は入力文字a1に対応する候補文字列a2に切り替えられる。
(本実施形態の第5の特徴)
以下に図5、図11、図13〜図16Bを用いて本実施形態の第5の特徴を説明する。
本実施形態の第5の特徴は、ゲーム装置1が、表示されている確定文字列a4を削除する場合に、この削除対象となる確定文字列a4の前後の単語が接続可能であるかを判断する点である。以下に、具体例を説明する。図11で示すように「今日は寒かったみたいです」との確定文字列a4からなる文がチャットウィンドウW3に表示されていることとする。ここで、キャレットa3を「寒かった」の直後に移動させ、バックスペースキー(キーウィンドウW1に表示される)上のタッチパネル13が押下されると、「た」が削除対象の単語とされる。具体的には、図13で示すようにチャットウィンドウW3の表示が変更されて、「た」が入力文字a1に変更されて未確定状態になる。
ここで、削除対象となった「た」の前の単語「寒かっ」と後の単語「みたい」とが接続可能かどうかが判断され、接続可能な場合には「た」が入力文字a1に変更されるだけである。一方、接続不可能な場合には図13で示すように、更に「寒かっ」が編集文字列a5に変更されて未確定状態になる。この場合には、更に、削除対象の単語である「た」より前でかつ最も「た」に近い並びの単語(遅い順番の単語)であって、削除対象の単語である「た」の直後の単語である「みたい」と接続可能な関係にある単語(接続可能文字列)を判別する。図13の例では、「寒かっ」の前の単語「は」と後ろの単語である「みたい」との接続が可能であると判断され、「は」が接続可能文字列と判別される。この場合に、図13で示すように、接続可能文字列の「は」と「みたい」に挟まれる「寒かった」が未確定状態になる。具体的には、「寒かっ」が編集文字列a5に変更して表示され、「た」が入力文字a1に変更して表示される。
なお、入力文字a1でなければ単語の削除を行うことができず、この状態で更にバックスペースキー(キーウィンドウW1に表示される)上のタッチパネル13が押下されると、図14で示すように「た」をチャットウィンドウW3から削除することができる。更に、バックスペースキー(キーウィンドウW1に表示される)上のタッチパネル13が押下されると、図15で示すように、今後は編集文字列a5である「寒かっ」が入力文字a1に変更されて表示される。入力文字a1はひらがな表記なので、「寒かっ」がひらがな表記に変更されて「さむかっ」という入力文字a1として表示される。その後は、バックスペースキー(キーウィンドウW1に表示される)上のタッチパネル13が押下される毎に、「さむかっ」の末尾から順番に文字が削除される。
ここで、図5で示すような英語対応のチャット画像が表示されている場合を例に本実施形態の第5の特徴を説明する。図16Aで示すように「I will get the truth out of you」との文がチャットウィンドウW3に表示されている。この英文は「私は貴方から真実を得るでしょう」という意味である。ここで、「truth」を削除すると、「truth」の前の単語「the」と、「truth」の後ろの単語「out」とが接続可能かどうかが判断される。なお、英語の場合、例えば「out」という単語は名詞、形容詞、動詞、副詞のどの品詞としても使用することができるように、品詞での接続可否のチェックは難しいため、基本的には、表記のみによって行うこととする。ただし、その限りではない。ここでは、「the」と「out」は接続可能と判断されるとする。すると、図16Bで示すように、単語「truth」が入力文字a1に変更して表示される。続けて削除を指示し、「h」―「t」―「u」―「r」―「t」と順に後退して削除していき、単語「truth」が全て削除される。この後、「the」を削除する場合、すなわち、「the」が削除対象の単語となった場合に、「the」の前の単語「get」と、「the」の後ろの単語「out」とが接続可能かどうかが判断される。ここで、「get out」は「出て行け」という意味の表現となり得、不適切な表現が入力されてしまうことになるため、「get」と「out」が接続不可能であるとされているとすると、「get」と「out」は接続可能ではなく、「get」の直前の「will」と「out」とが接続可能かどうかを判断する。ここで「will」と「out」が接続可能であるとすると、図16Cで示すように、「get」が編集文字列a5に変更される。なお、「the」は削除対象であるため入力文字a1に変更して表示される。
図16A及び図16Bで示した例では、同義的に好ましくない表現が入力されることを防止するための例であるが、例えば、住所等の個人情報の入力を防止するために「New」の後に「York」が表示されないように、「New」と「York」を接続可能としないようにする等してもよい。
上述したように、本実施形態の第5の特徴によれば、削除対象の文字の直前に位置する単語と直後に位置する単語が接続可能かどうか判断される。そして、削除対象の単語の前後に位置する単語が接続不可能であれば、削除対象の単語の更に前に位置する単語と、削除対象の単語の直後に位置する単語との間の連結チェックが行われる。接続可能となるまで、連結チェック対象とする単語を前の単語に繰り上げて判断がなされてゆき、接続可能となったときに、接続可能となった単語同士に挟まれた単語が未確定状態(編集文字列a5又は入力文字a1)になる。このように、接続可能な単語同士に挟まれた単語が未確定状態に変更される、すなわち、削除対象の単語の直後に配置された単語と連結不可能な単語が未確定状態に変更されるため、単語の削除によって、接続不可能な2つの単語が連続的に並んだ状態で確定的に入力されることを効果的に防止することができる。
なお、本実施形態では、削除対象の文字の直前に位置する単語と直後に位置する単語が接続可能でなくても削除対象の単語は未確定状態に変更されるが、接続可能でないときには未確定状態に変更することができない構成を採用してもよい。この構成では、削除対象の文字の直前に位置する単語と直後に位置する単語が接続可能でないときには、削除対象の文字を削除することができない。このため、単語の削除によって、接続不可能な2つの単語が連続的に並んだ状態で確定的に入力されることを効果的に防止することができる。
なお、図4〜16Bで示すチャット画像及びチャットウィンドウW3はあくまで一例であり、ウィンドウW1〜W3のレイアウトも図示する例に限定されない。更に、入力文字a1、確定文字列a4及び候補文字列a2をウィンドウ内に表示することは必須ではなく背景に表示されてもよい。また、キーウィンドウW1も必ずしも表示される必要はない。この場合には、ユーザによる入力文字a1の入力は、ゲーム装置1の操作ボタン14A〜14K等の操作や外付けで取り付けられた入力装置(キーボード等)等の操作によってなされる。
次に、図4及び図17〜図19を用いてゲーム装置1が記憶するプログラム及びデータを説明する。図17は、図2で示すメインメモリ32に記憶されるプログラム及びデータを示す図である。メインメモリ32は、本ゲーム装置1が実行するプログラムを記憶するプログラム記憶領域32aと、このプログラムの実行に応じて各種データを記憶するためのデータ記憶領域32bを有する。
プログラム記憶領域32aは、通信プログラムP1、チャットプログラムP2及びゲームプログラムP3等を記憶する。通信プログラムP1は本ゲーム装置1に他のゲーム装置1との間の通信を実行させるためのプログラムである。チャットプログラムP2は、本ゲーム装置1と他のゲーム装置1のユーザ間でチャットを行わせるためのプログラムである。すなわち、チャットプログラムP2は、本ゲーム装置1に対してユーザに文字入力を行わせるための文字入力処理をゲーム装置1に実行させるプログラム(文字入力プログラム)、入力された文字(メッセージ)を他のゲーム装置1に対して送信するための送信処理をゲーム装置1に実行させるプログラム、及び他のゲーム装置1から受信した文字(メッセージ)をゲーム装置1に表示させるための表示処理を行わせるプログラムを含む。なお、文字入力処理については、詳細は図24〜図31を用いて後述する。
ゲームプログラムP3は、ゲーム装置1で実行するゲーム処理全体を定義するプログラムである。ゲームプログラムP3を実行することで、ゲーム装置1は自機のユーザにゲームを提供することができる。なお、本実施形態では、ゲームプログラムP3とチャットプログラムP2とが分かれているが、ゲームプログラムP3にチャットプログラムP2が含まれていてもよく、ゲーム実行中に特定のイベントが発生した場合のみユーザ間でチャットを行うことができる構成等を採用してもよい。
なお、上記プログラムP1、P2は、保存用データメモリ34に記憶されたプログラムから適宜読み出されて記憶される。保存用データメモリ34に記憶されたプログラムは、出荷段階から記憶されていたり、図略のサーバからダウンロードされたり、メモリカード28や29から読み出されたりして予め記憶される。また、ゲームプログラムP3は、例えば、ゲームの進行に応じて、メモリカード28や29から適宜読み出されて記憶される。もっとも、本発明はこの構成に限定されない。例えば、プログラムP1、P2も、ゲームプログラムP3と同様に、メモリカード28や29から適宜読み出されて記憶されてもよい。また、プログラムP1〜P3は、図略のサーバから一括してダウンロードされるか、ゲームの進行に応じて適宜ダウンロードされることで記憶されてもよい。
データ記憶領域32bは、入力バッファ321、候補バッファ322、編集バッファ323及び確定バッファ324を有する。入力バッファ321は、ユーザから入力された入力文字a1を示すデータD1(以下、「入力文字データD1」と記載する)を記憶する。入力文字データD1の詳細については図22を用いて後述する。候補バッファ322は、入力文字a1に対応する候補文字列a2を示すデータD2(以下、「候補文字列データD2」と記載する)を記憶する。編集バッファ323は、ユーザから選択された候補文字列a2を編集文字列a5として示すデータD3(以下、「編集文字列データD3」と記載する)を記憶する。編集文字列データD3は、編集文字列a5が確定文字列a4としての適格があると判断されたときに削除される。すなわち、編集文字列データD3は当該適格があると判断されるまで編集バッファ323に記憶され続ける。編集文字列データD3の詳細については図21を用いて後述する。
確定バッファ324は、確定文字列a4としての適格があると判断された編集文字列a5を確定文字列a4として示すデータD4(以下、「確定文字列データD4」と記載する)を記憶する。確定文字列データD4の詳細については図20を用いて後述する。
また、データ記憶領域32bは、送信データ記憶領域325及び受信データ記憶領域326を更に有する。送信データ記憶領域325は他のゲーム装置1に送信済みのテキストデータD5(以下、「送信文字列データD5」と記載する)を記憶する。送信文字列データD5は、ユーザから他のゲーム装置1に対するメッセージの送信指示があったときに、確定文字列データD4のみから構成されるようにCPU31(図2を参照)によって生成されたテキストデータである。送信文字列データD5に確定文字列データのみを含め、入力文字データD1及び編集文字列データD3を含めないことで、他のゲーム装置1に対して不適切な表現を含まないテキストデータのみを送信することができる。なお、送信文字列データD5は上側LCD22に表示されてもよい。受信データ記憶領域326は、他のゲーム装置1から受信した送信文字列データD5を受信文字列データD6として記憶する。受信文字列データD6は上側LCD22に表示される。
データ記憶領域32bはリスト記憶領域327を有する。リスト記憶領域327は、候補文字列データベースDB、ホワイトリストテーブルD7、ブラックリストテーブルD8及び抽出リストテーブルD9を記憶する。
候補文字列データベースDBは、入力文字a1に対応する候補文字列a2の組み合わせが定義されたデータベースである。この候補文字列データベースDBから入力文字a1に対応する候補文字列a2を取得する技術は広く一般に知られた技術である。例えば、候補文字列データベースDBは、候補文字列a2の「表記」、「読み方」、「文字長」が登録され、更に「品詞」と「活用形」が登録されている。例えば、「今日」という候補文字列a2については、「今日」という「表記」、「きょう」という「読み方」、2文字という「文字長」、「名詞」という品詞、「なし」という「活用形」が登録されることになる。
以下に、ゲーム装置1が候補文字列データベースDBから入力文字a1に対応する候補文字列a2を抽出する方法を説明する。上述したように、候補文字列データベースDBには候補文字列a2の「読み」が登録されている。入力文字a1がこの「読み」の先頭部分に含まれている候補文字列a2が抽出される。例えば、「き」という入力文字a1に対応する候補文字列a2とは、「読み方」の先頭に「き」が含まれる候補文字列a2であり、例えば、今日、機能、昨日等である。また、「きょ」という入力文字a1に対応する候補文字列a2とは、「読み方」の先頭に「きょ」が含まれる候補文字列a2であり、例えば、今日、曲、強化等である。
なお、本実施形態では、入力文字a1がこの「読み方」の先頭部分に含まれている候補文字列a2が抽出されるが、入力文字a1が「読み方」である候補文字列a2を抽出する構成であってもよい。この構成によれば、入力文字a1の「かわ」が入力されたときには、「可愛い、瓦」のような「読み方」の先頭部分に「かわ」が含まれている単語は抽出されず、「川、革」のような「読み方」そのものが「かわ」である単語のみが抽出される。
ホワイトリストテーブルD7には、確定文字列a4の適格を有する候補文字列a2の所定の条件が定義されている。以下、ホワイトリストテーブルD7について詳細に説明する。
図18はホワイトリストテーブルD7の一例を示す図である。ホワイトリストテーブルD7には、接続可能となる単語同士の「品詞」、「活用形」及び「表記」が定義される。なお、リストの空白部は、どのようなものが入っても良いという意味である。すなわち、空白部に何が入っても、空白部でない条件が合致すれば、当該組み合わせはホワイトリストに存在すると判別されるということである。ホワイトリストテーブルD7は表示される候補文字列a2を選別するために使用される。すなわち、候補文字列データベースDBから抽出された候補文字列a2は、ホワイトリストテーブルD7に定義された条件に合致する文字列のみが更に抽出される。例えば、「馬」という確定文字列a4の直後に「しか」という入力文字a1が入力された場合に、「しか、叱る、鹿」という候補文字列a2が候補文字列データベースDBから抽出されたとする。この場合に、ホワイトリストテーブルD7は「名詞(前の単語)と助詞(後ろの単語)」、「名詞(前の単語)、名詞(後ろの単語)」の組み合わせは定義されており、「名詞(前の単語)と動詞(後ろの単語)」の組み合わせは定義されていないとすると、「馬」という名詞に接続可能であるのは「助詞」「名詞」であり、「動詞」は接続不可能である。従って、「助詞」である「しか」と名詞である「鹿」だけが抽出され、「動詞」である「叱る」は抽出されない。
また、ホワイトリストテーブルD7はユーザによって選択された候補文字列a2を確定文字列a4に変更可能かどうかを判別するためにも使用される。例えば、「鹿」という確定文字列a4の直前に「うま」という入力文字a1が入力されたとき、候補文字列データベースDBから「上手い、上手く、馬」という候補文字列a2が表示されたとする。ホワイトリストテーブルD7には、「形容詞(前の単語)と名詞(後の単語)」、「名詞(前の単語)と名詞(後の単語)」および「動詞(連体形)(前の単語)と名詞(後の単語)」のみが定義され、「副詞(前の単語)と名詞(後の単語)」は定義されていない。従って、「鹿」という「名詞」の直前には「形容詞」か「名詞」か「動詞の連体形」でなければ接続可能とならないため、候補文字列データベースから抽出された「上手い、上手く、馬」のうち、「名詞」である「鹿」の直前に接続可能なのは「形容詞」である「上手い」か「名詞」である「馬」だけである。ゆえに、ユーザが「上手い」か「馬」を選択した場合にのみ「鹿」の直前に接続可能であると判断され、「上手く」を選択した場合には「鹿」と接続可能であると判断されない。
図17に戻って、ブラックリストテーブルD8には、確定文字列a4の適格を有さない候補文字列aの条件が定義されている。以下、ブラックリストテーブルD8について詳細に説明する。
図19はブラックリストテーブルD8の一例を示す図である。ブラックリストテーブルD8には、接続不可能となる単語同士(前の単語と後ろの単語)の「品詞」、「活用形」及び「表記」が定義される。ブラックリストテーブルD8もホワイトリストテーブルD7と同様に、表示される候補文字列a2を選別するために使用される。例えば、「馬」という確定文字列a4の直後に「しか」という入力文字a1が入力された場合に、上述のようなホワイトリストテーブルD7の条件に合致して抽出された候補文字列a2は「しか」と「鹿」とする。ここで、ブラックリストテーブルD8には「表記が馬」と「表記が鹿」が定義されているため、「鹿」は候補文字列a2として表示することができないと判断される。この例では、「しか」のみが候補文字列a2として表示される。
また、ブラックリストテーブルD8は、ホワイトリストテーブルD7と同様に、選択された候補文字列a2を確定文字列a4に変更可能かどうかを判別するためにも使用される。ホワイトリストテーブルD8の定義によれば、「名詞」である「鹿」の直前に接続可能なのは「形容詞」である「上手い」か「名詞」である「馬」であり、ユーザが「上手い」か「馬」を選択した場合にのみ「鹿」の直前に接続可能であると判断される。しかしながら、ブラックリストテーブルD8には「表記が馬」と「表記が鹿」が定義されているため、「馬」という候補文字列a2が選択されたときには確定文字列a4に変更されずに編集文字列a5に変更される。
図17に戻って、抽出リストテーブルD9には確定文字列a4(キャレットa3の直前に位置する確定文字列a4)に対応する候補文字列a2の条件が定義されている。例えば、抽出リストテーブルD9には、キャレットa3の直前に位置する確定文字列a4の品詞と、これに対応する候補文字列a2の品詞とが対応付けられて登録されている。例えば、キャレットa3の直前に位置する確定文字列a4の品詞が「名詞」だとすると、これに対応する候補文字列a2の品詞が「助詞」と対応付けられている。このため、直前の確定文字列a4の品詞が「名詞」であれば、「名詞」に対応する「助詞」で候補文字列データベースDBが検索され、「品詞」が「助詞」である候補文字列a2が所定個数だけランダムに抽出されて表示される。ここで、「品詞」が「助詞」である候補文字列a2の総数が多くないようであれば、ランダムに抽出する必要はなく、「品詞」が「助詞」である候補文字列a2を全て表示するようにしてもよい。
なお、本ゲーム装置1は上述したように複数言語の入力を受け付けることができるが、ホワイトリストテーブルD7、ブラックリストテーブルD8、抽出リストテーブルD9及び候補文字列データベースDBは入力言語に対応する個数だけ記憶される。そして、ゲーム装置1は後述する選択言語データD11の示す言語に対応するリストテーブルを使用して単語入力処理を実行する。
また、データ記憶領域32bは、他のデータ記憶領域328及びゲームデータ記憶領域329を有する。他のデータ記憶領域328は、キャレットa3の位置を示すキャレット位置データD10と、ユーザに選択された入力言語を示す選択言語データD11を記憶する。キャレット位置データD10は例えば先頭から何文字目の後ろにキャレットa3を表示するかを示す。また、選択言語データD11はユーザによって選択された言語を示しデフォルトでは日本語を示す。図4で示す英語入力切替キーk1がタッチされたときには英語を示す選択言語データD11が記憶され、図5で示す日本語入力切替キーk2がタッチされたときには日本語を示す選択言語データD11が記憶される。そして、チャット画像は選択言語データD11によって示される画像が表示される。すなわち、日本語を示す選択言語データD11が記憶されているときには図4で示す日本語入力対応のチャット画像が表示され、英語を示す選択言語データD11が記憶されているときには、図5で示す英語入力対応のチャット画像が表示される。また、ゲームデータ記憶領域329にはゲームプログラムP3の実行によってゲームデータD12が記憶される。ゲームデータは、例えば画像データ及び音声データ等である。
以下に図20〜図23を用いて、図17で示す入力文字データD1、候補文字列データD2、編集文字列データD3及び確定文字列データD4を説明する。図20〜図23で示す入力文字データD1、編集文字列データD3及び確定文字列データD4に基づいてチャットウィンドウW3(図4を参照)に表示される文が生成されると、「今日は寒かったみたいです」との文が生成される。確定文字列データD4の示す単語は確定文字列a4として表示されるため、「今日は」「みたいです」が確定文字列a4として表示される。また、編集文字列データD3の示す単語は編集文字列a5として表示されるため、「寒かっ」が編集文字列a5として表示される。また、入力文字データD1の示す文字は入力文字a1として表示されるため、「た」が入力文字a1として表示される。
図20は確定文字列データD4のデータ構造の一例を示す図である。図21は編集文字列データD3のデータ構造の一例を示す図である。図22は入力文字データD1のデータ構造の一例を示す図である。
データD1、D3及びD4は、文字(入力文字a1)又は文字列(編集文字列a5及び確定文字列a4)毎の「順番」、「表記」、「読み方」、「文字列長」、「開始位置」、「終了位置」、「品詞」、及び「活用形」の情報を示す。なお、編集文字列データD3及び確定文字列データD4には、複数の編集文字列a5又は確定文字列a4の情報を示す場合がある。本実施形態で、「編集文字列a5を編集バッファ323から削除する」と記載したときには、編集文字列データD3から削除対象の編集文字列a5の情報を削除することを示す。また、「編集文字列a5を編集バッファ323に記憶する」と記載したときには、編集文字列データD3に対して追加対象の編集文字列a5の情報を追加することを示す。確定文字列a4を確定バッファ324に追加する、又は削除すると記載したときも、同様である。なお、入力文字データD1では、入力文字a1の長さに関わらず、1つのレコードがテーブルに記憶される。
データD1、D3及びD4の示す「順番」とは、チャットウィンドウW3に表示される文章における並び順の意味である。例えば、「今日」という単語は「順番」が1番であるため文章の先頭に表示され、「は」という単語は「順番」が2番であるため文章の2番目の位置すなわち「今日」の後に表示される。続いて、3番〜5番までの「順番」通り「寒かっ」「た」「みたいです」が表示される。
「表記」とは、通常(確定文字列a4、編集文字列a5を表示するときに)チャットウィンドウW3に表示される文字列である。「読み方」とは「表記」の読み方のことであり、入力文字a1を表示するときには「表記」ではなく「読み方」が表示される。「文字列長」とは「表記」の文字の個数を示す。例えば、確定文字列データD4は「表記」が「今日」の「文字列長」として「2」を示す。また、「開始位置」は単語を表示する開始の位置を示し、「終了位置」は単語を表示する終了の位置を示す。例えば、「表記」が「今日」の場合には、「順番」が1番で「文字列長」が2なので「開始位置」が1となり「終了位置」が2となる。また、「表記」が「は」の場合には、「今日」の直後に続くため「開始位置」が3となり、「文字列長」が1なので「終了位置」も3となる。「品詞」は「表記」で示す単語の品詞であり、「活用形」は「表記」で示す単語の「活用形」である。ここで、「開始位置」と「終了位置」は、「順番」と「文字列長」を参照し計算によって求めることが可能であるため、特別に設けなくても良い。
候補文字列データD2は、上述したデータD1、D2及びD3とほぼ同様のデータ構造である。もっとも、候補文字列データD2はデータD1、D2及びD3と異なり、「開始位置」「終了位置」「順番」を示すものではない。また、「順番」を示さなくてもよい理由は、候補文字列データD2の示す候補文字列a2の「順番」は入力文字a1と同じであるため入力文字a1の「順番」を参照することで取得することができるからである。候補文字列データD2は、入力文字a1が入力されたときに候補文字列データベースDB(図17を参照)から取得した情報(表記、読み方、文字列長、品詞及び活用形)を示すように生成される。なお、図23では、候補文字列データD2は1つの候補文字列a2しか示さないが、複数の候補文字列a2が取得されたときには候補文字列データD2は複数の候補文字列a2の情報を示すように生成される。ここで、本実施形態では、「候補文字列a2を候補バッファ322から削除する」と記載したときには、候補文字列データD2から削除対象の候補文字列a2に関する情報を削除することを示す。
以下、図24及び図25を用いて本実施形態にかかる文字入力処理について説明する。図24はゲーム装置1が実行する文字入力処理の一例を示すフローチャート(その1)であり、図25はゲーム装置1が実行する文字入力処理の一例を示すフローチャート(その2)である。文字入力処理は、ユーザから何らかの操作入力を受け付けたときに、図2で示すCPU31によって実行される。まず、CPU31は受け付けた操作入力の種別を判別する(S1)。次に、判別した操作入力の種別が入力文字a1の入力であるかどうかをCPU31は判断する(S2)。操作入力の種別が入力文字a1であると判断したときには(S2でYES)、CPU31は、入力バッファ321に入力文字a1を記憶させ(S3)、入力文字a1に対応する候補文字列a2を取得するための処理(候補検索処理)を実行する(S4)。CPU31は、候補検索処理において、上述したように、候補文字列データベースDBから取得した候補文字列a2がホワイトリストテーブルD7の条件に合致するか及びブラックリストテーブルD8の条件に合致しないかを判断し、両方の条件を満たす候補文字列a2のみを候補バッファ322に記憶する。候補検索処理については詳しくは図26を用いて後述する。この後、CPU31は続くステップS13に処理を進める。
一方、判別した操作入力の種別が入力文字a1の入力ではないと判断したときには(S2でNO)、CPU31は判別した操作入力の種別が候補文字列a2の選択であるかどうかを判断する(S5)。すなわち、候補文字列ウィンドウW2に表示されている候補文字列a2のうちの何れかがユーザにより選択されたかどうかが判断される。判別した操作入力の種別が候補文字列a2の選択であると判断したときには(S5でYES)、CPU31はユーザに選択された候補文字列a2を確定文字列a4に変更するための処理(単語確定処理)を実行する(S6)。CPU31は、上述したように、単語確定処理において、ユーザに選択された候補文字列a2が確定文字列a4としての適格を有するかどうかを判断し、この適格を有するときにのみ選択された候補文字列a2を確定文字列a4として確定バッファ324に記憶させる。この適格を有さないときには、選択された候補文字列a2は編集文字列a5に変更される。なお、候補バッファ322は空にされる。単語確定処理については図27を用いて詳しくは後述する。
この後、CPU31は候補検索処理を実行する(S4)。この候補検索処理において、CPU31は、ステップS6によって確定バッファに記憶された確定文字列a4に続く候補文字列a2を取得して、候補バッファ322に記憶させる(S4)。この候補検索処理において、CPU31は上述したように候補文字列データベースDBから抽出リストテーブルD9の条件に合致する候補文字列a2を取得する。そして、CPU31は、取得した候補文字列a2がホワイトリストテーブルD7の条件に合致するか及びブラックリストテーブルD8の条件に合致しないかを判断し、両方の条件を満たす候補文字列a2のみを候補バッファ322に記憶する。CPU31は続くステップS13に処理を進める。
また、判別した操作入力の種別が候補文字列a2の選択ではないと判断したときには(S5でNO)、CPU31は判別した操作入力の種別が文字の削除(バックスペースキーのタッチ)であるかどうかを判断する(S7)。判別した操作入力の種別が文字の削除であると判断したときには(S7でYES)、CPU31は削除対象の確定文字列a4を未確定状態、すなわち入力文字a1に変更するための処理(Backspace入力処理)を実行する(S8)。このBackspace入力処理において、CPU31は削除対象の確定文字列a4を確定バッファ324から削除するとともに入力文字a1として入力バッファ321に記憶させる。そして、CPU31は、削除対象である確定文字列a4の直後の単語((k))と直前の単語(単語(j))とが接続可能であるか判断する。この判断で接続不可能なときには、単語(j)の更に前の単語と単語(k)との間の連結チェックが行われる。すなわち、単語(k)と接続可能な単語が判断対象となるまで、順に更に前の単語と単語(k)との間の連結チェックが実行されることとなる。そして、単語(k)に対して接続可能である単語が判別されると、この単語と単語(k)に挟まれる単語を全て編集文字列a5に変更する。Backspace入力処理については図31を用いて後述する。CPU31は続くステップS13に処理を進める。
上記ステップS7において、判別した操作入力の種別が文字の削除ではないと判断したときには(S7でNO)、CPU31は判別した操作入力の種別がキャレットa3の位置の変更であるかどうかを判断する(S9)。ここで、例えば、タッチパネル13におけるチャットウィンドウW3上の領域がタッチされたときにキャレットa3の位置の変更が入力されたと判断される。判別した操作入力の種別がキャレットa3の位置の変更であると判断したときには(S9でYES)、CPU31はキャレットa3の表示位置を移動させる処理(キャレット移動処理)を実行する(S10)。本処理では、CPU31はユーザのタッチ位置に対応する位置を算出し、この位置を示すようにキャレット位置データD10(図17を参照)を更新する。なお、CPU31は、キャレットの位置を変更するときに、未確定状態の単語(編集文字列a5)及び文字(入力文字a1)を編集バッファ323及び入力バッファ321から削除する。なお、キャレット移動処理についての詳細は図29を用いて後述する。CPU31は続くステップS13に処理を進める。
一方、判別した操作入力の種別がキャレットa3の位置の変更ではないと判断したときには(S9でNO)、CPU31は判別した操作入力の種別がメッセージの送信指示であるかどうかを判断する(S11)。判別した操作入力の種別がメッセージの送信指示であると判断したときには(S11でYES)、CPU31は確定的に入力されている単語から構成される文を示すテキストデータを他のゲーム装置1に送信するための処理(投稿処理)を実行する(S12)。ここで、CPU31は、上述したように、投稿処理において、確定バッファ324に記憶されている確定文字列a4のみを他のゲーム装置1に送信し、入力バッファ321に記憶されている文字及び編集バッファ323に記憶されている単語を削除する。なお、投稿処理についての詳細は図30を用いて後述する。CPU31は続くステップS13に処理を進める。
CPU31は判別した操作入力の種別がメッセージの送信指示ではないと判断したときには(S11でNO)、CPU31は本文字入力処理を終了させる。
次に、ステップS13の処理について説明する。図25を参照して、CPU31は入力文字データD1、編集文字列データD3及び確定文字列データD4で示す順番に従って、入力文字a1、編集文字列a5及び確定文字列a4を順番に並べた表示用の文字データを生成する(S13)。文字データの生成方法は図20〜図22を用いて上述した通りである。この後、CPU31は、生成した文字データのうち確定文字列a4をメインメモリ32に予め用意されたVRAM領域に書き込む、すなわち描画する(S14)。本処理においてCPU31は、VRAM領域内の確定文字列a4の表示位置を算出し、この算出した位置に確定文字列a4を書き込む。ここで、本実施形態では、確定文字列a4は白背景に黒字で表示されるように書き込まれる。
次に、CPU31は、生成した文字データのうち編集文字列a5をメインメモリ32におけるVRAM領域に書き込む、すなわち描画する(S15)。本処理においてCPU31は、VRAM領域内の編集文字列a5の表示位置を算出し、この算出した位置に編集文字列a5を書き込む。ここで、本実施形態では、編集文字列a5は黄色背景に黒字で表示されるように書き込まれる。続いて、CPU31は、生成した文字データのうち入力文字a1をメインメモリ32におけるVRAM領域に書き込む、すなわち描画する(S16)。本処理においてCPU31は、VRAM領域内の入力文字a1の表示位置を算出し、この算出した位置に入力文字a1を書き込む。ここで、本実施形態では、入力文字a1は青背景に黒字で表示されるように書き込まれる。
次に、CPU31は、候補文字列a2をメインメモリ32におけるVRAM領域に書き込む、すなわち描画する(S17)。本処理においてCPU31は、VRAM領域内の候補文字列a2の表示位置を算出し、この算出した位置(候補文字列ウィンドウW2内)に候補文字列a2を書き込む。
CPU31はステップS14〜S17でVRAM領域に書き込まれた文字を下側LCD12に表示(出力)させる(S18)。この後、CPU31は本処理を終了する。
以下、図26を用いて図24のステップS4で実行される候補検索処理を説明する。図26は、図24のステップS4で実行される候補検索処理の一例を示すフローチャートである。
CPU31は入力バッファ321に入力文字a1が記憶されているかどうかを判断する(S21)。入力バッファ321に入力文字a1が記憶されていると判断したときには(S21でYES)、CPU31は、入力文字a1から始まる単語を候補文字列a2として候補文字列データベースDBから取得して候補文字列データD2(図23を参照)を生成し、候補バッファ322に記憶させる(S22)。ここで、図23を用いて上述したように、CPU31は、候補文字列データベースDBの「読み方」を入力文字a1で検索して、この「読み方」の先頭に入力文字a1を含む候補文字列a2の「表記」、「読み方」、「文字列長」、「品詞」及び「活用形」の情報を取得し、これらの情報を含めて候補文字列データD2を生成する。
この後、CPU31はキャレットa3の位置を入力文字a1の最後尾の位置に移動する(S23)。具体的には、CPU31は入力文字a1の最後尾の位置を示すようにキャレット位置データD10(図17を参照)を変更する。
続いて、CPU31は、ステップS24〜S28を実行することによって、ステップS22で取得した候補文字列a2が入力文字a1の直前に位置する文字列に接続可能であるかを判別するための処理を実行する。この判別を以下、「連結チェック」と記載する。
まず、CPU31はS22で取得した全ての候補文字列a2に対して連結チェックを行ったかどうかを判断する(S24)。S22で取得した全ての候補文字列a2に対して連結チェックを行っていないと判断したときには(S24でNO)、CPU31はS22で取得した候補文字列a2を1つ選択し(S25)、この選択した候補文字列a2と入力文字a1の直前の単語との間で連結チェック処理を行う(S26)。連結チェック処理については図28を用いて詳細は後述するが、ステップS26で実行される連結チェック処理においては、入力文字a1の直前の単語を「前の単語」とし、選択した候補文字列a2を「後ろの単語」として連結チェックが行われる。
続いて、CPU31は、ステップS26の連結チェックの結果、入力文字a1と選択した候補文字列a2が接続可能でないと判断したときには(S27でNO)、選択した候補文字列a2を候補バッファ322から削除し(S28)、接続可能であると判断したときには(S27でYES)、選択した候補文字列a2を削除しない。これにより、入力文字a1の直前の単語と接続可能な候補文字列a2のみに絞られる。この後、CPU31は処理をステップS24に戻して、全ての候補文字列a2に対して連結チェックを行ったかを判断する。
全ての候補文字列a2に対して連結チェックを行ったと判断するまで、CPU31は、ステップS24〜ステップS28までの処理を繰り返し実行する。そして、全ての候補文字列a2に対して連結チェックを行ったと判断したときに(S24でYES)、この後、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS13の処理を実行する)。
一方、上記ステップS21の判断の結果、入力バッファ321に入力文字a1が記憶されていないと判断したときには(S21でNO)、CPU31は、キャレットa3の直前に位置する確定文字列a4に対応する候補文字列a2を抽出リストテーブルD9の示す条件に基づいて候補文字列データベースDBから取得する(S30)。ステップS30の処理の一例を以下に記載する。抽出リストテーブルD9には例えば上述したように確定文字列a4の品詞とこの品詞に対応する候補文字列a2の品詞が定義されている。CPU31は、キャレットa3の直前に位置する確定文字列a4の属性(品詞及び活用形)を取得し、この属性に対応する属性を抽出リストテーブルD9に基づいて取得する。従って、例えば、抽出リストテーブルD9に、確定文字列a4が「名詞」であることに対応づけて候補文字列a2が「助詞」であることが定義されているとき、確定文字列a4が「名詞」であれば、「助詞」の候補文字列a2が候補文字列データベースDBからランダムに取得される。
この後、CPU31は、ステップS30によって取得した全ての候補文字列a2に対して連結チェックを行うため、上述したステップS24〜S28の処理を実行する。上述したように、入力文字a1の入力がないときでも、確定文字列a4に対応する候補文字列a2が取得されるためユーザが入力文字a1を入力する手間を省くことができる。また、ステップS30で取得された候補文字列a2についても連結チェックがなされるため、効果的に不適切な表現が確定的に入力されてしまうことを防止することができる。
以下、図21〜図23、図27を用いて、図24のステップS6で実行される単語確定処理を説明する。図27は、図24のステップS6で実行される単語確定処理の一例を示すフローチャートである。まず、CPU31は、入力バッファ321から入力文字a1を削除して(S41)、ユーザに選択された候補文字列a2を編集文字列a5として編集バッファ323に記憶させる(S42)。ここで、図21〜図23を参照してステップS42の処理を具体的に説明すると、選択された候補文字列a2の「表記」「読み方」「文字列長」「品詞」「活用形」を候補文字列データD2から読み出し、入力文字a1の「順番」「開始位置」を入力文字データD1から読み出し、これらを統合して編集バッファ323に記憶させる。すなわち、選択された候補文字列a2に関する「順番」「開始位置」「終了位置」の情報を入力文字データD1から補完して編集バッファ323に記憶させる。また、「終了位置」は、入力文字データD1の「開始位置」に候補文字列データD2の「文字列長」を加算して1減算した数が算出されて記憶される。
この後、CPU31は、編集バッファ323に記憶される編集文字列a5とこの直後の単語との連結チェックを行うため、連結チェック処理を実行する(S43)。連結チェック処理の詳細については図28を用いて後述するが、ここで、CPU31は、編集バッファ323のうち最も後ろの編集文字列a5を取得し、この編集文字列a5を「前の単語」として、この直後の確定文字列a4を「後ろの単語」として、「前の単語」と「後ろの単語」との連結チェックを行う。例えば、「暖かかっ」と「た」の両方が編集文字列a5であり、最も後ろが「た」であるときには、「た」とこの直後の確定文字列a4である「みたいです」との間の連結チェックが実行される。なお、本実施形態における、入力バッファ321、編集バッファ323及び確定バッファ324に記憶されている文字及び文字列間の順番は、データD1,D3,D4における「順番」の情報を参照して判別される。そして、CPU31は候補バッファ322に記憶されている全ての候補文字列a2を削除、すなわち候補文字列データD2(図23を参照)を削除する(S44)。
CPU31は、ステップS43による連結チェックの結果が「接続可能(OK)」であるかどうかを判断し(S45)、ステップS43による連結チェックの結果が「接続可能(OK)」でないときには(S45でNO)、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS4の候補検索処理を実行する)。一方、ステップS43による連結チェックの結果が「接続可能(OK)」であるときには(S45でYES)、CPU31は編集文字列a5を確定文字列a4として確定バッファ324に記憶させる(S46)。この後、CPU31はステップS46で確定バッファ324に記憶された編集文字列a5を編集バッファ323から削除し(S47)、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS4の候補検索処理を実行する)。
次に、図18、図19及び図28を参照して、図26で示す候補検索処理及び図27で示す単語確定処理において実行される連結チェック処理(ステップS26及びステップS43で実行される処理)を説明する。図28は、図26のステップS26及び図27のステップS43で実行される連結チェック処理の一例を示すフローチャートである。
まず、CPU31は、「前の単語」と「後ろの単語」を設定する(S51)。なお、連結チェック処理の説明に関しては、「前の単語」を「単語A」と記載し、「後ろの単語」を「単語B」と記載する。ここで、上述したように、図26で示す候補検索処理においては入力文字a1の直前の単語が「単語A」と設定され、選択された候補文字列a2が「単語B」と設定される。図27で示す単語確定処理においては、編集バッファ323に記憶されている編集文字列a5のうち1の編集文字列a5が「単語A」となり、この編集文字列a5の直後の単語(確定文字列a4)が「単語B」となる。
この後、CPU31は、単語Aか単語Bが存在しないかどうかを判断する(S52)。本実施形態では、この判断は、単語Aか単語Bが「空」、すなわち設定が未入力であるかどうかで行われる。
単語A及び単語Bが存在すると判断されたときには(S52でNO)、CPU31は、単語Aの属性を取得するとともに(S53)、単語Bの属性を取得する(S54)。ここで取得される属性は、「品詞」、「活用形」及び「表記」のことである。なお、属性の取得対象となる単語が候補文字列a2であるときには、候補文字列データD2の「品詞」、「活用形」及び「表記」を参照して属性が取得される。また、属性の取得対象となる単語が編集文字列a5であるときには、編集文字列データD3の「品詞」、「活用形」及び「表記」を参照して属性が取得される。また、属性の取得対象となる単語が確定文字列a4であるときには、確定文字列データD4の「品詞」、「活用形」及び「表記」を参照して属性が取得される。
この後、CPU31は、単語Aと単語Bの属性の組み合わせがホワイトリストテーブルD7に存在するかどうかを判断し(S55)、存在すると判断した場合には(S55でYES)、今度は単語Aと単語Bの属性の組み合わせがブラックリストテーブルD8に存在するかどうかを判断する(S56)。ステップS56でNOのときには(S56でNO)、単語Aと単語Bの属性の組み合わせがホワイトリストテーブルD7に存在し、かつブラックリストテーブルD8に存在しないことになり、CPU31は単語Aと単語Bとを「接続可能(OK)」と判断してこの判断結果をメインメモリ32に記憶させる(S57)。
一方、単語Aと単語Bの属性の組み合わせがホワイトリストテーブルD7に存在しないと判断されたり(S55でNO)、単語Aと単語Bの属性の組み合わせがブラックリストテーブルD8に存在するとき(S56でYES)、CPU31は単語Aと単語Bとを「連結不可能(NG)」と判断してこの判断結果をメインメモリ32に記憶させる(S58)。この後、CPU31は本サブルーチンを終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS4の候補検索処理を実行する)。
上述したように、単語Aと単語Bとが接続可能となるのは、単語Aと単語Bの属性がホワイトリストテーブルD7に存在するときだけである。従って、ホワイトリストテーブルD7に存在しない組み合わせの属性を有する単語同士が連続的に表示されることは決してないため、不適切な表現が確定的に入力されることを効果的に防止することができる。更に、単語Aと単語Bの属性がブラックリストテーブルD8に存在しないときだけ、単語Aと単語Bとが接続可能となるので、ホワイトリストテーブルD7だけでは十分に不適切な表現の確定的な入力を防止することが困難なときにも、ブラックリストテーブルD8を使用することで不適切な表現の確定的な入力の防止を補助することができる。
例えば、ホワイトリストテーブルD7には単語Aの品詞が「名詞」であり単語Bの品詞が「名詞」である組み合わせが定義されており、ホワイトリストテーブルD7によると単語Aが「馬(名詞)」であり、単語Bが「鹿(名詞)」であるときには、ホワイトリストテーブルD7によって単語Aと単語Bの接続が可能であると判断される。しかしながら、ブラックリストテーブルD8には、単語Aが「表記が馬」であり、単語Bが「表記が鹿」が定義されている。このため、ブラックリストテーブルD8によって、単語Aである「馬」と単語Bである「鹿」の接続が不可能となって、「馬鹿」との不適切な表現が確定的に入力されてしまうことを効果的に防止することができる。
なお、単語A又は単語Bが存在しないと判断されたときには(S52でYES)、CPU31はステップS53〜S56を実行することなく、単語Aと単語Bとを「接続可能(OK)」と判断してこの判断結果をメインメモリ32に記憶させる(S57)。従って、単語A又は単語Bが存在しないときには、連結チェックの対象となった何れの候補文字列a2も候補バッファ322から削除されずに表示され、また、編集文字列a5も確定文字列a4に変更されるのである。この後、CPU31は本サブルーチンを終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS4の候補検索処理を実行する)。
以下に、図17及び図29を用いて、図24のステップS10で実行されるキャレット移動処理を説明する。図29は、図24のステップS10で実行されるキャレット移動処理の一例を示すフローチャートである。まず、CPU31はタッチパネル13における単語の境界部分上の領域がタッチされたかどうかを判断する(S61)。境界部分の領域とは、タッチパネル13における連続する2文字間(文字が表示されていないスペース部分)の上、かつ、確定文字列a4、編集文字列a5、または入力文字a1の開始位置又は終了位置と一致する領域である。具体的には、CPU31は、タッチされたタッチパネル13上の座標を検出したときに、この座標が境界部分の領域にあるかどうかを判断する。入力文字a1、確定文字列a4及び編集文字列a5の各文字はチャットウィンドウW3の左端から順番に予め定められた位置に表示される。従って、境界部分の領域の座標は固定的に定まる。この座標が、境界部分の座標として予め用意されており(メモリカードI/F36等に記憶されており)、読み出されてメインメモリ32に記憶される。そして、この境界部分の座標とタッチ位置の座標とが一致するか判断され、一致したときには、文字間の位置であると判断される。さらに、入力文字データD1、編集文字列データD3又は確定文字列データD4の「開始位置」「終了位置」と一致する位置か否かを判断し、一致したと判断された場合、単語の境界部分がタッチされたと判断される。一方、一致しないときにはタッチパネル13(チャットウィンドウW3上の領域)における他の位置がタッチされたと判断される。
単語の境界部分上の領域がタッチされたと判断したときには(S61でYES)、CPU31はキャレットa3の位置をタッチされた領域に対応する位置に変更する(S62)。具体的には、CPU31はキャレット位置データD10を更新する。キャレット位置データD10は、キャレットa3の表示位置の直前に位置する文字がチャットウィンドウW3の左端から何番目の順番であるかを示すことで、キャレット位置を示す。例えば、図4で示すような「今日はあつ」の文の後にキャレットa3を表示するときには、キャレット位置データD10は5を示す。上述したように、境界部分の領域の座標は固定的に定まるため、この順番が、境界部分の座標に対応付けて予め用意されており(メモリカードI/F36等に記憶されており)、読み出されてメインメモリ32に記憶される。そして、タッチされた境界部分の座標に対応する順番を示すように、CPU31はキャレット位置データD10を更新する。
一方、単語の境界部分上の領域がタッチされていないと判断されたときには(S61でNO)、CPU31はタッチ位置に最寄りの境界部分に対応する位置をキャレットa3の位置に設定する(S63)。具体的には、CPU31は、タッチ位置の座標に最も近い境界部分の座標を取得し、CPU31はこの座標に対応する順番を示すようにキャレット位置データD10を更新する。
この後、CPU31は、入力バッファ321に記憶されている入力文字a1を削除し(S64)、編集バッファ323に記憶されている編集文字列a5を削除し(S65)、候補バッファ322に記憶されている候補文字列a2を削除する(S66)。そして、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS13の処理を実行する)。
以下に、図17及び図30を用いて、図24のステップS12で実行される投稿処理を説明する。図30は、図24のステップS12で実行される投稿処理の一例を示すフローチャートである。まず、CPU31は入力バッファ321に記憶されている入力文字データD1を削除し(S71)、編集バッファ323に記憶されている編集文字列データD3を削除し(S72)、候補バッファ322に記憶されている候補文字列データD2を削除する(S73)。この後、CPU31は、確定文字列a4のみからなるテキストデータを生成して、通信相手である他のゲーム装置1に送信する(S74)。送信が成功したときには、CPU31は送信したテキストデータを送信文字列データD5として送信データ記憶領域325に記憶させる。この後、CPU31は、確定バッファ324に記憶されている確定文字列a4を全て削除し(S75)、キャレットa3の位置をチャットウィンドウW3における文の表示位置の先頭(左端)に移動させる(S76)。すなわち、CPU31はキャレット位置データD10が「0」を示すように更新する。そして、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS13の処理を実行する)。
以下に、図17、図20〜23及び図31を用いて、図24のステップS8で実行されるBackspace入力処理を説明する。図31は、図24のステップS8で実行されるBackspace入力処理の一例を示すフローチャートである。まず、CPU31は入力バッファ321に入力文字a1(入力文字データD1)が記憶されているかどうかを判断する(S81)。入力バッファ321に入力文字データD1が記憶されているときには(S81でYES)、CPU31は入力バッファ321に記憶されている入力文字a1の末尾の文字を削除する(S82)。例えば、「さむかっ」の入力文字a1が入力バッファ321に記憶されていると末尾の「っ」が削除され、入力文字a1が「さむか」になる。なお、ステップS82の具体的な処理を説明すると、CPU31は、入力文字データD1の「表記」と「読み方」から末尾の文字を削除し、「文字列長」と「終了位置」の数から1減算するように、入力文字データD1を更新する。入力文字a1が一文字だけのときには、入力文字データD1が入力バッファ321から削除される。
この後、CPU31は、編集バッファ323及び確定バッファ324において、入力文字a1よりも後ろに編集文字列a5または確定文字列a4が存在するように編集文字列データD3又は確定文字列データD4が記憶されているときには、これらのデータD3,D4の「開始位置」「終了位置」を更新する(S83)。すなわち、CPU31は入力文字a1よりも後ろにある編集文字列データD3及び確定文字列データD4の「開始位置」「終了位置」からそれぞれ1減算して編集文字列データD3及び確定文字列データD4を更新する。また、ステップS84において入力文字データD1が削除されたときには、CPU31は入力文字データD1の後ろの順番のデータD3,D4の「順番」も1減算するように変更する。この後、CPU31はキャレットa3の位置が入力文字a1の直後に位置するようにキャレット位置データD10を更新する(S84)。
次に、CPU31は候補検索処理を実行する(S85)。ここで実行される候補検索処理は、図26を用いて上述した処理と同じである。この処理によって、ステップS82で更新された新たな入力文字a1に対応する候補文字列a2が取得されて、候補バッファ322に記憶される。なお、ステップS82によって入力文字データD1が全て削除されたときには、キャレットa3の直前の確定文字列a4に対応する候補文字列a2が取得されて、候補バッファ322に記憶される(図26でS30を経由する)。この後、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS13の処理を実行する)。
次に、入力バッファ321に入力文字データD1が記憶されていないとき(S81でNO)の処理を説明する。この場合には、CPU31は編集バッファ323に編集文字列データD3が記憶されているかどうかが判断する(S86)。編集文字列データD3が記憶されていると判断したときには(S86でYES)、CPU31は編集バッファ323に記憶されている編集文字列a5の中から末尾の(最後の順番の)編集文字列a5を削除する(S87)。そして、CPU31は削除した編集文字列a5を入力文字a1として入力バッファ321に記憶させる(S88)。具体的には、CPU31は、削除した編集文字列a5の「読み方」を入力文字データD1の「表記」と「読み方」に追加する。また、CPU31は、入力文字データD1の「文字列長」を削除した編集文字列a5の「読み方」の文字数とする。更に、CPU31は入力文字データD1の「開始位置」を削除した編集文字列a5の開始位置と同一にし、「終了位置」を「削除した編集文字列a5の終了位置+削除した編集文字列a5の読み方の文字数−削除した編集文字列a5の表記の文字数」とする。
上述のように、ステップS88によって編集文字列a5が読み方表記(ひらがな表記)のみの入力文字a1に変更されることで、入力文字データD1の「終了位置」は変更される。この変更にともなって、入力文字a1の後ろに位置する確定文字列a4の「開始位置」及び「終了位置」を変える必要がある。従って、確定バッファ324に入力文字a1の後に位置する確定文字列a4が記憶されているときには、CPU31は確定文字列データD4の「開始位置」「終了位置」を更新する。具体的には、CPU31は「削除した編集文字列a5の読み方の文字数−削除した編集文字列a5の表記の文字数」で算出した値を「開始位置」及び「終了位置」に加算する。
この後、CPU31はキャレットa3の位置が入力文字a1の直後に位置するようにキャレット位置データD10を更新する(S89)。CPU31は候補検索処理を実行する(S90)。ここで実行される候補検索処理は、図26を用いて上述した処理と同じである。この処理によって、ステップS88によって生成された入力文字a1に対応する候補文字列a2が取得されて、候補バッファ322に記憶される。この後、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS13の処理を実行する)。
次に、編集バッファ323に編集文字列データD3が記憶されていないとき(S86でNO)の処理を説明する。この場合には、CPU31は削除対象となる確定文字列a4を特定する(S91)。ここで、キャレットa3の直前に位置する確定文字列a4が削除対象と特定される。キャレット位置データD10はキャレットa3の直前に位置する文字の順番(左端から何番目の文字かという順番)を示すが、この順番の文字を末尾に含む確定文字列a4が削除対象となる。具体的には、確定文字列データD4の「終了位置」がキャレット位置データD10の示す順番と同じときには、この確定文字列データD4が削除対象となる。なお、Backspace入力処理の説明では、削除対象の確定文字列a4を単語(i)と記載する。次に、CPU31は単語(i)を編集バッファ323に書き込んで、確定バッファ324から削除する(S92)。具体的には、CPU31は、確定文字列データD4から単語(i)の情報を削除して、この情報を編集文字列データD3に追加する。
次に、CPU31は、単語(i)の直前に位置する単語(以下、単語(j)と記載する)を特定する(S93)。単語(j)の特定は、単語(i)の編集文字列データD3の示す「順番」及び確定文字列データD4の示す「順番」を参照することで行われる。具体的には、編集文字列データD3の「順番」の1つ前に「順番」が設定されている確定文字列データD4が単語(j)に設定される。次に、CPU31は、図28を用いて上述した連結チェック処理を実行する(S94)。具体的には、CPU31は、単語(j)を「前の単語(単語A)」とし、単語(i)の直後の単語(以下、単語(k)と記載する)を「後ろの単語(単語B)」として連結チェックを行う。ここで、単語(k)の特定は、単語(j)の特定と同様に、編集文字列データD3および確定文字列データD4を参照することにより行うことができる。この後、CPU31は連結チェックにおいて単語(k)と単語(j)が接続可能(OK)と判別されたかどうかを判断し(S95)、単語(k)と単語(j)が接続可能(OK)と判別されていないと判断したときには(S95でNO)、CPU31は単語(j)を確定バッファ324から削除するとともに、編集文字列a5として編集バッファ323に記憶させる(S96)。ここで、編集文字列データD3の示す単語(j)の配置位置は単語(i)の直前となる。
この後、CPU31は、単語(j)の直前に位置する確定文字列a4を新たな単語(j)に設定し(S97)、新たな単語(j)を「前の単語(単語A)」とし、かつ単語(k)を「後ろの単語(単語B)」として上述したステップS94の処理(連結チェック処理)を行う。連結チェックによって、単語(j)と単語(k)が接続可能であると判別される(S96でYES)まで、CPU31は繰り返しステップS94,S96,S97の処理を実行する。これによって、単語(k)とこの単語に接続可能な単語(j)の間の単語が全て編集文字列a5に変更されることになり、ユーザが単語を削除することで不適切な表現を確定的に入力することを効果的に防止することができる。
一方、連結チェックによって、単語(j)と単語(k)が接続可能であると判別されたときには(S95でYES)、CPU31は上述したステップS87〜S90の処理を実行する。具体的には、編集バッファ323に記憶されている末尾の単語、すなわち単語(i)が、削除されて(S87)、入力文字a1に変更される(S88)。この後、キャレットa3の位置も入力文字a1の直後に位置するように変更されて(S89)、入力文字a1となった単語(i)の候補文字列a2が取得されて候補バッファ322に記憶される(S90)。この後、CPU31は本サブルーチンの処理を終了させて図24及び図25で示すメインルーチンに処理を戻す(ステップS13の処理を実行する)。
以下に、図6、図7、図17、図24、図25、図26、図27、図28及び図32を用いて、図24〜図28で上述した文字入力処理を、具体的な事例を用いて更に説明する。この事例では、ゲーム装置1が「今日は」をユーザから確定的に入力される場合を例として説明する。図32は、「今日は」をユーザから確定的に入力されるときの文字入力処理の一例を示す図である。なお、ここでの説明においては、キャレット位置の移動のための処理及びデータD1、D3及びD4の「文字列長」「開始位置」「終了位置」の説明については省略する。また、図32の「表示およびバッファの内容」においては、太字が入力文字a1を示し、下線付きの太字が編集文字列a5を示し、通常の太さの文字が確定文字列a4を示す。また、三角がキャレットa3を示す。そして、「/」の挿入箇所が、文字列と文字列、又は文字と文字列の境界を示す。また、後述の図33及び図34の「表示およびバッファの内容」においても同様である。
まず、図32の(1)で示す処理、すなわち「き」がゲーム装置1に入力されたときの処理を説明する。ユーザがゲーム装置1に「き」を入力すると、操作種別が入力文字a1の入力であると判別されて(S1)、入力文字a1が入力されたと判断され(S2でYES)、入力文字a1の「き」が入力バッファ321に記憶される(S3)。
そして、入力文字a1の「き」に対応する候補文字列a2が取得される(S4)。具体的には、図26を参照して、入力文字a1が記憶されていると判断されて(S21でYES)、入力文字a1の「き」に対応する候補文字列a2が取得される(S22)。ここでは、「気持ち」「来た」「今日」が候補文字列a2として選択されて候補バッファ322に記憶される。まだ、どの候補文字列a2に対しても連結チェックを行っていないため、候補文字列a2に対する連結チェックは完了していないと判断され(S24でNO)、これらの候補文字列a2の中から1の候補文字列a2、例えば「気持ち」が選択される(S25)。
次に、選択された「気持ち」に対する連結チェックが行われる(S26)。図28を参照して、具体的には、単語Aが「空」に設定され、単語Bが「気持ち」に設定される(S51)。単語Aが「空」に設定されるのは入力文字a1の前には何の単語も表示されていないからである。単語Aが「空」なので、単語Aが存在しないと判断されて(S52でYES)、単語Aと単語Bは接続可能であると判断される(S57)。図26を参照して、この後、連結チェックの結果が接続可能であると判断されて(S27でYES)、「気持ち」は候補バッファ322から削除されない。
この後、取得された全ての単語(「気持ち」「来た」「今日」)の連結チェックが完了したかどうかが再度判断され(S24)、「来た」「今日」の連結チェックが終わるまで上述したような連結チェックが繰り返される(S25〜S28)。ここでは、単語Aが「空」なので、取得された全ての単語(「気持ち」「来た」「今日」)が接続可能と判断される(S27でYES)。全ての単語(「気持ち」「来た」「今日」)の連結チェックが完了したときには(S24でYES)、ステップS13〜S18までの表示処理が行われ(図25を参照)、「き」の入力文字a1と「気持ち」「来た」「今日」の候補文字列a2が表示される。具体的には、図6で示すようなチャット画像が表示される。
次に、図32の(2)で示す処理、すなわち、「き」に続いて「ょ」がゲーム装置1に入力されたときの処理を説明する。まず、ユーザがゲーム装置1に「ょ」を入力する。この(2)で示す処理は、「き」が入力されたときの(1)で示す処理と同様である。もっとも、この処理においては、入力文字a1が「きょ」となり、「きょ」の入力文字a1に対応する候補文字列a2(「今日」「曲」「強化」)が取得され(S4、S21、S22)、「今日」「曲」「強化」に対して連結チェックが行われる(S24〜S28、S51〜S57)。そして、ステップS13〜S18までの表示処理が行われ(図25を参照)、入力文字a1の「きょ」と候補文字列a2の「今日」「曲」「強化」が表示される。具体的には、図7で示すようなチャット画像が表示される。
次に、図32の(3)で示す処理、すなわち「今日」の候補文字列a2の選択が入力されたときの処理を説明する。ここでは、図7で示すチャット画像が表示されている。すなわち、候補文字列ウィンドウW2内に、候補文字列a2の「今日」「曲」「強化」が表示されている。ユーザはこれらの候補文字列a2のうち選択したい任意の候補文字列a2、例えば「今日」(タッチパネル13における「今日」上の領域)をタッチする。この操作が「今日」という候補文字列a2を選択する操作となる。
まず、操作種別が候補文字列a2の選択であると判別され(S1)、操作種別が文字の入力ではなく(S2でNO)、候補文字列a2の選択であると判断され(S5でYES)、候補文字列a2の「今日」を確定文字列a4に変更するため、単語確定処理が行われる(S6)。具体的には、図27を参照して、入力文字a1の「きょ」が入力バッファ321から削除されて(S41)、選択された「今日」という候補文字列a2が編集バッファ323に記憶される(S42)。そして、選択された「今日」という候補文字列a2と、削除された入力文字a1の直後の単語との間の連結チェック処理が行われる(S43)。
具体的には、図28を参照して、単語Aが「今日」に設定され、単語Bが「空」に設定される(S51)。単語Bが「空」に設定されるのは入力文字a1の後には何の単語も表示されていないからである。単語Bが「空」なので、単語Bが存在しないと判断されて(S52でYES)、単語Aと単語Bは接続可能であると判断される(S57)。図27に戻って、候補バッファ322に記憶されている全ての候補文字列a2(「今日」「曲」「強化」)が削除され(S44)、連結チェックの結果が「接続可能」と判断される(S45でYES)。この後、単語の「今日」が、確定文字列a4として確定バッファ324に記憶され(S46)、かつ、編集バッファ323から削除される(S47)。
この後、図24に戻って、候補検索処理が実行される(S4)。具体的には、新たに追加された確定文字列a4の「今日」に対応する候補文字列a2(「も」「の」「と」「を」)が取得され(S30)、取得された候補文字列a2に対してステップS24〜S28の連結チェック処理が施される。ここでは、全ての候補文字列a2に対する連結チェックの結果が接続可能であるとする。この後、ステップS13〜S18までの表示処理が行われ(図25を参照)、確定文字列a4の「今日」と候補文字列a2の「も」「の」「と」「を」が表示される。具体的には、図8で示すようなチャット画像が表示される。
次に、図32の(4)で示す処理、すなわち、図8で示すチャット画像が表示されているときに、図12のように、ユーザによって入力文字a1の「は」が入力されたときの処理を説明する。ここでは、図24を参照して、操作種別が入力文字a1の入力であると判別されて(S1)、入力文字a1が入力されたと判断され(S2でYES)、入力文字a1の「は」が入力バッファ321に記憶される(S3)。
この後、「は」に対応する候補文字列a2を取得するため、候補検索処理が実行される(S4)。具体的には、図26を参照して、入力文字a1が記憶されていると判断され(S21でYES)、入力文字a1の「は」に対応する候補文字列a2が候補文字列データベースDBから取得される(S22)。ここでは、候補文字列a2の「は」「ハワイ」「はい」「判明」が取得される。この後、全ての候補文字列a2に対して連結チェック処理が終了したかどうかが判断され(S24)、終了していないと判断されて(S24でNO)、候補文字列a2の「は」「ハワイ」「はい」「判明」の中から1の候補文字列a2(ここでは、「は」)が選択される(S25)。
そして、選択された「は」に対する連結チェックが行われる(S26)。図28を参照して、具体的には、単語Aが「今日」に設定され、単語Bが「は」に設定される(S51)。単語Aが「今日」に設定されるのは入力文字a1の直前に位置するからである。このときには、単語Aと単語Bとはともに存在すると判断され(S52でNO)、単語Aである「今日」の属性(品詞、活用形及び表記)が取得されるとともに(S53)、単語Bである「は」の属性(品詞、活用形及び表記)が取得される(S54)。「今日」の品詞は「名詞」であり、「は」の属性は「助詞」である。
この後、単語A(「今日」)の属性と単語B(「は」)の属性の組み合わせがホワイトリストテーブルD7に登録されているかどうかが判断される(S55)。単語Aの品詞が「名詞」であり、単語Bの品詞が「助詞」という組み合わせはホワイトリストテーブルD7に登録されているため、単語A(「今日」)の属性と単語B(「は」)の属性の組み合わせがホワイトリストテーブルD7に登録されていると判断される(S55でYES)。次に、この後、単語A(「今日」)と単語B(「は」)の属性の組み合わせがブラックリストテーブルD8に登録されているかどうか判断される(S56)。単語Aの品詞が「名詞」であり、単語Bの品詞が「助詞」という組み合わせはブラックリストテーブルD8に登録されていないため、単語A(「今日」)の属性と単語B(「は」)の属性の組み合わせがブラックリストテーブルD8に登録されていないと判断される(S56でNO)。このため、ホワイトリストテーブルD7とブラックリストテーブルD8を用いての、「今日」と「は」に対する連結チェックの結果は「接続可能」と決定される(S57)。
図26に戻って、「今日」と「は」に対する連結チェックの結果は「接続可能」であると判断され(S27でYES)、候補文字列a2の「今日」が候補バッファ322から削除されることなく、再度、全ての候補文字列a2に対して連結チェック処理が終了したかどうかが判断される(S24)。未だ連結チェックの対象となっていない候補文字列a2があるため、連結チェック処理が終了していないと判断されて(S24でNO)、残りの候補文字列a2の「ハワイ」「はい」「判明」の中から1の候補文字列a2(ここでは、「はい」)が選択される(S25)。
そして、選択された「はい」に対する連結チェックが行われる(S26)。図28を参照して、具体的には、単語Aが入力文字a1の直前に位置する「今日」に設定され、単語Bが「はい」に設定される(S51)。このときには、単語Aと単語Bとはともに存在すると判断され(S52でNO)、単語Aである「今日」の属性(品詞、活用形及び表記)が取得されるとともに(S53)、単語Bである「はい」の属性(品詞、活用形及び表記)が取得される(S54)。「今日」の品詞は「名詞」、「はい」の品詞は「感動詞」である。
この後、単語A(「今日」)の属性と単語B(「はい」)の属性の組み合わせがホワイトリストテーブルD7に登録されているかどうかが判断される(S55)。単語Aの品詞が「名詞」であり、単語Bの品詞が「感動詞」という組み合わせはホワイトリストテーブルD7に登録されていないため、単語A(「今日」)の属性と単語B(「はい」)の属性の組み合わせがホワイトリストテーブルD7に登録されていないと判断される(S55でNO)。このため、ホワイトリストテーブルD7を用いての、「今日」と「はい」に対する連結チェックの結果は「接続不可能」と決定される(S57)。
図26に戻って、「今日」と「はい」に対する連結チェックの結果は「接続不可能」であると判断され(S27でNO)、候補文字列a2の「はい」が候補バッファ322から削除され(S28)、再度、全ての候補文字列a2に対して連結チェック処理が終了したかどうかが判断される(S24)。未だ連結チェックの対象となっていない候補文字列a2があるため、連結チェック処理が終了していないと判断されて(S24でNO)、残りの候補文字列a2の「ハワイ」と「判明」に対して連結チェック処理が行われる(S24〜S28)。「ハワイ」と「判明」に対しての連結チェックも終了したら、全ての候補文字列a2に対しての連結チェック処理が終了したと判断され(S24でYES)、ステップS13〜S18までの表示処理が行われ(図25を参照)、確定文字列a4の「今日」、入力文字a1の「は」、及び候補文字列a2の「は」「ハワイ」「判明」が表示される。具体的には、図12で示すようなチャット画像が表示される。なお、候補文字列a2の「ハワイ」「判明」は、全て連結チェックの結果が「接続可能」と判断されている(図26のS27でYES)。
以下に、図4、図13、図15、図17、図20、図21、図26及び図33を用いて、図24〜図28及び図31で上述した文字入力処理を、他の具体的な事例を用いて更に説明する。この事例では、「今日は寒かったみたいです。」がユーザから確定的に入力された後、「寒かっ」の削除の指示が入力されたときの、ゲーム装置1の文字入力処理を説明する。図33は、「寒かっ」の削除の指示がユーザから入力されたときの文字入力処理の一例を示す図である。なお、ここでの説明においては、キャレット位置の移動のための処理及びデータD1、D3及びD4の「文字列長」「開始位置」「終了位置」の変更の説明については省略する。
まず、図33の(1)で示す処理、すなわち、「今日」「は」「寒かっ」「た」「みたいです」「。」が確定文字列a4として表示されているときに、「た」の削除の指示がゲーム装置1に入力されたときの処理を説明する。
キーウィンドウW1(図4を参照)におけるバックスペースキー(このキー上のタッチパネル13)をタッチすることによって、ユーザがゲーム装置1に文字の削除の指示を入力すると、操作種別が文字の削除であると判別されて(S1)、文字の削除の指示が入力されたと判断され(S7でYES)、Backspace入力処理が実行される(S8)。図31を参照して、具体的には、入力文字a1は記憶されていないと判断され(S81でNO)、かつ編集文字列a5は記憶されていないと判断される(S86でNO)。そして、「た」が削除対象となる単語(i)として特定される(S91)。この後、この「た」の確定文字列a4が確定バッファ324から削除され、かつ編集バッファ323に記憶される(S92)。この後、「た」の直前に位置する「寒かっ」が単語(j)に特定される(S93)。
そして、「た」の直後に位置する単語(k)と単語(j)との連結チェック処理が実行される(S94)。ここでは、「た」の直後に位置する単語は「みたいです」となる。従って、「寒かっ」と「みたいです」に対する連結チェック処理が実行される。なお、ここでは「寒かっ」と「みたいです」に対する連結チェック処理の詳細については省略するが、連結チェックの結果が「接続不可能」と判断される(S95でNO)。このため、単語(j)の「寒かっ」は確定バッファ324から削除されて、編集バッファ323に記憶される(S96)。なお、「寒かっ」と「た」の何れも確定文字列a4であったときから配置順は変更されないため(確定文字列データD4の「順番」が変更なく編集文字列データD3の「順番」として引き継がれるため)、「寒かっ」の配置順は「た」の直前となる。
この時点で、確定バッファ324に記憶されている単語は「今日」「は」「みたいです」であり、編集バッファ323に記憶されているのは「寒かっ」「た」となる。この後、単語(j)すなわち「寒かっ」の直前に位置する単語が新たな単語(j)として特定される(S97)。ここでは、単語の「は」が新たな単語(j)として特定される。そして、新たな単語(j)である「は」と単語(k)である「みたいです」とに対する連結チェック処理が実行される(S94)。このように、削除対象となる単語(i)の直後に位置する単語(k)との間で接続可能な単語が単語(j)になるまで、繰り返し、単語(j)を前の単語に遡って特定しつつ、単語(k)と単語(j)に対する連結チェック処理が実行される。なお、ここでは「は」と「みたいです」に対する連結チェック処理の詳細については省略するが、連結チェックの結果が「接続可能」と決定され、連結チェックの結果が「接続可能」と判断される(S95でYES)。
この後、編集バッファ323に記憶されている編集文字列a5のうち配置順の最も遅い単語が削除され(S87)、かつ、この単語の「読み方」が入力バッファ321に記憶される(S88)。ここでは、「た」が編集バッファ323から削除されて、「た」の「読み方」(「た」)が入力文字a1として入力バッファ321に記憶される。そして、入力文字a1の「た」の候補文字列a2を取得するため、候補検索処理が実行される(S90)。この後、ステップS13〜S18までの表示処理が行われる(図25を参照)。これによって、「今日」「は」「みたいです」が確定文字列a4として表示され、「寒かっ」が編集文字列a5として表示され、「た」が入力文字a1として表示され、かつ「た」に対応する候補文字列a2が表示される。具体的には、図13で示すようなチャット画像が表示される。
次に、図33の(2)で示す処理、すなわち、図13で示すチャット画像が表示されているときに、文字の削除の指示が入力されると実行される処理を説明する。
まず、操作種別が文字の削除であると判別されて(S1)、文字の削除の指示が入力されたと判断され(S7でYES)、Backspace入力処理が実行される(S8)。図31を参照して、具体的には、入力文字a1は記憶されていると判断され(S81でYES)、入力文字a1の最後の文字が削除される(S82)。ここでは、入力文字a1は「た」なので、最後の文字である「た」が削除される。この時点で、入力バッファ321には入力文字a1が全く記憶されていなくなる。続いて候補検索処理が実行される(S85)。具体的には、図26を参照して、入力バッファ321に入力文字a1が記憶されていないと判断され(S21)。キャレットa3の直前に位置する単語である「寒かっ」に対応する候補文字列a2が取得される(S30)。この後、この候補文字列a2と「寒かっ」に対して連結チェック処理が実行される(S24〜S28)。
そして、ステップS13〜S18までの表示処理が行われる(図25を参照)。これによって、「今日」「は」「みたいです」が確定文字列a4として表示され、「寒かっ」が編集文字列a5として表示され、かつ「寒かっ」に対応する候補文字列a2が表示される。ここで、「た」は入力バッファ321から削除されているため表示されない。具体的には、図14で示すようなチャット画像が表示される。
次に、図33の(3)で示す処理、すなわち、図14で示すチャット画像が表示されているときに、文字の削除の指示が入力されると実行される処理を説明する。この処理では、操作種別が文字の削除であると判別されて(S1)、文字の削除の指示が入力されたと判断され(S7でYES)、Backspace入力処理が実行される(S8)。図31を参照して、具体的には、入力文字a1は記憶されていないと判断され(S81でNO)、かつ編集文字列a5は記憶されていると判断される(S86でYES)。この時点では、「寒かっ」が編集文字列a5として記憶されているからである。
この後、編集バッファ323に記憶されている編集文字列a5のうち配置順の最も遅い単語が削除され(S87)、かつ、この単語の「読み方」が入力バッファ321に記憶される。ここでは、「寒かっ」が編集バッファ323から削除されて、「寒かっ」の「読み方(「さむかっ」)が入力文字a1として入力バッファ321に記憶される(S88)。そして、入力文字a1の「さむかっ」の候補文字列a2を取得するため、候補検索処理が実行される(S90)。この後、ステップS13〜S18までの表示処理が行われる(図25を参照)。これによって、「今日」「は」「みたいです」が確定文字列a4として表示され、「さむかっ」が入力文字a1として表示され、かつ「さむかっ」に対応する候補文字列a2が表示される。具体的には、図15で示すようなチャット画像が表示される。
図33の(4)〜(7)で示す処理は、図15で示すようなチャット画像が表示されているときに、入力文字a1の「さむかっ」を一文字ずつ削除するための文字入力処理である。ユーザから文字の削除の指示が入力される毎に末尾から順番に一文字ずつ削除される。この削除のための処理については、上述した図33の(2)で示す処理と同一であるため、説明を省略する。なお、図33の(7)で示す処理では、「さむかっ」を構成する文字の中で最後に削除される文字、すなわち「さ」が削除された後は、直前の「は」に対応する候補文字列a2が取得され、この点については図33の(7)で示す処理と図33の(2)で示す処理とで異なる。
次に、図4、図17、図24、図26、図27及び図34を用いて、図33の(7)の処理が実行された状態で(「今日はみたいです。」がユーザから確定的に入力されている状態で)、「暖かかっ」と「た」の追加の指示が入力されたときの、ゲーム装置1の文字入力処理を説明する。ここでは、「今日は」と「みたいです」の間に「暖かかった」の確定的な入力が行われる場合を説明する。図34は、「暖かかった」の入力指示がユーザによって入力されたときの文字入力処理の一例を示す図である。なお、ここでの説明においては、キャレット位置の移動のための処理及びデータD1、D3及びD4の「文字列長」「開始位置」「終了位置」の変更の説明については省略する。
まず、図34の(1)で示す処理を説明する。図34の(1)で示す処理は、「今日」「は」「みたいです」「。」が確定文字列a4として表示されているときに、入力文字a1の「あ」が「は」と「みたいです」の間の位置に入力されたときの文字入力処理である。操作種別が入力文字a1の入力であると判別されて(S1)、入力文字a1が入力されたと判断され(S2でYES)、入力文字a1の「あ」が入力バッファ321に記憶される(S3)。
そして、入力文字a1の「あ」に対応する候補文字列a2を取得するため、候補検索処理が実行される(S4)。候補検索処理については、図32の(1)の処理に関して記載したため説明を省略する。ここでは、候補検索処理の実行後、「雨」「朝」「暖かかっ」が候補バッファ322に記憶されているとする。この後、ステップS13〜S18までの表示処理が行われる(図25を参照)。これによって、「今日」「は」「みたいです」が確定文字列a4として表示され、「あ」が入力文字a1として「は」と「みたいです」の間に表示され、かつ「あ」に対応する候補文字列a2が表示される。
次に、図34の(2)で示す処理を説明する。図34の(2)で示す処理は、「雨」「朝」「暖かかっ」が候補文字列a2として表示されているときに、ユーザから「暖かかっ」の選択が入力されたときの文字入力処理である。まず、操作種別が候補文字列a2の選択であると判別され(S1)、操作種別が文字の入力ではなく(S2でNO)、候補文字列a2の選択であると判断され(S5でYES)、候補文字列a2の「暖かかっ」を確定文字列a4に変更するため、単語確定処理が行われる(S6)。この単語確定処理において、単語Aを「暖かかっ」とし、かつ単語Bを「みたいです」として、連結チェック処理が行われる。この連結チェック処理の結果はここでは「連結不可能」とされ(S58)、「暖かかっ」は確定文字列a4ではなく編集文字列a5となる(S46、S47が実行されない)。なお、単語確定処理については、図32の(3)の処理に関して記載したため詳しい説明は省略する。
上述したように、単語確定処理の実行後には候補バッファ322から候補文字列a2が削除されている(S44)。この後、図24に戻って、新たに候補文字列a2を取得するため、候補検索処理が実行される(S4)。図26を参照してこの候補検索処理を具体的に説明する。上述したように、単語確定処理の実行後には入力バッファ321から入力文字a1が削除されている(S41)。従って、キャレット位置の直前の単語である「暖かかっ」に対応する候補文字列a2が取得され(S30)、この候補文字列a2を単語Bとし、かつ「暖かかっ」を単語Aとして連結チェック処理が行われる(S24〜S28)。
ここでは、候補検索処理の実行後、候補文字列a2の「た」のみが候補バッファ322に記憶されているとする。この後、ステップS13〜S18までの表示処理が行われる(図25を参照)。これによって、「今日」「は」「みたいです」が確定文字列a4として表示され、「暖かかっ」が編集文字列a5として「は」と「みたいです」の間に表示され、かつ「暖かかっ」に対応する候補文字列a2(「た」)が表示される。
次に、図34の(3)で示す処理を説明する。図34の(3)で示す処理は、「た」が候補文字列a2として表示されているときに、ユーザから「た」の選択が入力されたときの文字入力処理である。
まず、操作種別が候補文字列a2の選択であると判別され(S1)、操作種別が文字の入力ではなく(S2でNO)、候補文字列a2の選択であると判断され(S5でYES)、編集文字列a5の「暖かかっ」および、候補文字列a2の「た」を確定文字列a4に変更するため、単語確定処理が行われる(S6)。図27を参照して、この単語確定処理において、単語Aを「た」とし、かつ単語Bを「みたいです」として、連結チェック処理が行われる。この連結チェック処理の結果はここでは「接続可能」とされ(図28のS57)、ステップS45でYESと判断されて、編集文字列a5として記憶されている「暖かかった」は確定文字列a4となる(S46、S47が実行される)。
この時点で、「今日」「は」「暖かかっ」「た」「みたい」「です」「。」が確定バッファ324に記憶されており、入力バッファ321、候補バッファ322、及び編集バッファ323には何の単語も文字も記憶されていない。また、キャレットa3の位置は、「た」の後に移動される。
この後、図24に戻って、候補検索処理が実行される(S4)。なお、この候補検索処理では「た」に対応する候補文字列a2が取得されるが、候補検索処理については図32の(1)の処理に関して記載したため説明を省略する。この後、ステップS13〜S18までの表示処理が行われる(図25を参照)。これによって、「今日」「は」「暖かかっ」「た」「みたいです」「。」が確定文字列a4として表示され、かつ「た」に対応する候補文字列a2が表示される。
上述したように、本実施形態にかかるゲーム装置1は、ユーザによって選択された候補文字列a2のみが確定文字列a4となるという第1の特徴を備えるため、これによって、候補文字列a2として表示する文字列を不適切な表現を示すものとならないように選別することで、不適切な用語が確定文字列a4として入力され、他のゲーム装置1に対して送信されることを効果的に防止することができる。
また、ゲーム装置1は、所定の条件に合致した単語のみが候補文字列a2として表示されるという第2の特徴を備えるため、不適切な用語のリストが予め装置に記憶され、このリストに合致する用語のみが塗り潰して表示される従来の構成と比較すると、不適切な表現が確定的に入力されることを効果的に防止することができる。すなわち、不適切な用語のリストを予め用意する構成では、このリストに漏れがあった場合にこの漏れてしまった不適切な用語を入力することが可能になってしまう。本実施形態の第2の特徴では、所定の条件に合致した単語のみが表示される候補文字列a2となるため、従来技術に比較して効果的に不適切な表現の確定的な入力を防止することができる。
また、この所定の条件が入力文字a1の直前の単語と候補文字列a2が接続可能であることであるため、連続する2つの単語を別々に候補文字列a2から選択して不適切な単語を入力することができない。これによって、更に効果的に不適切な表現の入力を防止することができる。
入力文字a1の直後の単語と候補文字列a2が接続可能な場合のみに候補文字列a2が確定文字列a4とされるという本実施形態の第3の特徴によって、連続する2つの単語を別々に候補文字列a2から選択して不適切な単語をユーザによって確定的に入力されることを防止することができる。これによって、更に効果的に不適切な表現の確定的な入力を防止することができる。
また、確定文字列a4が表示された場合にはこの確定文字列a4に対応する候補文字列a2を候補文字列データベースから取得して表示するという本実施形態の第4の特徴によって、ユーザが入力文字a1を入力する手間なく候補文字列a2を表示することができる。
また、ゲーム装置1は、次のような本実施形態の第5の特徴を備える。すなわち、削除対象の単語(i)の直前に位置する単語(j)と直後に位置する単語(k)が接続可能かどうか判断される。そして、削除対象の単語(i)の前に位置する単語(j)と後に位置する単語(k)が接続不可能であれば、単語(j)の更に前に位置する単語を新たな単語(j)として、単語(k)との間の連結チェックが行われる。接続可能となるまで、連結チェック対象とする単語(j)を前の単語に繰り上げて判断がなされてゆき、接続可能となったときに、接続可能となった単語(j)と単語(k)に挟まれた単語が未確定状態(編集文字列a5又は入力文字a1)になる。本実施形態の第5の特徴によれば、接続可能な単語(j)と単語(k)に挟まれた単語が未確定状態に変更されるため、単語(i)の削除によって、接続不可能な2つの単語が連続的に並んだ状態で確定的に入力されることを効果的に防止することができる。
次に、本実施形態の変形例を以下に記載する。
(1)本実施形態では、候補検索処理の連結チェック処理(図26のステップS26)において、前方の単語(単語A)を入力文字a1の直前の単語とし、後方の単語(単語B)を候補文字列a2として連結チェックが実行されているが、この連結チェックに代えて又は加えて、単語Aを候補文字列a2とし、単語Bを入力文字a1の直後の単語として連結チェックが実行されてもよい。
(2)また、本実施形態では、単語確定処理の連結チェック処理(図27のステップS43)において、前方の単語(単語A)を選択された候補文字列a2とし、後方の単語(単語B)を入力文字a1の直後の単語として連結チェックが実行されているが、この連結チェックに代えて又は加えて、単語Aを入力文字a1の直前の単語とし、単語Bを選択された候補文字列a2として連結チェックが実行されてもよい。
(3)また、本実施形態では、単語確定処理と候補検索処理の両方で連結チェック処理を実行しているが、どちらか一方の処理で連結チェック処理を実行する構成であってもよい。
(4)なお、本実施形態では、図28で示す連結チェック処理において、ホワイトリストテーブルD7とブラックリストテーブルD8を使用して連結チェックを行っているが、ブラックリストテーブルD8を使用せず、ホワイトリストテーブルD7のみを使用して連結チェックが実行されてもよい。
(5)本実施形態では、文字の削除の指示がユーザから入力されたときには、ゲーム装置1はキャレットa3(図4を参照)の直前に位置する文字が削除されたり、この直前に位置する単語が削除対象とされるが、キャレットa3の直後に位置する単語及び文字が削除されたり削除対象となってもよい。
(6)本実施形態では、キャレットa3(図4を参照)の位置の移動の指示が入力されたときにゲーム装置が未確定状態の単語(図4で示す入力文字a1、候補文字列a2及び編集文字列a5)をメインメモリ32から削除する構成が採用されるが(図29のステップS64〜S66)、この構成に代えて、未確定状態の単語がメインメモリ32に記憶されている状態では、キャレットの移動の指示が入力されてもゲーム装置1がキャレットa3の位置の移動を行わない構成を採用してもよい。
(7)また、本実施形態では、メッセージの送信指示が入力されたときにゲーム装置が未確定状態の単語(図4で示す入力文字a1、候補文字列a2及び編集文字列a5)をメインメモリ32から削除する構成が採用されるが(図30のステップS71〜S73)、この構成に代えて、未確定状態の単語がメインメモリ32に記憶されている状態では、メッセージの送信指示が入力されてもゲーム装置1が他のゲーム装置1に対してメッセージの送信を行わない構成を採用してもよい。
(8)本実施形態では、ゲーム装置1は、他のゲーム装置1とテキストデータを送受信することで、ユーザ間でチャットを行わせるチャット機能を備えるが、この機能を備えなくてもよく、ゲーム装置1が他のゲーム装置1に対してテキストデータを送信する機能を備えていればよい。
(9)もっとも、ゲーム装置1は必ずしも通信機能を備える必要がなく、ユーザの指示によって確定的に入力されている単語のみを不揮発性のメモリ(例えば、図2で示す保存用データメモリ34等)記憶することができる構成であってもよい。例えば、ワードプロセッサのアプリケーションの機能の一部として備えるようにしてもよい。
(10)なお、本実施形態では、ゲーム装置1は入力文字a1、候補文字列a2、確定文字列a4及び編集文字列a5を下側LCD12に表示することで出力しているが、アンプ42を介してスピーカから出力したり、図略の印刷装置を用いて出力してもよい。
(11)本実施形態は、本発明の情報処理装置をゲーム装置1に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機(PHS)、携帯情報端末(PDA)、据置型ゲーム装置や、パーソナルコンピュータ等にも本発明の適用は可能である。