(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置を含む通信システムであって、
各前記情報処理装置は、
他の前記情報処理装置と近距離無線通信を行う第１通信手段、
前記第１通信手段を用いて、前記他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する受信手段、
前記第１通信手段を用いての前記他の情報処理装置との間の通信状態を検出する通信状態検出手段、
前記通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、前記受信手段によって受信された前記ビーコンに含まれる前記他装置識別情報に対応する前記他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する登録可否判断手段、
前記登録可否判断手段によって登録すると判断された前記他の情報処理装置を前記フレンドの候補として前記フレンド候補リストテーブルに登録する第１登録手段、および、
前記第１登録手段によって前記フレンド候補リストテーブルに登録された前記フレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、前記所定のアプリケーション処理の実行に用いる情報の送受信を行う通信処理手段を備える、通信システム。
【請求項２】
前記通信状態は、前記第１通信手段によって前記他の情報処理装置から受信した前記ビーコンの信号強度を含む、請求項１に記載の通信システム。
【請求項３】
前記登録可否判断手段は、前記通信状態検出手段が前記信号強度が第２の閾値を超える通信状態を有することを検出した前記他の情報処理装置を登録対象と判断する、請求項２に記載の通信システム。
【請求項４】
前記第２の閾値は、前記情報処理装置間で前記第１通信手段を用いた通信が可能なレベルの閾値（第１の閾値）よりも大きな値である、請求項３に記載の通信システム。
【請求項５】
前記第１通信手段のための通信モジュールは、前記第１の閾値を超える信号強度を有する前記ビーコンを取得し、
前記登録可否判断手段は、前記通信モジュールが取得した前記ビーコンのうち、所定レベルよりも大きな第２の閾値を超える信号強度に対応する通信状態を有する前記他の情報処理装置を前記フレンド候補リストテーブルに登録すると判断する、請求項４に記載の通信システム。
【請求項６】
前記情報処理装置は、
前記第１通信手段を用いて、前記他の情報処理装置との間で所定の情報処理のための通信を行う情報処理実行手段をさらに備え、
前記情報処理実行手段は、所定レベルの信号強度に対応する通信状態を有する前記他の情報処理装置から受信した前記ビーコンのデータを用いて、前記所定の情報処理を実行し、
前記登録可否判断手段は、前記所定レベルよりも大きな第２の閾値を超える信号強度に対応する通信状態を有する前記他の情報処理装置から受信した前記ビーコンであって、かつ、前記所定の情報処理によって、自機を特定する情報を含むビーコンであると判断されたビーコンを送信した前記他の情報処理装置を前記フレンド候補リストテーブルに登録すると判断する、請求項３に記載の通信システム。
【請求項７】
前記各情報処理装置は、所定のゲーム処理として前記所定のアプリケーションを実行するアプリケーション実行手段をさらに備え、
前記受信手段は、前記アプリケーションが実行されることによって、前記第１通信手段を用いて、前記フレンドである他の情報処理装置からアプリケーション処理用データを取得し、
前記通信処理手段は、前記通信状態検出手段によって検出された前記通信状態が、第１の閾値を超える信号強度に対応するときに、前記フレンドである他の情報処理装置と、前記アプリケーション処理データを用いた通信処理を行う、請求項３に記載の通信システム。
【請求項８】
前記通信状態は、複数段階の通信レベルのうち、前記信号強度に基づいて決定された何れか１つの通信レベルによって表される、請求項２に記載の通信システム。
【請求項９】
前記受信手段は、複数の前記他の情報処理装置から前記ビーコンを受信することが可能であり、
前記登録可否判断手段は、受信された各前記ビーコンのうち、通信状態が、前記所定の条件を満たす前記ビーコンに含まれる前記他装置識別情報に対応する前記他の情報処理装置を前記フレンド候補リストテーブルに登録すると判断する、請求項１〜８の何れかに記載の通信システム。
【請求項１０】
前記各情報処理装置は、ユーザからの選択を受け付ける入力手段を更に備え、
前記登録可否判断手段は、更に、前記フレンドの候補のうち前記入力手段によって選択されたいずれか一つの前記他の情報処理装置を前記フレンドとしてフレンドリストテーブルに登録すると判断する、請求項９に記載の通信システム。
【請求項１１】
前記各情報処理装置は、表示手段を更に備え、
前記表示手段は、前記通信状態が所定の条件を満たした各前記他の情報処理装置の関連情報を表示し、
前記登録可否判断手段は、当該表示された関連情報の中から前記入力手段によって指定された前記他の情報処理装置を前記フレンドとして前記フレンドリストテーブルに登録すると判断する、請求項１０に記載の通信システム。
【請求項１２】
前記受信手段は、更に、前記他の情報処理装置のユーザの特徴を表すユーザ情報を、前記第１通信手段を用いて受信する、請求項１１に記載の通信システム。
【請求項１３】
前記表示手段は、前記関連情報として、前記通信状態が所定の条件を満たした各前記他の情報処理装置に対応する前記ユーザ情報を表示する、請求項１２に記載の通信システム。
【請求項１４】
前記受信手段は、前記ユーザ情報として、前記他の情報処理装置のユーザに対応するキャラクタ情報を受信する、請求項１２又は１３に記載の通信システム。
【請求項１５】
前記登録可否判断手段は、前記入力手段を用いてユーザから前記他の情報処理装置が選択されたときに、当該他の情報処理装置に対して、当該選択を通知するための選択通知を前記第１通信手段を用いて送信し、かつ当該他の情報処理装置から、当該他の情報処理装置において自装置が選択されたことを通知するための選択通知が前記第１通信手段によって受信されたときに、当該他の情報処理装置を前記フレンドとして前記フレンドリストテーブルに登録すると判断する、請求項１０〜１４の何れかに記載の通信システム。
【請求項１６】
前記受信手段は、前記ビーコンを受信するための受信処理の実行を開始し、前記受信処理の開始から一定時間が経過するか、所定数の前記ビーコンを受信することによって、前記受信処理を終了する、請求項１〜１５の何れかに記載の通信システム。
【請求項１７】
前記各情報処理装置は、前記ビーコンの送信を要求するための要求情報を含む要求ビーコンを、前記第１通信手段を用いてブロードキャストで送信する送信手段をさらに備え、
前記受信手段は、前記他の情報処理装置から前記要求ビーコンに応答して送信された、応答情報を含む応答ビーコンを前記ビーコンとして前記第１通信手段で受信したときに、当該応答情報から当該他の情報処理装置に対応する前記他装置識別情報を取得する、請求項１〜１５の何れかに記載の通信システム。
【請求項１８】
前記通信システムは、サーバを更に備え、
前記サーバは、
前記各情報処理装置と通信を行うサーバ通信手段、
前記各情報処理装置において前記フレンドとして選択された前記他の情報処理装置を表す登録情報を、当該情報処理装置に対応付けて記憶する第２登録手段、および
前記サーバ通信手段によって前記情報処理装置から前記登録情報が受信されたときに、当該登録情報を用いて第２登録手段に記憶されている情報を更新する更新手段を備え、
前記各情報処理装置は、前記登録情報を、前記サーバに送信する第２通信手段を更に備える、請求項１〜１７の何れかに記載の通信システム。
【請求項１９】
他の情報処理装置と近距離無線通信を行う第１通信手段、
前記第１通信手段を用いて、前記他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する受信手段、
前記第１通信手段を用いての前記他の情報処理装置との間の通信状態を検出する通信状態検出手段、
前記通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、前記受信手段によって受信された前記ビーコンに含まれる前記他装置識別情報に対応する前記他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する登録可否判断手段、
前記登録可否判断手段によって登録すると判断された前記他の情報処理装置を前記フレンドの候補として前記フレンド候補リストテーブルに登録する第１登録手段、および、
前記第１登録手段によって前記フレンド候補リストテーブルに登録された前記フレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、前記所定のアプリケーション処理の実行に用いる情報の送受信を行う通信処理手段を備える、情報処理装置。
【請求項２０】
情報処理装置のコンピュータを、
他の情報処理装置と近距離無線通信を行う第１通信手段、
前記第１通信手段を用いて、前記他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する受信手段、
前記第１通信手段を用いての前記他の情報処理装置との間の通信状態を検出する通信状態検出手段、
前記通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、前記受信手段によって受信された前記ビーコンに含まれる前記他装置識別情報に対応する前記他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する登録可否判断手段、
前記登録可否判断手段によって登録すると判断された前記他の情報処理装置を前記フレンドの候補として前記フレンド候補リストテーブルに登録する第１登録手段、および
前記第１登録手段によって前記フレンド候補リストテーブルに登録された前記フレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、前記所定のアプリケーション処理の実行に用いる情報の送受信を行う通信処理手段として機能させる、プログラム。
【請求項２１】
他の情報処理装置と近距離無線通信を行う通信手段を備えた情報処理装置を用いた情報処理方法であって、
前記通信手段を用いて前記近距離無線通信を行うことで、前記他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する受信ステップ、
前記他の情報処理装置との間の前記近距離無線通信の通信状態を検出する通信状態検出ステップ、
前記通信状態検出ステップにおいて検出された通信状態が所定の条件を満たす場合に、前記受信ステップによって受信された前記ビーコンに含まれる前記他装置識別情報に対応する前記他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する登録可否判断ステップ、
前記登録可否判断ステップにおいて登録すると判断された前記他の情報処理装置を前記フレンドの候補として前記フレンド候補リストテーブルに登録する登録ステップ、および
前記登録ステップにおいて前記フレンド候補リストテーブルに登録された前記フレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、前記所定のアプリケーション処理の実行に用いる情報の送受信を行う通信処理ステップを含む、情報処理方法。
【請求項２２】
複数の情報処理装置を含む通信システムであって、
各前記情報処理装置は、
他の前記情報処理装置と近距離無線通信を行う第１通信手段、
前記第１通信手段を用いて、前記他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する受信手段、
前記第１通信手段を用いて前記他の情報処理装置との間の通信状態を検出する通信状態検出手段、
前記通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、前記受信手段によって受信された前記ビーコンに含まれる前記他装置識別情報に対応する前記他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドとしてフレンドリストテーブルに登録すると判断する登録可否判断手段、
前記登録可否判断手段によって登録すると判断された前記他の情報処理装置を前記フレンドとして前記フレンドリストテーブルに登録する第１登録手段、および、
前記第１登録手段によって前記フレンドリストテーブルに登録された前記フレンドのうち少なくとも１つの他の情報処理装置と、前記所定のアプリケーション処理の実行に用いる情報の送受信を行う通信処理手段を備える、通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、情報処理装置、プログラム及び情報処理方法に関し、より特定的には、通信相手の情報処理装置を複数の情報処理装置が互いに登録し、この登録した情報処理装置同士で通信を行う通信システム、情報処理装置、プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
従来、複数の情報処理装置の間で互いに登録（フレンド登録）を行い、フレンド登録を行っている複数の情報処理装置同士で通信を行う通信システムは存在している。例えば、特許文献１に記載のネットワーゲームシステムでは、複数のゲーム装置でネットワークゲームを行う際に、見知らぬゲーム装置から自機が一方的に接続されてしまう不都合を防止するために、ネットワークゲームを行う相手方のゲーム装置を予め自機にフレンド登録しておき、フレンド登録されているゲーム装置との間でのみオンラインゲームを行う。そして、特許文献１のネットワークゲームシステムでは、互いにフレンド登録したい複数のゲーム装置同士が、オンラインゲームを行う前に近距離無線通信によって相手方のゲーム装置の識別情報（装置ＩＤ）を交換し合い、取得した装置ＩＤをフレンド登録している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３３４３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のオンラインゲームシステムでは、フレンド登録をしたいゲーム装置以外のゲーム装置が自機の近距離無線通信の通信可能領域に位置するときに、この別のゲーム装置を誤ってフレンド登録してしまう可能性があった。
【０００５】
それゆえ、本発明の目的は、近距離無線通信を行って他の情報処理装置を通信相手として登録する場合であっても、より正確に所望の情報処理装置を通信相手として登録することができる通信システム、情報処理装置、プログラム及び情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
第１の発明の通信システムは、上記目的を達成するために、複数の情報処理装置を含む通信システムであって、各情報処理装置は、第１通信手段、受信手段、通信状態検出手段、登録可否判断手段、第１登録手段、および通信処理手段を備える。そして、第１通信手段は、他の情報処理装置と近距離無線通信を行う。受信手段は、第１通信手段を用いて、他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する。通信状態検出手段は、第１通信手段を用いての他の情報処理装置との間の通信状態を検出する。登録可否判断手段は、通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、受信手段によって受信されたビーコンに含まれる他装置識別情報に対応する他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する。第１登録手段は、登録可否判断手段によって登録すると判断された他の情報処理装置をフレンドの候補としてフレンド候補リストテーブルに登録する。通信処理手段は、第１登録手段によってフレンド候補リストテーブルに登録されたフレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、所定のアプリケーション処理の実行に用いる情報の送受信を行う。
【０００７】
上記構成によれば、他の情報処理装置との間の近距離無線通信の通信状態に基づいて、他の情報処理装置を通信相手として登録することができる。これによって、例えば、通信状態の検出結果が、他の情報処理装置を自機のユーザが通信相手として登録を希望するものであることを示すときに登録する構成とすることで、ユーザが登録を希望しない他の情報処理装置を誤って登録してしまうことを効果的に防止することができ、誤登録少なく所望の他の情報処理装置を登録することができる。これによって、ユーザが所望の他の情報処理装置以外の他の情報処理装置を誤って通信相手として登録してしまうことを効果的に防止することが可能である。なお、第１登録手段によって登録されていない他の情報処理装置とも通信をおこなってもよい。また、第１登録手段に登録された他の情報処理装置とネットワークを介して通信を行ってもよいし、近距離無線通信によって通信を行ってもよい。
【０００８】
第２の発明の通信システムでは、上記通信状態は、第１通信手段によって他の情報処理装置から受信したビーコンの信号強度を含んでもよい。この構成によれば、他の情報処理装置から受信した信号の強度が例えば所定値よりも小さい等のように自装置で登録したい装置ではない遠くに存在するような他の情報処理装置を誤って通信相手として登録してしまうということを効果的に防止することが可能である。
【０００９】
第３の発明の通信システムでは、登録可否判断手段は、通信状態検出手段が信号強度が第２の閾値を超える通信状態を有することを検出した他の情報処理装置を登録対象と判断してもよい。この構成によれば、他の情報処理装置から受信した信号の強度が第２の閾値以下であれば、他の情報処理装置が自装置で登録したい装置ではないと判断されて、他の情報処理装置を通信相手として登録しないことが可能である。
【００１０】
なお、信号強度は、言うまでもなく、情報処理装置と他の情報処理装置との距離が短い程に強くなる。ここで、情報処理装置が通信相手として他の情報処理装置を登録するための処理を行っているときには、情報処理装置と他の情報処理装置とがある程度近接した位置にあることが多い。なぜならば、情報処理装置のユーザと他の情報処理装置のユーザとが、ある程度近くに居る状態で（例えば、並んで又は向かい合わせで）、自装置に通信相手として他の情報処理装置の登録を行わせると考えられるからである。従って、信号の強度が第２閾値よりも小さいときには、情報処理装置と他の情報処理装置との距離がある程度近くに居る状態ではなく、他の情報処理装置は通信相手としてユーザが所望する他の情報処理装置ではない可能性が高い。上記構成によれば、この様な他の情報処理装置を通信相手として誤って登録してしまうことを効果的に防止することができる。
【００１１】
第４の発明の通信システムでは、第２の閾値は、情報処理装置間で第１通信手段を用いた通信が可能なレベルの閾値（第１の閾値）よりも大きな値であってもよい。第２の閾値は、他の情報処理装置が登録対象とみなせる程度に自装置の近くに位置するか否かを判断するためのものであるため、情報処理装置間で第１通信手段を用いた通信が可能なレベルの閾値（第１の閾値）よりも大きな値に設定される。
【００１２】
第５の発明の通信システムでは、第１通信手段のための通信モジュールは、第１の閾値を超える信号強度を有するビーコンを取得してもよい。また、登録可否判断手段は、通信モジュールが取得したビーコンのうち、所定レベルよりも大きな第２の閾値を超える信号強度に対応する通信状態を有する他の情報処理装置をフレンド候補リストテーブルに登録すると判断してもよい。この構成によれば、通信モジュールにおいて、第１通信手段を用いた通信が可能なレベルの信号強度のデータが取得され、このデータのうち、このデータの送信元の他の情報処理装置が登録対象とみなせる程度の信号強度を有するデータに対応する他の情報処理装置が登録対象として設定される。
【００１３】
第６の発明の通信システムでは、情報処理装置は、第１通信手段を用いて、他の情報処理装置との間で所定の情報処理のための通信を行う情報処理実行手段をさらに備えてもよい。また、情報処理実行手段は、所定レベルの信号強度に対応する通信状態を有する他の情報処理装置から受信したビーコンのデータを用いて、所定の情報処理を実行してもよく、登録可否判断手段は、所定レベルよりも大きな第２の閾値を超える信号強度に対応する通信状態を有する前記他の情報処理装置から受信したビーコンであって、かつ、所定の情報処理によって、自機を特定する情報を含むビーコンであると判断されたビーコンを送信した他の情報処理装置をフレンド候補リストテーブルに登録すると判断してもよい。この構成によれば、所定の情報処理の実行のためには、所定レベルの信号強度を有する他の情報処理装置からのデータが使用され、他の情報処理装置を登録するためには、所定レベルより大きな第２の閾値を超える信号強度を有することが必要となる。
【００１４】
第７の発明の通信システムでは、上記各情報処理装置は、所定のゲーム処理として所定のアプリケーションを実行するアプリケーション実行手段をさらに備える。また、上記受信手段は、アプリケーションが実行されることによって、第１通信手段を用いて、フレンドである他の情報処理装置からアプリケーション処理用データを取得してもよい。上記通信処理手段は、通信状態検出手段によって検出された通信状態が、第１の閾値を超える信号強度に対応するときに、フレンドである他の情報処理装置と、アプリケーション処理データを用いた通信処理を行ってもよい。
【００１５】
第８の発明の通信システムでは、上記通信状態は、複数段階の通信レベルのうち、信号強度に基づいて決定された何れか１つの通信レベルによって表される。この構成によれば、複数段階の通信レベルを用いて信号強度の判定を行うことができるため、処理対象となる情報を単純化することが可能となり、処理負担を低減させることができる。なお、通信レベルは、通信状態の良さを段階的に示すものである。通信レベルは、信号強度のみに基づいて決定されてもよいし、他の要素を考慮して決定されてもよい。
【００１６】
第９の発明の通信システムでは、上記受信手段は、複数の他の情報処理装置からビーコンを受信することが可能であってもよい。また、上記登録可否判断手段は、受信された各ビーコンのうち、通信状態が、所定の条件を満たすビーコンに含まれる各他装置識別情報に対応する他の情報処理装置をフレンド候補リストテーブルに登録すると判断してもよい。この構成によれば、他装置識別情報が複数取得されたときには、それぞれがその通信状態に基づいて登録の可否が判断され、一度に複数個の登録の可否を判断することができる。
【００１７】
第１０の発明の通信システムでは、上記各情報処理装置は、ユーザからの選択を受け付ける入力手段を更に備えてもよい。また、上記登録可否判断手段は、更に、フレンドの候補のうち入力手段によって選択されたいずれか一つの前記他の情報処理装置をフレンドとしてフレンドリストテーブルに登録すると判断する。この構成によれば、ユーザから選択された他の情報処理装置のみが通信相手として登録される。これによって、より正確にユーザがフレンド登録を希望する他の情報処理装置を通信相手として登録することができる。
【００１８】
第１１の発明の通信システムでは、上記各情報処理装置は、表示手段を更に備える。そして、表示手段は、通信状態が所定の条件を満たした各他の情報処理装置の関連情報を表示する。上記登録可否判断手段は、当該表示された関連情報の中から入力手段によって指定された他の情報処理装置をフレンドとしてフレンドリストテーブルに登録すると判断する。この構成によれば、関連情報が表示されるため、ユーザはこの関連情報を手掛かりに自己の情報処理装置に通信相手として登録を希望する他の情報処理装置を選択させることができるため、より正確にユーザが通信相手として登録を希望する他の情報処理装置を通信相手として登録することが可能になる。
【００１９】
第１２の発明の通信システムでは、上記受信手段は、更に、他装置識別情報に加えて他の情報処理装置のユーザの特徴を表すユーザ情報を、第１通信手段を用いて受信してもよい。この構成によれば、他の情報処理装置から近距離無線通信によってユーザ情報を受信することが可能になり、このユーザ情報を、登録可否判断手段による情報処理装置を登録するか否かの判断に使用することが可能になる。
【００２０】
第１３の発明の通信システムでは、上記表示手段は、関連情報として、通信状態が所定の条件を満たした各他の情報処理装置に対応するユーザ情報を表示してもよい。この構成によれば、ユーザがユーザ情報を手掛かりに自己の情報処理装置に通信相手として登録を希望する他の情報処理装置を選択させることができるため、より正確にユーザが通信相手として登録を希望する他の情報処理装置を登録することが可能になる。
【００２１】
第１４の発明の通信システムでは、上記受信手段は、ユーザ情報として、他の情報処理装置のユーザに対応するキャラクタ情報を受信する。この構成によれば、ユーザがキャラクタ情報を手掛かりに自己の情報処理装置に通信相手として登録を希望する他の情報処理装置を選択させることができる。例えば、他の情報処理装置のユーザを模したキャラクタが表示されていれば、ユーザはこのキャラクタを手掛かりに、当該キャラクタに対応する他の情報処理装置を選択することができるため、ユーザが通信相手として登録を希望する他の情報処理装置をより正確に通信相手として登録することが可能になる。
【００２２】
第１５の発明の通信システムでは、上記登録可否判断手段は、入力手段を用いてユーザから他の情報処理装置が選択されたときに、当該他の情報処理装置に対して、当該選択を通知するための選択通知を第１通信手段を用いて送信し、かつ当該他の情報処理装置から
、当該他の情報処理装置において自装置が選択されたことを通知するための選択通知が第１通信手段によって受信されたときに、当該他の情報処理装置を前記フレンドとしてフレンドリストテーブルに登録すると判断する。この構成によれば、他の情報処理装置においても、自装置が通信相手として登録されたときに限って、自装置においても当該他の情報処理装置が通信相手として登録される。この構成によって、他の情報処理装置で通信相手として自装置が登録されたときにのみ、自装置でも当該他の情報処理装置を通信相手として登録することができる。つまり、お互いの同意の上で登録が行われるので、希望しない相手に勝手に登録されてしまうといったことを防ぐことができる。
【００２３】
第１６の発明の通知システムでは、上記受信手段は、ビーコンを受信するための受信処理を開始し、受信処理の開始から一定時間が経過するか、所定数のビーコンを受信することによって、受信処理を終了する。ここで、無制限に取得処理を続けると、ユーザが希望しない無用な他の情報処理装置を通信相手として登録してしまったり、通信モジュールを使用し続けることで他の通信処理を行うことができない場合がある。この構成によれば、受信処理を開始してから一定時間を経過しても他の情報処理装置から他装置識別情報を受信することができないとき、または所定数の他装置識別情報を取得することができたときに、受信処理を終了することができ、上述したような不都合が生じることを防止することが可能になる。
【００２４】
第１７の発明の通信システムでは、送信手段を備え、この送信手段は、ビーコンの送信を要求するための要求情報を含む要求ビーコンを、第１通信手段を用いてブロードキャストで送信してもよい。更に、上記受信手段は、他の情報処理装置から当該要求情報ビーコンに応答して送信された、応答情報を含む応答ビーコンをビーコンとして第１通信手段で受信したときに、当該応答情報から当該他の情報処理装置に対応する他装置識別情報を取得してもよい。この構成によれば、他の情報処理装置と双方向で近距離無線通信可能なときに限って、他装置識別情報が取得される。このため、他の情報処理装置でも自装置を通信相手として登録するときにのみ自装置でも他の情報処理装置を通信相手として登録することができる。
【００２５】
第１８の発明の通信システムは、サーバを更に備えてもよい。このサーバは、サーバ通信手段、第２登録手段、および更新手段を備えてもよい。そして、サーバ通信手段は各情報処理装置と通信を行ってもよい。第２登録手段は、各情報処理装置においてフレンドとして選択された他の情報処理装置を表す登録情報を、当該情報処理装置に対応付けて記憶してもよい。そして、更新手段は、サーバ通信手段によって前記情報処理装置から前記登録情報が受信されたときに、当該登録情報を用いて第２登録手段に記憶されている情報を更新してもよい。各情報処理装置は、登録情報を、サーバに送信する第２通信手段を更に備えてもよい。この構成によれば、サーバにおいて、各情報処理装置において通信相手として登録されている他の情報処理装置が記憶され、適宜更新される。これによって、通信相手として登録されている他の情報処理装置についての何らかの情報（例えば、他の情報処理装置の通信接続状態に関する情報）をサーバから取得することが可能になる。
【００２６】
第１９の発明の情報処理装置は、第１通信手段、受信手段、通信状態検出手段、登録可否判断手段、第１登録手段、および通信処理手段を備える。そして、第１通信手段は、他の情報処理装置と近距離無線通信を行う。受信手段は、第１通信手段を用いて、他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する。通信状態検出手段は、第１通信手段を用いての他の情報処理装置との間の通信状態を検出する。登録可否判断手段は、通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、受信手段によって受信されたビーコンに含まれる他装置識別情報に対応する他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する。第１登録手段は、登録可否判断手段によって登録すると判断された他の情報処理装置をフレンドの候補としてフレンド候補リストテーブルに登録する。通信処理手段は、第１登録手段によってフレンド候補リストテーブルに登録された前記フレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、所定のアプリケーション処理の実行に用いる情報の送受信を行う。
【００２７】
第２０の発明のプログラムは、情報処理装置のコンピュータを、第１通信手段、第２通信手段、受信手段、通信状態検出手段、登録可否判断手段、第１登録手段、および通信処理手段として機能させてもよい。そして、第１通信手段は、他の情報処理装置と近距離無線通信を行う。第２通信手段は、ネットワークを介して通信を行う。受信手段は、第１通信手段を用いて、他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する。通信状態検出手段は、第１通信手段を用いての他の情報処理装置との間の通信状態を検出する。登録可否判断手段は、通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、受信手段によって受信されたビーコンに含まれる他装置識別情報に対応する他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する。第１登録手段は、登録可否判断手段によって登録すると判断された他の情報処理装置をフレンドの候補としてフレンド候補リストテーブルに登録する。そして、第１登録手段によってフレンド候補リストテーブルに登録された通信処理手段は、前記フレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、所定のアプリケーション処理の実行に用いる情報の送受信を行う。
【００２８】
第２１の発明の方法は、他の情報処理装置と近距離無線通信を行う通信手段を備えた情報処理装置を用いた情報処理方法である。この情報処理方法は、受信ステップ、通信状態検出ステップ、登録可否判断ステップ、登録ステップ、および通信処理ステップを含む。そして、受信ステップにおいて、通信手段を用いて近距離無線通信を行うことで、他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する。通信状態検出ステップにおいて、他の情報処理装置との間の近距離無線通信の通信状態を検出する。登録可否判断ステップにおいて、通信状態検出ステップにおいて検出された通信状態が所定の条件を満たす場合に、受信ステップによって受信されたビーコンに含まれる他装置識別情報に対応する他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドの候補としてフレンド候補リストテーブルに登録すると判断する。登録ステップにおいて、登録可否判断ステップにおいて登録すると判断された他の情報処理装置をフレンドの候補としてフレンド候補リストテーブルに登録する。通信処理ステップにおいて、登録ステップにおいてフレンド候補リストテーブルに登録されたフレンドの候補の中からフレンドとして選択された少なくとも１つの他の情報処理装置と、所定のアプリケーション処理の実行に用いる情報の送受信を行う。上記第１９〜第２１の発明は、上記第１の発明と同様の作用効果を奏する。
第２２の発明の通信システムは、複数の情報処理装置を含む通信システムであって、各情報処理装置は、第１通信手段、受信手段、通信状態検出手段、登録可否判断手段、第１登録手段、および通信処理手段を備える。そして、第１通信手段は、他の情報処理装置と近距離無線通信を行う。受信手段は、第１通信手段を用いて、他の情報処理装置から当該他の情報処理装置の識別情報である他装置識別情報を含むビーコンを受信する。通信状態検出手段は、第１通信手段を用いて他の情報処理装置との間の通信状態を検出する。登録可否判断手段は、通信状態検出手段が検出した通信状態が所定の条件を満たす場合に、受信手段によって受信されたビーコンに含まれる他装置識別情報に対応する他の情報処理装置を、所定のアプリケーション処理の実行に用いる情報の送受信を行う通信対象であるフレンドとしてフレンドリストテーブルに登録すると判断する。第１登録手段は、登録可否判断手段によって登録すると判断された他の情報処理装置をフレンドとしてフレンドリストテーブルに登録する。通信処理手段は、第１登録手段によってフレンドリストテーブルに登録されたフレンドのうち少なくとも１つの他の情報処理装置と、所定のアプリケーション処理の実行に用いる情報の送受信を行う。
【発明の効果】
【００２９】
本発明によれば、他の情報処理装置との間の近距離無線通信の通信状態に基づいて、他の情報処理装置を通信相手として登録することができる。これによって、通信状態の条件を、他の情報処理装置を自機のユーザが通信相手として登録を希望するものであることを示す条件とすることで、ユーザが登録を希望しない情報処理装置を誤って登録をしてしまうことを効果的に防止することができ、誤登録少なく所望の情報処理装置を登録することができる通信システム、情報処理装置、プログラム及び情報処理方法を提供することが可能になる。例えば、通信状態の条件を、他の情報処理装置がある程度自機の近くに居ることを表す条件等に設定することで、自機のある程度近くに居る他の情報処理装置のみを登録の対象とすることが可能となる。ここで、自機のある程度近くに居る他の情報処理装置以外の情報処理装置は、ユーザが登録を希望しない情報処理装置である可能性が高い。従って、本発明によれば、この様な他の情報処理装置を通信相手として登録してしまうことを効果的に防止することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態にかかる通信システムを示す図
【図２】開状態におけるゲーム装置の正面図
【図３Ａ】閉状態におけるゲーム装置の左側面図
【図３Ｂ】閉状態におけるゲーム装置の正面図
【図３Ｃ】閉状態におけるゲーム装置の右側面図
【図３Ｄ】閉状態におけるゲーム装置の背面図
【図４】ゲーム装置の内部構成を示すブロック図
【図５】サーバの内部の電気的構成の一例を示すブロック図
【図６】フレンド情報、フレンドであるゲーム装置の通信接続状態、及び当該ゲーム装置のフレンド情報等を表示した画面の一例を示す図
【図７】フレンド候補を下側ＬＣＤに表示した画面の一例を示す図
【図８】フレンド登録指示を受け付けたときに上側ＬＣＤ及び下側ＬＣＤに表示される画面の一例を示す図
【図９】メインメモリが記憶するプログラム及び各種データの一例を示す図
【図１０Ａ】フレンドリストテーブルＤ２の一例を示す図
【図１０Ｂ】フレンド候補リストテーブルＤ３の一例を示す図
【図１０Ｃ】通信レベルテーブルＤ４の一例を示す図
【図１１】管理テーブルＤ１０の一例を示す図
【図１２】通信処理の一例を示すフローチャート
【図１３】サーバとの通信処理の一例を示すフローチャート
【図１４】サーバ側通信処理の一例を示すフローチャート
【図１５】サーバ側通信処理の一例を示すフローチャート
【図１６】メイン処理の一例を示すフローチャート
【図１７】フレンド管理処理の一例を示すフローチャート
【図１８】フレンド管理処理の一例を示すフローチャート
【図１９】初回起動設定処理において表示される画面の一例を示す図
【図２０】第２メニュー画面の一例を示す図
【図２１】フレンド登録処理の一例を示すフローチャート
【図２２】フレンド登録処理の一例を示すフローチャート
【図２３】第４メニュー画面の一例を示す図
【図２４】その他のアプリケーションの実行処理の一例を示すフローチャート
【発明を実施するための形態】
【００３１】
以下、図１を用いて、本発明を適用した一実施形態に係る通信システムを説明する。図１は、本発明の一実施形態にかかる通信システムを示す図である。通信システム１は、複数のゲーム装置１００（本発明の情報処理装置の一例に対応）と、このゲーム装置１００にアクセスポイント２００及びネットワーク３００を介して通信可能に接続されたサーバ４００とを備える。
【００３２】
各ゲーム装置１００は、ユーザに携帯されて移動可能な携帯型の装置である。各ゲーム装置１００は、無線通信機能を備え、アクセスポイント２００との通信可能範囲に位置して、アクセスポイント２００に通信可能に接続されているときに、このアクセスポイント２００を介してネットワーク３００に接続された他の通信機器（例えばサーバ４００）と通信を行う。
【００３３】
また、複数のゲーム装置１００は、互いに通信相手として登録（以下、「フレンド登録」と記載する）している場合に限って、アクセスポイント２００及びネットワーク３００を介して所定の通信（例えばネットワークゲームのための通信）を行う。なお、複数のゲーム装置１００は、サーバ４００を介して互いに通信を行っても、サーバ４００を介さずに通信を行ってもよい。
【００３４】
また、各ゲーム装置１００は、自機から所定の距離以内（例えば、１０ｍ〜３０ｍ以内）に位置する他のゲーム装置１００との間で所定の通信プロトコルを用いて近距離無線通信を行う。この近距離無線通信では、アクセスポイント２００及びネットワーク３００を介さずに直接に複数のゲーム装置１００の間で通信を行う。そして、本実施形態では、複数のゲーム装置１００は、相手方のゲーム装置１００のフレンド登録を行うために、近距離無線通信によって互いの装置ＩＤを示す情報を交換し合う。この装置ＩＤとは、各ゲーム装置１００に固有の識別情報であり、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  ａｄｄｒｅｓｓ）アドレスや、このＭＡＣアドレスを用いて作成された情報である。各ゲーム装置１００は受信した装置ＩＤをフレンド登録する。（以下、フレンド登録した他のゲーム装置１００を「フレンドであるゲーム装置１００」と記載する場合があり、フレンドであるゲーム装置１００のユーザを「フレンドであるユーザ」と記載する場合がある。）
【００３５】
なお、図１においては、２台のゲーム装置１００が図示されているが、ゲーム装置１００の台数は２台に限定されず２台を超える台数であってもよい。
【００３６】
サーバ４００は、各ゲーム装置１００にフレンド登録されているゲーム装置１００を記憶し、管理する。すなわち、各ゲーム装置１００は、自機にフレンド登録されているゲーム装置１００の装置ＩＤ（以下、「フレンドＩＤ」と記載する）を、アクセスポイント２００と通信可能に接続されている期間に所定周期毎にサーバ４００に送信する。そして、サーバ４００は、受信したフレンドＩＤをユーザ登録されているゲーム装置１００の装置ＩＤ（以下、「ユーザＩＤ」と記載する）に対応付けて記憶する。なお、本実施形態では、サーバ４００が管理するのはサーバ４００にユーザ登録されているゲーム装置１００についてである。
【００３７】
次に、本実施形態にかかる、通信システム１の特徴を説明する。第１の特徴は、他のゲーム装置１００との間の近距離無線通信が通信状態に関する所定の条件（通信状態条件）を満たすときにのみ、受信した装置ＩＤをフレンド登録することができることである。このため、通信状態条件を通信状態の良好さを表す条件等に設定することで、自機のある程度近くに居る他の情報処理装置のみをフレンド登録の対象とすることが可能となる。
【００３８】
この通信状態条件は、例えば、受信した装置ＩＤを示す情報の信号強度が所定レベル（所定の閾値）より大きいことや、信号強度に基づいて算出した、他のゲーム装置１００との間の通信状態の良さを表す通信レベルが所定レベルよりも大きいこと、等がある。あるいは、自装置から所定数の確認信号を送信して、それを受信した他装置が受信した確認信号と同じ数の確認信号を送信し、その送信された確認信号の数を見ることによって、通信状態の良好さ（または、通信相手との距離）をある程度判断することができるので、そのような確認信号の数を通信状態条件としてもよい。
【００３９】
また、第２の特徴は、ゲーム装置１００が、所定周期毎（例えば、１／６０ｓｅｃ等の短い期間毎）に自動的に通信可能なアクセスポイント２００を検索し、通信可能なアクセスポイント２００が検索されたときに、このアクセスポイント２００と自動的に接続することである。そして、ゲーム装置１００は、当該アクセスポイント２００及びネットワーク３００を介してサーバ４００に自動的に接続し、自機のフレンドであるゲーム装置１００の通信接続状態（例えば、オンライン及びオフラインの何れの状態か）に関する情報（接続状態情報）をサーバ４００から受信するための処理を実行する。
【００４０】
本実施形態の通信システム１では、ゲーム装置１００が、アクセスポイント２００と無線通信を行うことで、当該アクセスポイント２００を介して他のゲーム装置１００と通信を行う。また、ゲーム装置１００は携帯型装置である。従って、ゲーム装置１００は、ユーザに携帯されて移動することで、アクセスポイント２００の通信可能範囲内から頻繁に出入りし、オンライン状態とオフライン状態との間で通信接続状態が頻繁に変化し易い。また、アクセスポイント２００は、例えばユーザの家庭に備えられたような固定のものだけでなく、自宅の外のさまざまな場所に存在するため、ユーザが家の外でゲーム装置１００を使用している場合は、通信接続状態の変化はより頻繁になる。本通信システム１によれば、ゲーム装置１００は、自機がオンライン状態になったときに、自機のフレンドであるゲーム装置１００の通信接続状態を所定周期毎にサーバ４００から取得するため、上述したような通信接続状態が変化し易い状況においても、自機のフレンドであるゲーム装置１００の通信接続状態の変化をすぐに取得することができる。そして、ゲーム装置１００はこの通信接続状態の変化をユーザに通知（報知）することができる。
【００４１】
また、各ゲーム装置１００は、フレンドリストアプリケーションの実行によって、自機のフレンドであるゲーム装置１００の通信接続状態（オンラインかオフラインか）を表示することができる。また、各ゲーム装置１００は、自機のフレンドであるユーザに関連するユーザ情報として、フレンド情報を当該ゲーム装置又はサーバ４００から受信し、受信したフレンド情報を当該ゲーム装置１００の通信接続状態とともに表示する。なお、フレンド情報は、例えば、ユーザ名、キャラクタ情報、ユーザからのメッセージ、お気に入りアプリ識別ＩＤ、現在実行中アプリ識別ＩＤ等がある。通信接続状態及びフレンド情報の表示の態様の詳細は、図６を用いて後述する。
【００４２】
なお、ゲーム装置１００のユーザは、自機のフレンドであるゲーム装置１００がログイン状態であるときに、当該ゲーム装置１００をネットワークゲームの相手として選択したり、チャットを行う相手として選択したりすることができる。
【００４３】
また、上述したネットワーク３００は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよいし、広域ネットワークであってもよい。
【００４４】
（ゲーム装置の構成）
以下、ゲーム装置１００について説明する。ゲーム装置１００は携帯型のゲーム装置である。図２および図３Ａ〜Ｄに示されるように、ゲーム装置１００は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に接続されている。
【００４５】
（下側ハウジングの説明）
図１および図３Ａ〜Ｄに示すように、下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２、タッチパネル１３、各操作ボタン１４Ａ〜１４Ｌ、アナログスティック１５、ＬＥＤ１６Ａ〜１６Ｃ、挿入口１７、および、マイクロフォン用孔１８が設けられる。
【００４６】
タッチパネル１３は、下側ＬＣＤ１２の画面上に装着されている。下側ハウジング１１の上側面には、タッチペン２８を収納するための挿入口１７（図１および図２Ｄに示す点線）が設けられている。
【００４７】
下側ハウジング１１の内側面（主面）には、十字ボタン１４Ａ（方向入力ボタン１４Ａ）、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅ、電源ボタン１４Ｆ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、およびスタートボタン１４Ｌが、設けられる。
【００４８】
アナログスティック１５は、方向を指示するデバイスである。
【００４９】
下側ハウジング１１の内側面には、マイクロフォン用孔１８が設けられる。マイクロフォン用孔１８の下部には後述する音声入力装置としてのマイク４２（図４参照）が設けられる。
【００５０】
図３ＢおよびＤに示されるように、下側ハウジング１１の上側面には、Ｌボタン１４ＧおよびＲボタン１４Ｈが設けられている。また、図２Ａに示されるように、下側ハウジング１１の左側面には、ゲーム装置１００が備えるスピーカ４３（図４参照）の音量を調整するための音量ボタン１４Ｉが設けられる。
【００５１】
図３Ａに示されるように、下側ハウジング１１の左側面には開閉可能なカバー部１１Ｃが設けられる。このカバー部１１Ｃの内側には、ゲーム装置１００とデータ保存用外部メモリ４５とを電気的に接続するためのコネクタが設けられる。
【００５２】
図３Ｄに示されるように、下側ハウジング１１の上側面には、外部メモリ４４を挿入するための挿入口１１Ｄが設けられる。
【００５３】
図３および図３Ｃに示されるように、下側ハウジング１１の下側面にはゲーム装置１００の電源のＯＮ／ＯＦＦ状況をユーザに通知する第１ＬＥＤ１６Ａ、下側ハウジング１１の右側面にはゲーム装置１００の無線通信の確立状況をユーザに通知する第２ＬＥＤ１６Ｂが設けられる。ゲーム装置１００は他の機器との間で無線通信を行うことが可能であり、下側ハウジング１１の右側面には、この無線通信の機能を有効／無効にする無線スイッチ１９が設けられる（図３Ｃ参照）。
【００５４】
また、下側ハウジング１１における上側ハウジング２１との結合部分の内側には、ユーザに所定の情報を報知するためのＬＥＤ１６Ｃが配置されている。このＬＥＤ１６Ｃは、例えば朱色に点灯することで、自機にフレンド登録されているゲーム装置１００の通信接続状態が変化したこと（例えば、オフライン状態であったがオンライン状態に変化した等）を報知する。なお、上記結合部分は上側ハウジング２１から分離ないし独立しているため、ＬＥＤ１６はゲーム装置１００を折りたたんだ状態においてもユーザから視認される。そのため、ゲーム装置１００が折りたたまれていない（開いた）状態だけでなく、折りたたまれている（閉じた）状態であっても、自機にフレンド登録されているゲーム装置１００の通信接続状態が変化したことを通知することが可能である。
【００５５】
（上側ハウジングの説明）
図２および図３に示すように、上側ハウジング２１には、上側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）２２、外側撮像部２３（外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂ）、内側撮像部２４、３Ｄ調整スイッチ２５、および、３Ｄインジケータ２６が設けられる。
【００５６】
上側ＬＣＤ２２は、立体視可能な画像を表示することが可能な表示装置である。具体的には、パララックスバリア方式の裸眼立体視可能な表示装置である。上側ＬＣＤ２２は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像（立体視画像）を表示することができる。また、上側ＬＣＤ２２は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側ＬＣＤ２２は、立体視画像を表示する立体表示モードと、画像を平面的に表示する（平面視画像を表示する）平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、例えば、後述する３Ｄ調整スイッチ２５によって行われる。
【００５７】
外側撮像部２３は、上側ハウジング２１の外側面２１Ｄに設けられた２つの撮像部（２３ａおよび２３ｂ）の総称である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂとは、ゲーム装置１００が実行するプログラムによって、ステレオカメラとして使用することが可能である。
【００５８】
内側撮像部２４は、上側ハウジング２１の内側面２１Ｂに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。
【００５９】
３Ｄ調整スイッチ２５は、スライドスイッチであり、上述のように上側ＬＣＤ２２の表示モードを切り替えるために用いられるスイッチである。また、３Ｄ調整スイッチ２５は、上側ＬＣＤ２２に表示された立体視可能な画像（立体画像）の立体感を調整するために用いられる。３Ｄ調整スイッチ２５のスライダ２５ａは、所定方向（上下方向）の任意の位置にスライド可能であり、当該スライダ２５ａの位置に応じて上側ＬＣＤ２２の表示モードが設定される。また、スライダ２５ａの位置に応じて、立体画像の見え方が調整される。
【００６０】
３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードか否かを示すＬＥＤである。
【００６１】
また、上側ハウジング２１の内側面には、スピーカ孔２１Ｅが設けられる。後述するスピーカ４３からの音声がこのスピーカ孔２１Ｅから出力される。
【００６２】
（ゲーム装置１００の内部構成）
次に、図４を参照して、ゲーム装置１００の内部の電気的構成について説明する。図４に示すように、ゲーム装置１００は、上述した各部に加えて、情報処理部３１、メインメモリ３２、外部メモリインターフェイス（外部メモリＩ／Ｆ）３３、データ保存用外部メモリＩ／Ｆ３４、データ保存用内部メモリ３５、無線通信モジュール３６、リアルタイムクロック（ＲＴＣ）３７、加速度センサ３８、電源回路４０、およびインターフェイス回路（Ｉ／Ｆ回路）４１等の電子部品を備えている。
【００６３】
情報処理部３１は、所定のプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、画像処理を行うＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１２、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３１３を含む。ＣＰＵ３１１は、ゲーム装置１００内のメモリ（例えば外部メモリＩ／Ｆ３３に接続された外部メモリ４４やデータ保存用内部メモリ３５）に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、ＣＰＵ３１１によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。ＧＰＵ３１２は、ＣＰＵ３１１からの命令に応じて画像を生成し、ＶＲＡＭ３１３に描画する。ＶＲＡＭ３１３に描画された画像は、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に出力され、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像が表示される。
【００６４】
外部メモリＩ／Ｆ３３は、外部メモリ４４を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリＩ／Ｆ３４は、データ保存用外部メモリ４５を着脱自在に接続するためのインターフェイスである。
【００６５】
メインメモリ３２は、情報処理部３１（のＣＰＵ３１１）のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。
【００６６】
外部メモリ４４は、情報処理部３１によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ４４は、例えば読み取り専用の半導体メモリで構成される。
【００６７】
データ保存用外部メモリ４５は、不揮発性の読み書き可能なメモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、任意のデータを保存するために用いられる。
【００６８】
データ保存用内部メモリ３５は、読み書き可能な不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ３５には、無線通信モジュール３６を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【００６９】
無線通信モジュール３６は、例えばＩＥＥＥ８０２．１１ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、無線通信モジュール３６は、所定の通信方式（例えば独自プロトコルによる通信や、ＩＥＥＥ８０２．１１ｂ／ｇの規格に準拠した方式、赤外線通信及びＢｌｕｅｔｏｏｔｈ等）により同種の他のゲーム装置１００との間で近距離無線通信を行う機能を有する。なお、無線通信モジュール３６は、他のゲーム装置１００との間で後述するすれちがい通信を行う。
【００７０】
加速度センサ３８は、３軸（ｘｙｚ軸）方向に沿った直線方向の加速度（直線加速度）の大きさを検出する。情報処理部３１は、加速度センサ３８が検出した加速度を示すデータ（加速度データ）を受信して、ゲーム装置１００の姿勢や動きを検出することができる。
【００７１】
ＲＴＣ３７は、時間をカウントして情報処理部３１に出力する。情報処理部３１は、ＲＴＣ３７によって計時された時間に基づき現在時刻（日付）を計算する。電源回路４０は、ゲーム装置１００が有する電源（充電式電池）からの電力を制御し、ゲーム装置１００の各部品に電力を供給する。
【００７２】
Ｉ／Ｆ回路４１には、タッチパネル１３、マイク４２およびスピーカ４３が接続される。Ｉ／Ｆ回路４１は、マイク４２およびスピーカ４３（アンプ）の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部３１に出力する。情報処理部３１は、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００７３】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｌからなり、操作ボタン１４から情報処理部３１へは、各操作ボタン１４Ａ〜１４Ｉに対する入力状況（押下されたか否か）を示す操作データが出力される。
【００７４】
下側ＬＣＤ１２および上側ＬＣＤ２２は情報処理部３１に接続される。具体的には、情報処理部３１は、上側ＬＣＤ２２のＬＣＤコントローラ（図示せず）と接続され、当該ＬＣＤコントローラに対して視差バリアのＯＮ／ＯＦＦを制御する。上側ＬＣＤ２２の視差バリアがＯＮになっている場合、情報処理部３１のＶＲＡＭ３１３に格納された右目用画像と左目用画像とが、上側ＬＣＤ２２に出力される。より具体的には、ＬＣＤコントローラは、右目用画像について縦方向に１ライン分の画素データを読み出す処理と、左目用画像について縦方向に１ライン分の画素データを読み出す処理とを交互に繰り返すことによって、ＶＲＡＭ３１３から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に１ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側ＬＣＤ２２の画面に表示される。そして、上側ＬＣＤ２２の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。
【００７５】
外側撮像部２３および内側撮像部２４は、情報処理部３１の指示に従って画像を撮像し、撮像した画像データを情報処理部３１に出力する。
【００７６】
３Ｄ調整スイッチ２５は、スライダ２５ａの位置に応じた電気信号を情報処理部３１に送信する。
【００７７】
情報処理部３１は、３Ｄインジケータ２６の点灯を制御する。例えば、情報処理部３１は、上側ＬＣＤ２２が立体表示モードである場合、３Ｄインジケータ２６を点灯させる。
【００７８】
以下に図５を用いて上記サーバ４００の構成を説明する。図５は、サーバ４００の内部の電気的構成の一例を示すブロック図である。
【００７９】
サーバ４００は、操作部４０１、通信部４０２、ＲＯＭ４０３、ＨＤＤ４０４、ＲＡＭ４０５及びＣＰＵ４０６を有し、これらの間はバス４０７で互いに通信可能に接続されている。
【００８０】
操作部４０１は本サーバ４００の管理者からの操作を受け付ける機能を有する。通信部４０２はネットワーク３００を介して他の装置と通信する機能を有する。ＲＯＭ４０３はこのサーバ４００本体を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。ＨＤＤ４０４は、本サーバ４００にゲーム装置１００との間の通信を行わせる通信プログラムを含むプログラム、及びこのプログラムの実行に必要なデータが記憶されている。ＲＡＭ４０５は、ＣＰＵ４０６の作業領域として機能し、ＨＤＤ４０４から読み出された管理テーブルＤ１０を記憶する。この管理テーブルＤ１０には、ゲーム装置１００の装置ＩＤと、このゲーム装置１００のフレンドであるゲーム装置１００の装置ＩＤ（フレンドＩＤ）が対応づけて登録されている。また、この管理テーブルＤ１０には、登録されている装置ＩＤに対応付けて、対応するゲーム装置１００の接続状態情報（オンラインかオフラインかを示す情報、本発明の管理情報の一例）が登録されている。
【００８１】
ＣＰＵ４０６は、ゲーム装置１００から当該ゲーム装置１００がオンラインであることを示すオンライン通知を受信したときに、管理テーブルＤ１０を参照して、このゲーム装置１００のフレンドであるゲーム装置１００のフレンドＩＤと、このフレンドであるゲーム装置１００の接続状態情報とを取得し、オンライン通知の送信元のゲーム装置１００に対して送信する。また、ＣＰＵ４０６は、オンライン通知を受信したときに、管理テーブルＤ１０に登録されている当該ゲーム装置１００の接続状態情報がオフラインであることを示すときには、当該登録されている接続状態情報をオンラインに変更する。
【００８２】
以下、図６を用いて、フレンドリストアプリケーションの実行によって、ゲーム装置１００に表示される情報を説明する。図６は、フレンド情報、フレンドであるゲーム装置１００の通信接続状態、及び当該ゲーム装置１００のフレンド情報等を表示した画面の一例を示す図である。
【００８３】
下側ＬＣＤ１２には、フレンド情報が表示されたカードの画像Ｇ１（以下、「フレンドカードＧ１」と記載する）、操作子Ｇ２及び操作子Ｇ３が表示されている。
【００８４】
フレンドカードＧ１には、フレンド情報として、フレンドであるユーザを表すキャラクタＧ４と、当該ユーザの名前Ｇ５（以下「ユーザ名Ｇ５」と記載する）とが表示されている。また、フレンドカードＧ１には、フレンドとなるゲーム装置１００のユーザがオンラインであるかオフラインであるかを示す通信接続状態を表すテキストＧ６が表示されている。これによって、ゲーム装置１００のユーザに対して、フレンドカードＧ１に対応するゲーム装置１００がオンラインであるか否かを視覚的に分り易く表示することが可能になる。従って、ユーザは、自機のフレンドとなるゲーム装置１００がオンラインなので当該ゲーム装置１００のユーザを相手としてネットワークゲームを行うように、又はチャットを行うように容易に決定することができる。
【００８５】
なお、複数のゲーム装置１００がフレンド登録されているときには、複数のフレンドカードＧ１を表示することが可能であり、図６では、５台のゲーム装置１００がフレンドとして登録されているが、下側ＬＣＤ１２のスペースの都合上、５台中３台分のゲーム装置１００のフレンドカードＧ１を表示することができる（もちろん、３台分以上のフレンドカードＧ１を表示できるようにしてもよい。）。そして、ユーザがタッチパネル１３をスライド操作することによって、表示するフレンドカードＧ１を切り替えることができる（スライド操作だけでなく、例えばＬボタン１４ＧやＲボタン１４Ｈ等を用いることによる操作であってもよい。以下の操作においても同様である）。また、中央に表示されたフレンドカードＧ１をタッチする操作をタッチパネル１３で受け付けたときに、当該フレンドカードＧ１が選択されたとして、上側ＬＣＤ２２にフレンドカードＧ１が拡大して表示される。この拡大して表示されたフレンドカードＧ１によって、ユーザは選択されたフレンドカードＧ１に表示されたフレンド情報をより視認し易くなる。なお、フレンドカードＧ１が選択されると、当該フレンドカードＧ１の上方に、フレンドであるユーザが作成したメッセージＧ１０が表示される。
【００８６】
操作子Ｇ２は、選択されたフレンドカードＧ１と、当該フレンドカードＧ１に対応するフレンド登録の削除の指示をユーザから受け付けるために表示される。ここで、操作子Ｇ２をタッチする操作をタッチパネル１３で受け付けたときに、当該フレンドカードＧ１が削除され、当該フレンドカードＧ１に対応するフレンド登録も削除される。なお、本実施形態では、複数のゲーム装置１００が互いにフレンド登録していないと相互に通信を行うことができず、何れか一方のゲーム装置１００のフレンド登録を削除すると、他方のゲーム装置１００のフレンド登録も削除されることになる。ただし、他方のユーザに対してフレンド登録を削除したことを知らせないようにするため、他方のゲーム装置上ではフレンドカードＧ１の表示は残ったままになる。
【００８７】
また、操作子Ｇ３は、フレンドとなるゲーム装置１００を新たに追加してフレンド登録するための指示（フレンド登録指示）をユーザから受け付けるためのものであり、ユーザが操作子Ｇ３のタッチする操作をタッチパネル１３で受け付けたときに、新たに追加してフレンド登録を行うための処理（フレンド登録処理）がゲーム装置１００で実行される。フレンド登録処理についての詳細は後述する。
【００８８】
上側ＬＣＤ２２には、上述したような拡大されたフレンドカードＧ１が表示される。拡大されたフレンドカードＧ１には、拡大前のフレンドカードＧ１に表示されていたフレンド情報に加えて、他のフレンド情報も表示される。例えば、フレンドカードＧ１に対応するユーザのお気に入りのアプリケーションの名称（アプリケーション名）Ｇ７、及びこのアプリケーションに対応するアイコンＧ８が表示される。また、フレンドカードＧ１に対応するユーザが現在実行しているアプリケーションの名称（アプリケーション名）Ｇ９、及びこのアプリケーションに対応するアイコンＧ１０が表示される。これによって、フレンドカードＧ１に対応するユーザが現在実行しているアプリケーション名をユーザに知得させることができる。このため、ユーザは自己と同じアプリケーションを実行しているユーザ（ゲーム装置１００）を容易に知得することができる。なお、フレンドリストアプリケーションは、他のアプリケーションの実行中にも実行可能である。このため、ユーザは、他のアプリケーションの実行中に当該アプリケーションにおいてネットワークゲームを行いたくなったときに、フレンドリストアプリケーションの実行をゲーム装置１００に指示し、かつアプリケーション名Ｇ７を表示させることができる。これによって、ユーザが、フレンドであるユーザが現在実行しているアプリケーション名を見ることで、自機と同じアプリケーションを実行しているゲーム装置１００を検索し、ネットワークゲームの相手方となり得るゲーム装置１００を容易に探すことができる。
【００８９】
また、拡大されたフレンドカードＧ１には、ネットワークを介してフレンド登録を行うときに使用するフレンドコードＧ１１が表示される。
【００９０】
以下、図７及び図８を用いて、フレンド登録処理において表示される画面を説明する。フレンド登録処理においては、複数のゲーム装置１００は近距離無線通信を行うことで装置ＩＤを交換することができる。例えば、複数のゲーム装置１００は、装置ＩＤを含んだビーコンを送受信し合う。そして、ゲーム装置１００は、このビーコンの信号強度が通信状態条件（例えば、所定の閾値以上であるとの条件）を満たしたときにのみ、自機のユーザ情報をフレンド情報として交換し合い、フレンド登録可能なゲーム装置１００（フレンド候補）として表示する。
【００９１】
図７は、フレンド候補を下側ＬＣＤ１２に表示した画面の一例を示す図である。この画面には、フレンド候補のフレンドカードＧ１と、フレンドとなるゲーム装置１００の選択を促すテキストＧ１２が表示される。このフレンドカードＧ１にはフレンド情報が表示されるが、このフレンドカードＧ１に表示されるフレンド情報はキャラクタＧ４とユーザ名Ｇ５である。本実施形態では、ゲーム装置１００が、所定時間内に所定の複数台分（例えば３つ分）のゲーム装置１００を限度としてフレンド情報を取得することができる。また、複数のゲーム装置１００についてのフレンド情報を取得したときには、複数のフレンドカードＧ１が表示される。そして、図７では、例として、２台分のゲーム装置１００のフレンド情報を取得して、２つのフレンドカードＧ１を表示する場合を示している。ユーザは、表示されたフレンドカードＧ１の中から１つのフレンドカードＧ１を選択する（例えば１つのフレンドカードＧ１に対してタッチ操作を行う等）ことで、フレンド登録をするゲーム装置１００を選択することができる。
【００９２】
この様に、複数台のゲーム装置１００のフレンド情報を受信した場合でも、ユーザは、キャラクタＧ４及びユーザ名Ｇ５等のフレンド情報を確認しながら、フレンド登録するゲーム装置１００を選択することができる。このため、ゲーム装置１００は、自装置の近距離無線通信可能範囲に、フレンド登録を希望するゲーム装置１００以外の別のゲーム装置１００が有る場合でも、誤って別のゲーム装置１００をフレンド登録することなく正確に希望のゲーム装置１００をフレンド登録することができる。
【００９３】
なお、ビーコンの信号強度が強かった順番で昇順に又は降順に、フレンドカードＧ１を並べて表示してもよい。これによって、ユーザは、フレンド登録を希望するゲーム装置１００を更に正確に特定することができるため、正確に希望のゲーム装置１００をフレンド登録することができる。
【００９４】
以下に、図８を用いて、近距離無線通信によってフレンド登録が行われた際にゲーム装置１００に表示される画面を説明する。図８は、フレンド登録指示を受け付けたときに上側ＬＣＤ２２及び下側ＬＣＤ１２に表示される画面の一例を示す図である。上側ＬＣＤ２２には、フレンド登録されたゲーム装置１００のフレンドカードＧ１が表示される。このフレンドカードＧ１に表示されるフレンド情報の内容は、図６の上側ＬＣＤ２２に表示されるフレンドカードＧ１の内容とほぼ同じである。もっとも、アプリケーション名Ｇ９、及びアイコンＧ１０については、図８で示すフレンドカードＧ１には表示されない。
【００９５】
下側ＬＣＤ１２には、フレンド登録が成功したことを示すテキストＧ１３が表示される。
【００９６】
次に、図９、図１０Ａ〜Ｃを用いて、ゲーム装置１００が、メインメモリ３２に記憶する各種プログラムや各種データについて説明する。
【００９７】
図９は、メインメモリ３２が記憶するプログラム及び各種データの一例を示す図である。各種データはプログラムをゲーム装置１００が実行することに応じて記憶される。メインメモリ３２は、プログラムを記憶するためのプログラム記憶領域３２１、データを記憶するデータ記憶領域３２２、及びフレーム記憶領域３２３を有する。
【００９８】
プログラム記憶領域３２１には、ゲーム装置１００のＣＰＵ３１１に通信処理を実行させるための通信プログラムＰ１、ゲーム装置１００にフレンド管理処理を実行させるためのフレンドリストアプリケーションＰ２、及びその他のアプリケーションＰ３が少なくとも記憶されている。通信処理とは、無線通信モジュール３６を用いて、アクセスポイント２００に自動的に接続してアクセスポイント２００を介してサーバ４００との間で情報を送受信する処理、及び他の情報処理装置１００とすれちがい通信を行う処理を含む。また、フレンド管理処理とは、ユーザに自機のフレンドであるゲーム装置１００のフレンド情報を表示するための処理、及び他のゲーム装置１００をフレンド登録しかつ他のゲーム装置１００に自機をフレンド登録させるための処理であるフレンド登録処理を含む。
【００９９】
データ記憶領域３２２は、ユーザ情報Ｄ１、フレンドリストテーブルＤ２、フレンド候補リストテーブルＤ３、通信レベルテーブルＤ４、キャラクタ画像Ｄ５、アプリケーション名Ｄ６、アイコン画像Ｄ７、及びお気に入りアプリ情報Ｄ８等が記憶されている。
【０１００】
ユーザ情報Ｄ１は、フレンドアプリケーションの実行時にユーザから入力されたユーザに関連する情報である。ユーザ情報Ｄ１は、例えば、ユーザ名、ユーザのフレンドコード、お気に入りアプリケーションのアプリＩＤ、実行中のアプリケーションのアプリＩＤ、ユーザに対応する（例えばユーザに作成された）キャラクタ情報、ユーザに作成されたメッセージ等を含む。なお、アプリＩＤとは、アプリケーションに固有の識別情報である。なお、このユーザ情報Ｄ１は、サーバ４００にユーザ登録を要求する際に、アクセスポイント２００及びネットワーク３００を介してサーバ４００に送信され、管理テーブルＤ１０（図５を参照）に登録される。また、ユーザ情報Ｄ１は、フレンド登録処理において他のゲーム装置１００に対して送信される。他のゲーム装置１００に受信されたときに、ユーザ情報Ｄ１は、自機のフレンド情報として他のゲーム装置１００のフレンドリストテーブルＤ２に記憶される。
【０１０１】
フレンドテーブルＤ２は、フレンドであるゲーム装置１００の装置ＩＤと、フレンド情報とを互いに対応付けて登録するためのテーブルである。図１０Ａは、フレンドテーブルＤ２の一例を示す図である。なお、このフレンドテーブルＤ２に登録されるフレンド情報の種類は、上述したユーザ情報Ｄ１と同じである（他のゲーム装置１００から受信したユーザ情報Ｄ１のユーザＩＤがフレンドＩＤとして管理され、ユーザ名がフレンド名として管理される）。また、フレンドテーブルＤ２には、フレンドであるゲーム装置１００の通信接続状態（オンラインかオフラインか）を示す接続状態情報が装置ＩＤに対応付けて登録される。この接続状態情報は、サーバ４００から受信する、フレンドであるゲーム装置１００の接続状態情報に基づいて更新される。なお、サーバ４００は、ゲーム装置１００がサーバ４００にログインしたとき、及びゲーム装置１００のフレンドであるゲーム装置１００の通信接続状態が変化したと判断したときに、当該ゲーム装置１００のフレンドであるゲーム装置１００の接続状態情報を当該ゲーム装置１００に送信する。
【０１０２】
フレンド候補リストテーブルＤ３は、フレンド登録処理において、フレンド登録可能なゲーム装置１００の装置ＩＤ（フレンドＩＤ）と、フレンド情報（フレンド名、フレンドコード、キャラクタ情報）とを互いに対応付けて一時的に登録するためのテーブルである。図１０Ｂは、フレンド候補リストテーブルＤ３の一例を示す図である。なお、このフレンド候補リストテーブルＤ３に装置ＩＤが登録されているゲーム装置１００は、近距離無線通信によって装置ＩＤを含むビーコンを自機と交換し合い、かつこのビーコンの信号強度が通信状態条件に合致しているものである。
【０１０３】
通信レベルテーブルＤ４は、無線通信モジュール３６で受信する信号強度を複数段階（例えば、４段階）に分け、このそれぞれの段階に対応する通信レベルを定義したテーブルである。図１０Ｃは、通信レベルテーブルＤ４の一例を示す図である。ゲーム装置１００は、フレンド登録処理において、装置ＩＤを含むビーコンを受信したときに、通信レベルテーブルＤ４を参照して、このビーコンの信号強度に対応する通信レベルを取得する。そして、ゲーム装置１００は、この通信レベルを用いて、ビーコンの信号強度が通信状態条件を満たすかを判断する。
【０１０４】
キャラクタ画像Ｄ５は、フレンドリストテーブルＤ２に登録されているキャラクタ情報又はユーザ情報Ｄ１に含まれるキャラクタ情報に対応するキャラクタを生成するための画像データである。
【０１０５】
アプリケーション名Ｄ６は、アプリＩＤに対応付けて記憶されており、このアプリＩＤに対応するアプリケーションの名称を示すデータである。アイコン画像Ｄ７は、アプリＩＤに対応付けて記憶されており、このアプリＩＤに対応するアイコンを表す画像データである。
【０１０６】
お気に入りアプリ情報Ｄ８は、フレンドリストテーブルＤ２に登録されているフレンドＩＤに対応するアプリＩＤを示す。お気に入りアプリ情報Ｄ８は、フレンドリストテーブルＤ２に登録されているアプリＩＤに対応するアプリケーション名Ｄ６及びアイコン画像Ｄ７がないときに参照される。すなわち、お気に入りアプリ情報Ｄ８は、対応するアプリケーション名Ｄ６及びアイコン画像Ｄ７がメインメモリ３２に記憶されているアプリＩＤのうち、フレンドリストテーブルＤ２において最新に更新されたアプリＩＤを示す。
【０１０７】
フレーム記憶領域３２３は、他のゲーム装置１００から受信した通信フレーム又は他のゲーム装置１００に送信する通信フレームを記憶するための領域である。
【０１０８】
なお、上記Ｄ１〜Ｄ７は、例えばデータ保存用内部メモリ３５やデータ保存用外部メモリ４５から読み出されてメインメモリ３２に記憶される。
【０１０９】
以下に、図１１を用いて、サーバ４００で記憶する管理テーブルＤ１０を説明する。図１１は、管理テーブルＤ１０の一例を示す図である。管理テーブルＤ１０は、通信システム１を構成する各ゲーム装置１００にフレンド登録されているゲーム装置１００を管理するためのテーブルである。管理テーブルＤ１０には、各ゲーム装置１００の装置ＩＤ、この装置ＩＤに対応するユーザ情報Ｄ１（ユーザ名、フレンドコード、お気に入りアプリＩＤ、実行中アプリＩＤ、キャラクタ情報、メッセージ）、接続状態情報、ログイン判定用フラグ、及びフレンドＩＤが登録されている。なお、管理テーブルＤ１０に装置ＩＤが登録されているゲーム装置１００は、通信システム１を構成する全てのゲーム装置１００ではなく、このゲーム装置１００のうちユーザ登録を要求したゲーム装置１００のみである。
【０１１０】
装置ＩＤとユーザ情報Ｄ１とは、ユーザ登録を要求する際にゲーム装置１００から送信され、サーバ４００で受信して登録されている。そして、接続状態情報は、ゲーム装置１００がオンライン及びオフラインのうち何れの通信接続状態であるかを示す。この接続状態情報は、ゲーム装置１００から受信したオンライン通知に基づいて更新される。なお、ゲーム装置１００は、アクセスポイント２００に接続されている期間に所定周期毎に、自機がオンラインであることを通知するためのオンライン通知を送信する。具体的には、接続状態情報は、ゲーム装置１００からオンライン通知を受信したときにオンラインを示すように更新され、オンライン通知の受信がないときにはオフラインを示すように更新される。なお、オンライン通知の受信がないときに直ぐに更新するのではなく、オンライン通知を受信してから、所定期間受信がないときにのみ更新してもよい。また、サーバ４００がゲーム装置１００に対してオンライン通知を送信するように要求し、これに対してゲーム装置１００から応答が無いような場合に、当該ゲーム装置１００をオフラインと判断してもよい。また、オンライン通知はゲーム装置１００固有の識別情報でもよいし、その他の情報であってもよい。
【０１１１】
ログイン判定用フラグはオンライン通知を受信したときにログイン中かログオフ中かを判定するためのフラグであり、ログイン判定用フラグがオフのときに、ログイン中であるとサーバ４００によって判定される。また、ログイン判定用フラグがオンのときに、ログオフ中であるとサーバ４００によって判定される。
【０１１２】
フレンドＩＤは、装置ＩＤに対応するゲーム装置１００において、フレンド登録されているゲーム装置１００の装置ＩＤである。ゲーム装置１００は、サーバ４００からの要求に応じて、自機のフレンドリストテーブルＤ２に登録されているフレンドＩＤをサーバ４００に送信する。サーバ４００は、受信したフレンドＩＤで管理テーブルＤ１０を更新する。
【０１１３】
以下に、図１２を用いて、ＣＰＵ３１１が実行する通信処理の一例について説明する。なお、図１２のフローチャートは単なる一例に過ぎない。従って、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。後述の図１３〜図１８、図２１、図２２及び図２４のフローチャートについても同様である。
【０１１４】
図１２は、通信処理の一例を示すフローチャートである。本通信処理は、ゲーム装置１００の電源がオンされたときに、無線通信モジュール３６を用いて実行開始される。まず、ＣＰＵ３１１は、今回の処理が通信処理の開始から初回の処理であるかを判定する（Ｓ１）。今回の処理が通信処理の開始から初回の処理であると判定したときには（Ｓ１でＹＥＳ）、ＣＰＵ３１１は、接続可能なアクセスポイント２００を自動的に検索する（Ｓ２）。具体的には、アクセスポイント２００から送信されるビーコンの受信の試みを近距離無線を利用して自動的に行う。ただし、既に接続可能なアクセスポイントが見つかっている場合は（もしくは、アクセスポイントに接続中は）、アクセスポイントの検索を行わないようにしてもよい。そして、ＣＰＵ３１１は、接続可能なアクセスポイント２００が存在したかどうかを判断する（Ｓ３）。例えば、アクセスポイント２００からのビーコンを受信したか否かを判断する。ここで、接続可能なアクセスポイント２００が存在したと判断したときには（Ｓ３でＹＥＳ）、ＣＰＵ３１１は作動中であればタイマを停止させる（Ｓ４）。なお、ＣＰＵ３１１はタイマを作動中でなければ本ステップにおいて何ら処理を行わない。そして、ＣＰＵ３１１は、サーバ４００との間で情報を送受信するための処理（サーバとの通信処理）を実行する（Ｓ５）。なお、サーバとの通信処理についての詳細は図１３を用いて後述する。この後、ＣＰＵ３１１は電源オフの指示がユーザから入力されたかを判断し（Ｓ６）、入力されたと判断したときには（Ｓ６でＹＥＳ）、自機の電源オフをサーバ４００に通知するための電源オフ情報をサーバ４００に送信する（Ｓ７）。この後、ＣＰＵ３１１は通信処理を終了させる。また、電源オフの指示がユーザから入力されていないと判断したときには（Ｓ６でＮＯ）、ＣＰＵ３１１は処理をステップＳ１に戻す。なお、ステップＳ１〜Ｓ６、後述のステップＳ８〜Ｓ１１までの処理は、電源オフの指示がユーザから入力されたと判定されるまで、所定周期毎（例えば１／６０ｓｅｃ毎等の短い周期で）に繰り返し実行される。
【０１１５】
次に、ステップＳ３でＮＯと判断されたときの処理について説明する。接続可能なアクセスポイント２００が存在しないと判断したときには（Ｓ３でＮＯ）、ＣＰＵ３１１はタイマを作動していなければタイマを作動し（計時処理を開始し）、タイマを作動しているときにはタイマをリセットしてタイマのカウント値を初期値に戻す（Ｓ８）。そして、ＣＰＵ３１１はすれちがい通信処理を実行する（Ｓ９）。これによって、アクセスポイント２００に接続不可能なときには、すれちがい通信処理が実行されることになる。
【０１１６】
すれちがい通信処理の内容は次のようなものである。すなわち、ゲーム装置１００が近距離無線通信によってビーコンをブロードキャストで送信する。ゲーム装置１００は、ビーコンを受信した他のゲーム装置１００から接続要求を受けたときに、当該他のゲーム装置１００に接続応答を送信する。この後、ゲーム装置１００は、他のゲーム装置１００と通信を確立して、所定の情報の送受信を行う。この所定の情報とは、例えば、上述したユーザ情報Ｄ１であり、これによって、ゲーム装置１００に自機がすれちがったゲーム装置１００のユーザ情報Ｄ１を取得させることができる。なお、ゲーム装置１００が、他のゲーム装置１００からビーコンを受信したときには、他のゲーム装置１００に対して接続要求を送信して、この後、接続要求を受信した他のゲーム装置１００から接続応答を受信することになる。
【０１１７】
ＣＰＵ３１１は、ステップＳ９のすれちがい通信処理を実行した後に、上述のステップＳ６を実行する。
【０１１８】
次に、ステップＳ１でＮＯと判断されたときの処理について説明する。今回の処理が通信処理の開始から初回の処理ではないと判定したときには（Ｓ１でＮＯ）、ＣＰＵ３１１はタイマを作動中か否かを判断する（Ｓ１０）。なお、このタイマは、接続可能なアクセスポイント２００が存在しないときに、ステップＳ８の実行によって作動される。そして、タイマを作動中でないと判断したときには（Ｓ１０でＮＯ）、ＣＰＵ３１１は後述のステップＳ２に処理を進めて、アクセスポイント２００を自動的に検索する処理を実行する。一方、タイマを作動中であると判断したときには（Ｓ１０でＹＥＳ）、ＣＰＵ３１１はタイマが時間ｔ１の経過を示すか否かを判断する（Ｓ１１）。
【０１１９】
そして、タイマが時間ｔ１の経過を示したときには（Ｓ１１でＹＥＳ）、ＣＰＵ３１１は後述のステップＳ２に処理を進めて、アクセスポイント２００を自動的に検索する処理を実行する。また、タイマが時間ｔ１の経過を示していないときには（Ｓ１１でＮＯ）、ＣＰＵ３１１は、アクセスポイント２００を自動的に検索する処理（Ｓ２）を実行せずに、上記ステップＳ９に処理を進めてすれちがい通信処理を実行する。これによって、ゲーム装置１００は、接続可能なアクセスポイント２００が検索できなかったときには、このときから時間ｔ１が経過するまでは、アクセスポイント２００を検索する処理を行わず、すれちがい通信処理を行う。
【０１２０】
次に、図１３を用いて、上記ステップＳ５におけるサーバとの通信処理を説明する。図１３は、サーバとの通信処理の一例を示すフローチャートである。なお、図１３においては、フレンドであるゲーム装置１００を「フレンド」と単に記載する。まず、ＣＰＵ３１１は、今回の処理が通信処理の開始から初回の処理であるかを判定する（Ｓ２１）。ここで、今回の処理が通信処理の開始から初回の処理であると判定したときに（Ｓ２１でＹＥＳ）、ＣＰＵ３１１はフレンドリストテーブルＤ２に登録されている全ての装置ＩＤに対応する接続状態情報を、オフラインを示すように更新する（Ｓ２２）。この後、ＣＰＵ３１１は、ステップＳ２３に処理を進める。一方、今回の処理が通信処理の開始から初回の処理ではないと判定したときには（Ｓ２１でＮＯ）、ＣＰＵ３１１はステップＳ２２を実行することなく処理をステップＳ２３に進める。
【０１２１】
ステップＳ２３において、ＣＰＵ３１１は、自機の装置ＩＤを含めたオンライン通知をサーバに送信する。そして、ＣＰＵ３１１は、サーバ４００からフレンドＩＤの送信要求を受信したときに（図１４を用いて後述するサーバ側通信処理におけるステップＳ４９又はＳ５６においてサーバ４００から送信される）、フレンドリストテーブルＤ２に登録されている全てのフレンドＩＤを含めた情報をサーバ４００に送信する（Ｓ２４）。この後、ＣＰＵ３１１は、フレンドリスト更新用情報を受信したかどうかを判断する（Ｓ２５）。このフレンドリスト更新用情報は、図１４を用いて後述するサーバ側通信処理におけるステップＳ５３でサーバ４００から送信される情報である。このフレンドリスト更新用情報は、ゲーム装置１００がサーバ４００に対してログインしたときにのみ受信する。なお、フレンドリスト更新用情報は、自機のフレンドである全てのゲーム装置１００の装置ＩＤ、当該装置ＩＤに対応するユーザ情報Ｄ１（すなわち、フレンド情報）、当該装置ＩＤに対応する接続状態情報を含む情報である。フレンドリスト更新用情報を受信したと判断したときには（Ｓ２５でＹＥＳ）、ＣＰＵ３１１は後述のステップＳ２７に処理を進める。なお、フレンドリスト更新用情報を受信したときに、図１７を用いて後述するステップＳ１０３及びＳ１０４を実行してもよい。具体的には、自装置に記憶しているフレンドリストテーブルＤ２を参照して、登録されていないフレンド情報等があるかどうかを判断する。そして、登録されていないフレンド情報があると判断したときには、ＣＰＵ３１１はフレンドリストテーブルＤ２に登録されていないフレンド情報等をサーバ４００から取得するための処理を行う。なお、フレンドリストテーブルＤ２に登録されていないフレンド情報とは、例えば、次のようなものである。フレンドであるユーザが、ユーザ情報Ｄ１を入力するときに、例えば、お気に入りアプリケーション名だけを入力しない等、一部の情報を入力せず、後になって追加して入力する可能性がある。このような一部の情報が、登録されていないフレンド情報である。
【０１２２】
一方、フレンドリスト更新用情報を受信していないと判断したときには（Ｓ２５でＮＯ）、ＣＰＵ３１１は通信接続状態の変更通知を受信したかどうかを判断する（Ｓ２６）。この通信接続状態の変更通知は、図１４を用いて後述するサーバ側通信処理におけるステップＳ５４又はＳ７１においてサーバ４００から送信される情報である。この通信接続状態の変更通知は、自機のフレンドとなるゲーム装置１００の通信接続状態が変更されたときに、サーバ４００から送信される情報であり、自機のフレンドとなるゲーム装置１００の装置ＩＤと、この装置ＩＤに対応する接続状態情報を含む。そして、通信接続状態の変更通知を受信したと判断したときには（Ｓ２６でＹＥＳ）、ＣＰＵ３１１は後述のステップＳ２７に処理を進める。
【０１２３】
次にステップＳ２７の処理について説明する。本ステップにおいては、ＣＰＵ３１１はステップＳ２５又はＳ２６で受信したと判断された情報を用いて、フレンドリストテーブルＤ２に登録されている内容を更新する（Ｓ２７）。例えば、フレンドリスト更新用情報を受信したときには、ＣＰＵ３１１はこの最新の内容でフレンドリストテーブルＤ２のフレンドＩＤ、フレンド情報及び接続状態情報等を更新する。これによって、ゲーム装置１００は、自機がオフラインの期間に行われた自機のフレンドであるゲーム装置１００のフレンド情報の変更を自機のフレンドリストテーブルＤ２に反映させることができる。
【０１２４】
なお、フレンドリストテーブルＤ２のお気に入りアプリＩＤを更新するときに、更新後のアプリＩＤに対応するアプリケーション名Ｄ６及びアイコン画像Ｄ７がメインメモリ３２に記憶されているかどうかを判断し、記憶されているときに限って、このアプリＩＤでお気に入りアプリ情報Ｄ８を更新する。ここで、お気に入りアプリ情報Ｄ８はフレンドＩＤに対応する数だけフレンドＩＤに対応付けて記憶されているので、お気に入りアプリＩＤが更新されたフレンドＩＤのお気に入りアプリ情報Ｄ８が更新される。これによって、お気に入りアプリ情報Ｄ８は、対応するアプリケーション名Ｄ６及びアイコン画像Ｄ７が記憶されているアプリＩＤのうち、最新のアプリＩＤを示すものとなる。このため、フレンドリストテーブルＤ２に登録されているお気に入りアプリＩＤに対応するアイコン画像Ｄ６及びアイコン画像Ｄ７が存在しないときには、お気に入りアプリ情報Ｄ８を用いてアプリケーション名Ｄ６及びアイコン画像Ｄ７を取得して表示することができる。
【０１２５】
そして、ＣＰＵ３１１は、ステップＳ２７において、通信接続状態がオフラインからオンラインに更新されたゲーム装置１００（フレンドであるゲーム装置１００）があるかどうかを判断する（Ｓ２８）。ここで、通信接続状態がオフラインからオンラインに更新されたフレンドであるゲーム装置１００があると判断したときには（Ｓ２８でＹＥＳ）、ＣＰＵ３１１はランプ点灯処理を行う（Ｓ２９）。このランプ点灯処理とは、ＬＥＤ１６Ｃ（図２を参照）を例えば朱色に点灯させる処理である。この処理によって、オフラインからオンラインに変化したゲーム装置１００（フレンドであるゲーム装置１００）があることをユーザに対して報知することができる。なお、本実施形態では、通信接続状態がオンラインからオフラインに更新されたときにはランプ点灯処理をおこなわないが、おこなってもよい。この後、ＣＰＵ３１１はステップＳ３０に処理を進める。一方、通信接続状態がオフラインからオンラインに更新されたフレンドであるゲーム装置１００がないと判断したときには（Ｓ２８でＮＯ）、ＣＰＵ３１１はステップＳ２９を実行せずに処理をステップＳ３０に進める。
【０１２６】
次にステップＳ２６でＮＯと判断されたときの処理を説明する。通信接続状態の変更通知を受信していないと判断したときには（Ｓ２６でＮＯ）、ＣＰＵ３１１は上述したステップＳ２７〜Ｓ２９の処理を実行せずにステップＳ３０に処理を進める。
【０１２７】
続いて、ステップＳ３０の処理を説明する。ＣＰＵ３１１はログインの成功通知を受信したかどうかを判断する（Ｓ３０）。なお、このログインの成功通知は、ゲーム装置１００のサーバ４００へのログインの成功の通知であり、図１４を用いて後述するサーバ側通信処理におけるステップＳ５５において、サーバ４００からゲーム装置１００に対して送信される。そして、ログインの成功通知を受信したと判断したときには（Ｓ３０でＹＥＳ）、ＣＰＵ３１１はログインの成功をユーザに報知するための処理を行う（Ｓ３１）。例えば、ＣＰＵ３１１はログインの成功を上側ＬＣＤ２２（図２を参照）又は下側ＬＣＤ１２（図２を参照）に表示する。この後、ＣＰＵ３１１は処理をステップＳ３２に進める。一方、ログインの成功通知を受信していないと判断したときには（Ｓ３０でＮＯ）、ＣＰＵ３１１は上記ステップＳ３１を実行することなく処理をステップＳ３２に進める。
【０１２８】
ステップＳ３２においては、ＣＰＵ３１１はフレンド情報変更通知を受信したかどうかを判断する（Ｓ３２）。ここで、フレンド情報変更通知を受信したと判断したときには（Ｓ３２でＹＥＳ）、ＣＰＵ３１１はフレンド情報変更通知に含められるフレンドＩＤ、フレンド情報等でフレンドリストテーブルＤ２を更新する（Ｓ３３）。このフレンド情報変更通知は、図１５におけるステップＳ６１においてサーバ４００から送信される。フレンド情報変更通知は、ゲーム装置１００からユーザ情報の変更を受信したサーバ４００が、ゲーム装置１００のフレンドであるゲーム装置１００に対して当該ユーザ情報（すなわちフレンド情報）の変更を通知するものである。なお、お気に入り情報Ｄ８についても、ステップＳ２７で記載したような方法で適宜更新される。この後、ＣＰＵ３１１は本サーバとの通信処理を終了させて図１２のステップＳ６に処理を進める。一方、フレンド情報変更通知を受信していないと判断したときには（Ｓ３２でＮＯ）、ＣＰＵ３１１は、上記ステップＳ３３を実行せずに、本サーバとの通信処理を終了させて図１２のステップＳ６に処理を進める。
【０１２９】
以下、図１４及び図１５を用いて、サーバ４００（図５のＣＰＵ４０６）が実行するサーバ側通信処理を説明する。図１４及び図１５は、サーバ側通信処理の一例を示すフローチャートである。サーバ側通信処理は、ＣＰＵ４０６がＲＡＭ４０５に記憶されている通信プログラム（図略）を実行することで行われる。このサーバ側通信処理は、所定周期毎に繰り返し実行される。
【０１３０】
まず、ＣＰＵ４０６は、管理テーブルＤ１０（図１１を参照）に登録されているゲーム装置１００（ユーザ登録されているゲーム装置１００）から１台のゲーム装置１００を選択する（Ｓ４１）。なお、ゲーム装置１００の選択は、装置ＩＤを選択することで行われる。次に、ＣＰＵ４０６は、選択したゲーム装置１００に対応する電源オフ情報を受信したかどうか（選択した装置ＩＤを含む電源オフ情報を受信したかどうか）を判断する（Ｓ４２）。この電源オフ情報は、図１２のステップＳ７において、ゲーム装置１００から送信される情報であり、これに代えてオフラインに変更する旨の情報やこのゲーム装置１００の装置ＩＤであってもよい。ここで、選択したゲーム装置１００に対応する電源オフ情報を受信していないと判断したときには（Ｓ４２でＮＯ）、ＣＰＵ４０６は、選択したゲーム装置１００からオンライン通知を受信したかどうか（選択した装置ＩＤを含むオンライン通知を受信したかどうか）を判断する（Ｓ４３）。なお、オンライン通知は、図１３におけるステップＳ２３において、ゲーム装置１００から送信され、このゲーム装置１００の装置ＩＤを含む。
【０１３１】
そして、選択したゲーム装置１００からオンライン通知を受信したと判断したときには（Ｓ４３でＹＥＳ）、ＣＰＵ４０６は選択したゲーム装置１００の通信接続状態がオンラインであると判断する（Ｓ４４）。そして、ＣＰＵ４０６は、管理テーブルＤ１０における選択した装置ＩＤに対応するログイン判定用フラグがオンかどうかを判断する（Ｓ４５）。なお、ログイン判定用フラグがオンであるときは、現在ログオフ中であり、ログイン判定用フラグがオフのときには、現在ログイン中である。ここで、ログイン判定用フラグがオンである（現在ログオフ中である）と判断したときには（Ｓ４５でＹＥＳ）、ＣＰＵ４０６は、選択したゲーム装置１００について所定のログイン条件を満たすかどうかを判断する（Ｓ４６）。所定のログイン条件とは、例えば、選択したゲーム装置１００のユーザが不正なユーザとして登録されていないこと等である。
【０１３２】
そして、選択したゲーム装置１００について所定のログイン条件を満たさないと判断したときに（Ｓ４６でＮＯ）、ＣＰＵ４０６は、後述のステップＳ５９に処理を進める。また、選択したゲーム装置１００について所定のログイン条件を満たすと判断したときに（Ｓ４６でＹＥＳ）、ＣＰＵ４０６は、管理テーブルＤ１０における選択した装置ＩＤに対応するログイン判定用フラグをオフにすることで、選択したゲーム装置１００をログインさせる（Ｓ４７）。この後、ＣＰＵ４０６は、管理テーブルＤ１０における選択した装置ＩＤに対応する接続状態情報を、オンラインを示すように変更する（Ｓ４８）。なお、本実施例ではログイン判定用フラグを用いたが、これを用いない態様でもよい。例えば、ログイン条件を満たしていると判断した場合に、管理テーブルの接続状態情報を更新してもよい。そして、ＣＰＵ４０６は、選択したゲーム装置１００に対してフレンドＩＤの送信要求を行い、この要求に応えたゲーム装置１００からフレンドＩＤを受信する（Ｓ４９）。なお、このフレンドＩＤは、図１３におけるステップＳ２４において、ゲーム装置１００から送信されるものである。
【０１３３】
そして、ＣＰＵ４０６は、ステップＳ４９において受信したフレンドＩＤが管理テーブルＤ１０に登録されているフレンドＩＤと異なるかどうかを判断し（Ｓ５０）、異なると判断したときには（Ｓ５０でＹＥＳ）、このフレンドＩＤで選択した装置ＩＤに対応するフレンドＩＤを更新する（Ｓ５１）。この後、ＣＰＵ４０６は後述のステップＳ５２を実行する。一方、受信したフレンドＩＤが管理テーブルＤ１０に登録されているフレンドＩＤと同じであると判断したときには（Ｓ５０でＮＯ）、ＣＰＵ４０６はステップＳ５１を実行せずに後述のステップＳ５２を実行する。
【０１３４】
ステップＳ５２において、ＣＰＵ４０６は、選択した装置ＩＤと、この装置ＩＤ（フレンドＩＤ）に対応するユーザ情報Ｄ１（フレンド名、フレンドコード、お気に入りアプリＩＤ，実行中アプリＩＤ、キャラクタ情報、メッセージ及び接続状態情報）をフレンド情報として含めたフレンドリスト更新用情報を生成する。この後、ＣＰＵ４０６は、フレンドリスト更新用情報をゲーム装置１００に送信する（Ｓ５３）。また、ＣＰＵ４０６は、選択したゲーム装置１００のフレンドであるゲーム装置１００に対して、フレンド通信接続状態の変更通知を送信する（Ｓ５４）。このフレンド通信接続状態の変更通知は、選択したゲーム装置１００の接続状態情報がオフラインからオンラインに変化したことを通知するためのものである。なお、このフレンド通知状態の変更通知は、図１３におけるステップＳ２６において、ゲーム装置１００によって受信される。そして、ＣＰＵ４０６は、ログインの成功通知を選択したゲーム装置１００に対して送信する（Ｓ５５）。この後、ＣＰＵ４０６は、後述のステップＳ５９を実行する。
【０１３５】
次に、ログイン判定用フラグがオフであると判断したとき（Ｓ４５でＮＯ）の処理を説明する。このときには、ＣＰＵ４０６は、選択したゲーム装置１００に対してフレンドＩＤの送信要求を行い、この要求に応えたゲーム装置１００からフレンドＩＤを受信する（Ｓ５６）。なお、このフレンドＩＤは、図１３におけるステップＳ２４において、ゲーム装置１００から送信されるものである。
【０１３６】
そして、ＣＰＵ４０６は、ステップＳ４９において受信したフレンドＩＤが管理テーブルＤ１０に登録されているフレンドＩＤと異なるかどうかを判断し（Ｓ５７）、異なると判断したときには（Ｓ５７でＹＥＳ）、このフレンドＩＤで管理テーブルＤ１０における選択した装置ＩＤに対応するフレンドＩＤを更新する（Ｓ５８）。この後、ＣＰＵ４０６は後述のステップＳ５９を実行する。一方、受信したフレンドＩＤが管理テーブルＤ１０に登録されているフレンドＩＤと同じであると判断したときには（Ｓ５７でＮＯ）、ＣＰＵ４０６はステップＳ５８を実行せずに後述のステップＳ５９を実行する。
【０１３７】
次に、ステップＳ５９の処理を説明する。ＣＰＵ４０６は、選択したゲーム装置１００からユーザ情報変更通知を受信したかどうかを判断する（Ｓ５９）。なお、ユーザ情報変更通知は、ゲーム装置１００に登録されているユーザ情報Ｄ１が変更されたときに、当該ゲーム装置１００からサーバ４００に送信される情報である。このユーザ情報変更通知は、図１７を用いて後述するフレンド管理処理のステップＳ９８においてゲーム装置１００から送信される。ここで、選択したゲーム装置１００からユーザ情報変更通知を受信していないと判断したときには（Ｓ５９でＮＯ）、ＣＰＵ４０６は、後述のステップＳ６２を実行する。一方、選択したゲーム装置１００からユーザ情報変更通知を受信したと判断したときには（Ｓ５９でＹＥＳ）、ＣＰＵ４０６は、受信したユーザ情報変更通知に基づいて、管理テーブルＤ１０における選択した装置ＩＤに対応するユーザ情報Ｄ１を更新する（Ｓ６０）。そして、ＣＰＵ４０６は、管理テーブルＤ１０を参照して、ユーザ情報変更通知の送信元のゲーム装置１００のフレンドＩＤを取得し、このフレンドＩＤのゲーム装置１００に対して更新後のユーザ情報Ｄ１を含めたフレンド情報変更通知を送信する（Ｓ６１）。なお、フレンド情報変更通知は、図１３におけるステップＳ３２においてゲーム装置１００によって受信される。
【０１３８】
そして、ＣＰＵ３１１は、選択したゲーム装置１００から情報送信要求を受信したかどうかを判断する（Ｓ６２）。この情報送信要求は、ゲーム装置１００が、フレンド情報を表示する際に、自機に記憶していないフレンド情報や、アプリケーション名Ｄ６、アイコン画像Ｄ７の送信をサーバ４００に要求するための情報である。この情報送信要求は、図１７を用いて後述するフレンド管理処理のステップＳ１０４において送信される。ここで、選択したゲーム装置１００から情報送信要求を受信したと判断したときには（Ｓ６２でＹＥＳ）、ＣＰＵ３１１は送信を要求されている情報をゲーム装置１００に対して送信する（Ｓ６３）。なお、サーバ４００には、通信システム１で使用される全てのアプリＩＤに対応するアプリケーション名Ｄ６及びアイコン画像Ｄ７が記憶されている。この後、ＣＰＵ３１１は後述のステップＳ６４を実行する。一方、選択したゲーム装置１００から情報送信要求を受信していないと判断したときには（Ｓ６２でＮＯ）、ＣＰＵ３１１上記ステップＳ６３を実行することなく後述のステップＳ６４を実行する。
【０１３９】
そして、ＣＰＵ３１１は、ユーザ登録されている全てのゲーム装置１００について（管理テーブルＤ１０に登録されている全ての装置ＩＤについて）、上記ステップＳ４２の判断を行ったかどうかを判断する（Ｓ６４）。そして、ユーザ登録されている全てのゲーム装置１００について上記ステップＳ４２の判断を行っていないと判断したときには（Ｓ６４でＮＯ）、ＣＰＵ４０６は、ステップＳ４１に処理を戻す。なお、ステップＳ４１では、未だステップＳ４２の判断が行われておらず、ユーザ登録されているゲーム装置１００が新たに選択される。一方、ユーザ登録されている全てのゲーム装置１００について上記ステップＳ４２の判断を行っていると判断したときには（Ｓ６４でＹＥＳ）、ＣＰＵ４０６は、ユーザ登録要求をゲーム装置１００から受信したかどうかを判断する（Ｓ６５）。なお、ユーザ登録要求は、管理テーブルＤ１０に装置ＩＤ及びユーザ情報Ｄ１等の登録を要求する情報であり、図１７を用いて後述するフレンド管理処理におけるステップＳ９３においてゲーム装置１００から送信される。
【０１４０】
そして、ユーザ登録要求をゲーム装置１００から受信したと判断したときには（Ｓ６５でＹＥＳ）、ＣＰＵ４０６は、ユーザ登録要求の送信元のゲーム装置１００をユーザ登録するためのユーザ登録処理を行う（Ｓ６６）。ユーザ登録処理とは、ユーザ登録要求に含まれる、装置ＩＤ及びユーザ情報Ｄ１等を管理テーブルＤ１０に登録する処理である。この後、ＣＰＵ４０６は本サーバ側通信処理を終了させる。一方、ユーザ登録要求をゲーム装置１００から受信していないと判断したときには（Ｓ６５でＮＯ）、ＣＰＵ４０６は、上記ステップＳ６６を実行することなく、本サーバ側通信処理を終了させる。
【０１４１】
続いて、ステップＳ４２でＹＥＳ、及びステップＳ４３でＮＯと判断されたときに処理を説明する。選択したゲーム装置１００に対応する電源オフ情報を受信したと判断したとき（Ｓ４２でＹＥＳ）、または選択したゲーム装置１００からオンライン通知を受信していないと判断したときには（Ｓ４３でＮＯ）、ＣＰＵ４０６は選択したゲーム装置１００をオフラインであると判断する（Ｓ６７）。なお、本実施形態では、オンライン通知を受信していないと判断したときに、直にオフラインであると判断しているが、この構成に代えて、一定期間オンライン通知を受信していないと判断したときに、オフラインであると判断してもよい。また、オンライン通知を受信していないと判断したときに、サーバ４００がオンライン通知の送信をゲーム装置１００に対して要求し、この要求に応じたゲーム装置１００からオンライン通知を受信がなかったときにのみ、オフラインであると判断してもよい。さらに、ゲーム装置１００から自己をオフラインに変更する旨の情報を受信した場合に、オフラインであると判断してもよい。
【０１４２】
そして、ＣＰＵ４０６は、選択した装置ＩＤに対応するログイン判定用フラグがオンかどうかを、管理テーブルＤ１０を参照して判断する（Ｓ６８）。そして、選択した装置ＩＤに対応するログイン判定用フラグがオフである（現在ログイン中である）と判断したときには（Ｓ６８でＹＥＳ）、ＣＰＵ４０６は管理テーブルＤ２０における選択した装置ＩＤに対応するログイン判定用フラグをオンに更新する（Ｓ６９）。この後、ＣＰＵ４０６は、管理テーブルＤ２０における選択した装置ＩＤに対応する接続状態情報を、オフラインを示すように更新する（Ｓ７０）。そして、ＣＰＵ３１１は、選択したゲーム装置１００のフレンドであるゲーム装置１００に対して、フレンド通信接続状態の変更通知を送信する（Ｓ７１）。このフレンド通信接続状態の変更通知は、選択したゲーム装置１００の接続状態情報がオンラインからオフラインに変化したことを通知するためのものである。なお、このフレンド通信接続状態の変更通知は、図１３におけるステップＳ２６において、ゲーム装置１００によって受信される。この後、ＣＰＵ４０６は上述のステップＳ５９に処理を進める。一方、選択した装置ＩＤに対応するログイン判定用フラグがオンであると判断したときには（Ｓ６８でＮＯ）、ＣＰＵ４０６は上記ステップＳ６９〜Ｓ７１を実行することなく処理を上記ステップＳ６４に進める。
【０１４３】
次に、図１６を用いて、ゲーム装置１００（ＣＰＵ３１１）が実行するメイン処理を説明する。なお、図１６においては、「アプリケーション」を「アプリ」と記載する。このメイン処理は、ゲーム装置１００の電源がオンされたときに実行開始される。また、メイン処理は、図１２で示す通信処理とマルチタスクで実行される。図１６は、メイン処理の一例を示すフローチャートである。
【０１４４】
まず、ＣＰＵ３１１は、第１メニュー画面を下側ＬＣＤ１２に表示するための処理を実行する。第１メニュー画面には、ゲーム装置１００で実行可能なアプリケーションが表示される。この第１メニュー画面は、ゲーム装置１００で実行するアプリケーションの選択をユーザにガイドするための画面である（Ｓ８１）。
【０１４５】
次に、ＣＰＵ３１１は、フレンドリストアプリケーションＰ２の実行が選択されたか否かを判断する（Ｓ８２）。フレンドリストアプリケーションＰ２の実行が選択されたと判断したときには（Ｓ８２でＹＥＳ）、ＣＰＵ３１１はフレンド管理処理を実行する（Ｓ８３）。フレンド管理処理についての詳細は図１７を用いて後述する。この後、ＣＰＵ３１１は、電源オフの指示がユーザから入力されたか否かを判断し（Ｓ８４）、入力されたと判断したときには（Ｓ８４でＹＥＳ）、ＣＰＵ３１１は、電源回路４０に電源オフの処理の実行を指示した後、本メイン処理を終了させる。また、電源オフの指示がユーザから入力されたていないと判断したときには（Ｓ８４でＮＯ）、ＣＰＵ３１１はステップＳ８１に処理を戻す。
【０１４６】
続いて、ステップＳ８２でＮＯと判断されたときの処理を説明する。フレンドリストアプリケーションＰ２の実行が選択されていないと判断したときには（Ｓ８２でＮＯ）、ＣＰＵ３１１は、ゲーム装置１００で実行可能なアプリケーションのうち、フレンドアプリケーションＰ２とは別のアプリケーション（他のアプリケーションＰ３）が選択されたか否かを判断する（Ｓ８５）。ここで、他のアプリケーションＰ３が選択されたと判断したときには（Ｓ８５でＹＥＳ）、ＣＰＵ３１１は他のアプリケーションを実行する処理（他のアプリケーション実行処理）を行う（Ｓ８６）。この他のアプリケーションの実行処理についての詳細は図２４を用いて後述する。この後、ＣＰＵ３１１は、ステップＳ８４に処理を進める。また、他のアプリケーションＰ３が選択されていないと判断したときには（Ｓ８５でＮＯ）、ＣＰＵ３１１はステップＳ８６を実行することなく、ステップＳ８４に処理を進める。
【０１４７】
次に、図１７、図１８、図１９〜図２１を用いて、上記ステップＳ８３におけるフレンド管理処理を説明する。図１７及び図１８は、フレンド管理処理の一例を示すフローチャートである。まず、ＣＰＵ３１１は、今回のフレンドリストアプリケーションＰ１の起動が初回であるかを判断する（Ｓ９１）。ここで、今回がフレンドリストアプリケーションＰ１を起動した初回であると判断したときには（Ｓ９１でＹＥＳ）、ＣＰＵ３１１は初回起動設定処理を行う（Ｓ９２）。なお、この初回起動設定処理では、ユーザからユーザ情報Ｄ１を作成するための情報の入力を受け付け、ユーザ情報Ｄ１が生成される。例えば、ユーザ名の入力を受け付けたり、ユーザの入力に基づいてキャラクタ情報の作成等が行われる。他にも、自己がオンラインかどうかを通知するか否かやプレイ中のタイトルをフレンドに通知するか否か等を設定できてもよい。
【０１４８】
図１９は、初回起動設定処理において表示される画面の一例を示す図である。この画面は、ユーザ情報Ｄ１の作成のための全ての情報がユーザから入力された後に上側ＬＣＤ２２に表示され、作成されたユーザ情報Ｄ１をユーザに示すために表示される。この画面には、キャラクタ画像Ｇ４（ユーザ情報Ｄ１に含まれるキャラクタ情報に基づいて生成された画像）、ユーザ名Ｇ５、お気に入りアプリケーション名Ｇ６、お気に入りアプリケーションのアイコンＧ７、メッセージＧ１０及びフレンドコードＧ１１が表示される。
【０１４９】
図１７に戻って、この後、ＣＰＵ３１１は、ステップＳ９２において生成したユーザ情報Ｄ１と自機の装置ＩＤを含めたユーザ登録要求を生成して、サーバ４００に対して送信する（Ｓ９３）。なお、ゲーム装置１００がオフラインであるときにはオンラインになったときにサーバ４００に対してユーザ登録要求を送信すればよい。この後、ＣＰＵ３１１は後述するステップＳ９４を実行する。一方、今回がフレンドリストアプリケーションＰ１を起動した初回でないと判断したときには（Ｓ９１でＮＯ）、ＣＰＵ３１１は上記ステップＳ９２及びＳ９３を実行せずに後述のステップＳ９４を実行する。
【０１５０】
ステップＳ９４において、ＣＰＵ３１１は、第２メニュー画面を表示するための処理を行う。図２０は、第２メニュー画面の一例を示す図である。第２メニュー画面は、下側ＬＣＤ１２に表示され、ユーザ情報Ｄ１の変更の操作をユーザから受け付けるための操作子Ｇ２１と、フレンドであるゲーム装置１００のフレンド情報の表示の指示をユーザから受け付けるための操作子Ｇ２２が表示される。
【０１５１】
図１７に戻って、ＣＰＵ３１１はユーザ情報Ｄ１の変更の操作をユーザから受け付けたかどうかを判断する（Ｓ９５）。ここで、ユーザ情報Ｄ１の変更の操作をユーザから受け付けたと判断したときには（Ｓ９５でＹＥＳ）、ＣＰＵ３１１はユーザ情報Ｄ１の変更をガイドする画面を表示する（Ｓ９６）。そして、ＣＰＵ３１１は、ユーザ情報Ｄ１の変更の操作をユーザから受け付けてメインメモリ３２に記憶するユーザ情報Ｄ１を更新し（Ｓ９７）、更新後のユーザ情報Ｄ１を含めたユーザ情報変更通知を生成してサーバ４００に対して送信する（Ｓ９８）。この後、ＣＰＵ３１１は処理を後述のステップＳ１１２に進める。
【０１５２】
一方、ユーザ情報Ｄ１の変更の操作をユーザから受け付けていないと判断したときには（Ｓ９５でＮＯ）、ＣＰＵ３１１は、フレンド情報の表示の指示をユーザから受け付けたかどうかを判断する（Ｓ９９）。ここで、フレンド情報の表示の指示をユーザから受け付けていないと判断したときには（Ｓ９９でＮＯ）、ＣＰＵ３１１は処理を後述のステップＳ１１２に進める。
【０１５３】
一方、フレンド情報の表示の指示をユーザから受け付けたと判断したときには（Ｓ９９でＹＥＳ）、ＣＰＵ３１１はフレンドリストテーブルＤ２から全てのフレンドＩＤに対応するフレンド情報と接続状態情報を取得する（Ｓ１００）。そして、ＣＰＵ３１１はサーバ４００と通信可能であるかどうかを判断する（Ｓ１０１）。ここで、サーバ４００と通信可能でないと判断したときには（Ｓ１０１でＮＯ）、ＣＰＵ３１１はオフライン用第３メニュー画面を表示する（Ｓ１０２）。このオフライン用第３メニュー画面には、ステップＳ１００において取得したフレンド情報及び接続状態情報等が表示される。このオフライン用第３メニュー画面は、例えば図６を用いて上述したような下側ＬＣＤ１２に表示される画面であるが、全てのフレンドカードＧ１において、接続状態情報を表すテキストＧ６がオフラインと表示される。また、自機がオフラインであることを示すメッセージが上側ＬＣＤ２２又は下側ＬＣＤ１２に表示される。この後、ＣＰＵ３１１は後述するステップＳ１０６に処理を進める。
【０１５４】
また、サーバ４００と通信可能であると判断したときには（Ｓ１０１でＹＥＳ）、ＣＰＵ３１１は、フレンドリストテーブルＤ２を参照して、登録されていないフレンド情報があるかどうかを判断するとともに、対応するアプリケーション名Ｄ６及びアイコン画像Ｄ７のない（メインメモリ３２に記憶されていない）お気に入りアプリＩＤ、及び現在実行中アプリＩＤがあるかどうかを判断する（Ｓ１０３）。ステップＳ１０３でＹＥＳと判断したときには、ＣＰＵ３１１はフレンドリストテーブルＤ２に登録されていないフレンド情報や、メインメモリ３２に記憶されていないアプリケーション名Ｄ６及びアイコン画像Ｄ７をサーバ４００から取得するための処理を行う（Ｓ１０４）。なお、フレンドリストテーブルＤ２に登録されていないフレンド情報とは、例えば、次のようなものである。フレンドであるユーザが、ユーザ情報Ｄ１を入力するときに、例えば、お気に入りアプリケーション名だけを入力しない等、一部の情報を入力せず、後になって追加して入力する可能性がある。この追加して入力された情報が、サーバ４００の管理テーブルＤ１０に記憶されており、かつゲーム装置１００のフレンドリストテーブルＤ２に登録されていないときに、上記登録されていないフレンド情報となる。この処理において、ゲーム装置１００はこれらの情報の送信要求（情報送信要求）をサーバ４００に対して行う。この情報送信要求は、図１５におけるステップＳ６２において、サーバ４００によって受信の有無が判断される。そして、図１５のステップＳ６３においてサーバ４００から送信された情報を、ＣＰＵ３１１は受信してメインメモリ３２に記憶させたり（例えば、アプリケーション名Ｄ６やアイコン画像Ｄ７を記憶させたり）、受信した情報でフレンドリストテーブルＤ２を更新する。この後、ＣＰＵ３１１は後述のステップＳ１０５を実行する。一方、ステップＳ１０３でＮＯと判断したときには、ＣＰＵ３１１は上記ステップＳ１０４を実行することなく後述のステップＳ１０５を実行する。
【０１５５】
ステップＳ１０５において、ＣＰＵ３１１はオンライン用第３メニュー画面を表示する。オンライン用第３メニュー画面には、ステップＳ１００において取得したフレンド情報及び接続状態情報が表示される。このオンライン用第３メニュー画面は、例えば図６を用いて上述したような下側ＬＣＤ１２に表示される画面である。なお、上記ステップＳ９４において、サーバ４００から受信した情報がある場合には、この受信した情報を用いて第３メニュー画面の表示が行われる。
【０１５６】
そして、ＣＰＵ３１１は、オンライン用第３メニュー画面又はオフライン用第３メニュー画面（例えば、図６の下側ＬＣＤ１２に表示される画面等）に表示される複数のフレンドカードＧ１の中から１つがユーザによって選択されたかどうかを判断する（Ｓ１０６）。このフレンドカードＧ１の選択は、例えば、画面中央にフレンドカードＧ１を表示した状態で、当該フレンドカードＧ１に対するタッチ操作をユーザからタッチパネル１３で受け付ける等の方法で行われる。同図ではフレンド名が「さとう」のフレンドカードＧ１が選択されている。ここで、複数のフレンドカードＧ１の中から１つがユーザによって選択されていないと判断したときには（Ｓ１０６でＮＯ）、ＣＰＵ３１１は、後述のステップＳ１１０を実行する。一方、複数のフレンドカードＧ１の中から１つがユーザによって選択されたと判断したときには（Ｓ１０６でＹＥＳ）、ＣＰＵ３１１は選択されたフレンドカードＧ１を拡大して上側ＬＣＤ２２に表示するための処理を行う（Ｓ１０７）。例えば、図６における上側ＬＣＤ２２に表示されている画面が、このとき拡大されて表示されたフレンドカードＧ１を示している。なお、フレンドカードＧ１は拡大表示されるときには拡大前に表示されていなかった種類のフレンド情報（フレンドコードＧ１１等）も表示する。
【０１５７】
そして、ＣＰＵ３１１は、選択されたフレンドカードＧ１の削除の指示をユーザから受け付けたかどうかを判断する（Ｓ１０８）。この削除の指示は、例えば操作子Ｇ２のタッチ操作等で行われる。ここで、選択されたフレンドカードＧ１の削除の指示をユーザから受け付けたと判断したときには（Ｓ１０８でＹＥＳ）、ＣＰＵ３１１は、選択されたフレンドカードＧ１を削除して表示する処理を行うとともに、当該フレンドカードＧ１に対応するフレンド登録（フレンドリストテーブルＤ２に登録されている情報）を削除する（Ｓ１０９）。そして、ＣＰＵ３１１は後述のステップＳ１１０を実行する。一方、選択されたフレンドカードＧ１の削除の指示をユーザから受け付けていないと判断したときには（Ｓ１０８でＮＯ）、ＣＰＵ３１１は、上記ステップＳ１０９を実行することなく、後述のステップＳ１１０を実行する。なお、本フローチャートには表れていないが、フレンドカードＧ１の削除は何回でも行うことができる。また、フレンドカードＧ１の選択を変更することや、フレンドカードＧ１の選択を解除することもできる。
【０１５８】
ステップＳ１１０において、ＣＰＵ３１１は、フレンド登録指示をユーザから受け付けたかどうかを判断する。なお、フレンド登録指示は、例えば操作子Ｇ３のタッチ操作等である。ここで、フレンド登録指示をユーザから受け付けたと判断したときには（Ｓ１１０でＹＥＳ）、ＣＰＵ３１１は、新たに追加してフレンド登録を行うためのフレンド登録処理を実行する（Ｓ１１１）。フレンド登録処理についての詳細は、図２１及び図２２を用いて後述する。そして、ＣＰＵ３１１は後述のステップＳ１１２を実行する。一方、フレンド登録指示をユーザから受け付けていないと判断したときには（Ｓ１１０でＮＯ）、ＣＰＵ３１１は、ステップＳ１１１を実行せずに後述のステップＳ１１２を実行する。
【０１５９】
そして、ＣＰＵ３１１は、フレンドリストアプリケーションＰ２の実行を終了させる指示をユーザから受け付けたかどうかを判断する。そして、フレンドリストアプリケーションＰ２の実行を終了させる指示をユーザから受け付けたと判断したときには（Ｓ１１２でＹＥＳ）、ＣＰＵ３１１はフレンド管理処理を終了させてメイン処理に処理を戻す。一方、フレンドリストアプリケーションＰ２の実行を終了させる指示をユーザから受け付けていないと判断したときには（Ｓ１１２でＮＯ）、ＣＰＵ３１１は処理をステップＳ９１に戻す。
【０１６０】
以下に、図７、図８、及び図２１〜図２３を用いて上記ステップＳ１１１におけるフレンド登録処理を説明する。図２１及び図２２は、フレンド登録処理の一例を示すフローチャートである。まず、ＣＰＵ３１１は、第４メニュー画面を表示するための処理を行う（Ｓ１２１）。第４メニュー画面は、ネットワーク３００を用いてゲーム装置１００にフレンド登録を行わせる指示、近距離無線通信を用いてゲーム装置１００にフレンド登録を行わせる指示、及びフレンド登録を行わない指示のうち何れかの指示の入力をユーザに対してガイドするための画面である。図２３は、第４メニュー画面の一例を示す図である。第４メニュー画面には、操作子Ｇ３１〜Ｇ３３が表示されている。例えば、操作子Ｇ３１のタッチ操作が、近距離無線通信を用いてゲーム装置１００にフレンド登録を行わせる指示操作（以下、近距離フレンド登録指示操作）と記載する）である。また、例えば、操作子Ｇ３２のタッチ操作が、ネットワーク３００を用いてゲーム装置１００にフレンド登録を行わせる指示操作（以下、「ネットワーク経由フレンド登録指示操作」と記載する）である。また、例えば、操作子Ｇ３３のタッチ操作が、フレンド登録を行わない指示操作である。
【０１６１】
図２１に戻って、ＣＰＵ３１１は、近距離フレンド登録指示操作をユーザから受け付けたかどうかを判断する（Ｓ１２２）。ここで、近距離フレンド登録指示操作をユーザから受け付けたと判断したときには（Ｓ１２２でＹＥＳ）、ＣＰＵ３１１は、フレンド登録の対象となる他のゲーム装置１００においても近距離フレンド登録指示操作が要求されることを報知するためのメッセージを例えば上側ＬＣＤ２２に表示する（Ｓ１２３）。そして、ＣＰＵ３１１は、自機の装置ＩＤを含むビーコンをブロードキャストで送信する（Ｓ１２４）。なお、無線通信モジュール３６がすれちがい通信又はサーバとの通信処理を実行しているときには、ＣＰＵ３１１はこの通信の終了を待ってから無線通信モジュール３６を使用してステップＳ１２４の処理を実行する。あるいは、ＣＰＵ３１１はこれらの通信の終了を待たずにすれちがい通信又はサーバとの通信を直ちに中断してステップＳ１２４の処理を実行する。なお、ステップＳ１２４〜後述のステップＳ１４２の処理を実行している間は、ＣＰＵ３１１は図１２で示す通信処理を行わない。この後、ＣＰＵ３１１は、他のゲーム装置１００から閾値ａを超えるビーコンを受信したかどうかを判断する（Ｓ１２５）。ここで、閾値ａとは、処理に使用不可能な程に信号の強度が弱いビーコンを破棄するための値であり、無線通信モジュール３６が、閾値ａを超える信号強度のビーコンのみを取得し、ＣＰＵ３１１に入力する。また、閾値ａは、後述の通り、近距離無線通信を用いたアプリケーションを実行する時に必要な信号強度の閾値としても用いられる。
【０１６２】
そして、他のゲーム装置１００から閾値ａを超えるビーコンを受信していないと判断したとき（Ｓ１２５でＮＯ）、ＣＰＵ３１１は後述のステップＳ１３３に処理を進める。一方、他のゲーム装置１００から閾値ａを超えるビーコンを受信したと判断したとき（Ｓ１２５でＹＥＳ）、ＣＰＵ３１１は受信したビーコンが自機の装置ＩＤを含むかを判断する（Ｓ１２６）。なお、自機の装置ＩＤを含むときには、受信したビーコンは、ステップＳ１２４において自機で送信したビーコンを受信した他のゲーム装置１００が、この自機で送信したビーコンに応答して送信したビーコンである。従って、ステップＳ１２６において肯定と判断されたときには、他のゲーム装置１００が自機と双方向で近距離無線通信可能な状態にある可能性が高い。
【０１６３】
そして、受信したビーコンが自機の装置ＩＤを含まないと判断したときには（Ｓ１２６でＮＯ）、ＣＰＵ３１１は、受信したビーコンを破棄するとともに、ビーコンの送信元のゲーム装置１００の装置ＩＤ、自機の装置ＩＤ及びユーザ情報Ｄ１の一部（例えば、ユーザ名及びキャラクタ情報）を含めたビーコンをブロードキャストで送信する（Ｓ１２７）。なお、受信したビーコンを破棄した理由は、当該ビーコンは、ステップＳ１２４において自機で送信したビーコンに応答して他のゲーム装置１００から送信されたものではないからである。この後、ＣＰＵ３１１は、後述のステップＳ１３３に処理を進める。
【０１６４】
一方、受信したビーコンが自機の装置ＩＤを含むと判断したときには（Ｓ１２６でＹＥＳ）、当該ビーコンはステップＳ１２４において自機で送信したビーコンに応答して他のゲーム装置１００から送信されたものである。このときには、ＣＰＵ３１１は、受信したビーコンの信号強度（ｄＢｍ）で通信レベルテーブルＤ４（図１０Ｃを参照）を参照して、受信したビーコンの信号強度（ｄＢｍ）に対応する通信レベルを決定する（Ｓ１２９）。
【０１６５】
そして、ＣＰＵ３１１は、ステップＳ１２９において決定した通信レベルが一定レベル以上であるか（例えば、通信レベルＬ２以上であるか）を判断する（Ｓ１３０）。なお、この一定レベルをユーザがマニュアルで設定変更できる構成であってもよい。また、本実施形態では、信号強度に基づいて通信レベルを決定し、この通信レベルを用いて信号強度が通信状態条件を満たすかを判断しているが、この構成に代えて通信レベルを用いずに信号強度（ｄＢｍ）を直接用いて信号強度が通信状態条件を満たすか（例えば、信号強度が閾値ｂ（閾値ｂ＞閾値ａ）を超えるか等の条件）を判断してもよい。そして、通信レベルが一定レベル以上でないと判断したときには（Ｓ１３０でＮＯ）、ＣＰＵ３１１は後述のステップＳ１３３に処理を進める。また、通信レベルが一定レベル以上であると判断したときには（Ｓ１３０でＹＥＳ）、ＣＰＵ３１１は受信したビーコンに含まれる他のゲーム装置の装置ＩＤ及びユーザ情報Ｄ１（ユーザ名及びキャラクタ情報）をフレンドＩＤ及びフレンド情報（ユーザ名はフレンド名として登録される）としてフレンド候補リストテーブルＤ３（図１０Ｂを参照）に登録する（Ｓ１３１）。そして、ＣＰＵ３１１は、登録したフレンド情報を表示するための処理を行う（Ｓ１３２）。このステップＳ１３２で表示される画面は、例えば図７で示すようなものである。図７の画面は、上述したように下側ＬＣＤ１２に表示される。この画面において、フレンドカードＧ１が表示され、フレンドカードＧ１内には、他のユーザのフレンド情報（キャラクタ情報に基づくキャラクタＧ４及びユーザ名Ｇ５）が表示される。
【０１６６】
そして、ＣＰＵ３１１は、フレンド候補リストテーブルＤ３に登録されている装置ＩＤの数が一定数（例えば３台）に達するという条件、及びステップ１２２でＹＥＳと判断してから一定時間が経過したという条件のうち何れか一つでも成立したかどうかを判断する（Ｓ１３３）。なお、ステップＳ１２２でＹＥＳと判断されたときに、ＣＰＵ３１１は、タイマを作動させており、これによって一定時間の経過を判断する。ステップＳ１３３でＮＯと判断したときには、ＣＰＵ３１１は、ステップＳ１２４に処理を戻し、ステップＳ１３３ＹＥＳと判断するまで、上記ステップＳ１２４〜Ｓ１３２の処理を繰り返し実行する。なお、ステップＳ１３２において表示される画面には、フレンド候補リストテーブルＤ３に装置ＩＤが登録される都度、登録された装置ＩＤのフレンド情報を表示するフレンドカードＧ１が追加的に表示される。
【０１６７】
一方、ステップＳ１３３でＹＥＳと判断したときには、ＣＰＵ３１１は、フレンド候補リストテーブルＤ３へのフレンドＩＤの登録数が１以上であるかを判断する（Ｓ１３４）。そして、フレンド候補リストテーブルＤ３へのフレンドＩＤの登録数が１以上でないと判断したときには（Ｓ１３４でＮＯ）、フレンド候補となる他のゲーム装置を検索できなかったことになるので、ＣＰＵ３１１は、フレンド候補となる（フレンド候補リストテーブルＤ３にフレンドＩＤを登録するための）他のゲーム装置１００の検索の再実行の指示（再検索指示）をユーザに促すための画面を表示する処理を実行し、この後、再検索指示を受け付けたかどうかを判断する（Ｓ１３５）。そして、再検索指示を受け付けていないと判断したときには（Ｓ１３５でＮＯ）、ＣＰＵ３１１はフレンド登録処理を終了させて処理をフレンド管理処理に戻し、再検索指示を受け付けたと判断したときには（Ｓ１３５でＹＥＳ）、ＣＰＵ３１１は、処理をステップＳ１２３に戻して、再度フレンド候補となる他のゲーム装置１００を検索する（Ｓ１２３〜Ｓ１３４の処理を実行する）。
【０１６８】
次に、ステップＳ１３４でＹＥＳと判断されたときの処理を説明する。フレンド候補リストテーブルＤ３への装置ＩＤの登録数が１以上であると判断したときには（Ｓ１３４でＹＥＳ）、ＣＰＵ３１１は、通信レベル順にフレンド情報（フレンドカードＧ１）を並び替えて表示する（Ｓ１３６）。なお、ステップＳ１３６を実行することなく、ビーコンを受信した順番でフレンドカードＧ１を表示してもよい。そして、ＣＰＵ３１１は、フレンド候補リストテーブルＤ３に登録されているフレンドＩＤから１つのフレンドＩＤを選択する操作（表示されているフレンドカードＧ１から何れかを選択する操作）をユーザから受け付けたかどうかを判断する（Ｓ１３７）。なお、例えば、図７の画面に表示されているフレンドカードＧ１のタップ操作が、フレンドＩＤを選択する操作である。
【０１６９】
ここで、１つのフレンドＩＤを選択する操作をユーザから受け付けていないと判断したときに（Ｓ１３７でＮＯ）、ＣＰＵ３１１はフレンド登録処理を終了させてフレンド管理処理に処理を戻す。一方、１つのフレンドＩＤを選択する操作をユーザから受け付けたと判断したときには（Ｓ１３７でＹＥＳ）、ＣＰＵ３１１は、選択したフレンドＩＤのゲーム装置１００に対して当該ゲーム装置１００を選択したことを通知（選択通知）する（Ｓ１３８）。なお、この選択通知は、他のゲーム装置１００においては、自機のフレンドＩＤが選択されたことの通知である。そして、選択したフレンドＩＤのゲーム装置１００から選択通知を受信したかどうかを判断する（Ｓ１３９）。ここで、選択したフレンドＩＤのゲーム装置１００から選択通知を受信していないと判断したときには（Ｓ１３９でＮＯ）、フレンドリストテーブルＤ２への登録を行わずに、ＣＰＵ３１１は、処理をステップＳ１２３に戻して、再度フレンド候補となる他のゲーム装置１００を検索する（Ｓ１２３〜Ｓ１３８の処理を実行する）。
【０１７０】
一方、選択したフレンドＩＤのゲーム装置１００から選択通知を受信したと判断したときには（Ｓ１３９でＹＥＳ）、ＣＰＵ３１１は、選択したフレンドＩＤのゲーム装置１００との間で、ステップＳ１３１において取得することができたフレンド情報の他のフレンド情報（ユーザ情報Ｄ１に含まれるフレンドコード、お気に入りアプリＩＤ、実行中アプリＩＤ及びメッセージ等）を送受信し合う（Ｓ１４０）。そして、ＣＰＵ３１１は、ステップＳ１４０において受信したフレンド情報と、フレンド候補リストテーブルＤ３に登録されているフレンドＩＤ及びフレンド情報（ユーザ名及びキャラクタ情報等）とを対応付けてフレンドリストテーブルＤ２に登録する（Ｓ１４１）。そして、ＣＰＵ３１１はフレンド候補リストテーブルＤ３に登録されている事項を削除する。この後、ＣＰＵ３１１はフレンド登録を完了したことを示す画面を表示する（Ｓ１４２）。なお、ステップＳ１４２においては、例えば図８で示すような画面が表示される。この後、ＣＰＵ３１１はフレンド登録処理を終了させてフレンド管理処理に処理を戻す。なお、ステップＳ１４２の実行後に、ステップＳ１３７に戻って、残りのフレンド候補からさらに登録するフレンド候補を続けてユーザに選択させてもよい。
【０１７１】
以下に、ステップＳ１２２でＮＯと判断されたときの処理を説明する。ＣＰＵ３１１は、ネットワーク経由フレンド登録指示操作を受け付けたかどうかを判断する（Ｓ１４３）。そして、ネットワーク経由フレンド登録指示操作を受け付けたと判断したときには（Ｓ１４３でＹＥＳ）、ＣＰＵ３１１は自機がオンラインであるかどうかを判断する（Ｓ１４４）。自機がオンラインであると判断したときには（Ｓ１４４でＹＥＳ）、フレンドコードをユーザが入力することによってフレンド登録（フレンドリストテーブルＤ２への登録）を行う。ここで、自機がオンラインでないと判断したときには（Ｓ１４４でＮＯ）、ＣＰＵ３１１は、オフライン状態のためネットワーク経由フレンド登録できないことを表示して（Ｓ１４５）、処理をステップＳ１２１に戻す。また、自機がオンラインであると判断したときには（Ｓ１４４でＹＥＳ）、ＣＰＵ３１１は、フレンドコードの入力のための画面を表示して、他のゲーム装置１００のフレンドコードの入力を受け付ける。入力されたフレンドコードは、サーバ４００に対して送信され、ゲーム装置１００はサーバ４００からフレンドコードに対応するフレンドＩＤ及びフレンド情報を取得したとき、フレンドリストテーブルＤ２に登録する（Ｓ１４６）。この後、ＣＰＵ３１１はフレンド登録処理を終了させてフレンド管理処理に処理を戻す。また、ネットワーク経由フレンド登録指示操作を受け付けていないと判断したときとは（Ｓ１４３でＮＯ）、ＣＰＵ３１１がフレンド登録を行わない指示操作を受け付けたときである。このときには、ＣＰＵ３１１はフレンド登録処理を終了させてフレンド管理処理に処理を戻す。
【０１７２】
以下、図２４を用いて、上記ステップＳ８６におけるその他のアプリケーション実行処理を説明する。図２４は、その他のアプリケーション実行処理の一例を示すフローチャートである。まず、ＣＰＵ３１１は、オンラインゲーム（ネットワーク３００を介したオンラインゲーム）又は近距離無線通信を用いたゲームが選択されているかどうかを判断する（Ｓ１５１）。そして、オンラインゲーム又は近距離無線通信を用いたゲームが選択されていないと判断したときには（Ｓ１５１でＮＯ）、ＣＰＵ３１１は所定のゲーム処理（例えば、仮想三次元空間において、ユーザの操作に基づいてプレイヤキャラクタの位置を変更したり、仮想三次元空間を描画するための処理等）を実行する（Ｓ１５２）。なお、ステップＳ１５２においては、オフラインでゲームがユーザに実行される場合であるため、ゲーム装置１００は自機で記憶するゲーム情報（ゲーム処理の実行に必要な情報）のみに基づいて所定のゲーム処理を実行する。この後、ＣＰＵ３１１は後述のステップＳ１５７を実行する。
【０１７３】
一方、オンラインゲーム又は近距離無線通信を用いたゲームが選択されていると判断したときには（Ｓ１５１でＹＥＳ）、ＣＰＵ３１１はゲームの相手方のゲーム装置１００からゲーム情報を受信したかどうかを判断する（Ｓ１５３）。そして、ゲームの相手方のゲーム装置１００からゲーム情報を受信していないと判断したときには（Ｓ１５３でＮＯ）、ＣＰＵ３１１は、上記ステップＳ１５２の処理を実行する（自機で記憶するゲーム情報のみに基づいて所定のゲーム処理を実行する）。この後、ＣＰＵ３１１は後述のステップＳ１５７を実行する。一方、ゲームの相手方のゲーム装置１００からゲーム情報を受信したと判断したときには（Ｓ１５３でＹＥＳ）、ＣＰＵ３１１は、近距離無線通信を用いたゲームが選択されているかを判断する（Ｓ１５４）。ここで、近距離無線通信を用いたゲームが選択されていないとき、すなわちオンラインゲームが選択されているときには（Ｓ１５４でＮＯ）、ＣＰＵ３１１は受信したゲーム情報を用いて所定のゲーム処理を実行する。一方、近距離無線通信を用いたゲームが選択されていると判断したときには（Ｓ１５４でＹＥＳ）、ＣＰＵ３１１はゲーム情報の信号強度（ｄＢｍ）を測定し、この測定した信号強度（ｄＢｍ）が閾値ａ以下かどうかを判断する（Ｓ１５５）。なお、本実施例ではゲーム情報の信号強度（ｄＢｍ）を測定したが、他の情報処理装置との通信の強度を表すものであれば、他のものを用いてもよい（例えば、ビーコンの信号強度など）。
【０１７４】
信号強度（ｄＢｍ）が閾値ａ以下であると判断したときには（Ｓ１５５でＹＥＳ）、ＣＰＵ３１１はこのゲーム情報を破棄して、上記ステップＳ１５２の処理を実行する（自機で記憶するゲーム情報のみに基づいて所定のゲーム処理を実行する）。この後、ＣＰＵ３１１は後述のステップＳ１５７を実行する。一方、信号強度（ｄＢｍ）が閾値ａを超えていると判断したときには（Ｓ１５５でＮＯ）、ＣＰＵ３１１は受信したゲーム情報を用いて所定のゲーム処理を実行する（Ｓ１５６）。  
【０１７５】
そして、ＣＰＵ３１１はフレンドリストアプリケーションＰ１の実行指示を受け付けたかを判断する（Ｓ１５７）。なお、本実施形態では、その他のアプリケーション実行処理中においても、フレンドアプリケーションＰ１を起動させることができる。ここで、フレンドリストアプリケーションＰ１の実行指示を受け付けたと判断したときには（Ｓ１５７でＹＥＳ）、ＣＰＵ３１１は図１７〜図２３を用いて説明した上記フレンド管理処理を実行する（Ｓ１５８）。そして、ＣＰＵ３１１は、フレンド管理処理において複数のフレンドカードＧ１の中から１つがユーザによって選択されたかどうかを判断する（Ｓ１５９）。
【０１７６】
そして、複数のフレンドカードＧ１の中から１つがユーザによって選択されたと判断したときには（Ｓ１５９でＹＥＳ）、ＣＰＵ３１１は、フレンドカードＧ１に対応するゲーム装置１００をオンラインゲームの相手としてメインメモリ３２に登録し、かつオンラインゲーム又は近距離無線通信を用いたゲームを選択的に設定する（Ｓ１６０）。オンラインゲームと近距離無線通信を用いたゲームから何れを設定するかは、ユーザの選択操作に基づいて決定される。なお、ネットワーク３００やサーバ４００を介してゲーム装置１００同士が通信を行うときには、ＩＰアドレス等の識別情報が必要になる場合がある。この場合には、ステップＳ１６０において、ゲーム装置１００と他のゲーム装置１００が互いにＩＰアドレス等を通知する。そして、ＣＰＵ３１１は、その他のアプリケーション実行処理の終了の指示をユーザから受け付けたかどうかを判断する（Ｓ１６１）。ここで、その他のアプリケーション実行処理の終了の指示をユーザから受け付けたと判断したときには（Ｓ１６１でＹＥＳ）、ＣＰＵ３１１はその他のアプリケーション実行処理を終了させる。一方、その他のアプリケーション実行処理の終了の指示をユーザから受け付けていない判断したときには（Ｓ１６１でＮＯ）、ＣＰＵ３１１は、処理をステップＳ１５１に戻す。
【０１７７】
次に、フレンドリストアプリケーションＰ１の実行指示を受け付けていないと判断したときには（Ｓ１５７でＮＯ）、または複数のフレンドカードＧ１の中から１つがユーザによって選択されていないと判断したときには（Ｓ１５９でＮＯ）の処理について説明する。このときには、ＣＰＵ３１１は、上記ステップＳ１５８〜Ｓ１６０の処理を実行することなく、上記ステップＳ１６１の処理を実行する。そして、ステップＳ１６１において、その他のアプリケーション実行処理の終了の指示をユーザから受け付けていない判断したときには（Ｓ１６１でＮＯ）、ＣＰＵ３１１は、処理をステップＳ１５１に戻す。また、その他のアプリケーション実行処理の終了の指示をユーザから受け付けたと判断したときには（Ｓ１６１でＹＥＳ）、ＣＰＵ３１１はその他のアプリケーション実行処理を終了させる。
【０１７８】
上述したように、本実施形態にかかる通信システム１は、他のゲーム装置１００との間の近距離無線通信が通信状態に関する通信状態条件（例えば、受信したビーコンの信号強度に基づいて決定した、通信レベルが所定レベルよりも大きいこと等の条件）を満たすときにのみ、受信した装置ＩＤをフレンド登録するという特徴（第１の特徴）を備える。これによって、通信状態条件を他の情報処理装置がある程度自機の近くに居ることを表す条件等に設定することで、自機のある程度近くに居る他の情報処理装置のみをフレンド登録の対象とすることができる。これによって、ユーザがフレンド登録を希望しない他のゲーム装置１００を誤ってゲーム装置１００でフレンド登録してしまうことを効果的に防止し、より正確にユーザ所望の他のゲーム装置１００を自己のゲーム装置１００にフレンド登録させることができる。
【０１７９】
また、本実施形態にかかる通信システム１は、自動的に通信可能なアクセスポイント２００を検索して接続し、当該アクセスポイント２００を介して、自機のフレンドである他のゲーム装置１００の通信状態情報（例えば、オンラインか、オフラインかを示す情報）をサーバ４００から受信するという特徴（第２の特徴）を備える。なお、ゲーム装置１００は、携帯型の装置であり、かつ無線通信によってアクセスポイント２００に接続されるため、オフラインであるかオンラインであるかの通信接続状態が変化し易い。本実施形態では、第２の特徴によって、ゲーム装置１００は、アクセスポイント２００に接続する度にサーバ４００から自機のフレンドであるゲーム装置１００の通信接続状態を取得するため、当該通信接続状態の変化を迅速に取得することができる。
【０１８０】
なお、本実施形態の変形例を以下に記載する。
【０１８１】
（１）本実施形態では、その他のアプリケーションＰ３は、ゲーム処理を実行するためのゲームアプリケーションであるが、これに限定されず他の種類のアプリケーションであってもよい。例えば、ゲーム装置１００のユーザと他のゲーム装置１００のユーザ間で通話やチャットを行わせるためのアプリケーション等であってもよい。この場合には、フレンド登録したゲーム装置１００同士に限って通話やチャットのための通信を行う。
【０１８２】
（２）本実施形態では、フレンド登録処理において、ユーザからフレンド候補の選択が行われたときに限って、フレンド登録を行っているが（ステップＳ１３７〜Ｓ１４１）、この構成に限定されない。例えば、ステップＳ１３０において通信レベルが一定レベル以上であると判断されたゲーム装置１００を全て自動的にフレンド登録してもよい。
【０１８３】
（３）本実施例は、本発明をゲーム装置１００に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機（ＰＨＳ）、ＰＤＡ等の携帯情報端末にも本発明の適用は可能である。
【０１８４】
（４）なお、本実施形態では、１つのサーバ３００で上述したサーバ側通信処理を実行しているが、複数のサーバで上記サーバ側通信処理を分担してもよい。
【符号の説明】
【０１８５】
１００  ゲーム装置
１１  下側ハウジング
１２  下側ＬＣＤ
１３  タッチパネル
１４  操作ボタン
１５  アナログスティック
１６  ＬＥＤ
２１  上側ハウジング
２２  上側ＬＣＤ
２３  外側撮像部
２３ａ  外側撮像部（左）
２３ｂ  外側撮像部（右）
２４  内側撮像部
２５  ３Ｄ調整スイッチ
２６  ３Ｄインジケータ
２８  タッチペン
３１  情報処理部
３１１  ＣＰＵ
３１２  ＧＰＵ
３２  メインメモリ
６０  マーカー
６４Ｌ  左仮想カメラ
６４Ｒ  右仮想カメラ
２００  アクセスポイント
３００  ネットワーク
４００  サーバ
【図１】
0005953005.tif 000002
【図２】
0005953005.tif 000003
【図３Ａ】
0005953005.tif 000004
【図３Ｂ】
0005953005.tif 000005
【図３Ｃ】
0005953005.tif 000006
【図３Ｄ】
0005953005.tif 000007
【図４】
0005953005.tif 000008
【図５】
0005953005.tif 000009
【図６】
0005953005.tif 000010
【図７】
0005953005.tif 000011
【図８】
0005953005.tif 000012
【図９】
0005953005.tif 000013
【図１０Ａ】
0005953005.tif 000014
【図１０Ｂ】
0005953005.tif 000015
【図１０Ｃ】
0005953005.tif 000016
【図１１】
0005953005.tif 000017
【図１２】
0005953005.tif 000018
【図１３】
0005953005.tif 000019
【図１４】
0005953005.tif 000020
【図１５】
0005953005.tif 000021
【図１６】
0005953005.tif 000022
【図１７】
0005953005.tif 000023
【図１８】
0005953005.tif 000024
【図１９】
0005953005.tif 000025
【図２０】
0005953005.tif 000026
【図２１】
0005953005.tif 000027
【図２２】
0005953005.tif 000028
【図２３】
0005953005.tif 000029
【図２４】
0005953005.tif 000030