(57)【特許請求の範囲】
【請求項１】
他の情報処理装置および所定のアクセスポイントの探索を近距離無線通信を利用して自動的に行う探索手段と、
前記探索手段によって探索された他の前記情報処理装置との間で接続が確立した後に、所定のデータ通信処理を自動的に行う第１通信処理手段と、
前記探索手段によって探索されたアクセスポイントと接続が確立した後に、当該アクセスポイントを介したデータ通信処理を自動的に行う第２通信処理手段と、
前記探索手段によって探索された結果が他の情報処理装置であるか所定のアクセスポイントであるかを判別する探索結果判別手段と、
前記第１通信処理手段による通信処理と前記第２通信処理手段による通信処理との間で、実行する通信処理を前記探索結果判別手段で判別された結果に応じて切り替える通信処理制御手段と、
非使用状態と使用状態とを切り替える使用状態切替手段とを備え、
前記第２通信処理手段は、前記アクセスポイントが探索されたことが判別されたとき、当該アクセスポイントに接続する接続手段を含み、
前記接続手段は、前記情報処理装置が前記非使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後、前記アクセスポイントとの接続を切断し、前記情報処理装置が前記使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後も当該アクセスポイントとの接続を維持する、情報処理装置。
【請求項２】
前記探索手段は、
第１探索と第２探索とを自動的に切り替える探索切替手段と、
前記探索切替手段によって前記第１探索に切り替えられたときは、前記他の情報処理装置の探索を自動的に行う第１探索手段と、
前記探索切替手段によって前記第２探索に切り替えられたとき、前記所定のアクセスポイントの探索を自動的に行う第２探索手段とを含む、請求項１に記載の情報処理装置。
【請求項３】
前記探索切替手段は、所定時間が経過する毎に前記第１探索と前記第２探索とを切り替える、請求項２に記載の情報処理装置。
【請求項４】
前記所定時間は、前記探索切替手段によって前記第１探索に切り替えられた後は、第１単位時間であり、前記探索切替手段によって前記第２探索に切り替えられた後は、当該第１単位時間よりも短い第２単位時間である、請求項３に記載の情報処理装置。
【請求項５】
前記探索手段は、前記所定のアクセスポイントの探索が行われる比率よりも前記他の情報処理装置の探索が行われる比率のほうがより高くなるように前記探索を行う、請求項１に記載の情報処理装置。
【請求項６】
前記探索切替手段は、前記情報処理装置が前記非使用状態のときにおいて、前記接続手段によって前記アクセスポイントとの接続が切断されたとき、前記第１探索に切り替える、請求項１記載の情報処理装置。
【請求項７】
前記探索切替手段は、前記情報処理装置が前記使用状態のときにおいて、前記接続手段によって前記アクセスポイントに接続された後、当該アクセスポイントとの通信が不可能になったとき、前記第１探索に切り替える、請求項６に記載の情報処理装置。
【請求項８】
前記接続手段は、前記情報処理装置の状態が前記使用状態から前記非使用状態に切り替わったとき、前記第１通信処理手段または前記第２通信処理手段による前記データ通信が行われていても当該データ通信を中止し、非使用状態における前記第１探索および第２探索を開始する、請求項１に記載の情報処理装置。
【請求項９】
前記第１探索手段は、前記他の情報処理装置を探索するための第１探索信号を繰り返し送信し、および、前記他の情報処理装置から繰り返し送信される当該第１探索信号の受信を試み、
前記第２探索手段は、前記アクセスポイントから繰り返し送信される第２探索信号の受信を試みる、請求項２に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、前記探索切替手段によって切り替えが行われる切替条件を更新する切替条件更新手段をさらに備え、
前記探索切替手段は、前記切替条件更新手段によって更新された切替条件に基づいて、前記第１探索と第２探索とを自動的に切り替える、請求項２に記載の情報処理装置。
【請求項１１】
前記情報処理装置は、サーバから前記切替条件を受信する切替条件受信手段をさらに備え、
前記切替条件更新手段は、前記切替条件受信手段によって受信された前記切替条件に更新する、請求項１０に記載の情報処理装置。
【請求項１２】
前記第１通信処理手段は、近距離無線による通信可能範囲に存在する他の情報処理装置と当該近距離無線通信を用いて直接的に接続してデータ通信を行う処理であり、
前記第２通信処理手段は、前記アクセスポイントを介してネットワークに接続し、当該ネットワークを経由してサーバ又は他の情報処理装置との間でデータ通信を行う処理である、請求項１ないし１１記載の情報処理装置。
【請求項１３】
前記情報処理装置は、携帯型の情報処理装置である、請求項１ないし１２に記載の情報処理装置。
【請求項１４】
情報処理装置のコンピュータに実行させる情報処理プログラムであって、
他の情報処理装置および所定のアクセスポイントの探索を自動的に行う探索手段と、
前記探索手段によって探索された他の情報処理装置との間で接続が確立した後に、所定のデータ通信処理を自動的に行う第１通信処理手段と、
前記探索手段によって探索されたアクセスポイントと接続が確立した後に、当該アクセスポイントを介したデータ通信処理を自動的に行う第２通信処理手段と、
前記探索手段によって探索された結果が他の情報処理装置であるか所定のアクセスポイントであるかを判別する探索結果判別手段と、
前記第１通信処理手段による通信処理と前記第２通信処理手段による通信処理との間で、実行する通信処理を前記探索結果判別手段で判別された結果に応じて切り替える通信処理制御手段と、
非使用状態と使用状態とを切り替える使用状態切替手段として前記コンピュータを機能させ、
前記第２通信処理手段は、前記アクセスポイントが探索されたことが判別されたとき、当該アクセスポイントに接続する接続手段を含み、
前記接続手段は、前記情報処理装置が前記非使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後、前記アクセスポイントとの接続を切断し、前記情報処理装置が前記使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後も当該アクセスポイントとの接続を維持する、情報処理プログラム。
【請求項１５】
情報処理装置を制御する情報処理方法であって、
他の情報処理装置および所定のアクセスポイントの探索を自動的に行う探索ステップと、
前記探索ステップにおいて探索された他の情報処理装置との間で接続が確立した後に、所定のデータ通信処理を自動的に行う第１通信処理ステップと、
前記探索ステップにおいて探索されたアクセスポイントと接続が確立した後に、当該アクセスポイントを介したデータ通信処理を自動的に行う第２通信処理ステップと、
前記探索ステップにおいて探索された結果が他の情報処理装置であるか所定のアクセスポイントであるかを判別する探索結果判別ステップと、
前記第１通信処理ステップによる通信処理と前記第２通信処理ステップによる通信処理との間で、実行する通信処理を前記探索結果判別ステップで判別された結果に応じて切り替える通信処理制御ステップと、
非使用状態と使用状態とを切り替える使用状態切替ステップとを備え、
前記第２通信処理ステップは、前記アクセスポイントが探索されたことが判別されたとき、当該アクセスポイントに接続する接続ステップを含み、
前記接続ステップでは、前記情報処理装置が前記非使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後、前記アクセスポイントとの接続を切断し、前記情報処理装置が前記使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後も当該アクセスポイントとの接続を維持する、情報処理方法。
【請求項１６】
サーバと情報処理装置とから構成される情報処理システムであって、
前記サーバは、ネットワークを介して前記情報処理装置との間でデータ通信を行う通信手段を備え、
前記情報処理装置は、
他の情報処理装置および所定のアクセスポイントの探索を近距離無線通信を用いて自動的に行う探索手段と、
前記探索手段によって探索された他の情報処理装置との直接的な接続が確立した後に、当該他の情報処理装置との間でデータ通信処理を自動的に行う第１通信処理手段と、
前記探索手段によって探索されたアクセスポイントと接続が確立した後に、当該アクセスポイントを介して前記サーバとの間でデータ通信処理を自動的に行う第２通信処理手段と、
前記探索手段によって探索された結果が他の情報処理装置であるか所定のアクセスポイントであるかを判別する探索結果判別手段と、
前記第１通信処理手段による通信処理と前記第２通信処理手段による通信処理との間で、実行する通信処理を前記探索結果判別手段で判別された結果に応じて切り替える通信処理制御手段と、
非使用状態と使用状態とを切り替える使用状態切替手段とを備え、
前記第２通信処理手段は、前記アクセスポイントが探索されたことが判別されたとき、当該アクセスポイントに接続する接続手段を含み、
前記接続手段は、前記情報処理装置が前記非使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後、前記アクセスポイントとの接続を切断し、前記情報処理装置が前記使用状態のときは、前記アクセスポイントを介したデータ通信が終了した後も当該アクセスポイントとの接続を維持する、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、より特定的には、近距離無線通信を利用した通信処理の制御に関する。
【背景技術】
【０００２】
従来、他の機器との間で自動的に通信を実行するシステムが知られていた。例えば、特許文献１には、ゲーム装置同士で通信を行ってデータの交換条件を確認し合い、交換条件が合致する場合には、交換用に指定されたゲームデータをゲーム装置同士で交換するシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４０７３８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１では、他のゲーム装置との間の通信を自動的に実行するだけであり、ここで用いられる通信についても、１種類の通信を行うだけであった。
【０００５】
それ故に、この発明の主たる目的は、新規な情報処理装置、情報処理プログラム、情報処理方法および情報処理システムを提供することである。
【０００６】
また、この発明の他の目的は、他の情報処理装置と直接的に接続して行う通信と、アクセスポイントを介した通信の２種類の通信を自動的に切り換えて実行することのできる、情報処理装置、情報処理プログラム、情報処理方法および情報処理システムを提供することである。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は以下のような構成を採用した。
【０００８】
本発明にかかる情報処理装置は、探索手段と、第１通信処理手段と、第２通信処理手段とを備える。探索手段は、他の情報処理装置および所定のアクセスポイントの探索を近距離無線通信を利用して自動的に行う。第１通信処理手段は、探索手段によって探索された他の情報処理装置との間でデータ通信を自動的に行う。第２処理手段は、探索手段によって探索されたアクセスポイントを介したデータ通信を自動的に行う。
【０００９】
上記構成により、他の情報処理装置との間で直接的に行われる通信態様（例えばアドホック通信）とアクセスポイントを介した通信態様（例えばインフラストラクチャ通信）との２種類の通信態様を、その時々の状況に応じて使い分けることが可能となる。特に、同時に実行できる通信態様が１つだけであり、その通信が無線ＬＡＮのような近距離通信であるような携帯型情報処理装置において、複数の通信処理を適切に使い分けることが可能となる。
【００１０】
他の構成例として、情報処理装置は、探索手段によって探索された結果が他の情報処理装置であるか所定のアクセスポイントであるかを判別する探索結果判別手段と、第１通信処理による通信処理と第２通信処理手段による通信処理との間で、実行する通信処理を探索結果判別手段で判別された結果に応じて切り替える通信処理制御手段とを更に備えていてもよい。
【００１１】
上記構成例によれば、情報処理装置の周囲を探索した結果に基づいて２種類の通信態様を使い分けることができ、より効率的な使い分けを行うことが可能となる。
【００１２】
他の構成例として、探索手段は、第１探索と第２探索とを自動的に切り替える探索切替手段と、探索切替手段によって第１探索に切り替えられたときは、他の情報処理装置の探索を自動的に行う第１探索手段と、探索切替手段によって第２探索に切り替えられたとき、所定のアクセスポイントの探索を自動的に行う第２探索手段とを含むようにしてもよい。
【００１３】
上記構成例によれば、他の情報処理装置との間で行う通信と、アクセスポイントを介した通信との２種類の通信を自動的に切り替えて行うため、ユーザに意識させることなく多様な通信を実行することができる。また、近くに存在する対象との通信および離れた場所に存在する対象との通信をシームレスに行うことができる。
【００１４】
更に他の構成例として、探索切替手段は、所定時間が経過する毎に第１探索と第２探索とを切り替えるようにしてもよい。
【００１５】
上記構成例によれば、少ない処理負担で２種類の通信を切り替えて実行することができる。
【００１６】
更に他の構成例として、所定時間は、探索切替手段によって第１探索に切り替えられた後は、第１単位時間であり、探索切替手段によって第２探索に切り替えられた後は、当該第１単位時間よりも短い第２単位時間であってもよい。
【００１７】
上記構成例によれば、情報処理装置の近くに存在する対象と通信する機会を増やしつつ、当該情報処理装置とは離れた場所にある対象との通信も行うことができる。
【００１８】
更に他の構成例として、探索手段は、所定のアクセスポイントの探索が行われる比率よりも他の情報処理装置の探索が行われる比率のほうがより高くなるように探索を行うようにしてもよい。
【００１９】
上記構成例によれば、情報処理装置の近くに存在している対象と通信する機会を増やし、情報処理装置を持ち歩く楽しみをユーザに提供することができる。その一方で、離れた場所にある対象との通信も適度に行うことができ、２種類の通信について、それぞれの通信の実行可能性（通信可能な相手がいる可能性）と実際の通信発生頻度とのバランスを採ることが可能となる。
【００２０】
更に他の構成例として、情報処理装置は、非使用状態と使用状態とを切り替える使用状態切替手段を更に備え、第２通信処理手段は、アクセスポイントが探索されたことが判別されたとき、当該アクセスポイントに接続する接続手段を含み、接続手段は、情報処理装置が非使用状態のときは、アクセスポイントを介したデータ通信が終了した後、アクセスポイントとの接続を切断し、情報処理装置が使用状態のときは、アクセスポイントを介したデータ通信が終了した後も当該アクセスポイントとの接続を維持するようにしてもよい。
【００２１】
上記構成例によれば、情報処理装置の使用状態に応じた適切な通信を行うことができる。例えば、インターネットを閲覧するといった通信は、アクセスポイントを介して行われるが、このような通信はユーザの操作に基づくものであるため、使用状態のときはアクセスポイントを介したインターネット通信を優先的に行うようにし、非使用状態のときはユーザの知らない間に他のユーザと通信が行われるといったことを優先的に行うようにすることができる。
【００２２】
更に他の構成例として、探索切替手段は、情報処理装置が非使用状態のときにおいて、接続手段によってアクセスポイントとの接続が切断されたとき、第１探索に切り替えるようにしてもよい。
【００２３】
上記構成例によれば、非使用状態のときは、近くに存在している対象と通信する機会を増やすことができ、他の情報処理装置との間で、例えば、データを交換するなどの処理をユーザが知らない間に実行することができる。
【００２４】
更に他の構成例として、探索切替手段は、情報処理装置が使用状態のときにおいて、接続手段によってアクセスポイントに接続された後、当該アクセスポイントとの通信が不可能になったとき、第１探索に切り替えるようにしてもよい。
【００２５】
上記構成例によれば、情報処理装置が使用状態のときは、アクセスポイントを介した通信を優先的に行いつつ、アクセスポイントが見つからないときに、他の情報処理装置との間の通信に切り替えるので、周囲の環境に応じて適切な通信を行うことができる。
【００２６】
更に他の構成例として、接続手段は、使用状態から非使用状態に切り替わったとき、第１通信処理手段、または、第２通信処理手段によるデータ通信が行われていても当該データ通信を中止し、非使用状態における前記第１探索および第２探索を開始するようにしてもよい。
【００２７】
上記構成例によれば、使用状態から非使用状態に切り替わったときは、そのときに行われている通信を中止し、非使用状態における探索処理を行う。これにより、非使用状態のおいては、ユーザの知らない間に通信が行われる機会を高めることが可能となる。
【００２８】
更に他の構成例として、第１探索手段は、他の情報処理装置を探索するための第１探索信号を繰り返し送信し、および、他の情報処理装置から繰り返し送信される当該第１探索信号の受信を試み、第２探索手段は、アクセスポイントから繰り返し送信される第２探索信号の受信を試みるようにしてもよい。
【００２９】
上記構成例によれば、他の情報処理装置を探索するときは、お互いに探索信号の送信と受信を試み、アクセスポイントを探索するときは、探索信号の受信を試みることによって、効率的に探索を行うことができる。
【００３０】
更に他の構成例として、情報処理装置は、探索切替手段によって切り替えが行われる切替条件を更新する切替条件更新手段をさらに備え、探索切替手段は、切替条件更新手段によって更新された切替条件に基づいて、第１探索と第２探索とを自動的に切り替える。
【００３１】
上記構成例によれば、探索切替の条件を更新することができるので、状況に応じて条件を適切に設定することができる。
【００３２】
更に他の構成例として、情報処理装置は、サーバから切替条件を受信する切替条件受信手段をさらに備え、切替条件更新手段は、切替条件受信手段によって受信された切替条件に更新するようにしてもよい。
【００３３】
上記構成例によれば、探索切替の条件をサーバから受信して更新するため、切替条件の更新を容易なものとすることができる。
【００３４】
更に他の構成例として、第１通信処理手段は、近距離無線による通信可能範囲に存在する他の情報処理装置と当該近距離無線通信を用いて直接的に接続してデータ通信を行う処理であり、第２通信処理手段は、アクセスポイントを介してネットワークに接続し、当該ネットワークを経由してサーバ又は他の情報処理装置との間でデータ通信を行う処理であってもよい。
【００３５】
上記構成例によれば、近くの相手との通信と遠くの相手との通信をシームレスに切り替えて行うことができる。
【００３６】
更に他の構成例として、情報処理装置は、携帯型の情報処理装置であってもよい。
【００３７】
上記構成例によれば、例えば、ユーザが外出時に情報処理装置を携行して移動することで、ユーザの知らない間に様々な通信が行われるようすることができる。これにより、ユーザに驚きを与え、また、ユーザが情報処理装置を携行して移動することへの契機を与えることができる。
【００３８】
本発明にかかる情報処理プログラムは、情報処理装置のコンピュータに実行させる情報処理プログラムであって、コンピュータを、探索手段と、第１通信処理手段と、第２通信処理手段として機能させる。探索手段は、他の情報処理装置および所定のアクセスポイントの探索を自動的に行う。第１通信処理手段は、探索手段によって探索された他の情報処理装置との間でデータ通信を自動的に行う。第２通信処理手段は、探索手段によって探索されたアクセスポイントを介したデータ通信を自動的に行う。
【００３９】
本発明にかかる情報処理方法は、情報処理装置を制御する情報処理方法であって、探索ステップと、第１通信処理ステップと、第２通信処理ステップとを備える。探索ステップは、他の情報処理装置および所定のアクセスポイントの探索を自動的に行う。第１通信処理ステップは、探索ステップにおいて探索された他の情報処理装置との間でデータ通信を自動的に行う。第２通信処理ステップは、探索ステップにおいて探索されたアクセスポイントを介したデータ通信を自動的に行う。
【００４０】
本発明にかかる情報処理システムは、サーバと情報処理装置とから構成される情報処理システムである。サーバは、ネットワークを介して情報処理装置との間でデータ通信を行う通信手段を備える。また、情報処理装置は、探索手段と、第１通信処理手段と、第２通信処理手段とを備える。探索手段は、他の情報処理装置および所定のアクセスポイントの探索を自動的に行う。第１通信処理手段は、探索手段によって探索された他の情報処理装置との間でデータ通信を自動的に行う。第２通信処理手段は、探索手段によって探索されたアクセスポイントを介してサーバとの間でデータ通信を自動的に行う。
【００４１】
上記構成例によれば、他の情報処理装置との間で行われる通信と、アクセスポイントを介してサーバとの間で行われる通信との２種類の通信を、その時々の状況に応じて使い分けることが可能となる。
【発明の効果】
【００４２】
本発明によれば、他の情報処理装置との間で直接的に行う通信と、アクセスポイントを介して行う通信との２種類の通信を適宜自動的に使い分けて行うことができ、ユーザに意識させることなく多様な通信を実行することができる。
【図面の簡単な説明】
【００４３】
【図１】開状態におけるゲーム装置１０の正面図
【図２Ａ】閉状態におけるゲーム装置１０の左側面図
【図２Ｂ】閉状態におけるゲーム装置１０の正面図
【図２Ｃ】閉状態におけるゲーム装置１０の右側面図
【図２Ｄ】閉状態におけるゲーム装置１０の背面図
【図３】ゲーム装置１０の内部構成を示すブロック図
【図４】本実施形態にかかるネットワーク構成の全体像を示す模式図
【図５】本実施形態にかかるサーチのパターンを示す図
【図６Ａ】本実施形態にかかるサーチのパターンを示す図
【図６Ｂ】本実施形態にかかるサーチのパターンを示す図
【図７】第１マイコン３７に内蔵されている記憶領域に記憶される主なデータを示す図
【図８】ＲＡＭ３６２に記憶される主なデータを示す図
【図９】データ保存用内部メモリ３５に記憶されるプログラム、データを示す図
【図１０】システム用プログラム領域５０２に記憶される主なプログラム示す図
【図１１】「スリープモード」における各実行主体と各実行主体が実行する処理を示す図
【図１２】「通常電力モード」における各実行主体と各実行主体が実行する処理を示す図
【図１３】「すれ違い通信」用データ５０５のデータ構造の一例を示した図
【図１４】「いつの間に通信」用データ５０６のデータ構造の一例を示した図
【図１５】第１マイコン３７によって実行されるマイコン処理を示すフローチャート
【図１６】第２マイコン３６１によって実行されるスリープ中ＢＧ通信処理を示すフローチャート
【図１７】図１６のステップＳ２１のすれ違い通信処理の詳細を示すフローチャート
【図１８】管理処理の詳細を示すフローチャート
【図１９】図１８の本体用カウンタ設定処理の詳細を示すフローチャート
【図２０】アプリ処理の詳細を示すフローチャート
【図２１】通常時ＢＧ通信処理の詳細を示すフローチャート
【図２２】通常時ＢＧ通信処理の詳細を示すフローチャート
【図２３】「いつの間に通信」処理の詳細を示すフローチャート
【発明を実施するための形態】
【００４４】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【００４５】
（ゲーム装置の構成）
以下、本発明の一実施形態に係る情報処理装置の一例であるゲーム装置について説明する。ゲーム装置１０は携帯型のゲーム装置である。図１および図２Ａ〜Ｄに示されるように、ゲーム装置１０は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に接続されている。
【００４６】
（下側ハウジングの説明）
図１および図２Ａ〜Ｄに示すように、下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２、タッチパネル１３、各操作ボタン１４Ａ〜１４Ｌ、アナログスティック１５、ＬＥＤ１６Ａ〜１６Ｂ、挿入口１７、および、マイクロフォン用孔１８が設けられる。
【００４７】
タッチパネル１３は、下側ＬＣＤ１２の画面上に装着されている。下側ハウジング１１の上側面には、タッチペン２８を収納するための挿入口１７（図１および図２Ｄに示す点線）が設けられている。
【００４８】
下側ハウジング１１の内側面（主面）には、十字ボタン１４Ａ（方向入力ボタン１４Ａ）、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅ、電源ボタン１４Ｆ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、およびスタートボタン１４Ｌが、設けられる。
【００４９】
アナログスティック１５は、方向を指示するデバイスである。
【００５０】
下側ハウジング１１の内側面には、マイクロフォン用孔１８が設けられる。マイクロフォン用孔１８の下部には後述する音声入力装置としてのマイク４２（図３参照）が設けられる。
【００５１】
図２ＢおよびＤに示されるように、下側ハウジング１１の上側面には、Ｌボタン１４ＧおよびＲボタン１４Ｈが設けられている。また、図２Ａに示されるように、下側ハウジング１１の左側面には、ゲーム装置１０が備えるスピーカ４３（図３参照）の音量を調整するための音量ボタン１４Ｉが設けられる。
【００５２】
図２Ａに示されるように、下側ハウジング１１の左側面には開閉可能なカバー部１１Ｃが設けられる。このカバー部１１Ｃの内側には、ゲーム装置１０とデータ保存用外部メモリ４５とを電気的に接続するためのコネクタが設けられる。
【００５３】
図２Ｄに示されるように、下側ハウジング１１の上側面には、外部メモリ４４を挿入するための挿入口１１Ｄが設けられる。
【００５４】
図１および図２Ｃに示されるように、下側ハウジング１１の下側面にはゲーム装置１０の電源のＯＮ／ＯＦＦ状況をユーザに通知する第１ＬＥＤ１６Ａ、下側ハウジング１１の右側面にはゲーム装置１０の無線通信の確立状況をユーザに通知する第２ＬＥＤ１６Ｂが設けられる。ゲーム装置１０は他の機器との間で無線通信を行うことが可能であり、下側ハウジング１１の右側面には、この無線通信の機能を有効／無効にする無線スイッチ１９が設けられる（図２Ｃ参照）。
【００５５】
（上側ハウジングの説明）
図１および図２に示すように、上側ハウジング２１には、上側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）２２、外側撮像部２３（外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂ）、内側撮像部２４、３Ｄ調整スイッチ２５、および、３Ｄインジケータ２６が設けられる。
【００５６】
上側ＬＣＤ２２は、立体視可能な画像を表示することが可能な表示装置である。具体的には、パララックスバリア方式の裸眼立体視可能な表示装置である。上側ＬＣＤ２２は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像（立体視画像）を表示することができる。また、上側ＬＣＤ２２は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側ＬＣＤ２２は、立体視画像を表示する立体表示モードと、画像を平面的に表示する（平面視画像を表示する）平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、例えば、後述する３Ｄ調整スイッチ２５によって行われる。
【００５７】
外側撮像部２３は、上側ハウジング２１の外側面２１Ｄに設けられた２つの撮像部（２３ａおよび２３ｂ）の総称である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂとは、ゲーム装置１０が実行するプログラムによって、ステレオカメラとして使用することが可能である。
【００５８】
内側撮像部２４は、上側ハウジング２１の内側面２１Ｂに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。
【００５９】
３Ｄ調整スイッチ２５は、スライドスイッチであり、上述のように上側ＬＣＤ２２の表示モードを切り替えるために用いられるスイッチである。また、３Ｄ調整スイッチ２５は、上側ＬＣＤ２２に表示された立体視可能な画像（立体画像）の立体感を調整するために用いられる。３Ｄ調整スイッチ２５のスライダ２５ａは、所定方向（上下方向）の任意の位置にスライド可能であり、当該スライダ２５ａの位置に応じて上側ＬＣＤ２２の表示モードが設定される。また、スライダ２５ａの位置に応じて、立体画像の見え方が調整される。
【００６０】
３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードか否かを示すＬＥＤである。
【００６１】
また、上側ハウジング２１の内側面には、スピーカ孔２１Ｅが設けられる。後述するスピーカ４３からの音声がこのスピーカ孔２１Ｅから出力される。
【００６２】
（ゲーム装置１０の内部構成）
次に、図３を参照して、ゲーム装置１０の内部の電気的構成について説明する。図３に示すように、ゲーム装置１０は、上述した各部に加えて、情報処理部３１、メインメモリ３２、外部メモリインターフェイス（外部メモリＩ／Ｆ）３３、データ保存用外部メモリＩ／Ｆ３４、データ保存用内部メモリ３５、無線通信モジュール３６、第１マイコン３７，加速度センサ３９、電源回路４０、インターフェイス回路（Ｉ／Ｆ回路）４１、開閉検出器４６等の電子部品を備えている。
【００６３】
情報処理部３１は、所定のプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、画像処理を行うＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１２、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３１３を含む。ＣＰＵ３１１は、ゲーム装置１０内のメモリ（例えば外部メモリＩ／Ｆ３３に接続された外部メモリ４４やデータ保存用内部メモリ３５）に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、ＣＰＵ３１１によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、本実施形態では、ＣＰＵ３１１はいわゆるマルチタスク制御が可能である。ＧＰＵ３１２は、ＣＰＵ３１１からの命令に応じて画像を生成し、ＶＲＡＭ３１３に描画する。ＶＲＡＭ３１３に描画された画像は、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に出力され、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像が表示される。
【００６４】
外部メモリＩ／Ｆ３３は、外部メモリ２８を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリＩ／Ｆ３４は、データ保存用外部メモリ２９を着脱自在に接続するためのインターフェイスである。
【００６５】
メインメモリ３２は、情報処理部３１（のＣＰＵ３１１）のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。
【００６６】
外部メモリ２８は、情報処理部３１によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ２８は、例えば読み取り専用の半導体メモリで構成される。
【００６７】
データ保存用外部メモリ２９は、不揮発性の読み書き可能なメモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、任意のデータを保存するために用いられる。
【００６８】
データ保存用内部メモリ３５は、読み書き可能な不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ３５には、無線通信モジュール３６を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【００６９】
無線通信モジュール３６は、他の通信機器等と無線通信を行う機能を有する。本実施形態では、無線通信モジュール３６は、後述するような「インフラストラクチャ通信」（以下、「インフラ通信」と呼ぶ）と「アドホック通信」という２種類の通信態様を実現することができる。「インフラ通信」は、例えばＩＥＥＥ８０２．１１ｂ／ｇ／ｎの規格に準拠した方式により、無線ＬＡＮに接続する機能である。また、「アドホック通信」は、所定の通信方式（例えば独自プロトコルによる通信や、赤外線通信）により同種のゲーム装置との間で無線通信を行う機能である。詳細は後述するが、本実施形態では、この２種類の通信態様を用いて、「いつの間に通信」、「すれ違い通信」、「ローカル通信」という３種類の通信機能を適宜切り替えて実行する。
【００７０】
無線通信モジュール３６には、第２マイコン３６１、ＲＡＭ３６２等が含まれる。ＲＡＭ３６２には、上記のような３種類の通信機能を実現するためのプログラムが格納される。特に、本実施形態では、ＲＡＭ３６３の容量等の関係上、実行したい通信機能に応じて「いつの間に通信」用のプログラム、「すれ違い通信」用のプログラム、「ローカル通信」用のプログラムのいずれか一つが適宜選択されて、その都度ＲＡＭ３６３に格納される。つまり、実行されるプログラムが適宜切り替えられる。そして、第２マイコン３６１は、ＲＡＭ３６３に格納されているプログラムに基づき、上記のような３つの通信機能の実行を制御する。
【００７１】
加速度センサ３９は、３軸（ｘｙｚ軸）方向に沿った直線方向の加速度（直線加速度）の大きさを検出する。情報処理部３１は、加速度センサ３９が検出した加速度を示すデータ（加速度データ）を受信して、ゲーム装置１０の姿勢や動きを検出することができる。
【００７２】
第１マイコン３７は、ゲーム装置１の電源管理に関する処理や、時間に関する処理、上記ハウジングの開閉検知処理等を行う。また、これらの処理に関する通知をＣＰＵ３１１から受けたり、逆にＣＰＵ３１１に通知したりする。第１マイコン３７は、リアルタイムクロック（ＲＴＣ）３７１を備えている。ＲＴＣ３７１は、時間をカウントし、第１マイコン３７を介してＣＰＵ３１１に出力する。例えば、ＣＰＵ３１１は、ＲＴＣ３７１によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。
【００７３】
また、第１マイコン３７は、開閉検出器４６および電源回路４０と接続される。開閉検出器４６は、上記ハウジングの開閉を検出し、その内容を第１マイコン３７（ひいてはＣＰＵ３１１）に通知する。電源回路４０は、ゲーム装置１が有する電源（典型的には電池であり、下側ハウジング１１に収納される）から供給される電力を制御し、ゲーム装置１の各部品に電力を供給する。また、電源回路４０は、第１マイコン３７（第１マイコン３７を介したＣＰＵ３１１）からのスリープモードへの移行やスリープモード解除の通知を受ける。そして、当該通知に基づいて適切な電力を供給するための制御を行う。
【００７４】
ここで、本実施形態にかかるゲーム装置１の電源制御のモードに関して説明する。本ゲーム装置では、電池等の電源が装着されて、上記各構成部品への電力供給が可能な状態となった後は、基本的には、「通常電力モード」と「省電力モード」の２つの電源制御モードのいずれかで動作する。「通常電力モード」は、上記構成部品の全てに電力を供給している状態である。例えば、ユーザが所定のゲームを実際に操作してプレイする場合や、各種アプリケーション（以下、単にアプリと呼ぶ）を実際に操作する場合の電源制御モードは「通常電力モード」である。「省電力モード」は、上記構成部品の一部に対してのみ電力の供給を継続し、それ以外の構成部品に対しての電力供給は停止している状態である。本実施形態では、この「省電力モード」の一つとして、「スリープモード」がある。「スリープモード」は、上記第１マイコン３７、無線通信モジュール３４にのみ電源を供給し、それ以外の部品、つまり、ＣＰＵ３１１やＬＣＤへの電力供給は停止している状態である（但し、ＣＰＵ３１１は、「スリープモード」の解除指示を受けることは可能である）。また、「スリープモード」において、第１マイコン３７や無線通信モジュール３６（の第２マイコン３６１）は、「マイコン処理」、「スリープ中ＢＧ通信処理」と呼ばれる処理を所定時間毎に繰り返し実行するが、これについては詳細は後述する。
【００７５】
また、本実施形態では、上述のような、開閉検出器４６の検出結果に基づいてスリープモードへの移行やスリープモードの解除を行う方法のほかに、電源ボタン１４Ｆの操作に応じて上記「通常電力モード」と「スリープモード」を切り替えることが可能である。また、電源ボタン１４Ｆの操作によるものの他、後述するような処理によって、自動的に「スリープモード」の解除、あるいは「スリープモード」への移行も可能となっている。例えば、ユーザが所定のゲームをプレイし終えた後、電源ボタン１４Ｆを押すと（この操作は、ユーザから見ると、電源をオフにする操作に見える）、「スリープモード」に移行する。この状態で、ユーザはゲーム装置１を閉じて、持ち歩くこと等が可能である。その後、ユーザがゲーム装置１を開き、再度電源ボタン１４Ｆを押すと、「スリープモード」が解除され、「通常電力モード」に移行する。または、所定時間が経過したことにより「スリープモード」へ移行するようにしてもよい。
【００７６】
その他、電源ボタン１４Ｆを長押しすることで、第１マイコン３７や無線通信モジュール３６も含めた全ての構成部品への電力供給を停止する（つまり、完全に電源を切る）「完全停止モード」に移行することも可能である。この場合は、再度電源ボタン１４Ｆを長押しすると、「通常電力モード」に移行してゲーム装置１が起動することになる。
【００７７】
ここで、上記電源制御モードに関し、ユーザがゲーム装置を使用中か否かという観点からは、以下のように言い換えることもできる。すなわち、ゲーム装置１は、「使用状態」と「非使用状態」という２つの状態を有するといえる。「使用状態」とは、ユーザがゲーム装置１のハウジングを開いて直接的に使用しているために、通常電力モードがずっと継続している状態である。例えば、ユーザが操作ボタン１４等を操作して実際にゲーム等をプレイしている状態が該当する。一方、「非使用状態」とは、ユーザがゲーム装置１を主導的・直接的に使用していない状態をいう。これには、上記ハウジングが閉じられているために「スリープモード」となっている状態の他、後述するような「いつの間に通信」または「すれ違い通信」の実行に伴い、（ハウジングは閉じられたまま）一時的に「スリープモード」が解除されて「いつの間に通信」または「すれ違い通信」にかかる処理が実行され、その実行後は再度「スリープモード」に戻るような状態も含む。例えば、ユーザが外出する際に、ゲーム装置１のハウジングを閉じて鞄に入れている状態は「非使用状態」である。更に、このように、ゲーム装置１が鞄に入れられてユーザが外出している間に、上記のように一時的に「スリープモード」が解除されている状態、および、「いつの間に通信」の実行後に再度「スリープモード」に入るような状態（この間、ユーザはゲーム装置１を使用していない）も「非使用状態」である。また、当該「使用状態」と「非使用状態」が切り替わるためのトリガは、ハウジングの開閉の他、電源ボタン１４Ｆが操作された場合もトリガとなる。つまり、ユーザがゲームをプレイしていたが（使用状態）、その後、ゲームのプレイを終えたため、ゲーム装置１の電源ボタン１４Ｆを押下することで、「使用状態」から「非使用状態」に切り替わる。その他、例えば、一定時間ユーザの操作がなかったために「使用状態」から「非使用状態」に切り替わる場合もある。
【００７８】
以下の説明においては、説明の簡略化のため、電源制御モードについては、「通常電力モード」と「スリープモード」の２つのモードだけを用いる場合を例として説明する。
【００７９】
Ｉ／Ｆ回路４１には、タッチパネル１３、マイク４２およびスピーカ４３が接続される。Ｉ／Ｆ回路４１は、マイク４２およびスピーカ４３（アンプ）の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部３１に出力する。情報処理部３１は、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００８０】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｌからなり、操作ボタン１４から情報処理部３１へは、各操作ボタン１４Ａ〜１４Ｉに対する入力状況（押下されたか否か）を示す操作データが出力される。
【００８１】
下側ＬＣＤ１２および上側ＬＣＤ２２は情報処理部３１に接続される。具体的には、情報処理部３１は、上側ＬＣＤ２２のＬＣＤコントローラ（図示せず）と接続され、当該ＬＣＤコントローラに対して視差バリアのＯＮ／ＯＦＦを制御する。上側ＬＣＤ２２の視差バリアがＯＮになっている場合、情報処理部３１のＶＲＡＭ３１３に格納された右目用画像と左目用画像とが、上側ＬＣＤ２２に出力される。より具体的には、ＬＣＤコントローラは、右目用画像について縦方向に１ライン分の画素データを読み出す処理と、左目用画像について縦方向に１ライン分の画素データを読み出す処理とを交互に繰り返すことによって、ＶＲＡＭ３１３から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に１ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側ＬＣＤ２２の画面に表示される。そして、上側ＬＣＤ２２の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。
【００８２】
外側撮像部２３および内側撮像部２４は、情報処理部３１の指示に従って画像を撮像し、撮像した画像データを情報処理部３１に出力する。
【００８３】
３Ｄ調整スイッチ２５は、スライダ２５ａの位置に応じた電気信号を情報処理部３１に送信する。
【００８４】
情報処理部３１は、３Ｄインジケータ２６の点灯を制御する。例えば、情報処理部３１は、上側ＬＣＤ２２が立体表示モードである場合、３Ｄインジケータ２６を点灯させる。
【００８５】
次に、本実施形態で想定する処理の概要について説明する。本実施形態のゲーム装置１０では、バックグラウンド処理として行われる通信として、後述するような「すれ違い通信」と「いつの間に通信」と呼ばれる２種類の通信を行う。一方、ゲーム装置１０は、上記のような「スリープモード」と「通常電力モード」という２つの状態を有する。本実施形態にかかる処理は、主に、このようなゲーム装置の２つの状態に応じた上記の２種類の通信の制御に関するものである。
【００８６】
［ネットワークの全体構成］
まず、本実施形態で想定するネットワークの全体的な構成について説明する。図４は、本実施形態にかかるネットワーク構成の全体像を示す模式図である。図４で示されるゲーム装置１０は、上述したように、大きく分けて２種類の通信態様を用いる。１つめの通信態様は、インターネットを利用する態様である「インフラ通信」である。この態様では、ゲーム装置１０は、アクセスポイント（以下、単にＡＰと呼ぶ）１０２を経由して所定のサーバとの通信を行う。本実施形態では、この「インフラ通信」の通信態様を利用して「いつの間に通信」という通信機能を実現する。２つめの通信態様は、インターネットは経由せず直接的にゲーム装置同士を無線接続する「アドホック通信」である。本実施形態では、「アドホック通信」の通信態様を利用して、「すれ違い通信」と「ローカル通信」の２つの通信機能を実現する。以下、これら３つの通信機能の概要を説明する。
【００８７】
［いつの間に通信］
まず、「いつの間に通信」について説明する。この通信機能は、バックグラウンドで実行される通信であり、アクセスポイント（以下、ＡＰと呼ぶ）を介して所定のサーバと接続し、当該サーバとの間で所定のデータの送受信を実行するものである。例えば、以下のような通信が行われる。例えば、ゲーム装置１０が「スリープモード」のときを想定する。この場合に、接続可能なＡＰがゲーム装置１０の近くに存在すれば、当該ＡＰに自動的に接続し、更に、当該ＡＰを経由して所定のサーバに自動的に接続する。そして、当該サーバから、例えば、新作ゲームの体験版プログラムが送信され、これが受信される。その後、当該体験版プログラムが実行可能なように各種設定（インストール処理等）が行われる。これにより、ユーザから見ると、例えばゲーム装置を「スリープモード」にして外出し、自宅に帰ってきてからゲーム装置１０を「通常電力モード」に戻すと、いつの間にかメニューに新作ゲームの体験版が追加されている、という状態となる。また、「通常電力モード」のときもバックグラウンドで「いつの間に通信」は実行される。このような場合は、例えば、あるゲームをプレイしている時にバックグラウンドで上記のような体験版プログラム等の受信が行われ、ユーザがゲームをプレイし終えて、ゲーム装置１０のホームメニューに切り替えた際に、メニューに新作ゲームの体験版がいつの間にか増えている、という状態となる。なお、本実施形態では、「いつの間に通信」で接続されるサーバ（「いつの間に通信」における通信相手）として、専用のサーバが設けられており、どのＡＰを経由しても当該専用のサーバに接続することが可能である。
【００８８】
本実施形態では、上記「いつの間に通信」の実行は「タスク」と呼ばれる単位で管理されている。「タスク」は複数定義することができる。各「タスク」には、送受信するデータの内容や、送受信処理を実行するタイミング（スケジュール）などが規定されている。各「タスク」で実行される内容例としては、「システムのアップデート」や「新作ゲームの体験版の取得」等がある。また、ゲーム装置１０にインストールされている各種アプリ毎に所定のデータの送受信を行う内容の「タスク」もある。例えば、レースゲームにおいて、ユーザのラップタイムを定期的にサーバに送信すると共に、サーバからは全国ランキングのデータを受信するような内容のタスクである。
【００８９】
そして、本実施形態では、各「タスク」に規定されている実行スケジュールに基づいて各「タスク」の実行時間の到来が判定され、実行時刻が到来している「タスク」があれば、その「タスク」の規定内容に沿って所定のデータの送受信が所定のサーバとの間で行われることになる。ここで、本実施形態では、「いつの間に通信」を行うためには所定のＡＰ（およびサーバ）との接続が必要になる。そのため、ある「タスク」の実行時刻が到来しても、ゲーム装置１０の通信可能範囲内にＡＰが存在しなければ、その時点では当該「タスク」に基づく「いつの間に通信」が行えない。このような場合は、この「タスク」の実行は保留され、次にＡＰおよびサーバと通信可能になったタイミングでサーバとの送受信が行われることになる。
【００９０】
このように、「いつの間に通信」は、バックグラウンドの処理として、ＡＰを介して所定のサーバと自動的に接続し、所定のデータの送受信を自動的に行う処理である。
【００９１】
なお、上記「インフラ通信」については、上記「いつの間に通信」に利用する他、ユーザがウェブブラウザ等のアプリケーションを実行することでインターネットを利用するような処理にも利用される。つまり、上記ＡＰに接続されている状態であれば、ゲーム装置１０は、上記「いつの間に通信」も実行可能であり、（ユーザの操作に基づく）インターネットの利用にかかる通信も実行可能な状態といえる。但し、本実施形態の説明においては、「いつの間に通信」以外の「インフラ通信」を利用した通信処理については直接的には関係しないため、詳細な説明は省略する。
【００９２】
［すれちがい通信］
次に、「すれちがい通信」について説明する。この処理もバックグラウンドで実行される処理である。「すれ違い通信」では、ゲーム装置１０同士が直接接続され（ピアツーピア接続）、「すれ違い通信」用として予め用意されているデータの送受信が行われる。具体的には、各ゲーム装置１０のデータ保存用内部メモリ３５には、「すれ違い通信」用のデータ領域が予め用意されている。この領域は、「スロット」と呼ばれる単位で管理される。本実施形態では、１２のスロットが予め用意されているとする。各「スロット」には、ゲーム装置１０で実行可能なアプリのうちいずれか１つのアプリと対応付けられる。そして、各スロットには、送信用のデータ領域と受信用のデータ領域が含まれている。なお、スロットの数は一例であり、これに限定される必要はなく、１２より少なくてもよいし、多くてもよい。
【００９３】
そして、以下のような流れで「すれ違い通信」が実行される。まず、所定のアプリの実行中に、適宜すれ違い用の送信データが上記スロット内に格納される（アプリとスロットの対応付けは済んでいるものとする）。その後、アプリが終了され、ユーザによってゲーム装置１０が「スリープモード」に移行される。そして、ユーザがこのゲーム装置を所持して外出し、ゲーム装置１０の通信可能範囲内に他のゲーム装置１０が入ったとする。このときに、お互いのゲーム装置１０の間で、共通するアプリのスロットの内容が送受信される。つまり、ゲーム装置Ａのスロット内の送信用データがゲーム装置Ｂに送信されると共に、ゲーム装置Ｂから送信されてきた送信用データが受信され、受信データとして格納される。これにより、互いのスロットに共通して対応付けられているアプリに関して、データの送受信が行われることになる。なお、互いのスロットで共通するアプリがなかった場合は、上記の様なデータの送受信も行われず、結果的に「すれ違い通信」は行われないことになる。
【００９４】
このように、「すれ違い通信」は、バックグラウンドの処理として、ゲーム装置１０同士で直接的に「すれ違い通信」用のデータの送受信（データの交換）を自動的に行う通信である。
【００９５】
［ローカル通信］
次に、「ローカル通信」について説明する。この通信は、フォアグラウンドで実行される通信である。例えば、対戦ゲーム等の実行中に行われる。すなわち、対戦ゲーム処理の一環として、ゲーム装置１０同士が上記アドホック通信の態様で接続され、各ゲーム装置１０の操作データ等の送受信処理を行うような場合が「ローカル通信」に該当する。換言すれば、「ローカル通信」は、上記「すれ違い通信」のように自動的に通信が行われるものではなく、例えば、対戦ゲームの開始前に、ユーザの入力操作によりお互いが「ローカル通信」を行うことを希望し、互いに同意したときに行われる通信といえる。
【００９６】
上記のように、本実施形態では、３種類の通信機能が利用可能となっている。ここで、これらの通信機能を行う前提として、通信可能範囲内に接続対象が存在するか否かを判定する為のサーチ処理が必要となる。すなわち、「いつの間に通信」であれば、接続可能なＡＰをサーチする必要があり、「すれ違い通信」「ローカル通信」では、接続可能な他のゲーム装置１０をサーチする必要がある。その一方で、上記のようにゲーム装置１０の無線通信モジュール３６は１つである。そのため、上記の通信機能は同時に実行することができず、利用局面に応じてこれらの通信機能が適宜切り替えて実行される。本実施形態では、バックグラウンドで行われる通信である「いつの間に通信」および「すれ違い通信」については、所定の周期でのサーチの切替制御が行われている。以下、バックグラウンドで行われる「いつの間に通信」および「すれ違い通信」のサーチ（以下では、両サーチをまとめてバックグラウンドサーチと呼ぶこともある）の切替制御の概要を、「スリープモード」時の制御と「通常電力モード」時の制御とに分けて説明する。
【００９７】
［スリープモード時の切替制御］
まず、「スリープモード」の場合の切替制御について説明する。本実施形態では、この場合は、図５に示すような周期（サーチパターン）で「いつの間に通信」および「すれ違い通信」のサーチを切り替えている。図５においては、まず、「すれ違い通信」についてのサーチ期間として予め３０秒の期間が設定されている。すなわち、この３０秒の間は、「すれ違い通信」用のサーチ（他のゲーム装置１０のサーチ）が行われる。なお、以下の説明では、この「すれ違い通信」用のサーチ期間を第１割当期間と呼ぶこともある。その後、「いつの間に通信」用のサーチ処理が１回入る。このサーチ処理はＡＰをサーチする処理であるが、ＡＰ−ゲーム装置間の電波強度等の関係で、このサーチの結果がわかるまでの期間は不定である。そのため、図５では、一例として、５〜１０秒と示している。その後、また３０秒間の再度「すれ違い通信」用のサーチが行われ、更にその後、「いつの間に通信」用のサーチ処理が１回行われる。つまり、３０秒の間「すれ違い通信」用サーチ処理を行った後、「いつの間に通信」用のサーチ処理を１回行う、というパターンを１セットとして、このセットが繰り返し行われる。
【００９８】
そして、上記サーチの結果、接続対象が見つかった場合は、「すれ違い通信」あるいは「いつの間に通信」が実行されることになる。一旦「すれ違い通信」あるいは「いつの間に通信」が開始されれば、その処理にかかる一連の通信処理が完了するまでは、上記サーチ処理は行われない。例えば、「すれ違い通信」用のサーチ期間において、２５秒経過時点で他のゲーム装置１０が見つかり、「すれ違い通信」が開始された場合、サーチ期間の３０秒が経過しても、この「すれ違い通信」にかかる一連の送受信処理が終わるまでは、ＡＰのサーチ処理は行われない。
【００９９】
ここで、上記３０秒の期間（第１割当期間）中における「すれ違い通信」のサーチの動作についてより詳しく説明する。本実施形態では、「すれ違い通信」の接続の確立処理に際して、いずれかのゲーム装置が「親機」の立場となり、他方のゲーム装置が「子機」の立場となる。そして、上記３０秒の期間の間、ゲーム装置１０は、「親機」の立場と「子機」の立場を切替ながらサーチ処理を行っている。ここでは、ゲーム装置１０が「親機」の立場である場合を「マスターモード」、「子機」の立場である場合を「クライアントモード」と呼ぶ。「クライアントモード」では、ゲーム装置１０は、接続要求を希望する旨のビーコンを自らブロードキャストする。なお、このビーコンには、当該ビーコンが「すれちがい通信」用のビーコンである旨を示すデータ（例えば所定のＩＤ）が含まれている。一方、「マスターモード」では、ゲーム装置１０は、他のゲーム装置１０から送信される上記ビーコンの受信を試みる（つまり、他のゲーム装置１０からのビーコンの待ち受け状態となる）。具体的には、マスターモードにおいては、ゲーム装置１０は、とりあえずビーコンを受信し、上記「すれちがい通信」用のビーコンである旨を示すデータが当該受信したビーコンに含まれているか否かを判定する。そして、含まれていなければ、そのビーコンは破棄して他のビーコンの受信を行う。含まれていれば、「すれ違い通信」のための処理（接続確立処理やデータの送受信処理等）を行う。
【０１００】
そして、本実施形態では、例えば、上記３０秒の期間を１秒の期間で区切る（以下では、この１秒の期間を第２割当期間と呼ぶ）。そして、基本的には「クライアントモード」として動作し、５秒に１回の割合で「マスターモード」に切り替わるように、モードの切替パターンが設定される。これは、「マスターモード」における消費電力が「クライアントモード」における消費電力に比べて大きいため、「すれ違い通信」の行われやすさと消費電力の低減化とのバランスを考慮して導き出された割合である。
【０１０１】
このように、「スリープモード」においては、３０秒間「すれ違い通信」用のサーチが繰り返し行われた後、「いつの間に通信」用のサーチが１度だけ行われ、その後、また３０秒間の「すれ違い通信」用のサーチに戻るという切替パターンで切替制御が行われている。つまり、「すれ違い通信」のほうが「いつの間に通信」よりも優先されるような制御が行われる。これは、「スリープモード」の場合は、典型的には、ハウジングが閉じられた状態で家の外で持ち歩かれているような状態であることが考えられるので、「すれ違い通信」による他のゲーム装置１０との通信が行われやすい環境にしておこうという観点によるものである。
【０１０２】
［通常電力モード時の切替制御］
次に、「通常電力モード」での切替制御の概要について説明する。この場合も、基本的には「スリープモード」と同様のパターンでバックグラウンドサーチの切替制御が行われる。つまり、３０秒間の「すれ違い通信」用サーチの後、「いつの間に通信」用のサーチが一度行われ、また３０秒間の「すれ違い通信」用サーチに入る、というパターンである。但し、「スリープモード」の場合と異なり、「通常電力モード」においては、「いつの間に通信」用のサーチの結果、通信可能なＡＰが検知され、当該ＡＰ（およびその先のサーバ）との接続が確立すれば、「いつの間に通信」にかかる一連の送受信処理が終了した後も、ＡＰとの接続は切断せずに、接続状態を維持する。図６Ａは、このような通常電力モードでの切替制御の一例を示す模式図である。「いつの間に通信」用のサーチの結果、ＡＰが検知されて接続が確立すれば、当該ＡＰとの通信ができなくなるまで（例えば、ゲーム装置１０が移動されて通信可能範囲内にＡＰが存在しなくなるまで）、当該ＡＰとの接続状態は維持される。つまり、「通常電力モード」では「いつの間に通信」（インフラ通信）のほうが優先されるような制御が行われる。これは、「通常電力モード」の場合は、ユーザがゲーム装置１０に何らかの操作を行って使用している状態、例えば、ブラウザを立ち上げてインターネットを利用している場合が考えられることや、いわゆる「フレンドリスト」に登録された友達のログイン状況を把握して表示する等の処理を行いたい等、つまり、「インフラ通信」を利用した処理が必要となる可能性が高くなるであろうという観点から、「インフラ通信」に基づく処理がスムーズに行われるようにしておこうとするものである。
【０１０３】
このように、本実施形態では、バックグラウンドで行われる通信について、「スリープモード」においては「すれ違い通信」が行われやすくなるような制御が行われ、「通常電力モード」では、「いつの間に通信」（インフラ通信）が行われやすくなるような制御が行われている。これにより、ゲーム装置の使用状態に応じて、実行させたい通信態様の実行可能性を変化させることができる。
【０１０４】
なお、「通常電力モード」においてバックグラウンドで通信が行われている最中に、ユーザがハウジングを閉じる等して「スリープモード」への移行指示が発行された場合は、通信処理の途中であっても、当該通信処理は中止されてスリープモードに移行する。そして、上記図５で示したような「スリープモード」におけるサーチパターンでのバックグラウンドサーチ処理が開始されることになる。
【０１０５】
次に、「通常電力モード」における、上記バックグラウンド通信である「すれ違い通信」および「いつの間に通信」と、フォアグラウンドの処理である「ローカル通信」との間の切替制御に関して説明する。「すれ違い通信」および「いつの間に通信」はバックグラウンド通信であるため、所定のアプリケーションの実行と並行して通信することが可能である。その一方で、上記のようにゲーム装置１０の無線通信モジュール３６は１つだけである。そのため、例えば、「ローカル通信」を用いた対戦ゲーム処理（フォアグラウンドの処理）を行おうとするとき、バックグラウンド通信に無線通信モジュール３６が占有されている状態だと、「ローカル通信」を行うことができなくなる。また、その他、フォアグラウンドのアプリで「ローカル通信」が行われなくとも、例えば「いつの間に通信」でサイズの大きなデータの送受信が行われているような場合に、その影響で処理負荷が一時的に高まり、フォアグラウンドのアプリの実行速度に影響を与える可能性もある。そこで、本実施形態では、アプリ側からバックグラウンド通信の停止指示を出すことで、バックグラウンドサーチ等を停止させることを可能としている。これにより、例えば、上記のような「ローカル通信」を用いて対戦ゲーム処理を行う場合は、当該対戦ゲームのアプリから（システムに対して）バックグラウンド通信の停止指示を出す。これに応じて、実行中のバックグラウンド通信の処理やバックグラウンドサーチが停止され、実質的に、無線通信モジュール３６がフリーの状態となる。その後、当該対戦ゲームのアプリが当該無線通信モジュール３６を用いて「ローカル通信」にかかる処理を実行することが可能となる。その後、当該アプリから停止解除の旨の通知がなされる等して、停止指示が消滅すれば、再度バックグラウンドサーチが開始される（図６Ｂ参照）。なお、停止指示を出すことが可能なアプリは、フォアグラウンドで実行中のものに限らず、バックグラウンドで実行中のアプリから停止指示を出すことも可能である。
【０１０６】
次に、ゲーム装置１において行われる上記のような処理の詳細を説明する。まず、本処理において用いられる主なプログラムおよびデータについて説明する。なお、本実施形態における処理の実行主体に関して説明すると、本実施形態では、第１マイコン３７、第２マイコン３６１、ＣＰＵ３１１が、それぞれ独立して、以下に説明する処理の実行主体となり、これらの処理が互いに連携しながら並列的に実行される。
【０１０７】
図７は、第１マイコン３７に内蔵されている記憶領域（図示せず）に記憶される主なデータを示す図である。第１マイコン３７の内部には、プログラム領域３０１とデータ領域３０３が存在し、プログラム領域３０１には、第１マイコン３７が担当する処理を実行するためのマイコン処理プログラム３０２が記憶され、データ領域３０３には、給電状態フラグ３０４、次回起床時刻３０５が記憶される。給電状態フラグ３０４は、「スリープモード」であるか否かを示すためのフラグである。オンに設定されているときは「通常電力モード」、オフに設定されているときは、「スリープモード」であるとする。次回起床時刻３０５は、「スリープモード」を解除する時刻を示すデータである。例えば、本実施形態では、上記各タスクに設定される次回実行時刻のうち、最も早い時刻が次回起床時刻３０５として設定される。
【０１０８】
図８は、無線通信モジュール３６に内蔵されているＲＡＭ３６２に記憶される主なデータを示す図である。ＲＡＭ３６２には、プログラム領域４０１とデータ領域４０３が存在する。プログラム領域４０１には、後述するスリープ中ＢＧ通信処理プログラム５０２１、「すれ違い通信」処理プログラム５０２２、「ローカル通信」処理プログラム５０２３、インフラ通信用プログラム５０２４のうちのいずれか１つが適宜選択されて格納される。データ領域４０３には、ＡＰに関する情報等が記憶される。なお、スリープ中ＢＧ通信処理プログラム５０２１と「すれ違い通信」処理プログラム５０２２は同一のプログラムであってもよい。この場合は、パラメータの設定を変えることによってそれぞれの処理動作を変えることができる。
【０１０９】
図９は、データ保存用内部メモリ３５に記憶されるプログラム、データを示す図である。なお、これらのデータは、必要に応じてメインメモリ３２に展開されて実行される。データ保存用内部メモリ３５は、プログラム領域５０１とシステム用データ領域５０４とアプリ用データ領域５１３とを有しており、プログラム領域５００には、システム用プログラム領域５０２が設けられている。また複数のアプリケーションプログラム（図９では第ｎアプリケーションプログラムと示す）が記憶される。システム用プログラム領域５０２には、図１０で示すような複数のプログラムが記憶される。図１０において、システム用プログラム領域５０２には、スリープ中ＢＧ通信処理プログラム５０２１、「すれ違い通信」処理プログラム５０２２、「ローカル通信」処理プログラム５０２３、インフラ通信用プログラム５０２４、通常時ＢＧ通信処理プログラム５０２５、管理処理プログラム５０２６、本体用カウンタ設定処理プログラム５０２７、「いつの間に通信」処理プログラム５０２８が記憶される。
【０１１０】
ここで、これらプログラムに基づき実行される処理と、その実行主体となる上記第１マイコン３７、第２マイコン３６１、ＣＰＵ３１１との関係について簡単に説明する。図１１は、「スリープモード」における各実行主体と、各実行主体が実行する処理を示す図である。また、図１２は、「通常電力モード」における各実行主体と、各実行主体が実行する処理を示す図である。図１１では、第１マイコン３７がマイコン処理を実行することで、上記タスク（「いつの間に通信」）の実行時刻の管理や本体の開閉状態の検知を行う。また、第２マイコン３６１は、スリープ中ＢＧ通信処理を実行する。この処理は、上記図５で示したような切替パターンに沿ってバックグラウンドサーチ等を行うためのものである。ＣＰＵ３１１は、基本的には「スリープモード」であるため、通電していない状態である。但し、マイコン処理においてタスクの実行時刻が到来したことが検知され、且つ、ＡＰとの通信が可能な状態であると判定されたときに、一時的に通電されて、「いつの間に通信」に関する処理を実行する。また、無線通信モジュールのマイコン処理においてＡＰが探索（検出）されたと判定されたときに、一時的に通電されて、「いつの間に通信」に関する処理を実行する。さらに、無線通信モジュールのマイコン処理において他のゲーム装置が探索（検出）されたと判定されたときに、一時的に通電されて、「すれ違い通信」に関するデータ交換処理を実行する。
【０１１１】
また、図１２においては、第１マイコン３７は「スリープモード」のときと同じ動作を行う。第２マイコン３６１は、状況に応じて、「すれ違い通信」、「ローカル通信」、「インフラ通信」用のプログラムのいずれかを実行する。ＣＰＵ３１１は、フォアグラウンドの処理として、所定のアプリケーション処理を実行する。また、バックグラウンドの処理として、管理処理と通常時ＢＧ通信処理を実行する。管理処理は、主に、アプリの起動指示の監視や、上述したようなアプリからのバックグラウンド通信停止指示の監視等を行う。通常時ＢＧ通信処理は、「通常電力モード」における「すれ違い通信」や「いつの間に通信」を実行するための処理である。なお、本実施形態では、アプリケーションは複数起動することが可能であるが、フォアグラウンドとして実行されるものは１つだけであり、フォアグラウンドで実行中のアプリ以外のアプリについてはバックグラウンドの処理として適宜処理される。
【０１１２】
図９に戻り、次に、システム用データ領域５０４について説明する。システム用データ領域５０４には、「すれ違い通信」用データ５０５、「いつの間に通信」用データ５０６、アプリ用カウンタ５０７、本体用カウンタ５１０等が記憶される。
【０１１３】
「すれ違い通信」用データ５０５は、「すれ違い通信」で用いるデータである。図１３は、「すれ違い通信」用データ５０５のデータ構造の一例を示した図である。「すれ違い通信」用データ５０５は、スロット５０５１の集合で構成されており、各スロット５０５１は、アプリＩＤ５０５２、送信データ５０５３、受信データ５０５４とから構成される。アプリＩＤ５０５２は、そのスロット５０５１に対応付けられているアプリケーションを示すＩＤである。送信データ５０５３は、「すれ違い通信」において他のゲーム装置１０に送信されるデータである。受信データ５０５４は、「すれ違い通信」において他のゲーム装置１０から受信したデータである。
【０１１４】
図９に戻り、「いつの間に通信」用データ５０６は、「いつの間に通信」で用いられるデータである。図１４は、「いつの間に通信」用データ５０６のデータ構造の一例を示した図である。「いつの間に通信」用データ５０６は、タスク５０６１の集合で構成されている。各タスク５０６１は、タスク内容定義データ５０６２、送信データ５０６３、受信データ５０６４等で構成されている。タスク内容定義データ５０６２は、そのタスクの動作内容を規定したデータである。例えば、次回に当該タスクを実行する時刻を示す次回実行時刻を示すデータ（図示は省略）が含まれる。その他、当該タスクに対応するアプリを示す情報や当該タスクの実行回数、実行優先度等を示す情報も含まれる。送信データ５０６３は、当該タスクにおいて所定のサーバに送信されるデータである。受信データ５０６４は、当該タスクにおいて所定のサーバから受信したデータである。
【０１１５】
図９に戻り、アプリ用カウンタ５０７は、上述したような、アプリから発行されるバックグラウンド通信の停止指示を制御するために用いられるデータである。実行中のアプリ１つにつき、１つのアプリ用カウンタ５０７が割り当てられる。各アプリ用カウンタ５０７は、第１停止カウンタ５０８および第２停止カウンタ５０９で構成される。第１停止カウンタ５０８は、「すれ違い通信」を停止させたい際に用いられるカウンタである。各アプリの処理において、「すれ違い通信」を停止させたい旨の命令が発行されると、当該カウンタの値が加算される。第２停止カウンタ５０９は、「いつの間に通信」を停止させたい際に用いられるカウンタである。各アプリの処理において、「いつの間に通信」を停止させたい旨の命令が発行されると、当該カウンタの値が加算される。なお、各アプリの実行に際して、アプリを構成している複数の機能モジュールが内部的には並列で実行されうる。そして、上記のような停止指示は機能モジュール単位で発行されるため、１つのアプリ内で複数の機能モジュールから停止指示が発行されることもある。この場合は、カウンタの値は２以上の値になり得る。
【０１１６】
次に、本体用カウンタ５１０は、バックグラウンド通信の停止指示を制御するために用いられるデータであり、第３停止カウンタ５１１および第４停止カウンタ５１２で構成される。第３停止カウンタ５１１は、上記複数のアプリ用カウンタ５０７で示される第１停止カウンタ５０８、すなわち、「すれ違い通信」の停止指示をとりまとめた内容となる。また、第４停止カウンタ５１２は、上記複数のアプリ用カウンタ５０７で示される第２停止カウンタ５０９、すなわち、「いつの間に通信」の停止指示をとりまとめた内容となる。例えば、実行中のアプリが複数ある場合、これらアプリのうちどれか一つでも「すれ違い通信」の停止指示を出していれば、「すれ違い通信」にかかる処理は停止される。
【０１１７】
その他、システム用データ領域５０４には、操作データ等、システム制御に必要な各種データが記憶される。
【０１１８】
次に、アプリ用データ領域５１３には、各アプリで用いられるデータが適宜記憶される。例えば、アプリの内容が対戦ゲームであれば、当該対戦ゲーム処理で用いられる各種データが適宜記憶される。
【０１１９】
次に、ゲーム装置１によって実行される上記のような処理の詳細について説明する。まず最初に第１マイコン３７が行う処理について説明する。
【０１２０】
［第１マイコン３７が実行する処理］
図１５は、第１マイコン３７によって実行されるマイコン処理を示すフローチャートである。図１５で示される処理は、ゲーム装置１０の電源が完全に切断されない限り、バックグラウンド処理として所定間隔で繰り返し実行される。
【０１２１】
図１５において、まず、ステップＳ１で、ゲーム装置１が上記「スリープモード」であるか否かが判定される。具体的には、上記給電状態フラグ３０４が参照されることによって「スリープモード」か否かが判定される。当該判定の結果、「スリープモード」ではないときは（ステップＳ１でＮＯ）、後述のステップＳ７に処理が進められる。一方、「スリープモード」であると判定されたときは（ステップＳ１でＹＥＳ）、次に、ステップＳ２において、無線通信モジュール３６（の第２マイコン３６１）から発行される、ＡＰを検出した旨の通知を受けたか否かが判定される（当該通知は、後述の図１６のステップＳ２４において発行される）。当該判定の結果、ＡＰを検索した旨の通知が無線通信モジュール３６から発行されていないときは（ステップＳ２でＮＯ）、後述のステップＳ７に処理が進められる。一方、ＡＰを検索した旨の通知が無線通信モジュール３６から発行されていたときは（ステップＳ２でＹＥＳ）、ステップＳ４において、「スリープモード」を解除して「通常電力モード」に移行させるための命令が第１マイコン３７からＣＰＵ３１１に対して発行されるとともに、給電状態フラグ３０４をオンにし、かつ、電源回路にスリープを解除する旨を通知する。更に、「いつの間に通信」の実行指示もＣＰＵ３１１に対して発行される。
【０１２２】
この後、ＣＰＵ３１１は一時的に通電されて動作可能な状態となり、後述するような「いつの間に通信」にかかる処理を実行する。そして、その実行が終われば、「いつの間に通信」が終了した旨の通知がＣＰＵ３１１から第１マイコン３７に送信される。
【０１２３】
次に、ステップＳ５において、上記「いつの間に通信」が終了した旨の通知を受けたか否かが判定される。その結果、当該通知を受けていない間は（ステップＳ５でＮＯ）、ステップＳ５の判定が繰り返される（つまり、「いつの間に通信」の終了まで待機することになる）。一方、当該通知を受けたときは（ステップＳ５でＹＥＳ）、ステップＳ６において、「スリープモード」に移行させるための命令が第１マイコン３７からＣＰＵ３１１に発行されるとともに、給電状態フラグ３０４をオフにし、かつ、電源回路４０に、スリープに移行する旨が通知される。なお、上記ステップＳ４の「スリープモード」を解除して「通常電力モード」に移行させるための命令、ステップ５の判定、およびステップＳ６の「スリープモード」に移行させるための命令は、第１マイコン３７ではなく、無線通信モジュール３６の第２マイコン３６１によって実行されてもよい。
【０１２４】
次に、ステップＳ７において、ゲーム装置１０が閉状態（ハウジングが閉じられている状態）から開状態（ハウジングが開かれた状態）に移行したか否か（つまり、ゲーム装置１０が開かれたか否か）が判定される。具体的には、第１マイコン３７は、開閉検出器４６からハウジングが開かれたことを示す検出信号があったか否かを判定する。当該判定の結果、閉状態から開状態に移行したと判定されたときは（ステップＳ７でＹＥＳ）、次のステップＳ８において、「スリープモード」を解除するための命令が第１マイコン３７からＣＰＵ３１１に発行されるとともに、給電状態フラグ３０４をオンにし、かつ、電源回路４０に、スリープを解除する旨を通知する。これに応じて、電源回路４０は、適宜、ゲーム装置１０の各構成部品への電力供給を開始する。
【０１２５】
一方、ステップＳ７の判定の結果、ゲーム装置１０が閉状態から開状態に移行していないと判定されたときは（ステップＳ７でＮＯ）、次に、ステップＳ９において、ゲーム装置１が開状態から閉状態に移行したか否か（つまり、ゲーム装置１０が閉じられたか否か）が開閉検出器４６からの信号により判定される。その結果、ゲーム装置１０が開状態から閉状態に移行したと判定されたときは（ステップＳ９でＹＥＳ）、次のステップＳ１０において、「スリープモード」に移行させるための命令が第１マイコン３７からＣＰＵ３１１に発行されるとともに、給電状態フラグ３０４をオフにし、かつ、電源回路４０に、スリープに移行する旨が通知される。これに応じて、電源回路４０は、適宜、ゲーム装置１０の各構成部品への電力供給を停止する。一方、ステップＳ９の判定の結果、ゲーム装置１が開状態から閉状態に移行していないと判定されたときは（ステップＳ９でＮＯ）、上記ステップＳ１０の処理がスキップされて、マイコン処理は終了する。
【０１２６】
［スリープ中に第２マイコン３６１が実行する処理］
次に、図１６を用いて、「スリープモード」中に第２マイコン３６１によって実行される、スリープ中ＢＧ通信処理について説明する。まず、ステップＳ２１において、すれ違い通信処理が実行される。この処理は、上述したような第１割当期間（本実施形態では３０秒）の間、「すれ違い通信」にかかるサーチ処理を繰り返し、可能であれば、他のゲーム装置１０と「すれ違い通信」を実行するための処理である。図１７は、当該すれ違い通信処理の詳細を示すフローチャートである。図１７において、まず、ステップＳ４１で、モード設定処理が実行される。この処理は、上述したような、「すれ違い通信」におけるクライアントモードとマスターモードの設定を行うための処理である。この処理において、ゲーム装置１０が「クライアントモード」で動作するか「マスターモード」で動作するかが決定される。すなわち、このステップＳ４１が繰り返し実行されることによって、クライアントモードで動作するかマスターモードで動作するかが繰り返し設定されることになる。
【０１２７】
次に、ステップＳ４２において、上記ステップＳ４１の処理の結果、ゲーム装置１０が「マスターモード」で動作することになったか否かが判定される。その結果、「マスターモード」での動作ではない、すなわち、「クライアントモード」で動作する場合は（ステップＳ４２でＮＯ）、ステップＳ４３において、「クライアントモード」でのサーチ処理が実行される。すなわち、他のゲーム装置に対して接続要求を求める旨のビーコンを発信する処理が実行される。
【０１２８】
次に、ステップＳ４４で、上記発信したビーコンに対しての返答の有無が判定されることで、他のゲーム装置１０を検出したか否かが判定される。その結果、他のゲーム装置１０が検出されなかったときは（ステップＳ４４でＮＯ）、後述のステップＳ４６に処理が進められる。一方、他のゲーム装置１０が検出されたときは（ステップＳ４４でＹＥＳ）、無線通信モジュール３６または第１マイコン３７からの信号でＣＰＵ３１１のスリープ状態が一時的に解除され、ステップＳ４５において、当該検出された他のゲーム装置１０との間で接続が確立され、「すれ違い通信」が実行される。すなわち、「すれ違い通信」用データ５０５が参照され、アプリＩＤ５０５２が共通するスロットにかかるデータの送受信が実行される。その後、「すれ違い通信」にかかるデータ交換が終わると、再度ＣＰＵ３１１がスリープ状態に移行する。
【０１２９】
次に、ステップＳ４６において、上記図５で示したような第１割当期間（本実施形態では、「すれ違い通信」用のサーチ処理の開始から３０秒）が経過したか否かが判定される。その結果、経過していれば（ステップＳ４６でＹＥＳ）、すれ違い通信処理は終了する。一方、まだ経過していないときは（ステップＳ４６でＮＯ）、続くステップＳ４７で、第２割当期間（本実施形態では、動作モードの設定が済んでから１秒）が経過したか否かが判定される。その結果、まだ経過していないときは（ステップＳ４７でＮＯ）、上記ステップＳ４３に戻り、「クライアントモード」でのサーチ処理を繰り返す。一方、第２割当期間が経過していれば（ステップＳ４７でＹＥＳ）、上記ステップＳ４１に戻り、モード設定処理からの処理が繰り返される。すなわち、クライアントモードで動作するかマスターモードで動作するかが再度設定される。
【０１３０】
次に、上記ステップＳ４２の判定の結果、ゲーム装置１０が「マスターモード」で動作する場合は（ステップＳ４２でＹＥＳ）、ステップＳ４８において、「マスターモード」でのサーチ処理が実行される。すなわち、クライアントモードで動作している他のゲーム装置１０から送信されたビーコンの受信（待ち受け）が行われる。
【０１３１】
次に、ステップＳ４９において、他のゲーム装置１０からのビーコンが（所定時間内に）受信できたか否かを判定することで、他のゲーム装置を検出したか否かが判定される。その結果、他のゲーム装置１０が検出されなかったときは（ステップＳ４９でＮＯ）、後述のステップＳ５１に処理が進められる。一方、他のゲーム装置１０が検出されたときは（ステップＳ４９でＹＥＳ）、無線通信モジュール３６または第１マイコン３７からの信号でＣＰＵ３１１のスリープ状態が一時的に解除され、ステップＳ５０において、上記ステップＳ４５と同様に、当該検出された他のゲーム装置１０との間で接続が確立されて「すれ違い通信」が実行される。その後、「すれ違い通信」にかかるデータ交換が終わると、再度ＣＰＵ３１１がスリープ状態に移行する。
【０１３２】
次に、ステップＳ５１において、上記第１割当期間が経過したか否かが判定される。その結果、経過していれば（ステップＳ５１でＹＥＳ）、すれ違い通信処理は終了する。一方、まだ経過していないときは（ステップＳ５１でＮＯ）、続くステップＳ５２で、上記第２割当期間が経過したか否かが判定される。その結果、まだ経過していないときは（ステップＳ５２でＮＯ）、上記ステップＳ４８に戻り、「マスターモード」でのサーチ処理を繰り返す。一方、第２割当期間が経過していれば（ステップＳ５２でＹＥＳ）、上記ステップＳ４１に戻り、モード設定処理から繰り返される。すなわち、クライアントモードで動作するかマスターモードで動作するかが再度設定される。以上で、すれ違い通信処理の説明は終了する。
【０１３３】
図１６に戻り、すれ違い通信処理が終われば、次に、「いつの間に通信」用のサーチ処理が行われる。具体的には、まず、ステップＳ２２において、ＡＰの簡易サーチ処理が行われる。ここで行われるサーチ処理では、いわゆるパッシブスキャンによるＡＰのサーチが行われる。また、この処理の実行主体が第２マイコン３６１であることから、（ＣＰＵ３１１による演算が必要となるような）複雑な処理を伴うサーチ処理を行うのではなく、比較的簡易な処理でのサーチ処理が行われる。
【０１３４】
次に、ステップＳ２３において、上記サーチ処理の結果、ＡＰが検出されたか否かが判定される。その結果、ＡＰが検出されなかったときは（ステップＳ２３でＮＯ）、上記ステップＳ２１に戻り、処理が繰り返される。一方、ＡＰが検出されたときは（ステップＳ２３でＹＥＳ）、ステップＳ２４において、ＡＰを検出した旨が第１マイコン３７に対して通知される。（この通知は、上記図１５のマイコン処理におけるステップＳ２の判定で用いられる）。その結果、第１マイコン３７からの信号でＣＰＵ３１１のスリープ状態が一時的に解除され、後述する「いつの間に通信」処理が実行されることになる。この際、無線通信モジュール３６のＲＡＭ３６２に格納されるプログラムが、当該スリープ中ＢＧ通信処理のプログラムから「インフラ通信」用のプログラムに置き換えられる。そのため、実質的に、ここで一旦スリープ中ＢＧ通信処理が終了することになる。その後、「いつの間に通信」が終わって再度ＣＰＵ３１１がスリープ状態に移行する際に、無線通信モジュール３６のＲＡＭ３６２に当該スリープ中ＢＧ通信処理のプログラムが格納され、上記ステップＳ２１からの処理が繰り返されることになる。以上で、スリープ中ＢＧ通信処理の説明は終了する。
【０１３５】
［通常電力モードにおいてＣＰＵ３１１が実行する処理］
次に、主に「通常電力モード」において、ＣＰＵ３１１が実行主体となる処理について説明する。まず、「通常電力モード」においてバックグラウンド処理として実行される（常駐して動作する）管理処理について説明する。この処理は、ＣＰＵ３１１が通電された際に最初に実行される処理でもある。
【０１３６】
［管理処理］
図１８は、当該管理処理の詳細を示すフローチャートである。まず、ステップＳ７１において、第１マイコンからのスリープ解除命令を受けて「スリープモード」から復帰した直後の状態であるか否かが判定される。その結果、「スリープモード」から復帰した直後の状態であるときは（ステップＳ７１でＹＥＳ）、ステップＳ７２において、スリープ解除処理が実行される。この処理は、「通常電力モード」でゲーム装置１０が動作するように準備する処理である。例えば、「スリープモード」への移行に伴い中断されていたアプリケーション処理の再開等の処理が実行される。後述するような通常時ＢＧ通信処理の開始も指示される。一方、ステップＳ７１の判定の結果、「スリープモード」からの復帰直後ではないときは（ステップＳ７１でＮＯ）、ステップＳ７２の処理はスキップされる。
【０１３７】
次に、ステップＳ７３において、所定のアプリの起動指示が発行されたか否かが判定される。例えば、図示は省略するが、ゲーム装置１０のホームメニューが表示されている状態において、所定のアプリを示すアイコンがユーザによって選択されたような場合、当該ホームメニューを制御するアプリから、選択されたアプリを起動するための指示が発行される。当該判定の結果、アプリの起動指示が発生したと判定されたときは（ステップＳ７３でＹＥＳ）、ステップＳ７４において、起動指示がなされたアプリに対応付けられたアプリ用カウンタ５０７が生成され、メインメモリ３２に格納される。そして、ステップＳ７５において、当該起動指示がなされたアプリのプロセスが生成されることで、当該アプリが起動される。
【０１３８】
一方、上記ステップＳ７３の判定の結果、アプリの起動指示が発行されていないときは、上記ステップＳ７４およびＳ７５の処理はスキップされる。
【０１３９】
次に、ステップＳ７６において、現在実行中のアプリのいずれかから、アプリの終了通知（後述の図２０のステップＳ１２２で通知される）が発行されたか否かが判定される。その結果、発行されていないときは（ステップＳ７６でＮＯ）、後述のステップＳ７８に処理が進められる。一方、終了通知が発行されているときは（ステップＳ７６でＹＥＳ）、ステップＳ７７において、当該通知を発行したアプリのプロセスを消去する処理が実行される。
【０１４０】
次に、ステップＳ７８において、現在実行中のアプリの数に応じてアプリ用カウンタ５０７の数を調整するための処理が実行される。具体的には、対応するアプリのプロセスが存在しないアプリ用カウンタ５０７の有無をチェックし、このようなアプリ用カウンタ５０７が残っているときは消去する処理が実行される。例えば、何らかの原因で強制終了、あるいは異常終了されたアプリが発生した際に、このアプリに対応したアプリ用カウンタ５０７が残ったままにならないようにするための処理である。また、消去すべきアプリ用カウンタ５０７がある場合は、更に、当該アプリ用カウンタ５０７の第１停止カウンタ５０８、および第２停止カウンタ５０９のそれぞれの値が１以上であるか否かのチェックが行われる。そして、値が１以上であるカウンタがあるときは、本体用カウンタ５１０の値を適宜減算する処理も行われる。具体的には、消去すべきアプリ用カウンタ５０７の第１停止カウンタ５０８の値が１以上であった場合は、第３停止カウンタ５１１の値から１が減算される。また、第２停止カウンタ５０９の値が１以上であった場合は、第４停止カウンタ５１２の値から１が減算される。また、消去すべきアプリ用カウンタ５０７が複数存在する場合は、各アプリカウンタ５０７毎に上記の判定がなされる。例えば、消去すべきアプリ用カウンタ５０７が３つあり、このうち、第１停止カウンタ５０８の値が１以上であるアプリ用カウンタ５０７が２つあった場合は、第３停止カウンタ５１１から２が減算されることになる。
【０１４１】
次に、ステップＳ７９において、本体用カウンタ設定処理が実行される。この処理は、この時点でのアプリ用カウンタ５０７の状態をチェックし、その内容に応じて本体用カウンタ５１０を設定するための処理である。図１９は、当該処理の詳細を示すフローチャートである。
【０１４２】
まず、ステップＳ９２において、システム用データ領域内のアプリ用カウンタ５０７の全てについて、次に説明する処理が行われたか否かが判定される。その結果、まだ未処理のアプリ用カウンタ５０７が残っているときは（ステップＳ９２でＮＯ）、ステップＳ９３において、未処理のアプリ用カウンタ５０７の中からいずれか一つが選択される。以下では、選択されたアプリ用カウンタ５０７のことを処理対象アプリカウンタと呼ぶ。
【０１４３】
次に、ステップＳ９４において、処理対象アプリカウンタの第１停止カウンタ５０８の値が１以上であるか否かが判定される。すなわち、処理対象アプリカウンタに対応するアプリが、「すれ違い通信」にかかる処理の停止を指示しているか否かが判定される。当該判定の結果、第１停止カウンタ５０８の値が１以上のときは（ステップＳ９４でＹＥＳ）、ステップＳ９５において、直前の処理ループにおいて、当該処理対象アプリカウンタの第１停止カウンタ５０８の値が０であったか否か（つまり、今回新たに停止指示が出されたのか、それ以前から停止指示が出されていたのか）が判定される。その結果、直前の値が０であったときは（ステップＳ９５でＹＥＳ）、今回新たに停止指示が出されたことになるから、ステップＳ９６において、本体用カウンタ５１０の第３停止カウンタ５１１に１が加算される。一方、０ではなかったときは（ステップＳ９５でＮＯ）、それ以前から停止指示が出されていたことになるから、当該ステップＳ９６の処理はスキップされる。一方、上記ステップＳ９４の判定の結果、第１停止カウンタ５０８の値が１以上ではない、すなわち、０のときは（ステップＳ９４でＮＯ）、ステップＳ１００において、直前の処理ループにおいて、当該処理対象アプリカウンタの第１停止カウンタ５０８の値が１以上であったか否か（つまり、今回新たに停止解除が出されたのか否か）が判定される。その結果、１以上であったときは（ステップＳ１００でＹＥＳ）、今回新たに停止解除が出されたことになるから、ステップＳ１０１において、第３停止カウンタ５１１から１が減算される（但し、上記図１８のステップＳ７８の処理において、アプリの強制終了などによる本体用カウンタ５１０の調整の結果、第３停止カウンタ５１１の値が既に０となっている場合は、この減算は行われない）。そして、後述のステップＳ９７に処理が進められる。一方、第１停止カウンタ５０８の値が１以上ではなかったときは（ステップＳ１００でＮＯ）、それ以前から停止解除が出されていたことになるから、ステップＳ１０１の処理はスキップされる。
【０１４４】
次に、ステップＳ９７において、今度は処理対象アプリカウンタの第２停止カウンタ５０９の値が１以上であるか否かが判定される。すなわち、処理対象アプリカウンタに対応するアプリが、「いつの間に通信」にかかる処理の停止を指示しているか否かが判定される。当該判定の結果、第２停止カウンタ５０９の値が１以上のときは（ステップＳ９７でＹＥＳ）、ステップＳ９８において、直前の処理ループにおいて、当該処理対象アプリカウンタの第２停止カウンタ５０９の値が０であったか否かが判定される。その結果、直前の値が０であったときは（ステップＳ９８でＹＥＳ）、ステップＳ９９において、本体用カウンタ５１０の第４停止カウンタ５１２に１が加算される。そして、上記ステップＳ９２に戻り、処理が繰り返される。一方、０ではなかったときは（ステップＳ９８でＮＯ）、ステップＳ９９の処理はスキップされる。一方、上記ステップＳ９７の判定の結果、第２停止カウンタ５０９の値が１以上ではない、すなわち、０のときは（ステップＳ９７でＮＯ）、次に、ステップＳ１０２において、直前の処理ループにおいて、当該処理対象アプリカウンタの第２停止カウンタ５０９の値が１以上であったか否かが判定される。その結果、１以上であったときは（ステップＳ１０２でＹＥＳ）、ステップＳ１０３において、第４停止カウンタ５１２から１が減算される（但し、上記ステップＳ７８の処理において、第４停止カウンタ５１２の値が既に０となっている場合は、この減算は行われない）。そして、上記ステップＳ９２に処理が戻される。一方、第２停止カウンタ５０９の値が１以上ではなかったときは（ステップＳ１０２でＮＯ）、ステップＳ１０３の処理はスキップされて、ステップＳ９２に戻る。
【０１４５】
このような処理によって、アプリからの停止指示または停止解除指示を本体用カウンタ５１０の値に反映することができる。つまり、あるアプリから停止指示が出された場合、本体用カウンタ５１０の値が加算され、その後、この停止指示の解除が指示された場合、本体用カウンタ５１０の値が減算されることとなる。
【０１４６】
一方、上記ステップＳ９２の判定の結果、システム用データ領域内のアプリ用カウンタ５０７の全てについて上述のような処理が行われたと判定されたときは（ステップＳ９２でＹＥＳ）、本体用カウンタ設定処理は終了する。
【０１４７】
図１８に戻り、次に、ステップＳ８０において、第１マイコン３７から「スリープモード」への移行命令が発行された否かが判定される。その結果、発行されていなければ（ステップＳ８０でＮＯ）、上記ステップＳ７３に戻り、処理が繰り返される。一方、発行されているときは（ステップＳ８０でＹＥＳ）、ステップＳ８１において、スリープ状態移行処理が実行される。具体的には、まず、この時点で「すれ違い通信」、または、「いつの間に通信」の処理が行われていれば、この処理が中止される。更に、無線通信モジュール３６のＲＡＭ３６２に、スリープ中ＢＧ通信処理プログラム５０２１がコピーされる。これにより、「スリープモード」中に無線通信モジュール３６が上記図１６で示したようなスリープ中ＢＧ通信処理の実行が可能となる。その結果、後述するような「すれ違い通信」や「いつの間に通信」の停止指示が所定のアプリから指示されていたとしても、「スリープモード」に移行すれば、アプリは中断されるので、これらの指示（カウンタの値）に関わりなく「すれ違い通信」や「いつの間に通信」は実行可能となる。また、その他、実行中のアプリを中断し、そのときのアプリの状態を保存する等、「スリープモード」へ移行するための各種処理も実行される。以上で、管理処理は終了する。
【０１４８】
［アプリ処理］
次に、ユーザからの起動指示および上記管理処理によって起動されるアプリの処理について説明する。当該アプリ処理は、フォアグラウンドの処理としても実行され得るし、バックグラウンドの処理としても実行され得る。なお、各アプリケーションの具体的な処理内容は当然のことながらそれぞれ異なる。そのため、この点に関しての説明は省略し、本実施形態に関する部分、すなわち、上記アプリ用カウンタ５０７に関する処理を中心に、その最大公約数的な処理内容、すなわち、どのアプリケーションにおいても普遍的に行われると思われる処理として説明する。
【０１４９】
図２０は、アプリ処理の詳細を示すフローチャートである。まず、ステップＳ１１１において、当該アプリに対応するアプリ用カウンタ５０７の初期化が行われる。すなわち、第１停止カウンタ５０８および第２停止カウンタ５０９の値として０が設定される。
【０１５０】
次に、ステップＳ１１２において、各アプリケーションの内容に応じた各種情報処理が実行される。例えば、ゲーム処理やお絵かきソフト処理、カメラアプリケーション処理等である。また、この処理において、「ローカル通信」に関する処理も適宜実行され得る。この際、「ローカル通信」の処理を開始する前に、以下に説明するような通信の停止指示が発行される。そして、「すれ違い通信」、「いつの間に通信」にかかる処理が停止されたことが確認されてから、「ローカル通信」処理プログラム５０２３が無線通信モジュール３６のＲＡＭ３６２にコピーされ、「ローカル通信」にかかる処理の実行が開始される。もちろん、「ローカル通信」を行う場合のみに限らず、処理負荷を軽減する目的で停止指示を発行してもよい。このような場合は、必ずしも通信の停止を確認するまでアプリ側で待機する必要はない。
【０１５１】
次に、ステップＳ１１３において、上記の各種情報処理の結果、「すれ違い通信」の停止指示が発せられているか否かが判定される。ここで、本実施形態では、各アプリは、ある特定の機能を持ったプログラムの集合で構成されているとする。そして、当該停止指示は、アプリを構成する各プログラム単位で発行されるものとする。そのため、あるアプリを構成するプログラム群のうち、２つのプログラムから上記停止指示が発行されることもあり、このような場合は、停止指示が２つあることになる。
【０１５２】
上記ステップＳ１１３の判定の結果、「すれ違い通信」の停止指示が１つ以上発行されていたときは（ステップＳ１１３でＹＥＳ）、ステップＳ１１４において、発行された停止指示の数に応じて第１停止カウンタ５０８の値が加算される。一方、停止指示が発行されていないときは（ステップＳ１１３でＮＯ）、ステップＳ１１４の処理はスキップされる。
【０１５３】
次に、ステップＳ１１５において、上記ステップＳ１１２の各種情報処理の結果、「いつの間に通信」の停止指示の旨が発せられているか否かが判定される。この停止指示も、上記「すれ違い通信」の場合と同様に、アプリを構成する各プログラム単位で発行される。当該判定の結果、「いつの間に通信」の停止指示が１つ以上発行されていたときは（ステップＳ１１５でＹＥＳ）、ステップＳ１１６において、発行された停止指示の数に応じて第２停止カウンタ５０９の値が加算される。一方、停止指示が発行されていないときは（ステップＳ１１５でＮＯ）、ステップＳ１１６の処理はスキップされる。
【０１５４】
次に、ステップＳ１１７において、上記ステップＳ１１２の各種情報処理の結果、「すれ違い通信」の停止解除指示が発せられているか否かが判定される。これは、例えば、あるプログラムが「すれ違い通信」の停止指示を発行した後、所定の処理が終了して、「すれ違い通信」を停止しておく必要がなくなったようなときに、当該プログラムから停止を解除する指示が発行される。当該判定の結果、「すれ違い通信」の停止解除指示が１つ以上発行されていたときは（ステップＳ１１７でＹＥＳ）、ステップＳ１１８において、発行された解除指示の数に応じて第１停止カウンタ５０８の値が減算される。一方、解除指示が発行されていないときは（ステップＳ１１７でＮＯ）、ステップＳ１１８の処理はスキップされる。
【０１５５】
次に、ステップＳ１１９において、上記ステップＳ１１２の各種情報処理の結果、「いつの間に通信」の停止解除指示が発せられているか否かが判定される。当該判定の結果、「いつの間に通信」の停止解除指示が１つ以上発行されていたときは（ステップＳ１１９でＹＥＳ）、ステップＳ１２０において、発行された解除指示の数に応じて第２停止カウンタ５０９の値が減算される。一方、解除指示が発行されていないときは（ステップＳ１１９でＮＯ）、ステップＳ１２０の処理はスキップされる。
【０１５６】
次に、ステップＳ１２１において、アプリ終了の指示が発行されたか否かが判定される。その結果、アプリ終了の指示が出されていないとき（ステップＳ１２１でＮＯ）、上記ステップＳ１１２に戻り、処理が繰り返される。一方。アプリ終了の指示が出されていたときは（ステップＳ１２１でＹＥＳ）、ステップＳ１２２において、アプリを終了する旨をシステムに通知する処理が実行される。この通知に応じて、システム側で当該アプリのプロセスを消去する等の処理が適宜実行されることになる。以上で、アプリ処理は終了する。
【０１５７】
［通常時ＢＧ通信処理］
次に、「通常電力モード」においてバックグラウンド処理として実行される、通常時ＢＧ通信処理について説明する。この処理は、「通常電力モード」において、「すれ違い通信」や「いつの間に通信」をバックグラウンドで実行するための処理である。
【０１５８】
図２１は、通常時ＢＧ通信処理の詳細を示すフローチャートである。まず、ステップＳ１３１において、本体用カウンタ５１０が参照され、第３停止カウンタ５１１の値が１以上であるか否かが判定される。つまり、「すれ違い通信」にかかる処理を停止させたいアプリが１以上あるか否かが判定される。当該判定の結果、１以上のときは（ステップＳ１３１でＹＥＳ）、「すれ違い通信」の停止指示を出しているアプリが少なくとも１つは存在することになる。この場合は、次に、ステップＳ１３５において、直前の処理ループにおいて、第３停止カウンタ５１１の値が０であったか否かが判定される。その結果、直前の値が０であったときは（ステップＳ１３５でＹＥＳ）、ステップＳ１３６において、「すれ違い通信」にかかる処理を停止するための処理が行われる。具体的には、無線通信モジュール３６の第２マイコン３６１に対して、実行中の「すれ違い通信」処理の停止を指示する等の処理が行われる（この時点で「すれ違い通信」が実行中ではなければ、当該ステップＳ１３６の処理はスキップされてもよい）。その後、後述するステップＳ１３７に処理が進められる。
【０１５９】
一方、上記ステップＳ１３１の判定の結果、第３停止カウンタ５１１の値が１以上ではない、すなわち、０であるときは（ステップＳ１３１でＮＯ）、「すれ違い通信」にかかる処理を停止させたいアプリは存在しないことになる。この場合は、次に、ステップＳ１３２において、無線通信モジュール３６のＲＡＭ３６２に「すれ違い通信」処理プログラム５０２２が格納されているか否かが判定される（例えば、第３停止カウンタ５１１が０であり、第４停止カウンタ５１２が１以上である場合、無線通信モジュール３６のＲＡＭ３６２には「すれ違い通信」処理プログラム５０２２が格納されたままとなる）。その結果、格納されていないときは（ステップＳ１３２でＮＯ）、ステップＳ１３３において、無線通信モジュール３６のＲＡＭ３６２に「すれ違い通信」処理プログラム５０２２がコピーされる。一方、ステップＳ１３２の判定の結果、既に「すれ違い通信」処理プログラム５０２２が格納されているときは（ステップＳ１３２でＹＥＳ）、上記ステップＳ１３３の処理はスキップされる。
【０１６０】
次に、ステップＳ１３４において、「すれ違い通信」処理の実行指示が第２マイコン３６１に対して発行される。これに応じて、第２マイコン３６１は、「すれ違い通信」の処理を開始する（その結果、バックグラウンドで「すれ違い通信」が実行されることになる）。なお、この「すれ違い通信」の処理は上記図１７を用いて説明した処理と同じであるため、説明は省略する。更に、当該すれ違い通信処理が開始されれば、その終了まで待機する処理も実行される。本実施例では、少なくとも３０秒（第１割当期間）は待機することになる。
【０１６１】
次に、ステップＳ１３７において、第４停止カウンタ５１２の値が１以上であるか否かが判定される。すなわち、「いつの間に通信」にかかる処理を停止させたいアプリが存在するか否かが判定される。その結果、１以上のときは（ステップＳ１３７でＹＥＳ）、「いつの間に通信」の停止指示が発行されていることになる。この場合は、直前の処理ループにおいて、第４停止カウンタ５１２の値が０であったか否かが判定される。その結果、直前の値が０であったときは（ステップＳ１３８でＹＥＳ）、ステップＳ１３９において、「いつの間に通信」にかかる処理を停止するための処理が行われる（この時点で「いつの間に通信」が行われていなければ、ステップＳ１３９の処理はスキップされてもよい）。その後、上記ステップＳ１３１に戻り、処理が繰り返される。
【０１６２】
一方、ステップＳ１３７の判定の結果、第４停止カウンタ５１２の値が１以上ではない、すなわち０のときは（ステップＳ１３７でＮＯ）、「いつの間に通信」にかかる処理を実行することになる。この場合は、まず、ステップＳ１４０において、無線通信モジュール３６のＲＡＭ３６２に、インフラ通信用プログラム５０２４が格納されているか否かが判定される（例えば、第３停止カウンタ５１１が１以上であり、第４停止カウンタ５１２が０のままである場合、無線通信モジュール３６のＲＡＭ３６２にはインフラ通信用プログラム５０２４が格納されたままとなる）。その結果、格納されていないときは（ステップＳ１４０でＮＯ）、ステップＳ１４１において、無線通信モジュール３６のＲＡＭ３６２にインフラ通信用プログラム５０２４がコピーされる。当該インフラ通信用プログラム５０２４は、無線通信モジュール３６にインフラ通信機能を実現させるためのプログラムであり、例えば、ＴＣＰ／ＩＰプロトコルに基づいてＡＰやサーバと通信するためのプログラムである。当該プログラムにおける基本的な制御手法等については当業者には既知であるため、詳しい説明は省略する。一方、既に格納されている状態のときは（ステップＳ１４０でＹＥＳ）、ステップＳ１４１の処理はスキップされる。
【０１６３】
次に、ステップＳ１４２において、ＡＰをサーチする処理が実行される。この処理では、上記無線通信モジュール３６で実行されるインフラ通信用プログラム５０２４と連携して、ＡＰをサーチする処理が行われる。なお、ここでのサーチ処理は、「スリープモード」において実行されるＡＰの簡易サーチ処理（上記図１６のステップＳ２２）よりも複雑な処理を行うことが可能である。具体的には、パッシブスキャンに加えて、いわゆるアクティブスキャンも適宜利用される。これは、例えば、ＳＳＩＤステルス機能を利用したＡＰとの接続も可能とするためである。なお、必ずしもアクティブスキャンを併用する必要はなく、パッシブスキャンのみ利用するようにしても良い。
【０１６４】
次に、ステップＳ１４３において、上記サーチの結果、ＡＰが検出されたか否かが判定される。その結果、ＡＰが検出されなかったときは（ステップＳ１４３でＮＯ）、上記ステップＳ１３１に戻り、処理が繰り返される。一方、ＡＰが検出されたときは（ステップＳ１４３でＹＥＳ）、ステップＳ１４４において、当該ＡＰとの接続を確立する処理が実行される。
【０１６５】
次に、ステップＳ１４５において、「いつの間に通信」処理が実行される。この処理の詳細については後述する。
【０１６６】
「いつの間に通信」処理が終われば、次に、ステップＳ１４６において、上記ステップＳ１４４で接続したＡＰと通信可能な状態が継続しているか否かが判定される。例えば、上記接続したＡＰから発せられるビーコンを（接続確立後も）定期的に検出する等で、通信可能な状態が継続しているか否か判定可能である。これにより、例えば、ＡＰの通信可能範囲外にゲーム装置１０が移動したか否かが判定可能となる。その結果、まだ通信可能な状態であるときは（ステップＳ１４６でＹＥＳ）、続くステップＳ１４７において、第４停止カウンタ５１２の値が１以上でないか否かが判定される。その結果、１以上ではないときは（ステップＳ１４７でＮＯ）、上記ステップＳ１４５に戻り、処理が繰り返される。つまり、ＡＰとの接続が維持されたままの状態となる。一方、１以上のときは（ステップＳ１４７でＹＥＳ）、上記ステップＳ１３１に戻り処理が繰り返される。その結果、（停止指示が出ていなければ）「すれ違い通信」にかかる処理が（無線通信モジュール３６において）実行されることになる。これは、ＡＰとの接続が維持されていても、アプリから「いつの間に通信」の停止指示が出されることがあり得るため、この指示を反映させるための判定である。以上で、通常時ＢＧ通信処理の説明は終了する。
【０１６７】
［いつの間に通信処理］
次に、上記ステップＳ１４１で示した「いつの間に通信」処理の詳細を説明する。図２３は、当該「いつの間に通信」処理の詳細を示すフローチャートである。まず、ステップＳ１５１において、「スリープモード」中に本処理が呼び出されたのか否かが判定される。つまり、上記マイコン処理におけるステップＳ４の処理に応じて実行されたものであるか否かが判定される。当該判定の結果、「スリープモード」中に呼び出されていたときは（ステップＳ１５１でＹＥＳ）、ステップＳ１５２において、無線通信モジュール３６のＲＡＭ３６２にインフラ通信用プログラム５０２４がコピーされる。その結果、無線通信モジュール３６は、インフラ通信機能を実現できる状態となる。
次に、ステップＳ１５３において、「スリープモード」中に検出されたＡＰ（上記図１６のステップＳ２２の結果検出されたＡＰ）との接続を確立する処理が実行される。そして、後述のステップＳ１５４に処理が進められる。
【０１６８】
一方、ステップＳ１５１の判定の結果、「スリープモード」中の呼び出しではないときは（ステップＳ１５１でＮＯ）、「通常電力モード」において呼び出されたことになるため、上記ステップＳ１５２および、Ｓ１５３の処理はスキップされる。
【０１６９】
次に、ステップＳ１５４において、「いつの間に通信」用データ５０６が参照され、この時点で実行予定であるタスク（実行予定時刻が経過しているが未処理のものも含む）が抽出される。次に、ステップＳ１５５において、上記抽出された実行予定タスクの全てについて、以下に述べるような処理が行われたか否かが判定される。その結果、未処理のタスクが残っているときは（ステップＳ１５５でＮＯ）、次のステップＳ１５６において、未処理のタスクの中からいずれか一つが、処理対象タスクとして選択される。
【０１７０】
次に、ステップＳ１５７において、当該処理対象タスクのタスク内容定義データ５０６２が参照され、その定義内容に基づいて、所定のサーバとの間でデータの送受信等が行われる。
【０１７１】
次に、ステップＳ１５８において、ＡＰと通信可能な状態が継続しているか否か（ＡＰの通信可能範囲外に移動していないか）が判定される。その結果、通信可能な状態が継続していれば（ステップＳ１５８でＹＥＳ）、上記ステップＳ１５５に戻り、処理が繰り返される。
【０１７２】
一方、ステップＳ１５８の判定の結果、通信可能な状態になっていないと判定されたとき（ステップＳ１５８でＮＯ）、あるいは、上記ステップＳ１５５の判定の結果、実行予定のタスクを全て処理したと判定されたときは（ステップＳ１５５でＹＥＳ）、ステップＳ１５９において、上記ステップＳ１５１と同様に、「スリープモード」中に本処理が呼び出されたのか否かが判定される。その結果、「スリープモード」中に呼び出されていたときは（ステップＳ１５９でＹＥＳ）、再度「スリープモード」に戻るための処理が実行される。まず、ステップＳ１６０において、無線通信モジュール３６のＲＡＭ３６２に、スリープ中ＢＧ通信処理プログラム５０２１がコピーされる。これにより、無線通信モジュール３６は、上記図１６で示したようなスリープ中ＢＧ通信処理を実行可能な状態となる。次に、ステップＳ１６１において、いつの間に通信が終了した旨の通知を第１マイコン３７に送信する。その結果、第１マイコン３７から「スリープモード」への移行命令がＣＰＵ３１１に発行されることになる（上記図１５のステップＳ６の処理）。
【０１７３】
一方、ステップＳ１５９の判定の結果、「スリープモード」中の呼び出しではないときは（ステップＳ１５９でＮＯ）、「通常電力モード」における呼び出しとなるため、上記ステップＳ１６０およびＳ１６１の処理はスキップされ、「いつの間に通信」処理は終了する。
【０１７４】
このように、本実施形態では、「すれ違い通信」用のサーチと「いつの間に通信」用のサーチとの２種類のサーチをバックグラウンド処理で繰り返し実行している。そして、「すれ違い通信」用のサーチにおいて他のゲーム装置１０が検出されたときは「すれ違い通信」を行い、「いつの間に通信」用のサーチにおいてＡＰが検出されたときは「いつの間に通信」を自動的に行うように構成している。更に、この２種類のサーチを所定の周期で自動的に切替ながら実行している。これにより、２種類の通信が自動的に行われ、ユーザに意識させることなく、多様な内容の通信を実行することができる。また、近距離の端末を対象とする通信と、サーバ等の（ネットワーク的な意味で）遠距離にある接続対象との通信という２種類の通信をシームレスに実行することができる。また、「すれ違い通信」用のサーチと「いつの間に通信」用のサーチを交互に行うよう構成しているため、両通信をある程度平均的に（まんべんなく）行われるようにすることができる。例えば、イベント会場等において、そこに存在するＡＰの数に比べて、他のゲーム装置１０の数のほうが圧倒的に多いような場合に、「すれ違い通信」ばかりが偏って行われることを防ぎ、「いつの間に通信」もある程度実行されるようにすることができる。
【０１７５】
また、サーチパターンについて、上記実施形態では、「スリープモード」においては、３０秒の「すれ違い通信」用のサーチ期間を設け、その後１回の「いつの間に通信」用のサーチを行うようにしている。つまり、「すれ違い通信」のほうがより発生しやすいように設定している。一方、「通常電力モード」においては、一旦ＡＰに接続されると、当該ＡＰと通信ができない状態となるまでは、当該ＡＰとの接続状態が維持され、その間「すれ違い通信」は行われないような制御が行われている。つまり、「スリープモード」においては、「すれ違い通信」の発生を優先し、「通常電力モード」においては、「いつの間に通信」（更には、インフラ通信を用いた各種通信処理）の発生を優先している。これにより、ゲーム装置１０の使用状態に応じたより適切な通信を実行させやすくすることが可能となる。
【０１７６】
更に、「通常電力モード」においては、「すれ違い通信」「いつの間に通信」にかかるサーチ処理について、アプリから停止指示を出すことが可能なように構成している。これにより、アプリ側からの指示でバックグラウンドの通信を停止させ、実行されるアプリの処理内容に応じて適切な通信処理を実行することができる。更には、アプリ実行時の処理負荷を軽減させることも可能となり、より柔軟なアプリの開発環境を開発者に提供することができる。また、上記本体用カウンタ５１０を用いて、停止指示を出しているアプリの数を加算していくため、例えば、３つのアプリから停止指示が出されており、その後、いずれか１つが停止指示を解除したときであっても、すぐには通信の停止が解除されないようにすることができる。つまり、アプリ側の停止指示を優先して反映するように制御することができる。
【０１７７】
上述した「すれ違い通信」に関して、上記の例では、３０秒間（第１割当期間内）に複数回の「すれ違い通信」が発生することもある。この他、当該３０秒の間に１回「すれ違い通信」が行われて完了すれば、３０秒が経過していなくとも、「すれ違い通信」処理を終了して「いつの間通信」にかかるサーチに移行するようにしても良い。具体的には、上記図１７のステップＳ４５、およびＳ５０の処理が行われれば、その後、「すれ違い通信」処理が終了するようにしてもよい。
【０１７８】
また、上記実施形態では、「すれ違い通信」用のサーチを３０秒行った後、１回の「いつの間に通信」用のサーチの行うというパターンを繰り返すサーチパターンを例に挙げた。このサーチパターン（２種類のサーチの切替条件）については、変更可能であってもよい。例えば、このサーチパターンを定義したデータを所定のサーバに用意する。そして、上記「いつの間に通信」を利用して、当該サーバからサーチパターンの定義データを受信し、その内容に応じてゲーム装置１０においてサーチパターンを変更するようにしても良い。
【０１７９】
また、上記のように「すれ違い通信」用のサーチと「いつの間に通信」用のサーチを交互に行っているが、このとき、サーチで検出された接続対象が、前回に接続した対象と同じであれば、当該対象とは接続しないように制御しても良い。例えば、一旦「いつの間に通信」が行われ、次に「すれ違い通信」が行われたとする。その後、「いつの間に通信」用のサーチが行われた結果、検出されたＡＰが先ほど接続したＡＰと同じであれば、他のＡＰを検索したり、「いつの間に通信」の処理は行わずにすぐに「すれ違い通信」用のサーチに移行するようにしても良い。
【０１８０】
また、サーチの処理に関して、上記実施形態では、「すれ違い通信」用のサーチと、「いつの間に通信」用のサーチを交互に行うパターンを例に挙げた。これに限らず、１回のサーチにおいて「すれ違い通信」用のサーチと「いつの間に通信」用のサーチがまとめて行われるように構成しても良い。例えば、上記「マスターモード」といわゆるパッシブスキャンとを併せ持ったような動作を行わせても良い。すなわち、ゲーム装置１０がビーコンを待ち受けるサーチ動作において、「すれ違い通信」用のビーコンと、ＡＰから発信されたビーコンとのいずれも受信するように構成する。そして、受信したビーコンが「すれ違い通信」用のビーコンであるか、ＡＰから発信されたビーコンであるかを判別し、その判別結果に応じて、「すれ違い通信」処理、あるいは「いつの間に通信」処理のいずれかを適宜選択して実行するように構成しても良い。つまり、「すれ違い通信」用のサーチ、「いつの間に通信」用のサーチ、という区別を設けずに、受信したビーコンの種類に応じて実行する通信処理の内容を適宜変化させるようにしてもよい。
【０１８１】
また、上記のように、受信したビーコンの種類に応じて実行する通信処理の内容を適宜変化させる場合は、待ち行列（キュー）の概念を利用し、例えば、一定の期間において受信できた複数のビーコンについて、そのビーコンの種類に応じた通信処理を順番に行うようにしても良い。例えば、１回のサーチで３つのビーコンが受信され、その内訳としては、「すれ違い通信」用のビーコンが２つ、ＡＰからのビーコンが１つであったとする。この場合は、受信した順に沿って、「すれ違い通信」と「いつの間に通信」を順に行うようにしてもいい。例えば、「すれ違い通信」→「すれ違い通信」→「いつの間に通信」というように、一度のサーチに対して３つの通信処理が実行されるようにしてもよい。また、受信した順の他、優先度に応じて実行順を決定しても良い。例えば、「すれ違い通信」が優先的に行われるよう制御したい場合は、「すれ違い通信」を優先的に実行された後、「いつの間に通信」が実行されるように優先順位を設定する。また、「いつの間に通信」が優先的に行われるよう制御したい場合は、「いつの間に通信」を先に実行した後に「すれ違い通信」が行われるよう優先順位を決定する。また、「すれ違い通信」と「いつの間に通信」が交互に実行されるように制御したい場合は、「すれ違い通信」と「いつの間に通信」が交互に実行されるように優先順位を決定するようにしてもよい。
【０１８２】
また、上記「すれ違い通信」として行われるデータの送受信については、更に、上記インフラ通信を利用して行う形態を併用するようにしても良い。つまり、近くに他のゲーム装置１０が存在する状況であれば、上記のような「すれ違い通信」を行うが、近くに他のゲーム装置１０が存在しない状況であって、インフラ通信は可能な状況であれば、同様の状況にある他のゲーム装置１０との間で、インフラ通信を利用して「すれ違い通信」用データ５０５の送受信が行われるようにしても良い。例えば、同じ地域にいるゲーム装置間で「すれ違い通信」用データ５０５の送受信が行われるようにしてもよい。つまり、ある程度近い位置に存在するゲーム装置１０同士であれば、インフラ通信を利用して、上述したような「すれ違い通信」と同等の処理を行うことで、「すれ違い通信」を補完するようにしてもよい。これは、地域的な事情などで、ユーザの近くには他のゲーム装置１０を所持しているユーザが少ないような状況で有用である。または、「通常電力モード」において通信可能範囲にＡＰが存在する場合には、ＡＰとの接続を維持して「すれ違い通信」用のサーチを行うことができないので、そのような状況においてもすれ違い通信を行うことができるようにするのに有用である。
【０１８３】
また、アプリから発行されるバックグラウンド通信の停止指示に関して、上記実施形態では、いずれか１つのアプリから停止指示が出されていれば、これに応じたバックグラウンド通信を停止していた。この他、実行中のアプリの中でバックグラウンド通信の停止指示を出しているアプリの数が所定数以上のときに停止したり、多数決によって停止する否かを決定するようにしても良い。
【０１８４】
また、上記アプリ用カウンタ５０７に関して、上記実施形態では、アプリを構成する各プログラム単位で発行される場合を例に挙げた。そのため、アプリ用カウンタ５０７に含まれる各値は２以上の値となることもあったが、これに限らず、例えば停止指示があるかないかを示すフラグとして扱うようにしてもよい。すなわち、アプリを構成する各プログラムのうち１つでも停止指示を発行していれば、「停止指示あり」とし、停止指示が１つも発行されてなければ「停止指示無し」とするフラグとして扱っても良い。
【０１８５】
また、上記実施形態では、情報処理装置の一例として携帯型のゲーム装置を例に挙げて説明した。この他、携帯電話やＰＤＡ等の小型の携帯型情報端末にも本発明は適用可能であり、特に有用である。その他、いわゆるタブレット型の情報端末（タブレット端末やタブレットＰＣ）、スレートＰＣやノートパソコンなどの、小型ではないが、鞄等を利用して携行することは可能な情報処理端末についても本発明は適用可能である。
【０１８６】
また、上記実施形態においては、アプリからのバックグラウンド通信の停止指示に関する一連の処理が単一の装置（ゲーム装置１０）において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【産業上の利用可能性】
【０１８７】
本発明にかかる情報処理装置、情報処理プログラム、情報処理方法は、使用状態に応じた複数の通信態様の使い分けができ、近距離無線通信機能を搭載した携帯型ゲーム装置やポータブルメディアプレーヤ、ＰＤＡ等に有用である。
【符号の説明】
【０１８８】
１０  ゲーム装置
１１  下側ハウジング
１２  下側ＬＣＤ
１３  タッチパネル
１４  操作ボタン
１５  アナログスティック
１６  ＬＥＤ
２１  上側ハウジング
２２  上側ＬＣＤ
２３ａ  外側撮像部（左）
２３ｂ  外側撮像部（右）
２４  内側撮像部
２５  ３Ｄ調整スイッチ
２７  タッチペン
２８  外部メモリ
２９  データ保存用外部メモリ
３１  情報処理部
３２  メインメモリ
３３  外部メモリＩ／Ｆ
３４  データ保存用外部メモリＩ／Ｆ
３５  データ保存用内部メモリ
３６  無線通信モジュール
３７  第１マイコン
３９  加速度センサ
４０  電源回路
４２  マイク
４３  スピーカ
４６  開閉検出器
【図１】
0005938165.tif 000002
【図２Ａ】
0005938165.tif 000003
【図２Ｂ】
0005938165.tif 000004
【図２Ｃ】
0005938165.tif 000005
【図２Ｄ】
0005938165.tif 000006
【図３】
0005938165.tif 000007
【図４】
0005938165.tif 000008
【図５】
0005938165.tif 000009
【図６Ａ】
0005938165.tif 000010
【図６Ｂ】
0005938165.tif 000011
【図７】
0005938165.tif 000012
【図８】
0005938165.tif 000013
【図９】
0005938165.tif 000014
【図１０】
0005938165.tif 000015
【図１１】
0005938165.tif 000016
【図１２】
0005938165.tif 000017
【図１３】
0005938165.tif 000018
【図１４】
0005938165.tif 000019
【図１５】
0005938165.tif 000020
【図１６】
0005938165.tif 000021
【図１７】
0005938165.tif 000022
【図１８】
0005938165.tif 000023
【図１９】
0005938165.tif 000024
【図２０】
0005938165.tif 000025
【図２１】
0005938165.tif 000026
【図２２】
0005938165.tif 000027
【図２３】
0005938165.tif 000028