図1は、本発明の一実施形態に係るシステム1の構成を概略的に示す構成図である。一実施形態に係るシステム1は、図示するように、複数の端末装置30と、この端末装置30とインターネット等の通信網20を介して通信可能に接続されたサーバ10とを備え、端末装置30のユーザ間で音声チャットを可能とする。
一実施形態におけるサーバ10は、音声チャットサービスの他、オンラインゲーム、電子書籍、動画コンテンツ、及び音楽コンテンツ等の様々なデジタルコンテンツの提供サービス、テキストチャット(ミニメール)、サークル、アバター、日記、伝言板、及び挨拶等の様々なユーザ間のコミュニケーション機能を実現するコミュニケーションプラットフォーム(SNSプラットフォーム)サービス、並びに電子商取引サービス等の様々なインターネットサービスを、端末装置30を操作するユーザに提供する。
一実施形態におけるサーバ10は、一般的なコンピュータとして構成されており、図示のとおり、CPU(コンピュータプロセッサ)11と、メインメモリ12と、ユーザI/F13と、通信I/F14と、ストレージ15と、ディスクドライブ16とを含み、これらの各構成要素がバス17を介して互いに電気的に接続されている。CPU11は、ストレージ15からオペレーティングシステムやその他様々なプログラムをメインメモリ12にロードし、このロードしたプログラムに含まれる命令を実行する。メインメモリ12は、CPU11が実行するプログラムを格納するために用いられ、例えば、DRAM等によって構成される。なお、一実施形態におけるサーバ10は、それぞれ上述したようなハードウェア構成を有する複数のコンピュータを用いて構成され得る。
ユーザI/F13は、例えば、オペレータの入力を受け付けるキーボードやマウス等の情報入力装置と、CPU11の演算結果を出力する液晶ディスプレイ等の情報出力装置とを含む。通信I/F14は、ハードウェア、ファームウェア、又はTCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網20を介して端末装置30と通信可能に構成される。
ストレージ15は、例えば磁気ディスクドライブで構成され、各種サービスの提供を制御するための制御用プログラム等の様々なプログラムが記憶される。また、ストレージ15には、各種サービスの提供において用いられる各種データも記憶され得る。ストレージ15に記憶され得る各種データは、サーバ10と通信可能に接続されるサーバ10とは物理的に別体のデータベースサーバ等に格納されてもよい。ディスクドライブ16は、CD−ROM、DVD−ROM、DVD−R等の各種の記憶メディアに格納されたデータを読み込み、又は、これらの記憶メディアにデータを書き込む。
一実施形態において、サーバ10は、階層構造の複数のウェブページから成るウェブサイトを管理するウェブサーバとしても機能し、こうしたウェブサイトを介して上述した様々なインターネットサービスを端末装置30に対して提供し得る。ストレージ15には、このウェブページに対応するHTMLデータも記憶され得る。HTMLデータは、様々な画像データが関連付けられ、又、JavaScript(登録商標)等のスクリプト言語等で記述された様々なプログラムが埋め込まれ得る。
また、一実施形態において、サーバ10は、端末装置30においてウェブブラウザ以外の実行環境上で実行されるアプリケーションを介して上述した様々なインターネットサービスを端末装置30に対して提供し得る。ストレージ15には、こうしたアプリケーションも記憶され得る。このアプリケーションは、例えば、Objective−CやJava(登録商標)等のプログラミング言語を用いて作成され、様々な画像データが含まれ得る。ストレージ15に記憶されたアプリケーションは、配信要求に応じて端末装置30に配信される。なお、端末装置30は、こうしたアプリケーションを、サーバ10以外の他のサーバ(アプリマーケットを提供するサーバ)等からダウンロードすることもできる。
このように、サーバ10は、各種サービスを提供するためのウェブサイトを管理し、当該ウェブサイトを構成するウェブページ(HTMLデータ)を端末装置30からの要求に応答して配信することにより、端末装置30のユーザに対して各種サービスを提供することができる。また、上述したように、サーバ10は、このようなウェブページ(ウェブブラウザ)を用いたサービスの提供とは代替的に、又は、これに加えて、端末装置30において実行されるアプリケーションとの通信に基づいて各種サービスを提供することができる。いずれの態様でサービスを提供するにしても、サーバ10は、各種サービスの提供に必要な各種データ(画面表示に必要なデータを含む)を端末装置30との間で送受信することができる。また、サーバ10は、各ユーザを識別する識別情報(例えば、ユーザID)毎にサービスの提供に必要な各種データを記憶することによって、ユーザ毎にサービスの提供状況(例えば、ゲームの進行状況等)を管理することができる。詳細な説明は省略するが、サーバ10は、サービスの提供の開始時におけるユーザの認証処理やサービスの提供に応じて発生する課金処理等を行う機能を有することもできる。
一実施形態における端末装置30は、サーバ10が提供するウェブサイトのウェブページをウェブブラウザ上で表示すると共にアプリケーションを実行するための実行環境を実装した任意の情報処理装置であり、パーソナルコンピュータ、スマートフォン、タブレット端末、ウェアラブルデバイス、及びゲーム専用端末等が含まれ得る。
端末装置30は、一般的なコンピュータとして構成され、図1に示すとおり、CPU(コンピュータプロセッサ)31と、メインメモリ32と、ユーザI/F33と、通信I/F34と、ストレージ35と、を含み、これらの各構成要素がバス36を介して互いに電気的に接続されている。
CPU31は、ストレージ35からオペレーティングシステムやその他様々なプログラムをメインメモリ32にロードし、このロードしたプログラムに含まれる命令を実行する。メインメモリ32は、CPU31が実行するプログラムを格納するために用いられ、例えば、DRAM等によって構成される。
ユーザI/F33は、例えば、ユーザの入力を受け付けるタッチパネル、キーボード、ボタン及びマウス等の情報入力装置と、CPU31の演算結果を出力する液晶ディスプレイ等の情報出力装置とを含む。また、ユーザI/F33は、音声を入力して電気信号に変換する一般的なマイク33a(音声入力部)と、電気信号を音声に変換して出力する一般的なスピーカー(音声出力部)33bとを含む。通信I/F34は、ハードウェア、ファームウェア、又は、TCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網20を介してサーバ10と通信可能に構成される。
ストレージ35は、例えば磁気ディスクドライブやフラッシュメモリ等により構成され、オペレーティングシステム等の様々なプログラムが記憶される。また、ストレージ35は、サーバ10等から受信した様々なアプリケーションが記憶され得る。
端末装置30は、例えば、HTML形式のファイル(HTMLデータ)を解釈して画面表示するためのウェブブラウザを備えており、このウェブブラウザの機能によりサーバ10から取得したHTMLデータを解釈して、受信したHTMLデータに対応するウェブページを表示することができる。また、端末装置30のウェブブラウザには、HTMLデータに関連付けられた様々な形式のファイルを実行可能なプラグインソフトが組み込まれ得る。
端末装置30のユーザがサーバ10によって提供される各種サービスを受ける際には、例えば、HTMLデータやアプリケーションによって指示されたアニメーションや操作用アイコン等が端末装置30に画面表示される。ユーザは、端末装置30のタッチパネル等を用いて各種指示を入力することができる。ユーザから入力された指示は、端末装置30のウェブブラウザやNgCore(商標)等のアプリケーション実行環境の機能を介してサーバ10に伝達される。
次に、このように構成された一実施形態におけるサーバ10が有する機能について説明する。一実施形態におけるサーバ10は、上述した様々なインターネットサービスを提供するための様々な機能を有するが、ここでは、上述した音声チャットを管理するための機能を中心に説明する。図2は、一実施形態におけるサーバ10が有する機能を概略的に示すブロック図である。サーバ10は、図示するように、様々な情報を記憶する情報記憶部51と、要求元ユーザの端末装置30から音声チャットに招待する招待ユーザとの音声チャットの開始要求を受信することに応答して、招待ユーザの端末装置30に対して所定の通知情報を送信する通知情報送信部52と、要求元ユーザ及び招待ユーザが音声チャットを実行可能な実行可能状態となるのを監視する状態監視部53と、要求元ユーザ及び招待ユーザが上述した実行可能状態となったときに、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信を可能とする音声チャット制御部54と、を有する。これらの機能は、サーバ10のCPU11やメインメモリ12等のハードウェアと、ストレージ15等に記憶されている各種プログラム等のソフトウェアとが協働して動作することによって実現され、例えば、上述した各機能に対応する1又は複数のコンピュータプログラムに含まれる命令を、サーバ10のCPU11が実行することによって実現される。
情報記憶部51は、サーバ10のストレージ15等によって実現され、ユーザに関するユーザ情報を管理するユーザ情報管理テーブル51aと、ユーザ間で実行される音声チャットの単位であるチャット単位に関するチャット単位情報を管理するチャット単位情報管理テーブル51bと、を有する。図3は、一実施形態のユーザ情報管理テーブル51aにおいて管理される情報の一例を示す。ユーザ情報管理テーブル51aは、図示するように、個々のユーザを識別する「ユーザID」に対応付けて、このユーザの「基本情報」(例えば、ニックネーム、性別、年齢、及びユーザ画像等が含まれる)、このユーザのフレンド(例えば、一方のユーザによるフレンド申請を他方のユーザが受諾することによって成立する)に関する情報を示す「フレンド情報」、このユーザが保有する音声スタンプに関する情報を示す「音声スタンプ情報」、このユーザの音声チャットサービスへのログイン状態(オンライン状態)を示す「ログイン状態」等の情報を管理する。
ここで、上述した「音声スタンプ」について説明する。音声スタンプは、一実施形態における音声チャットサービスで利用可能な音声ファイルであり、各ユーザの端末装置30上で再生(音声出力)されるものである。音声スタンプは、例えば、WAVやAIFF等のファイルフォーマットが適用された音声ファイルとして構成される。一実施形態では、ユーザが保有する音声スタンプは、このユーザの端末装置30(例えば、ストレージ35)に格納されると共にサーバ10(例えば、ストレージ15)にも重複して格納され、自動的に又はユーザによる操作に応じて、端末装置30及びサーバ10に格納されている音声スタンプが同期する。ユーザは、例えば、購入し、又は、他のユーザ等からプレゼントされることによって音声スタンプを入手することができる。更に、一実施形態において、ユーザが、音声チャットサービスで利用可能な音声スタンプを自ら作成(録音)することもできる。上述したユーザ情報管理テーブル51aの「音声スタンプ情報」には、例えば、個々の音声スタンプ(音声ファイル)を識別する識別情報(ファイル名を含む)やこの音声スタンプのアイコン、名称、説明等の情報が含まれる。
図4は、一実施形態のチャット単位情報管理テーブル51bにおいて管理される情報の一例を示す。チャット単位情報管理テーブル51bは、図示するように、個々のチャット単位を識別する「チャット単位ID」に対応付けて、このチャット単位のメンバであるユーザに関する情報を示す「メンバ情報」等の情報を管理する。一実施形態における「チャット単位」は、上述したように、ユーザ間で実行される音声チャットの単位であり、チャットルーム、チャットグループ等と呼ばれることもある。「メンバ情報」は、このチャット単位に所属するメンバである各ユーザの「ユーザID」、各ユーザがこのチャット単位での音声チャットを実行可能な実行可能状態であるか否かを示す「実行可能フラグ」等の情報が含まれる。一実施形態において、チャット単位のメンバは、このチャット単位を作成した(音声チャットを新たに開始した)ユーザ、このユーザからこのチャット単位に招待されたユーザ、及び、招待されたユーザから更に招待されたユーザ等が含まれ得る。
一実施形態の状態監視部53は、上述したように、要求元ユーザ及び招待ユーザ(チャット単位のメンバ)が音声チャットを実行可能な実行可能状態となるのを監視する。ユーザの監視は、具体的には、ユーザによる操作に応じて端末装置30から送信される各種データ等に基づいて、上述したチャット単位情報管理テーブル51bの「メンバ情報」における「実行可能フラグ」を更新することによって行われる。詳細は後述する。
一実施形態における音声チャット制御部54は、上述したように、要求元ユーザ及び招待ユーザが実行可能状態となったときに、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信を可能とする。また、チャット単位のメンバであるユーザ数が3以上である場合には、2以上のユーザが実行可能状態となったときに、実行可能状態となったユーザの端末装置30間での音声チャット通信を可能とする。音声チャット通信を可能とすることは、具体的には、例えば、各端末装置30のマイク33aを介して入力される音声の音声データが、他の端末装置30に送信されるようにすることによって実現される。この場合、各端末装置30からの音声データをサーバ10が受信して他の端末装置30に対して送信するようにしても良いし、各端末装置30からの音声データが直接他の端末装置30に送信されるようにしても良いし、各端末装置30からの音声データがサーバ10以外の他のコンピュータを介して他の端末装置30に送信されるようにしても良い。即ち、サーバ10の音声チャット制御部54の機能の一部又は全部は、1又は複数の端末装置30(音声チャット通信を実行している端末装置30及び音声チャット通信を実行していない端末装置30が含まれ得る)、又は他の装置が有するようにされ得る。また、端末装置30への音声データの送信は、例えば、ストリーミング方式を適用して行うことができる。
次に、端末装置30上で(CPU31により)実行される本発明の一実施形態に係る音声チャット用プログラム60について説明する。音声チャット用プログラム60は、端末装置30のユーザが、サーバ10が提供する音声チャットサービスを利用するためのプログラムであり、例えば、HTMLデータ又はアプリケーションとして構成され得る。図5は、一実施形態における音声チャット用プログラム60の機能(モジュール構成)を示すブロック図である。一実施形態の音声チャット用プログラム60は、図示するように、他の端末装置30との音声チャット通信を実行する音声チャット通信実行モジュール61と、ユーザの指示に基づいてこのユーザがメンバであるチャット単位のメンバである他のユーザの端末装置30に対してユーザによって選択された音声スタンプ(音声ファイル)の再生を要求する音声スタンプ再生要求モジュール62と、音声スタンプの再生の要求に応答してこの音声ファイルを再生する音声スタンプ再生モジュール63と、を備える。音声チャット通信実行モジュール61は、具体的には、例えば、端末装置30のマイク33aを介して入力される音声の音声データを送信し、他の端末装置30のマイク33aを介して入力された音声の音声データを受信してスピーカー33bを介して音声として出力する。音声チャット通信実行モジュール61は、上述したサーバ10の音声チャット制御部54と協動して動作し得る。
次に、一実施形態におけるシステム1の動作について説明する。図6は、端末装置30のユーザが音声チャットを新たに開始する際にサーバ10によって実行される音声チャット開始処理の一例を示すフロー図である。この音声チャット開始処理は、端末装置30のユーザから音声チャットの開始要求を受信したときに実行される。一実施形態では、ユーザによる音声チャットの開始要求は、端末装置30に表示される音声チャットサービス用画面70を介して行われる。ここで、一実施形態における音声チャットサービス用画面70について説明する。
音声チャットサービス用画面70は、音声チャット用プログラム60が端末装置30において実行されたときに表示される画面であり、サーバ10が提供する音声チャットサービスを利用するために用いられる。図7は、音声チャットサービス用画面70の初期画面70Aの一例である。音声チャットサービス用画面70は、図示するように、上段に位置するメイン領域72と、下段左側に位置し音声チャットサービスに関する様々な情報をユーザに通知するストリーム領域74と、下段右側に位置し音声スタンプに関する情報を表示するスタンプ領域76と、を有する。メイン領域72は、音声チャットサービスの利用場面に応じた様々な情報が表示される。ストリーム領域74及びスタンプ領域76は、図示するように、タブ形式の領域として構成されており、タブを選択することによる切り替え表示が可能となっている。図6に例示する初期画面70Aにおいては、メイン領域72には、「会話を始める」と表示された開始ボタン72aが配置されている。この開始ボタン72aは、ユーザが、音声チャットを新たに開始する(チャット単位を作成する)ことを指示するためのボタンである。なお、初期画面70Aのメイン領域72において、過去に実行した音声チャット(チャット単位)の履歴を表示することも可能である。
ユーザが開始ボタン72aを選択すると、図8に例示するフレンド一覧画面80が音声チャットサービス用画面70(初期画面70A)に対してオーバーレイ表示される。フレンド一覧画面80は、図示するように、端末装置30のユーザのフレンドに関する情報(例えば、ユーザ画像及びニックネーム等)が一覧表示される。ユーザのフレンドは、ユーザ情報管理テーブル51aの「フレンド情報」において管理されており、フレンド一覧画面80に表示する情報は、端末装置30からの要求に応答してサーバ10から送信される。一実施形態では、一覧表示されているフレンドのうち、音声チャットサービスにログインしているユーザ(ユーザ情報管理テーブル51aの「ログイン状態」において管理されている)は、ユーザ画像の左上隅にログインインジケータ82が重ねて表示され、これにより、ユーザはフレンドのログイン状態を確認することができる。
ユーザが、フレンド一覧画面80に一覧表示されている複数のフレンドの中から音声チャットに招待する所望のユーザ(フレンド)を選択すると、音声チャットサービス用画面70は、図9に例示するフレンド詳細画面70Bに遷移する。このフレンド詳細画面70Bにおいては、図示するように、メイン領域72には、選択されたユーザ(この例では、ユーザB)に関する基本情報が表示されると共に、スタンプ領域76には、この選択されているユーザが保有する音声スタンプに関する情報(例えば、アイコン画像、名称、説明等)が一覧表示される。選択されているユーザが保有する音声スタンプに関する情報は、ユーザ情報管理テーブル51aの「音声スタンプ情報」において管理されている。
一実施形態では、図9のフレンド詳細画面70Bのスタンプ領域76に一覧表示されている何れかの音声スタンプを選択することによって、ユーザは、選択されているユーザとの音声チャットの開始要求を行うことができる。ユーザが何れかの音声スタンプを選択すると、具体的には、選択されているユーザ(音声チャットに招待する招待ユーザ)を特定可能な招待ユーザ情報、及び、選択されている音声スタンプを識別する音声スタンプ識別情報を含む音声チャットの開始要求が、端末装置30からサーバ10に対して送信される。
ここで、スタンプ領域76に一覧表示されている何れかの音声スタンプを選択して音声チャットの開始要求を行なう際に、ユーザが、音声スタンプに対応する音声(音声ファイルの内容)を事前に確認できるようにしても良い。例えば、スタンプ領域76の何れかの音声スタンプを選択すると、まず、選択された音声スタンプに対応する音声ファイルがサーバ10から端末装置30に送信され、端末装置30において受信した音声ファイルが再生される。その後、ユーザによる確定操作等(例えば、確定ボタンの選択等)に応じて音声チャットの開始要求が行なわれるようにすることもできる。又、端末装置30のユーザの操作に応じて、選択されているユーザが保有する音声スタンプ(音声ファイル)の全部又は一部を、端末装置30のユーザが入手できるようにしても良い。この場合、入手した音声スタンプは、端末装置30にダウンロードされてストレージ35等に記憶される。
音声スタンプが選択されて音声チャットの開始要求が行なわれると、音声チャットサービス用画面70は、図10に例示する音声チャット画面70Cに遷移する。音声チャット画面70Cは、ユーザが音声チャットを行う際に端末装置30上に表示される画面であり、図示するように、メイン領域72には、中央に配置されるマイクアイコン92と、この音声チャット(チャット単位)に新たに他のユーザを招待するための招待アイコン94と、このチャット単位のメンバである他のユーザ(端末装置30のユーザ以外のユーザ)をユーザ毎に表示するユーザアイコン96とを有する。マイクアイコン92は、ユーザが選択することによって端末装置30のマイク33aを有効化/無効化できる所謂ミュート機能に対応するアイコンとしても構成されている。一実施形態において、ユーザアイコン96は、このユーザの音声チャットサービスへのログイン状態、及び、この音声チャット(チャット単位)を実行可能な実行可能状態であるか否か(即ち、この音声チャットに参加しているか否か)が認識できるように表示される。例えば、図10の例では、上述したログインインジケータ82によってユーザのログイン状態を認識することができ、又、ユーザアイコン96の表示態様によってユーザがこの音声チャットを実行可能な実行可能状態であるか否かを認識できるようになっている(例えば、この音声チャットを実行可能な実行可能状態でないユーザは、ユーザアイコン96がグレーアウト表示される等)。
ここで、一実施形態において、音声チャット画面70Cのメイン領域72は、端末装置30のユーザがメンバとなっている複数のチャット単位のうち、1のチャット単位に関する情報が表示され、ユーザによる操作(例えば、フリック操作)によって表示するチャット単位を選択できる(切り替えられる)ようになっている。
図6のフロー図に戻り、端末装置30から音声チャットの開始要求を受信すると、サーバ10は、まず、チャット単位を設定する(ステップS100)。この処理は、サーバ10の状態監視部53によって実行される。具体的には、チャット単位情報管理テーブル51bに新たにレコードを作成し、ユニークな値を生成して「チャット単位ID」に設定し、音声チャットの要求元ユーザ、及び、音声チャットに招待された招待ユーザに関する情報を「メンバ情報」に設定する。ここで「メンバ情報」の「実行可能フラグ」には、この段階では、要求元ユーザについては実行可能状態であることを示す値(例えば、値「1」)が設定され、招待ユーザについては実行可能状態でないことを示す値(例えば、値「0」)が設定される。
続いて、招待ユーザの端末装置30に対して音声チャットへの招待に関するプッシュ通知を行って(ステップS120)、この音声チャット開始処理を終了する。この処理は、サーバ10の通知情報送信部52によって実行される。具体的には、要求元ユーザから音声チャットに招待されたことを通知する通知情報及び要求元ユーザによって選択された音声スタンプの識別情報を、招待ユーザの端末装置30に対して送信する。
このように、一実施形態では、音声チャットの開始要求が行なわれると、この音声チャットに招待された招待ユーザに対して通知情報が送信され、その後、上述した状態監視部53及び音声チャット制御部54の機能により、要求元ユーザ及び招待ユーザがこの音声チャットを実行可能な実行可能状態となったときに、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信が可能となる。以下、招待ユーザに対して通知情報が送信された後、音声チャット通信が可能となるまでの具体的な動作について説明する。
サーバ10から音声チャットの招待に関するプッシュ通知(通知情報及び音声スタンプ識別情報)を受信した招待ユーザの端末装置30では、プッシュ通知を受信したときの招待ユーザの状態に応じた動作が行われる。例えば、招待ユーザが音声チャットサービスにログインしている状態(例えば、音声チャット用プログラム60が実行されている状態)であって、且つ、他のユーザとの音声チャット(他のチャット単位での音声チャット)を行っていない状態である場合には、図11に例示する招待通知画面110が、音声チャットサービス用画面70にオーバーレイ表示される。招待通知画面110は、図示するように、音声チャットの要求元ユーザ(この例では、ユーザX)に関する情報が表示され、音声チャットへの招待を受諾するための受諾ボタン112と、音声チャットへの招待を拒否するための拒否ボタン114とが配置されている。招待を受諾又は拒否する際の動作については後述する。
また、例えば、招待ユーザが音声チャットサービスにログインしている状態であって、且つ、他のユーザとの音声チャットを行っている状態である場合には、図12に例示するように、音声チャットサービス用画面70(音声チャット画面70C)のストリーム領域74において、音声チャットの招待に関するプッシュ通知を受信した旨が表示される。具体的には、ストリーム領域74において、新たに受信している通知数を示す新着通知数領域74aの内容(通知数)が更新されると共に、要求元ユーザのユーザ画像74bが「招待を受領」というテキストと共に表示される。そして、招待ユーザがストリーム領域74内のユーザ画像74bを選択すると、上述した招待通知画面110がオーバーレイ表示される。
さらに、例えば、招待ユーザが音声チャットサービスにログインしていない状態(例えば、音声チャット用プログラム60が実行されていない状態)である場合には、端末装置30のオペレーティングシステムの機能による通知表示がなされる。図13は、オペレーティングシステムの機能による通知表示がなされている端末装置30のホーム画面(オペレーティングシステムの機能による画面)100の一例である。図示するように、ホーム画面100の画面上端に位置する通知情報表示領域102に、ユーザに対するプッシュ通知の存在を示すアイコンが表示される。そして、ユーザがこのアイコンに対応するプッシュ通知を選択すると、例えば、音声チャット用プログラム60が実行(起動)されると共に音声チャットサービスにログインし、招待通知画面110がオーバーレイ表示された音声チャットサービス用画面70が表示される。
ここで、一実施形態では、招待ユーザの端末装置30において上述した招待通知画面110が表示されるタイミングで、通知情報と共に受信した音声スタンプ識別情報に対応する音声スタンプ(音声ファイル)が再生される。具体的には、端末装置30は、ストレージ35に記憶されている複数の音声スタンプ(音声ファイル)の中から、受信した音声スタンプ識別情報が識別する音声スタンプを特定して再生する。音声スタンプ(音声ファイル)の再生は、例えば、音声チャット用プログラム60(音声スタンプ再生モジュール63)の機能、他のアプリケーションの機能、又は、オペレーティングシステムの機能を用いて実行され得る。ここで、音声スタンプを再生するタイミングは、招待通知画面110が表示されるタイミングに限定されない。例えば、招待ユーザが他のユーザとの音声チャットを行っている状態である場合において、招待通知画面110が表示されるよりも前に(例えば、ストリーム領域74にプッシュ通知を受信した旨が表示されるタイミングで)音声スタンプが再生されるようにしても良い。また、例えば、招待ユーザが音声チャットサービスにログインしていない状態である場合において、オペレーティングシステムの機能による通知表示がなされるタイミングで音声スタンプが再生されるようにしても良い。
このように端末装置30において表示された招待通知画面110を介して、招待ユーザは、要求元ユーザからの音声チャットへの招待を受諾するか拒否するかを選択することができる。招待ユーザが招待通知画面110の受諾ボタン112を選択すると、招待ユーザが音声チャットへの招待を受諾したことを示す受諾情報が、端末装置30からサーバ10に対して送信される。そして、端末装置30から受諾情報を受信すると、サーバ10の状態監視部53は、招待ユーザがこの音声チャット(チャット単位)を実行可能な実行可能状態となるように、チャット単位情報管理テーブル51bを更新する。具体的には、対応するチャット単位の「メンバ情報」における招待ユーザの「実行可能フラグ」を実行可能状態であることを示す値に変更する。
一方、招待ユーザが招待通知画面110の拒否ボタン114を選択すると、招待ユーザが音声チャットへの招待を拒否したことを示す拒否情報が、端末装置30からサーバ10に対して送信される。そして、端末装置30から拒否情報を受信すると、サーバ10の状態監視部53は、このチャット単位のメンバから招待ユーザが削除されるように、チャット単位情報管理テーブル51bを更新する。具体的には、対応するチャット単位の「メンバ情報」から招待ユーザに関する情報を削除する。この場合、サーバ10の通知情報送信部52が、要求元ユーザの端末装置30に対して、招待ユーザによる招待の拒否に関するプッシュ通知を行うようにしても良い。
ここで、招待ユーザが音声チャットへの招待を受諾してこの音声チャット(チャット単位)を実行可能な実行可能状態となったときに、要求元ユーザが実行可能状態を維持している場合には、要求元ユーザと招待ユーザの両方が実行可能状態となるから、サーバ10の音声チャット制御部54の上述した機能により、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信が可能となり、音声チャット用プログラム60の音声チャット通信実行モジュール61の機能により、端末装置30間での音声チャット通信が実行される。図14は、このときに招待ユーザの端末装置30に表示される音声チャット画面70Cの一例である。図示するように、メイン領域72において、音声チャットの要求元ユーザ(ユーザX)に対応するユーザアイコン96が表示されている。また、スタンプ領域76には、音声チャット(チャット単位)のメンバである要求元ユーザが保有する音声スタンプに関する情報が一覧表示される。なお、要求元ユーザの端末装置30においても、図14に例示した音声チャット画面70Cと同様の音声チャット画面70Cが表示される。
こうして要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信が可能となると、要求元ユーザ及び招待ユーザは音声チャットを実行することができる。具体的には、各ユーザの端末装置30のマイク33aを介して入力された音声の音声データが他のユーザの端末装置30に送信されてスピーカー33bから音声出力される。
一方、招待ユーザが音声チャットへの招待を受諾してこの音声チャットを実行可能な実行可能状態となったときに、要求元ユーザが実行可能状態でない場合には、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信は可能とならない。図15は、このときに招待ユーザの端末装置30に表示される音声チャット画面70Cの一例である。図示するように、この場合、メイン領域72に表示される要求元ユーザ(ユーザX)に対応するユーザアイコン96は、実行可能状態でないことを示す表示態様(例えば、グレーアウト表示)となっている。招待ユーザが音声チャットへの招待を受諾したときに要求元ユーザが実行可能状態でない場合としては、例えば、音声チャットの開始要求を行なった後に、要求元ユーザが、ログオフした(音声チャット用プログラム60を終了した)場合、他のユーザとの音声チャット(他のチャット単位での音声チャット)を開始した場合等が考えられ得る。
一実施形態では、招待ユーザが音声チャットへの招待を受諾してこの音声チャットを実行可能な実行可能状態となったときに要求元ユーザが実行可能状態でない場合に、サーバ10の通知情報送信部52によって、要求元ユーザの端末装置30に対して招待ユーザによる招待の受諾に関するプッシュ通知を行う。そして、プッシュ通知を受信した要求元ユーザの端末装置30では、プッシュ通知を受信したときの要求元ユーザの状態に応じた動作が行われ得る。例えば、オペレーティングシステムの機能によって招待の受諾に関するプッシュ通知を受信した旨の通知表示がなされ、又は、音声チャット画面70Cのストリーム領域74において、招待の受諾に関するプッシュ通知を受信した旨が表示される。
図16は、招待ユーザが音声チャットへの招待を受諾したときに要求元のユーザが他のユーザ(この例では、ユーザD及びユーザF)との音声チャットを実行していた場合の、要求元ユーザの端末装置30に表示される音声チャット画面70Cの一例である。図示するように、音声チャット画面70Cのストリーム領域74において、招待の受諾に関するプッシュ通知を受信した旨が表示され、具体的には、新着通知数領域74aの内容(通知数)が更新されると共に、招待を受諾した招待ユーザ(ユーザB)のユーザ画像74bが「招待を受諾」というテキストと共に表示される。そして、要求元ユーザが、ストリーム領域74内のユーザ画像74bを選択すると(又は、メイン領域72をフリック操作すると)、図17に例示するように、メイン領域72が、招待ユーザ(ユーザB)との音声チャット(チャット単位)に関する情報の表示に切り替わる。この段階では、要求元ユーザは、招待ユーザとの音声チャットは実行可能状態となっておらず、他のユーザ(ユーザD及びユーザF)との音声チャットが継続されており、メイン領域72のユーザアイコン92は、マイク33aの無効状態(ミュート状態)に対応する表示(無効状態表示)となっている。
そして、要求元ユーザが無効状態表示のマイクアイコン92を選択すると、マイクアイコン92は、マイク33aの有効状態(非ミュート状態)に対応する表示(有効状態表示)となり、要求元ユーザは、招待ユーザ(ユーザB)との音声チャットが実行可能状態となる(招待ユーザ(ユーザB)との音声チャットに参加する)。即ち、サーバ10の状態監視部53は、要求元ユーザがこの招待ユーザ(ユーザB)との音声チャット(チャット単位)を実行可能な実行可能状態となるように、チャット単位情報管理テーブル51bを更新する。具体的には、対応するチャット単位の「メンバ情報」における要求元ユーザの「実行可能フラグ」を実行可能状態であることを示す値に変更する。また、要求元ユーザが他のユーザ(ユーザD及びユーザF)と実行していた音声チャットは実行可能状態でなくなり、対応するチャット単位の「メンバ情報」における要求元ユーザの「実行可能フラグ」は実行可能状態でないことを示す値に変更される。そして、招待ユーザが実行可能状態のままである場合には、要求元ユーザと招待ユーザの両方が実行可能状態となるから、サーバ10の音声チャット制御部54の機能により、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信が可能となる。
このように、一実施形態においては、音声チャット画面70Cのメイン領域72に表示されるチャット単位をフリック操作等によって切り替えて、マイクアイコン92を選択(有効状態表示/無効状態表示の切り替え)することにより、端末装置30のユーザは、実行可能状態となるチャット単位(即ち、音声チャットを実行する(参加する)チャット単位)を選択する(切り替える)。言い換えると、端末装置30(音声チャット画面70C)の操作を介してユーザによって選択されたチャット単位が実行可能状態となるように、サーバ10の状態監視部53は、端末装置30から送信されるデータに基づいてチャット単位情報管理テーブル51bの「実行可能フラグ」を更新する。
ここで、一実施形態において、音声チャットを新たに開始した後(チャット単位を作成した後)に、チャット単位のメンバは、新たにユーザを招待することも可能である。この場合、新たな招待ユーザに関し、上述した音声チャットを新たに開始する際における招待ユーザに関する動作と同様の動作が行われる。具体的には、例えば、上述した音声チャット画面70Cのメイン領域72に配置された招待アイコン94をユーザが選択すると、図8に例示したフレンド一覧画面80がオーバーレイ表示される。そして、一覧表示されているフレンドの中から新たに招待する所望のユーザを選択すると、図9に例示したフレンド詳細画面70Bに遷移し、このフレンド詳細画面70Bのスタンプ領域76に一覧表示されている何れかの音声スタンプを選択することによって、選択されているユーザの音声チャット(チャット単位)への招待の要求(招待要求)を行なうことができる。端末装置30から招待要求を受信したサーバ10の状態監視部53は、新たな招待ユーザがこのチャット単位のメンバとなるように、チャット単位情報管理テーブル51bの「メンバ情報」を更新し、新たな招待ユーザの端末装置30に対して音声チャットへの招待に関するプッシュ通知を行う。これ以降の動作は、音声チャットを新たに開始する際の動作と同様であり、例えば、新たな招待ユーザが音声チャットへの招待を受諾すると、この新たな招待ユーザは、この音声チャットを実行可能な実行可能状態となる。
ここで、一実施形態において、各ユーザは、自身がメンバであるチャット単位において、他のユーザの端末装置30に対して音声スタンプの再生を要求することが出来る。具体的には、例えば、音声チャット画面70Cのスタンプ領域76に一覧表示されている音声スタンプの中から所望の音声スタンプを選択すると、選択された音声スタンプの識別情報が、例えばサーバ10を介して他のユーザの端末装置30に送信され、音声スタンプ識別情報が識別する音声スタンプ(音声ファイル)が、他のユーザの端末装置30において再生される。
一実施形態において、選択された音声スタンプの再生要求が、チャット単位のメンバである他のユーザの全てに対して行われるようにしても良いし、チャット単位のメンバの中からユーザによって選択された1又は複数の他のユーザに対して行われるようにしても良い。また、音声スタンプの再生要求を複数の他のユーザに対して行う場合には、他のユーザの一部が、選択された音声スタンプを保有していないことも考えられる。この場合、他のユーザの端末装置30においてサーバ10に記憶されている音声スタンプを取得して再生(ストリーミング再生又はダウンロード再生等)するようにしても良い。また、自動的に又はユーザによる操作に応じて、各ユーザが、チャット単位のメンバである他のユーザが保有する音声スタンプをサーバ10から取得して端末装置30に記憶できるようにしても良い。
また、一実施形態において、音声スタンプの再生要求は、音声チャットのメンバのうち、この音声チャットに参加している他のユーザ(実行可能状態であるユーザ)、及び、この音声チャットに参加していない他のユーザ(実行可能状態でないユーザ)に対して行うことができる。図18は、この音声チャットに参加している他のユーザに音声スタンプの再生を要求した場合の、この他のユーザの端末装置30に表示される音声チャット画面70Cの一例である。この場合、再生の要求元ユーザに対応するユーザアイコン96の右下隅に、再生を要求された音声スタンプに関する情報(この例では、音声アイコン97)が表示され、これによりユーザに対して音声ファイルの再生要求の受信を通知する。そして、この音声アイコン97を含むユーザアイコン96がユーザによって選択されると、端末装置30において音声スタンプ(音声ファイル)が再生される。ここで、一実施形態において、ユーザがユーザアイコン96を選択して対応する音声スタンプを再生するより前に、他の音声スタンプの再生要求を受信した場合には、最後に受信した再生要求の音声スタンプの音声アイコン97が表示され、ユーザがユーザアイコン96を選択すると、未再生の複数の音声スタンプが連続して再生される。また、端末装置30において、音声スタンプの再生要求を受信したタイミングで(例えば、音声スタンプに関する情報(音声アイコン97)を表示するときに)所定のアラーム音を出力するようにしても良い。さらに、ユーザアイコン96の選択等のユーザのアクションがなくとも、音声スタンプを再生するようにしても良い。
図19は、この音声チャットに参加していない他のユーザに音声スタンプの再生を要求した場合の、この他のユーザの端末装置30に表示される音声チャット画面70Cの一例である。この場合、実行中の(参加している)音声チャット(チャット単位)に関する情報を表示するメイン領域72において、他の音声チャットのメンバからの音声スタンプの再生要求の受信を示す受信通知98が表示される。一実施形態において、この受信通知98には、音声スタンプの再生の要求元ユーザに関する情報(例えば、ユーザ画像)及び再生を要求された音声スタンプに関する情報(例えば、音声アイコン)が表示される。ユーザが、この受信通知98を選択すると、メイン領域72は、図20に例示するように、対応するチャット単位(再生の要求元ユーザが音声スタンプの再生要求を行なったチャット単位)の表示に切り替わる。そして、ユーザがユーザアイコン96を選択すると、端末装置30において音声スタンプが再生される。図20においてマイクアイコン92が無効状態表示となっていることからも分かるように、この段階では、音声スタンプを再生した他のユーザが参加していた音声チャット(チャット単位)への参加は継続しており、この他のユーザがマイクアイコン92を選択することによって、参加する音声チャットが切り替わる。
また、一実施形態において、各ユーザは、自身がメンバであって参加していない音声チャット(チャット単位)の他のメンバに対して音声スタンプの再生を要求することも可能である。例えば、図20の音声チャット画面70Cにおいて、マイクアイコン92を選択して参加する音声チャットの切り替えを行うことなく、この音声チャットのメンバである他のユーザ(この例ではユーザB)に対して音声スタンプの再生を要求することができる。
このように、一実施形態では、チャット単位のメンバ内で、音声チャットへの参加状態にかかわらず、他のユーザの端末装置30上での音声スタンプの再生(ユーザから見ると、他のユーザに対する音声スタンプの「送信」と言うこともできる)を楽しむことができる。例えば、参加するチャット単位において、マイク33aを介した発話によるコミュニケーションと共に音声スタンプによるコミュニケーションを楽しむことができる。また、例えば、参加するチャット単位においては発話によるコミュニケーションを楽しみつつ、参加しないチャット単位においては音声スタンプによるコミュニケーションを楽しむことができる。さらに、例えば、ユーザが発話できない環境に居る場合であっても、音声スタンプによるコミュニケーションを楽しむことができる。
上述した一実施形態では、音声チャットの開始要求を行う際に招待ユーザの端末装置30上で再生される音声スタンプを選択するようにしたが、音声スタンプの選択を行うことなく、招待ユーザのみを選択して音声チャットの開始要求を行なうようにしても良い。
上述した一実施形態では、ユーザが保有する音声スタンプは、このユーザの端末装置30に格納されると共にサーバ10にも重複して格納されるようにしたが、音声スタンプの記憶先はこれに限定されない。例えば、ユーザの端末装置30及びサーバ10の一方のみに記憶しても良いし、その他の装置に記憶しても良い。音声スタンプをユーザの端末装置30に記憶しない場合には、音声スタンプを再生する際には、音声スタンプが記憶されている装置から取得して再生するようにすれば良い。さらに、再生の要求元のユーザの端末装置30に記憶されている音声スタンプの再生要求を他のユーザに対して行なうこともできる。この場合、要求元のユーザの端末装置30に記憶されている音声スタンプ(音声ファイル)自体を他のユーザの端末装置30に送信すれば良い。
上述した一実施形態では、招待ユーザは、招待通知画面110を介して音声チャットへの招待を受諾するか拒否するかを選択するようにしたが、招待の受諾を、音声スタンプを用いて行うようにすることもできる。例えば、招待ユーザが、招待の要求元ユーザに対して音声スタンプを送信(招待の要求元ユーザに対して音声スタンプの再生を要求)することにより、招待を受諾するようにし得る。即ち、例えば、音声チャットの開始要求を行なう際、及び、音声チャットを開始した後に新たにユーザを招待する際等において、招待ユーザに対して音声スタンプ(例えば、招待ユーザが保有する音声スタンプ)を送信し、その後、招待ユーザが音声スタンプを返信(招待の要求元ユーザに対して音声スタンプを送信)したときに、招待ユーザが音声チャットへの招待を受諾したと判定し、この招待ユーザを、この音声チャット(チャット単位)を実行可能な実行可能状態とすることもできる。
以上説明した一実施形態におけるシステム1では、チャット単位のメンバである複数のユーザのうちこのチャット単位に参加する(実行可能状態である)ユーザの端末装置30が、このチャット単位における音声チャットを実現する音声チャット通信を実行し、このチャット単位のメンバである一のユーザの端末装置30が、この一のユーザの指示に基づいてこのチャット単位のメンバである他のユーザの端末装置30に対して音声ファイルの再生を要求し、この他のユーザの端末装置30が、音声ファイルの再生の要求に応答してこの音声ファイルを再生する。従って、ユーザは、マイク33aを介した発話によるコミュニケーションに加え、音声スタンプ(音声ファイル)を用いたコミュニケーションを楽しむことができる。即ち、一実施形態におけるシステム1は、音声チャットにおいて、ユーザの発話等以外の音声によるコミュニケーションを可能とすることができる。
一実施形態では、招待ユーザが音声チャットへの招待を受諾すると、この招待ユーザがこの音声チャット(チャット単位)を実行可能な実行可能状態となるようにしたが、招待ユーザが実行可能状態となる契機はこれに限定されない。例えば、サーバ10からプッシュ通知される通知情報を、招待ユーザが表示、閲覧、又は確認したことに応じて、招待ユーザが実行可能状態となるようにしても良い。更に、サーバ10からプッシュ通知される通知情報に対するアクションの有無にかかわらず、招待ユーザが実行可能状態となるようにしても良い。
更に、音声チャットを新たに開始するときに、この音声チャットに招待される招待ユーザの端末装置30に対するプッシュ通知を行うことなく、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信を直ちに可能とすることも可能である。
即ち、本発明の他の実施形態では、端末装置30から音声チャットの開始要求を受信すると、サーバ10の状態監視部53は、まず、招待ユーザが新たな音声チャットを実行可能な実行可能状態であるか否かを判定する。例えば、招待ユーザが音声チャットサービスにログインしている状態であって(ユーザ情報管理テーブル51aの「ログイン状態」を参照して判断できる)、且つ、他のユーザとの音声チャット(他のチャット単位での音声チャット)を行っていない状態である(チャット単位情報管理テーブル51bを参照して判断できるる)場合に、招待ユーザが新たな音声チャットを実行可能な実行可能状態であると判定することができる。そして、招待ユーザが新たな音声チャットを実行可能な実行可能状態であると判定された場合には、サーバ10の状態監視部53が、要求元ユーザ及び招待ユーザの両方を実行可能状態としてチャット単位を設定する(チャット単位情報管理テーブル51bに新たなレコードを作成する)。その後、音声チャット制御部54の機能により、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信が直ちに可能となる。なお、他の実施形態において、招待ユーザが新たな音声チャットを実行可能な実行可能状態でないと判定された場合には、上述した一実施形態と同様に、招待ユーザの端末装置30に対するプッシュ通知が行われる。
他の実施形態において、招待ユーザが新たな音声チャットを実行可能な実行可能状態であると判定されて音声チャット通信を直ちに可能とする場合、音声チャットの開始時における招待ユーザの端末装置30のマイク33aが無効状態となるようにしても良い。その後、例えば、招待ユーザが音声チャット画面70Cのマイクアイコン92を選択することにより、マイク33aが有効状態とされる。
他の実施形態では、招待ユーザが新たな音声チャットを実行可能な実行可能状態である場合には、要求元ユーザからの音声チャットの開始要求の後、要求元ユーザの端末装置30と招待ユーザの端末装置30との間の音声チャット通信が直ちに可能となるから、ユーザは、他のユーザとの音声チャットを容易に開始できる。
上述した実施形態では、ユーザが音声チャットを行っている状態である場合には、他のユーザとの音声チャット(他のチャット単位での音声チャット)を行えない(実行可能状態とならない)場合について説明したが、メンバの異なる複数の音声チャット(複数のチャット単位)の音声チャット通信を同時に行えるようにすることも可能である。この場合、例えば、新たな音声チャットの開始に応じて、実行中の音声チャットの音量が小さくなるようにすることもできる。具体的には、例えば、音声チャット制御部54の機能により、各音声チャット(チャット単位)に対応する音声データの音量を調整することができる。こうすれば、ユーザが音声チャットを行っている状態である場合であっても、直ちに他の音声チャット(チャット単位)を開始することができる。
本明細書で説明された処理及び手順は、実施形態中で明示的に説明されたもの以外にも、ソフトウェア、ハードウェアまたはこれらの任意の組み合わせによって実現される。より具体的には、本明細書で説明される処理及び手順は、集積回路、揮発性メモリ、不揮発性メモリ、磁気ディスク、光ストレージ等の媒体に、当該処理に相当するロジックを実装することによっても実現される。また、本明細書で説明される処理及び手順は、それらの処理・手順をコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能である。
本明細書中で説明される処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び/又は複数のモジュールによって実行され得る。また、本明細書中で説明されるデータ、テーブル、又はデータベースが単一のメモリに格納される旨説明されたとしても、そのようなデータ、テーブル、又はデータベースは、単一の装置に備えられた複数のメモリまたは複数の装置に分散して配置された複数のメモリに分散して格納され得る。さらに、本明細書において説明されるソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
本明細書において、発明の構成要素が単数もしくは複数のいずれか一方として説明された場合、又は、単数もしくは複数のいずれとも限定せずに説明された場合であっても、文脈上別に解すべき場合を除き、当該構成要素は単数又は複数のいずれであってもよい。