以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
図1は、第1の実施の形態に係る表示制御方法の一例を示す図である。図1には、画面13上における文章データ1aの表示態様2b,3b,4bを制御する表示制御方法を実施することができる表示制御装置10が示されている。表示制御装置10は、例えば表示制御方法の処理手順が記述された表示制御プログラムを実行することにより、表示制御方法を実施することができる。
表示制御装置10は、表示制御方法を実施するために、記憶部11と処理部12とを有する。記憶部11は、例えば表示制御装置10が有するメモリ、またはストレージ装置である。処理部12は、例えば表示制御装置10が有するプロセッサ、または演算回路である。
記憶部11は、1以上の文章データ1a,1b,・・・を記憶する。文章データ1a,1b,・・・は、例えばチャットシステムにおいてユーザまたはチャットボットが投稿したコメントである。
処理部12は、記憶部11内の文章データ1a,1b,・・・を画面13に表示する。例えば処理部12は、文章データ1a,1b,・・・それぞれに対応する表示枠を描画し、描画した表示枠内に文章データ1a,1b,・・・を表示する。
処理部12は、文章データ1a,1b,・・・の一部が長文であっても、長文の文章データ全体におけるユーザの注目箇所の把握が容易な表示態様で、文章データを表示する。例えば文章データ1aが長文の文章であるものとする。この場合、処理部12は、文章データ1a全体を表示した画面13に対するユーザからの操作に応じて、文章データ1a内におけるユーザの注目箇所2c,3c,4cを特定する。そして処理部12は、特定したユーザの注目箇所2c,3c,4cの文章データ1a全体に対する位置に応じて、文章データ1aを吹き出し2,3,4で表示する際の文字の大きさおよび文章データ1aの表示枠2a,3a,4aの形状を制御する。
文字の大きさの制御としては、処理部12は、注目箇所2c,3c,4cからの距離に応じた制御を行うことができる。例えば処理部12は、文章データ1aを表示する際の文字の大きさを文章データ1aに含まれる文字それぞれの表示位置の注目箇所2c,3c,4cからの距離に応じて変更する。この場合、処理部12は、注目箇所2c,3c,4cに近い文字ほど大きく表示し、注目箇所2c,3c,4cから遠い文字ほど小さく表示する。
表示枠2a,3a,4aの形状の制御としては、処理部12は、文章データ1a全体に対する注目箇所2c,3c,4cの位置に応じた制御を行うことができる。例えば処理部12は、注目箇所2c,3c,4cの文章データ1a全体に対する上下方向または左右方向における位置に応じて、注目箇所2c,3c,4cの上下方向または左右方向に位置する表示枠2a,3a,4aの横幅または縦幅を変更する。図1に示すように文章データ1aの表示態様2b,3b,4bが横書きの場合、例えば処理部12は、文章データ1a全体に対する注目箇所2c,3c,4cの上下方向の位置に応じて、表示枠2a,3a,4aの横幅を制御する。この場合、処理部12は、注目箇所2c,3c,4cに近いほど表示枠2a,3a,4aの横幅を広くし、注目箇所2c,3c,4cから遠いほど表示枠2a,3a,4aの横幅を狭くする。また文章データ1aの表示態様2b,3b,4bが縦書きの場合、例えば処理部12は、文章データ1a全体に対する注目箇所2c,3c,4cの左右方向の位置に応じて、表示枠2a,3a,4aの縦幅を制御する。この場合、処理部12は、注目箇所2c,3c,4cに近いほど表示枠2a,3a,4aの縦幅を広くし、注目箇所2c,3c,4cから遠いほど表示枠2a,3a,4aの縦幅を狭くする。
また処理部12は、ユーザからの操作に応じて注目箇所2c,3c,4cを移動させることができる。例えば処理部12は、画面13内の文章データ1aの表示領域に指で触れたまま指を移動させる操作(フリックまたはスワイプ)に応じて、ユーザの注目箇所2c,3c,4cを移動させる。図1に示すように横書きの表示態様2b,3b,4bであれば、ユーザが文章データ1aの表示領域内で上方向にスワイプすると、例えば処理部12は、注目箇所2c,3c,4cとなる行を、現在の行よりも下の行に変更する。またユーザが文章データ1aの表示領域内で下方向にスワイプすると、例えば処理部12は、注目箇所2c,3c,4cとなる行を、現在の行よりも上の行に変更する。
また処理部12は、画面13に表示された表示枠2a,3a,4aの一部に指で触れたまま指を移動させる操作(フリックまたはスワイプ)に応じて、ユーザの注目箇所2c,3c,4cを移動させることもできる。図1に示すように横書きの表示態様2b,3b,4bであれば、表示枠2a,3a,4aの横幅の広い部分の右側または左側を下方向にスワイプする入力があると、処理部12は、注目箇所2c,3c,4cとなる行を、現在の行よりも下の行に変更する。また表示枠2a,3a,4aの横幅の広い部分の右側または左側を上方向にスワイプする入力があると、処理部12は、注目箇所2c,3c,4cとなる行を、現在の行よりも上の行に変更する。
このようにユーザの注目箇所2c,3c,4cに応じて文字の大きさや表示枠2a,3a,4aを制御することで、長文の文章データ1a全体におけるユーザの注目箇所2c,3c,4cの位置の把握が容易となる。すなわち注目箇所2c,3c,4cから遠い文字を小さくすることで、文章データ1a全体を狭い領域に表示できる。そして表示制御装置10は、注目箇所2c,3c,4cの文字を大きくし、注目箇所2c,3c,4c付近の表示枠2a,3a,4aの幅を広くしている。これによりユーザは、文章データ1a全体に対する注目箇所2c,3c,4cの位置(例えば先頭なのか、中段なのか、末尾なのか)を容易に把握できる。しかも注目箇所2c,3c,4cは大きな文字で表示されているため、ユーザは、注目箇所2c,3c,4cの内容の把握も容易である。
また文章データ1aの全体が表示されているため、現在の注目箇所2c,3c,4c以外の部分に重要な箇所がある場合にも、ユーザは重要な箇所を容易に認識できる。そしてユーザが重要な箇所に注目箇所2c,3c,4cを移動させる操作を行えば、表示制御装置10は、重要な箇所を新たな注目箇所2c,3c,4cとする表示態様2b,3b,4bで文章データ1aを表示する。これにより、ユーザによる重要な箇所の見落としも抑止できる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、スマートフォンを用いたチャットにおいて、長文を分かりやすく表示するものである。
図2は、第2の実施の形態のシステム構成の一例を示す図である。チャットを管理するサーバ200には、ネットワーク20を介して複数のスマートフォン100,100a,・・・が接続されている。サーバ200は、スマートフォン100,100a,・・・から送信されたコメントを記憶すると共に、記憶したコメントをスマートフォン100,100a,・・・に送信する。またサーバ200は、チャットボットにより、ユーザからのチャットによる問い合わせに対して、チャット上で回答することができる。チャットボットとは、ユーザが入力した自然文を解釈し、自動で回答する機能である。
スマートフォン100,100a,・・・は、ユーザが使用する情報端末の一種である。ユーザは、スマートフォン100,100a,・・・を用いて、他のユーザとのチャットによる会話を行うことができる。
なおサーバ200は、チャットに投稿できるコメントの文字数の上限を設定することができる。スマートフォン100,100a,・・・は、上限の以下の文字数のコメントを、サーバ200に投稿する。
図3は、スマートフォンのハードウェアの構成の一例を示す図である。スマートフォン100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、スマートフォン100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、ディスプレイ装置104、タッチパネル105、機器接続インタフェース106、音声入出力部107、および無線通信部108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばSSD(Solid State Drive)を使用することができる。
ディスプレイ装置104は、プロセッサ101からの命令に従って、画像を表示する。ディスプレイ装置104としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
タッチパネル105は、ディスプレイ装置104の画面の前面に配置されており、画面上の押された位置を検知して、その位置を示す信号をプロセッサ101に送信する。
機器接続インタフェース106は、スマートフォン100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース106には、メモリカード21を接続することができる。メモリカード21は、機器接続インタフェース106との通信機能を搭載した、カード型の記録媒体である。
音声入出力部107には、マイク107aとスピーカ107bとが接続されている。音声入出力部107は、マイク107aから入力された音声信号をディジタル信号に変換して、プロセッサ101に送信する。また音声入出力部107は、プロセッサ101から音声データを受信すると、音声データに従った音声信号を生成し、スピーカ107bから音声出力を行う。
無線通信部108は、移動体通信用の通信インタフェースである。無線通信部108にはアンテナ113が接続されている。無線通信部108は、アンテナ113を介して、移動体通信の基地局と通信する。
スマートフォン100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。他のスマートフォン100a,・・・も、スマートフォン100と同様のハードウェアにより実現することができる。また、第1の実施の形態に示した表示制御装置10も、図3に示したスマートフォン100と同様のハードウェアにより実現することができる。
スマートフォン100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。スマートフォン100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、スマートフォン100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またスマートフォン100に実行させるプログラムを、メモリカード21などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
ここで、スマートフォン100を用いてチャットを行う場合の課題について説明する。
スマートフォン100を用いたチャットはコミュニケーション手段として非常に有用であるが、スマートフォン100の画面サイズはパーソナルコンピュータに比べて狭い。そのため、長文のコメントの表示には不向きである。例えばコメントが長文だと、コメント表示用の吹き出し面積が大きくなり、画面のほとんどの領域が1つのコメントで占有され、チャットの会話の流れが分からなくなる。
なお、通常のユーザによるチャットへのコメントを入力する場合、長文の入力には手間がかかるため、ユーザの操作により長文が入力されることは少ない。それに対して、チャットボットによる自動応答では長文の応答も容易であるため、チャットボットからの回答は長文になることがある。そして、チャットボットの普及に伴い、チャット上で長文を見る機会が多くなってきている。そこで、チャットにおいて長文のコメントを、ユーザにとって理解しやすく表示できるようにすることが重要となっている。
スマートフォン100に長文のコメントを表示する技術として、例えば「すべて表示」「折りたたむ」などの操作で長文を一部残して隠す技術がある。しかし、このような表示の態様の切り替え技術では、長文の全体の把握と会話の流れの把握とを別画面で行うこととなり、十分に理解しやすい表示態様であるとは言えない。そこで第2の実施の形態では、スマートフォン100は、長文のコメントにおけるフォントサイズを適切に調整することで、会話の流れを理解しやすくする。
図4は、コメントの表示態様の改善例を示す図である。図4の上段には、比較例として、操作によりコメントの一部表示と全文表示とを切り替える例を示している。例えば第2の実施の形態の機能を有していないスマートフォン300は、一連のコメントの吹き出しを時系列で画面310に表示する。初期状態(比較例の左側)では、吹き出しのサイズが一定である。コメントが長文でありそのコメントが吹き出し内に表示しきれない場合、スマートフォン300は、コメントの一部(例えば先頭の数行)を吹き出し内に表示し、他の部分は非表示とする。このときスマートフォン300は、吹き出し内に「すべて表示」というメニュー311を表示する。
図4の例では、8つのコメントのうちの4つのコメントが画面310内に表示されている。そのため、長文のコメントに至るまでの会話の流れの把握は可能である。しかし、長文のコメントは一部しか表示されておらず、長文の全体を把握するのが困難であり、ユーザの注目する位置がコメント全体に対してどのような位置にあるのかを把握することも難しい。
ユーザが「すべて表示」のメニュー311を選択すると、スマートフォン300は、吹き出しの枠を拡げ、長文のコメントの全部を吹き出し枠内に表示する。このときスマートフォン300は、長文のコメントを表示する引き出し枠に、「折りたたむ」というメニュー312を表示する。
図4の例では、8つのコメントのうちの2つのコメントのみ画面310内に表示されている。そのため、長文のコメントの全文を読むことができるが、画面310に表示されたコメントから会話の流れを把握するのは困難である。会話の流れを把握する場合、ユーザは「折りたたむ」のメニュー312を選択する。するとスマートフォン300は、長文のコメントの全文表示を取りやめ、一部表示の状態(比較例の左側)に戻る。
このように比較例に示した表示方法では、常に、長文の全体把握と会話の流れの把握との一方が困難となる。それに対して、第2の実施の形態に係るスマートフォン100は、長文のコメントの一部の文字列のフォントのサイズを小さくすることで、長文のコメントであっても、狭い領域の吹き出し枠に表示できるようにする。吹き出し枠を拡大しないことで、スマートフォン100の画面160には会話の流れの把握に役立つ多くのコメントを表示することが可能となる。
図5は、一部の文字列のフォントサイズを縮小させた場合の吹き出しの表示例を示す図である。例えばチャットボットが投稿したコメントは、チャットボットアイコン22に関連付けた吹き出し31,32に表示される。図5の上段には、吹き出しの枠を拡張した場合の吹き出し31の表示例を示し、下段には、一部のフォントサイズを縮小させた場合の吹き出し32の表示例を示している。
フォントサイズを一定とした場合の吹き出し31は、上下方向に長い形となっている。他方、一部の文字列のフォントサイズを小さくすることで、より狭い領域の吹き出し32内にすべてのコメントを表示することができる。
スマートフォン100は、吹き出し32に表示するコメントのうち、例えばユーザが指定した数行をカレント行とする。そしてスマートフォン100は、カレント行を最も大きく表示し、カレント行から離れるに従って各行のフォントサイズを小さくする。
これにより吹き出し32内には、一部のコメントのフォントサイズが小さいものの、文字数上限値以下の文字数のコメントであれば全文を表示できる。コメントの全文が表示されていることで、ユーザは、どの程度の分量のコメントなのかを把握することができる。また例えば他の文字とは異なる色で強調表示された文字がコメント内に含まれている場合、その文字が小さくても、ユーザは色の違いにより強調表示された重要箇所の存在を認識することができる。
また吹き出し32は、注目部分が大きな文字で強調されることで、アイコンで表された投稿者(図5の例ではチャットボット)が該当部分の発言をしていることを表した、吹き出しらしい表現となっている。
スマートフォン100は、吹き出し32内からカレント行の位置を指定する操作入力が行われると、指定された位置をカレント行とするように吹き出し32の表示態様を変化させる。
図6は、カレント行の位置に応じたコメントの表示例を示す図である。第1の表示態様は、コメントの先頭の3行がカレント行41となっている場合の吹き出し33の例である。この場合、カレント行41である最初の3行が最も大きなフォントで表示され、下の行に行くに従って文字のフォントサイズが小さくなっている。また吹き出し33は、枠の横幅が下に行くほど狭くなっている。
第2の表示態様は、コメントの中程の3行がカレント行42となっている場合の吹き出し34の例である。この場合、カレント行42である中程の3行が最も大きなフォントで表示され、カレント行から上下の両方向に離れるのに従って文字のフォントサイズが小さくなっている。また吹き出し34の枠は、中程の横幅が最も広く、中程から上下方向に離れるほど幅が狭くなっている。
第3の表示態様は、コメントの最後尾の3行がカレント行43となっている場合の吹き出し35の例である。この場合、カレント行43である最後尾の3行が最も大きなフォントで表示され、上の行に行くに従って文字のフォントサイズが小さくなっている。また吹き出し35の枠は、横幅が上に行くほど狭くなっている。
このように、ユーザが長文を読み進めていく場合であっても、スマートフォン100は、ユーザの指定に応じてカレント行を移動することで、ユーザが読んでいる数行の文字を大きく表示し、読んでいる行から離れた位置の文字ほど小さく表示することができる。その結果、ユーザは、注目している部分とその周辺を確認しながら、長文のコメント全体を大きなフォントで読み進めることができる。しかも長文のコメント全体が吹き出し内に表示されているため、ユーザは、文章量を容易に把握できる。
またスマートフォン100は、吹き出し枠の形状を、文字の量と文字サイズに応じて変形させている。これにより、ユーザは、文章中のどこを読んでいるか(長文の先頭なのか中段なのか、末尾なのかなど)を容易に認識できる。また、カレント行から離れた位置の行を表示する部分では、吹き出し枠の横幅が狭くなっている。これにより、吹き出し枠の外側に他のアイコンなどによる情報表示が可能であり、スマートフォン100の狭い画面を有効に活用することができる。
なお狭い領域で長文のコメントを読み進めるための手法として、スクロールバーなどを用いて、限られた領域内に表示されたコメントの文章をスクロールさせる方法も考えられる。しかし、スクロールバーを用いた吹き出しの長文表示と比べても、図6に示したような改善後の吹き出しの方が長文の内容把握がしやすい。
図7は、吹き出しの表示態様を比較する図である。図7には、比較例として、スクロールバー36aによってコメントの文章をスクロールさせることが可能な吹き出し36を示している。この吹き出し36では、コメントが長文になったときだけスクロールバー36aが表示されることとなり、吹き出しの表示態様が統一されないという欠点がある。また、吹き出し36内に表示される文章はコメントの一部に過ぎず、隠れている文章の中に重要箇所があっても、ユーザが気づきにくい。さらにスマートフォンでは画面全体が狭く、スクロールバーが小さくなるため、スクロールバーでは細かな表示位置の指定が困難である。
それに対して、注目箇所に応じて文字の大きさと吹き出し枠の形状とを可変とする吹き出し37であれば、長文のコメントの全体を吹き出し37内に表示することができる。全文が表示されていることで、注目箇所以外に重要箇所37aがあった場合、小さいながらもその重要箇所37aが吹き出し37内に表示される。その結果、ユーザは、重要箇所37aの存在を容易に認識できる。しかもスクロールバー36aを用いた吹き出し36に比べ、改善後の吹き出し36の表示領域は狭い。そのため、画面内の空き領域が増え、他の情報の表示に利用できる。また改善後の吹き出し37では、例えばスクロールバー36aのような特定のオブジェクトが表示されたり、表示されなかったりすることがなく、表示態様が統一されている。
次にスマートフォン100が有するチャット機能について説明する。
図8は、スマートフォンのチャット機能を示すブロック図である。スマートフォン100は、記憶部110、コメント送受信部120、操作受付部130、および表示制御部140を有する。
記憶部110は、チャットのコメントデータ111を記憶する。コメントデータ111は、例えばチャット上で発言されたコメントの文字列と、そのコメントの投稿時刻とを含む。記憶部110としては、例えばスマートフォン100のメモリ102またはストレージ装置103の記憶領域の一部が使用される。
コメント送受信部120は、チャットシステム上に投稿されたコメントをサーバ200から取得する。コメント送受信部120は、取得したコメントをコメントデータ111として記憶部110に格納する。またコメント送受信部120は、スマートフォン100のユーザが入力した投稿用のコメントを、サーバ200上のチャットシステムに送信する。例えばコメント送受信部120は、スマートフォン100を使用するユーザが入力したコメントがコメントデータ111に追加された場合、追加されたコメントを、ユーザの新たな投稿としてサーバ200に送信する。
操作受付部130は、チャット画面に対するユーザからの操作を受け付ける。操作受付部130は、ユーザがコメント投稿用のテキストボックスにコメントを入力した場合、入力されたコメントを、記憶部110内のコメントデータ111に追加する。また操作受付部130は、吹き出しのカレント行の指定操作や、画面のスクロール操作などの画面操作が行われた場合、操作内容を表示制御部140に通知する。
表示制御部140は、コメントデータ111の内容をディスプレイ装置の画面に表示する。例えば表示制御部140は、コメントデータ111に示されるコメントを表示するための吹き出しを生成し、吹き出し内にコメントを投稿順に表示する。なお表示制御部140は、コメントの長さが所定値以上の場合、図6に示したように、カレント行に応じて行ごとの文字サイズを決定し、カレント行に応じた形状の吹き出し枠の吹き出しを表示する。そのために、表示制御部140は、文字サイズ決定部141、および吹き出し描画部142を有する。
文字サイズ決定部141は、長さが所定値以上のコメントについて、カレント行に応じた各行の文字のサイズ(フォントサイズ)を決定する。例えば文字サイズ決定部141は、カレント行との距離が離れた行ほど、その行の文字サイズを小さくする。
吹き出し描画部142は、長さが所定値以上のコメントについて、カレント行に応じた形状の吹き出し枠を描画する。例えば吹き出し描画部142は、カレント行との距離が離れた行の表示位置ほど横幅が狭い吹き出し枠を描画する。
また吹き出し描画部142は、コメントデータ111に示されるコメントを示す画像を描画する。例えば吹き出し描画部142は、長さが所定値以上のコメントについては、吹き出し描画部142が生成した吹き出し枠内に、文字サイズ決定部141が決定したフォントサイズでコメントを描画する。そして吹き出し描画部142は、長さが所定値未満のコメントについては、予め用意された所定の吹き出し枠内に、予め決められたサイズのフォントでコメントを描画する。
なお、図8に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次にコメントデータ111について具体的に説明する。
図9は、コメントデータの一例を示す図である。コメントデータ111には、チャットに投稿されたコメントが、日時と投稿者とに対応付けて格納されている。コメントデータ111に示される日時は、対応するコメントが投稿された日時である。コメントデータ111に示される投稿者は、対応するコメントを投稿したユーザのユーザ名である。チャットボットが投稿したコメントの場合、投稿者に「チャットボット」と示される。
図9に示すコメントデータ111の例では、チャットボットが投稿したコメントが長文となっており、規定のサイズの吹き出しには全文を表示することができない。なおコメントデータ111には、強調文字列を含むコメントが格納される場合もある。図9の例では、チャットボットが投稿したコメントの一部の文字列が、下線とボールドによって強調されている。
次に、スマートフォン100によるチャット画面の表示手順について詳細に説明する。
図10は、チャット画面表示手順の一例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS101]表示制御部140は、コメントデータ111から表示するコメントを選択する。例えば表示制御部140は、チャット画面の初期状態を表示する場合、投稿された日時が最新のコメントから順に、未描画のコメントを選択する。また表示制御部140は、画面のスクロール操作に応じて画面がスクロールされた場合、スクロール後の画面の最も下に表示するコメントから順に、そのコメントより以前に投稿されたコメントを選択する。
[ステップS102]文字サイズ決定部141は、選択されたコメントの先頭の数行をカレント行とし、行ごとの初期の文字サイズを決定する。初期文字サイズ決定処理の詳細は後述する(図12参照)。
[ステップS103]吹き出し描画部142は、吹き出し枠を描画する。例えば吹き出し描画部142は、選択されたコメントの行ごとの文字サイズに応じた吹き出し枠を描画する。また吹き出し描画部142は、選択したコメントを、描画された吹き出し枠内に決定されたサイズの文字で描画する。吹き出し描画処理の詳細は後述する(図18参照)。
[ステップS104]表示制御部140は、チャット画面内に他のコメントを表示可能か否かを判断する。例えば表示制御部140は、描画した吹き出し枠の上に、コメントが長文の場合の吹き出し枠の高さ分の空き領域があれば、他のコメントを表示可能であると判断する。表示制御部140は、他のコメントを表示可能であれば処理をステップS101に進める。また表示制御部140は、他のコメントを表示できない場合、処理をステップS105に進める。
[ステップS105]表示制御部140は、カレント行の移動操作が行われたか否かを判断する。表示制御部140は、カレント行の移動操作が行われた場合、処理をステップS106に進める。また表示制御部140は、カレント行の移動操作が行われていなければ、処理をステップS108に進める。
[ステップS106]文字サイズ決定部141は、カレント行の移動操作が行われた吹き出し内のコメント(再描画コメント)について、カレント行移動後の文字サイズを決定する。カレント行移動後文字サイズ決定処理の詳細は後述する(図15参照)。
[ステップS107]吹き出し描画部142は、吹き出し描画する。例えば吹き出し描画部142は、再描画コメントの行ごとの文字サイズに応じた吹き出し枠を描画する。さらに吹き出し描画部142は、再描画コメントを、描画された吹き出し枠内に決定されたサイズの文字で描画する。吹き出し描画処理の詳細は後述する(図18~図20参照)。
[ステップS108]表示制御部140は、画面スクロール操作が行われたか否かを判断する。表示制御部140は、画面スクロール操作が行われた場合、処理をステップS101に進める。また表示制御部140は、画面スクロール操作が行われていなければ、処理をステップS109に進める。
[ステップS109]表示制御部140は、チャット画面を閉じる操作が行われたか否かを判断する。表示制御部140は、閉じる操作が行われた場合、チャット画面表示処理を終了する。また表示制御部140は、閉じる操作が行われていなければ、処理をステップS105に進める。
スマートフォン100は、このような手順でチャット画面の初期表示を行うと共に、ユーザによる吹き出しのカレント行の移動操作または画面全体のスクロール操作に応じて、チャット画面を更新する。
次に、コメントの行ごとの文字サイズの決定方法について、詳細に説明する。
図11は、カレント行からの距離と文字サイズとの関係を示す図である。図11では、横軸にカレント行中心からの距離が示されており、縦軸に文字のフォントサイズが示されている。カレント行中心からの距離は、コメントの先頭から所定文字数で改行していったときの各行の行番号から、カレント行の中心行の行番号を減算した値である。
図11の例では、カレント行は3行である。この場合、3行のカレント行の上から2行目が中心行である。カレント行のフォントサイズは12ポイントである。そしてカレント行の中心行からの距離が離れるに従ってフォントサイズが小さくなり、距離の全対値が8以上の行は、フォントサイズがすべて1ポイントとなる。
ここで、1行の文字数を「a」、カレント行のフォントサイズを「b」、最小フォントサイズを「c」、二次関数の係数を「d」とする。1行の文字数aは、例えば「14」である。カレント行のフォントサイズbは、例えば「12」である。最小フォントサイズcは、例えば「1」である。二次関数の係数dは、例えば「0.2」である。
この場合、文字サイズ決定部141は、まずコメントの文章を、1行の文字数「a」で複数の行に分割する。文字サイズ決定部141は、分割によって生成された各行に、コメントの先頭に近い方から、1から昇順の行番号を付与する。そして文字サイズ決定部141は、各行のカレント行からの距離をxとしたとき、以下の式(1)によってフォントサイズを計算する。
フォントサイズ=b-(d×x2) (1)
ただし文字サイズ決定部141は、フォントサイズ<cの場合、フォントサイズ=cとする。
例えば文字サイズ決定部141は、フォントサイズは整数値とするため、フォントサイズの計算結果の小数点以下の値は切り捨てる。なおスマートフォン100が小数点以下のフォントの表示が可能な場合、文字サイズ決定部141は、小数点以下の数値も有効とすることもできる。
次に、初期フォントサイズ決定処理の手順についてフローチャートを参照して説明する。
図12は、初期フォントサイズ決定処理の手順の一例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS121]文字サイズ決定部141は、コメントの文章を1行の文字数aごとに改行する。
[ステップS122]文字サイズ決定部141は、コメントの行数hを取得する。hは、1以上の整数である。
[ステップS123]文字サイズ決定部141は、要素数がhのフォントサイズ配列f[i]を作成する。iは、フォントサイズ配列の要素番号を示す変数である。
[ステップS124]文字サイズ決定部141は、変数iを1からhまでインクリメント(i=i+1)しながら、ステップS125~S129のフォントサイズ計算処理を繰り返す。
[ステップS125]文字サイズ決定部141は、i行目の行がカレント行か否かを判断する。例えば文字サイズ決定部141は、i≦3であればカレント行であると判断する。文字サイズ決定部141は、カレント行であれば、処理をステップS126に進める。また文字サイズ決定部141は、カレント行でなければ、処理をステップS127に進める。
[ステップS126]文字サイズ決定部141は、配列f[i]に、カレント行のフォントサイズbを設定する。文字サイズ決定部141は、その後、処理をステップS130に進める。
[ステップS127]文字サイズ決定部141は、式(1)を用いて計算したフォントサイズを、配列f[i]に設定する。なお文字サイズ決定部141は、現在のカレント行の中心行の行番号を「2」とする(先頭から3行のカレント行の中心行)。この場合、i番目の行のカレント行の中心行からの距離xは「i-2」となる。従って文字サイズ決定部141は、以下の処理を行うこととなる。
f[i]=b-(d×(i-2)2) (2)
なお文字サイズ決定部141は、式(2)の右辺の値の小数点以下は切り捨てる。
[ステップS128]文字サイズ決定部141は、f[i]の値が最小フォントサイズc未満(f[i]<c)か否かを判断する。文字サイズ決定部141は、最小フォントサイズ未満の場合、処理をステップS129に進める。また文字サイズ決定部141は、最小フォントサイズ以上であれば、処理をステップS130に進める。
[ステップS129]文字サイズ決定部141は、配列f[i]に最小フォントサイズcを設定する。
[ステップS130]文字サイズ決定部141は、変数iをインクリメントすると行数hを超える場合、ステップS125~S129の繰り返し処理を終了し、処理をステップS131に進める。
[ステップS131]文字サイズ決定部141は、初期表示のコメントの行ごとのフォントサイズを、配列f[i]に示される値に決定する。
このようにして、初期のコメントの行ごとの文字サイズが決定される。その後、ユーザが吹き出しに対するカレント行の移動操作を行うと、各行の文字サイズが変更されると共に、吹き出しの枠の形状が変更される。なお、カレント行の移動操作方法としては、コメントの一部を指定して操作する方法と、吹き出し枠を指定して操作する方法とが考えられる。
図13は、コメントを指定してカレント行を移動させる操作方法の一例を示す図である。例えばユーザは、先頭の数行をカレント行として表示された吹き出し61内のコメントを指定して、上方向へフリックまたはスワイプする。フリックとは、タッチパネル105の画面に触れた指先を弾くように移動させることである。スワイプは、タッチパネル105の画面を指先で押しながら、その指先を移動させることである。このようなユーザの操作は、操作受付部130によって検知され、操作内容が表示制御部140に送られる。そして表示制御部140は、コメントを指定した上方向へのフリップまたはスワイプ操作を、カレント行の下方向への移動操作と認識する。
吹き出し61の状態からカレント行が下の行に移動すると、中程の行がカレント行に設定された吹き出し62が表示される。ここでユーザが、コメントを指定して上方向へフリックまたはスワイプすると、カレント行がさらに下方向へ移動する。カレント行が末尾の行まで移動すると、最後の3行が最も大きな文字で表された吹き出し63が表示される。
図13には、表示制御部140がカレント行を下に移動させる例を示しているが、ユーザがコメントを指定して下方向にフリックまたはスワイプした場合には、表示制御部140はカレント行を上に移動させる。
図14は、吹き出し枠を指定してカレント行を移動させる操作方法の一例を示す図である。例えばユーザは、先頭の数行がカレント行として表示された吹き出し61の枠の端を指定して、下方向へフリックまたはスワイプする。このようなユーザの操作は、操作受付部130によって検知され、操作内容が表示制御部140に送られる。そして表示制御部140は、吹き出し61の枠を指定した下方向へのフリップまたはスワイプ操作を、カレント行の下方向への移動操作と認識する。
吹き出し61の状態からカレント行が下の行に移動すると、中程の行がカレント行に設定された吹き出し62が表示される。ここでユーザが吹き出し62の枠の端を指定して、下方向へフリックまたはスワイプすると、カレント行がさらに下方向へ移動する。カレント行が末尾の行まで移動すると、最後の3行が最も大きな文字で表された吹き出し63が表示される。
図14には、カレント行を下に移動させる場合の操作方法を示しているが、ユーザが吹き出し枠を指定して上方向にフリックまたはスワイプした場合には、表示制御部140はカレント行を上に移動させる。
なお、図13と図14に、カレント行を移動させる2つの操作方法を示したが、スマートフォン100は、いずれか一方の操作方法または両方の操作方法を実施することができる。
次にカレント行移動後の文字サイズの決定処理についてフローチャートを参照して説明する。
図15は、カレント行移動後の文字サイズ決定処理の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS141]文字サイズ決定部141は、カレント行の中心行の行番号Cを取得する。Cは、1以上h以下の整数である。
[ステップS142]文字サイズ決定部141は、要素数がhのフォントサイズ配列f[i]を作成する。
[ステップS143]文字サイズ決定部141は、変数iを1からhまでインクリメント(i=i+1)しながら、ステップS144~S148のフォントサイズ計算処理を繰り返す。
[ステップS144]文字サイズ決定部141は、i行目の行がカレント行か否かを判断する。例えば文字サイズ決定部141は、C-1≦i≦C+1であればカレント行であると判断する。文字サイズ決定部141は、カレント行であれば、処理をステップS145に進める。また文字サイズ決定部141は、カレント行でなければ、処理をステップS146に進める。
[ステップS145]文字サイズ決定部141は、配列f[i]に、カレント行のフォントサイズbを設定する。文字サイズ決定部141は、その後、処理をステップS149に進める。
[ステップS146]文字サイズ決定部141は、式(1)を用いて計算したフォントサイズを、配列f[i]に設定する。このとき、i番目の行のカレント行の中心行Cからの距離xは「i-C」となる。従って文字サイズ決定部141は、以下の処理を行うこととなる。
f[i]=b-(d×(i-C)2) (3)
なお文字サイズ決定部141は、式(3)の右辺の値の小数点以下は切り捨てる。
[ステップS147]文字サイズ決定部141は、f[i]の値が最小フォントサイズc未満(f[i]<c)か否かを判断する。文字サイズ決定部141は、最小フォントサイズ未満の場合、処理をステップS148に進める。また文字サイズ決定部141は、最小フォントサイズ以上であれば、処理をステップS149に進める。
[ステップS148]文字サイズ決定部141は、配列f[i]に最小フォントサイズcを設定する。
[ステップS149]文字サイズ決定部141は、変数iをインクリメントすると行数hを超える場合、ステップS144~S148の繰り返し処理を終了し、処理をステップS150に進める。
[ステップS150]文字サイズ決定部141は、初期表示のコメントの行ごとのフォントサイズを、配列f[i]に示される値に決定する。
このようにして、カレント行が移動した場合には、コメントの行ごとの文字サイズが再計算される。コメントの行ごとの文字サイズが決定すると、吹き出し描画部142が、文字サイズに合わせた吹き出し枠を描画する。
図16は、吹き出し枠の描画方法の一例を示す図である。吹き出し描画部142は、まず行ごとの幅を算出する。幅は、以下の式で表される。
幅=フォントサイズ×a+マージン幅 (4)
マージン幅は、予め設定した値である。次に吹き出し描画部142は、各行の左右両側に、制御点52を設定する。例えば吹き出し描画部142は、コメントの文字列の配置の指定が中央寄せ(センタリング)の場合、中心ライン51から左右に、算出した幅の半分の距離だけ離れた位置に制御点52を設定する。
このとき吹き出し描画部142は、先頭の行の上にも制御点52aを設定する。例えば吹き出し描画部142は、先頭の行の上の制御点52aを、先頭行の左右の制御点よりも中心ライン51に寄せた位置に設定する。同様に吹き出し描画部142は、最後尾の行の下にも制御点52bを設定する。例えば吹き出し描画部142は、最後尾の行の下の制御点52bを、最後尾の行の左右の制御点よりも中心ライン51に寄せた位置に設定する。
次に吹き出し描画部142は、設定した制御点52間を接続する接続線53を描画する。そして吹き出し描画部142は、最後に、チャットボットまたはユーザを示すアイコンを指し示す三角形を描画する。
なお吹き出し枠の形状は、吹き出し内の文字の配置方法の指定によっても変わる。
図17は、吹き出し枠の形状の一例を示す図である。文字列の配置方法としては、例えば左寄せ、センタリング、右寄せがある。図17には、配置の種別ごとに、カレント行が先頭の数行の場合、カレント行が中程の行の場合、カレント行が末尾の数行の場合の吹き出し枠形状を、代表的に示している。
左寄せの配置の吹き出し枠形状は、例えば左側からの吹き出しに用いられる。右寄せの配置の吹き出し枠形状は、例えば右側からの吹き出しに用いられる。センタリングの配置の吹き出し枠形状は、いずれの方向からの吹き出しにも用いることができる。
次に、吹き出し描画処理の手順について、フローチャートを参照して詳細に説明する。
図18は、吹き出し描画処理の手順を示すフローチャート(1/3)である。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS161]吹き出し描画部142は、表示幅配列w[i](i=0,2,・・・,h,h+1)を生成する。
[ステップS162]吹き出し描画部142は、計算済みのフォントサイズ配列f[i](i=1,2,・・・h)を取得する。
[ステップS163]吹き出し描画部142は、変数iを1からhまでインクリメント(i=i+1)しながら、ステップS164の吹き出し幅計算処理を繰り返す。
[ステップS164]吹き出し描画部142は、行番号iの行の位置における吹き出し枠の幅w[i]を計算する。マージン幅をm(mは正の実数)とすると、吹き出し枠の幅w[i]の計算式は、以下の通りとなる。
w[i]=f[i]×a+m (5)
[ステップS165]吹き出し描画部142は、変数iをインクリメントすると行数hを超える場合、ステップS164の繰り返し処理を終了し、処理をステップS166に進める。
[ステップS166]吹き出し描画部142は、吹き出し枠の上辺の幅を要素番号「0」の表示用配列w[0]に設定し、下辺の幅を要素番号「h+1」の表示用配列w[h+1]に設定する。例えば吹き出し描画部142は、予め設定してある絞り幅n(nは正の実数)を用いて、「w[0]=w[1]-n」、「w[h+1]=w[h]-n」とする。
[ステップS167]吹き出し描画部142は、吹き出しに表示するコメントの文字の配置の指定を取得する。例えばスマートフォン100を使用しているユーザが投稿したコメントに対しては、右寄せまたはセンタリングの配置が指定される。またスマートフォン100を使用しているユーザ以外のユーザ(チャットボットを含む)が投稿したコメントに対しては、左寄せまたはセンタリングの配置が指定される。
[ステップS168]吹き出し描画部142は、配置の指定が右寄せか否かを判断する。吹き出し描画部142は、右寄せであれば処理をステップS169に進める。また吹き出し描画部142は、右寄せでなければ、処理をステップS170に進める。
[ステップS169]吹き出し描画部142は、基準座標Xに、右寄せ時のx軸の基準座標値Xrを設定する。基準座標値Xrは、吹き出し枠の右側の辺の位置を示している。吹き出し描画部142は、その後、処理をステップS181(図19参照)に進める。
[ステップS170]吹き出し描画部142は、配置の指定が左寄せか否かを判断する。吹き出し描画部142は、左寄せであれば処理をステップS171に進める。また吹き出し描画部142は、左寄せでなければ、処理をステップS172に進める。
[ステップS171]吹き出し描画部142は、基準座標Xに、右寄せ時のx軸の基準座標値Xlを設定する。基準座標値Xlは、吹き出し枠の左側の辺の位置を示している。吹き出し描画部142は、その後、処理をステップS181に進める。
[ステップS172]吹き出し描画部142は、基準座標Xに、センタリング時のx軸の基準座標値Xmを設定する。基準座標値Xmは、吹き出し枠の中心ライン51(図16参照)の位置を示している。吹き出し描画部142は、その後、処理をステップS181に進める。
図19は、吹き出し描画処理の手順を示すフローチャート(2/3)である。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS181]吹き出し描画部142は、左側座標配列L[i][j]と右側座標配列R[i][j]を生成する。これらの配列は2次元配列であり、変数iは「i=0,1,2,・・・,h,h+1」の値を採り、変数jは「x,y」の値を採る。
[ステップS182]吹き出し描画部142は、変数iを0からh+1までインクリメント(i=i+1)しながら、ステップS183~S184の吹き出し多角形座標処理を繰り返す。
[ステップS183]吹き出し描画部142は、左側の上からi番目の制御点の座標を算出し、左側座標配列L[i][j]に設定する。例えば吹き出し描画部142は、基準座標Xと左シフト幅SLを用いて、以下の処理を行う。
L[i][x,y]=[X-SL,L[i-1][y]+f[i]] (6)
これは、左側の上からi番目の制御点のx座標が「X-SL」、y座標が「L[i-1][y]+f[i]」であることを示している。L[i-1][y]は、上からi-1番目の制御点のy座標である。吹き出し描画部142は、i=0の場合、例えばL[i-1][y]=Yとする。Yは、吹き出し表示領域の上端のy座標である。また吹き出し描画部142は、f(0)=0、f(h+1)=f(h)とする。
[ステップS184]吹き出し描画部142は、右側の上からi番目の制御点の座標を算出し、右側座標配列R[i][j]に設定する。例えば吹き出し描画部142は、基準座標Xと右シフト幅SRを用いて、以下の処理を行う。
R[i][x,y]=[X+SR,L[i-1][y]+f[i]] (7)
これは、右側の上からi番目の制御点のx座標が「X+SR」、y座標が「L[i-1][y]+f[i]」であることを示している。
[ステップS185]吹き出し描画部142は、変数iをインクリメントするとh+1を超える場合、ステップS183~S184の繰り返し処理を終了し、処理をステップS186に進める。
[ステップS186]吹き出し描画部142は、左側座標配列と右側座標配列とを1つの配列(多角形座標配列)に結合する。
[ステップS187]吹き出し描画部142は、多角形座標配列に示される隣接する制御点同士を接続する線(吹き出し枠)を描画する。吹き出し描画部142は、その後、処理をステップS191に進める(図20参照)。
図20は、吹き出し描画処理の手順を示すフローチャート(3/3)である。以下、図20に示す処理をステップ番号に沿って説明する。
[ステップS191]吹き出し描画部142は、描画した吹き出し枠内にテキスト描画領域を作成する。
[ステップS192]吹き出し描画部142は、コメントの投稿者に応じて、吹き出し内のコメントの配置(左寄せ/センタリング/右寄せ)を設定する。
[ステップS193]吹き出し描画部142は、変数iを1からhまでインクリメント(i=i+1)しながら、ステップS194のコメント描画処理を繰り返す。
[ステップS194]吹き出し描画部142は、コメントのi行目をフォントサイズf[i]で描画する。
[ステップS195]吹き出し描画部142は、変数iをインクリメントするとhを超える場合、ステップS194の繰り返し処理を終了すると共に、吹き出し描画処理を終了する。
このようにして、長文のコメントであっても、所定の範囲内の領域に全文を表示することができる。その結果、会話の流れが分かりやすく、かつ長文のコメントの全体を確認可能なチャット画面が表示される。
図21は、チャット画面の表示例を示す図である。スマートフォン100の画面160には、例えばチャットボットの投稿であることを示すチャットボットアイコン161,162と、スマートフォン100を使用しているユーザの投稿であることを示すユーザアイコン163,164が表示されている。チャットボットアイコン161,162に対応付けられた吹き出し166,168のコメントは、左寄せの配置である。ユーザアイコン163,164に対応付けられた吹き出し165,167のコメントは、文章の行数が2行のため、フォントサイズと吹き出し形状の制御は不要であることから、通常の吹き出し形状となっているが、文章は右寄せとなっている。もしこの文章が長文であった場合、ユーザの投稿したコメントは右寄せの吹き出し形状となる。
例えば吹き出し166のコメントは長文であり、カレント行以外の行の文字は、カレント行よりも小さく表示されている。小さく表示された文字の中に、強調された文字が含まれる場合、スマートフォン100は、その文字を指し示す矢印と、強調表示マーク170を表示することができる。強調表示マーク170が表示されていることで、ユーザは、小さく表示された文字の中に、重要な記述が含まれていることを容易に認識できる。
画面160の下には、投稿用のテキストボックス169が表示されている。ユーザがテキストボックス169にコメントを入力し、入力内容の確定操作を行うと、スマートフォン100は、入力されたコメントをチャットシステムに新たに投稿する。
〔その他の実施の形態〕
第2の実施の形態では、フリックまたはスワイプでカレント行を移動させているが、他の方法でカレント行を移動させることもできる。例えばユーザが吹き出し内をタップしたとき、スマートフォン100は、タップされた位置の行をカレント行の中心行とするように、カレント行を移動させてもよい。
また第2の実施の形態に示した吹き出しの表示方法は、スマートフォン100に限らず、タブレット端末またはパーソナルコンピュータでも実施することができる。
さらに第2の実施の形態に示した吹き出しの表示方法は、チャット以外のソフトウェアにおける吹き出しの表示にも適用可能である。
また第2の実施の形態では、吹き出し内にコメントを横書きで表示しているが、スマートフォン100は、コメントを縦書きで表示することもできる。スマートフォン100は、コメントを縦書きで表示した場合、吹き出し枠の縦幅を、カレント行の位置に応じて制御する。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。