(57)【特許請求の範囲】
【請求項１】
ネットワーク上の情報を一元管理するサーバを有しない情報共有システムであって、
複数のネットワーク機器を備え、
前記複数のネットワーク機器の各々は、
処理部と、
記憶部と、
通信インタフェースと、
を備え、
前記複数のネットワーク機器の各々の記憶部に同一の共有情報が記憶されており、
複数のコントローラのうち第１のコントローラが前記複数のネットワーク機器のうち第１のネットワーク機器に接続すると、前記第１のネットワーク機器の処理部は、サービスサーバに接続し、かつ、サービスサーバに接続しているソース機器である旨のソース機器情報を共有情報として通信インタフェースを介して他のネットワーク機器に配信し、
前記複数のコントローラのうち第２のコントローラが前記複数のネットワーク機器のうち第２のネットワーク機器に接続すると、前記第２のネットワーク機器の処理部は、前記共有情報としてのソース機器情報を記憶部から読み出して前記第２のコントローラからの要求を処理する
ことを特徴とする情報共有システム。
【請求項２】
請求項１記載の情報共有システムにおいて、
前記第２のネットワーク機器の処理部は、前記第２のコントローラのアカウント情報を共有情報として他のネットワーク機器に配信し、かつ、前記第２のコントローラからの前記サービスサーバへの接続要求を受信すると、前記共有情報としてのソース機器情報に基づき、前記サービスサーバへの接続要求を前記第１のネットワーク機器に送信し、
前記第１のネットワーク機器の処理部は、前記第２のネットワーク機器の処理部から前記サービスサーバへの接続要求を受信すると、前記共有情報としての前記第２コントローラのアカウント情報を用いて前記サービスサーバに接続する
ことを特徴とする情報共有システム。
【請求項３】
請求項１記載の情報共有システムにおいて、
前記第２のネットワーク機器の処理部は、前記第２のコントローラからの画面要求を受信すると、前記共有情報としてのソース機器情報に基づき、前記画面要求を前記第１のネットワーク機器に送信し、
前記第１のネットワーク機器の処理部は、前記第２のネットワーク機器の処理部から前記画面要求を受信すると、前記第１のコントローラに送信している画面情報を前記第２のネットワーク機器に送信する
ことを特徴とする情報共有システム。
【請求項４】
請求項１〜３のいずれかに記載の情報共有システムにおいて、
前記複数のネットワーク機器のうちのいずれかの機器の処理部は、記憶部に記憶されている情報を共有情報として通信インタフェースを介して他の機器に配信することを特徴とする情報共有システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報共有システムに関し、特に複数のコントローラ及び複数の機器における情報の共有技術に関する。
【背景技術】
【０００２】
複数の機器がネットワークに接続され、そのうちの１つの機器がインターネット経由でサービスサーバと接続して音楽等をダウンロードするシステムが開発されている。サービスサーバにアクセスしてサービスサーバとデータを送受している機器をソース機器とすると、ユーザはコントローラを用いてソース機器の動作を制御することによりシステムを制御し得る。
【０００３】
下記の特許文献１には、ネットワーク制御システムにおいて、機器内部の状態変化により操作画面が変更された際に、迅速にコントローラへこの状態変化を通知でき、確実にコントローラと機器が同一の状態情報を共有することが記載されている。コントローラは、画面要求を発行して画面表示データを機器から獲得し、操作画面に対して操作がなされると、操作情報と画面表示データの識別情報を機器に送信し、機器は、この操作要求に対応する機能を実行し、画面表示データが変化すると変化後の画面表示データをコントローラに送るとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１２５３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、複数の機器のうちの特定の機器を固定的にソース機器とし、この特定の機器とコントローラを接続するシステムでは情報を共有することが容易であるが、コントローラがソース機器以外にも接続し得るシステムでは情報の共有が困難となる。特に、複数の機器がネットワークに接続されるとともに、ネットワーク上の情報を一元管理するサーバが存在しておらず、複数のコントローラで任意の機器に接続して制御するシステムにおいて上記の問題が顕在化し得る。
【０００６】
本発明は、複数の機器がネットワークに接続され、複数のコントローラで機器を制御する場合に、情報を効率的に共有してコントローラによる制御を容易化することにある。
【課題を解決するための手段】
【０００７】
本発明は、ネットワーク上の情報を一元管理するサーバを有しない情報共有システムであって、複数のネットワーク機器を備え、前記複数のネットワーク機器の各々は、処理部と、記憶部と、通信インタフェースと、を備え、前記複数のネットワーク機器の各々の記憶部に同一の共有情報が記憶されており、複数のコントローラのうち第１のコントローラが前記複数のネットワーク機器のうち第１のネットワーク機器に接続すると、前記第１のネットワーク機器の処理部は、サービスサーバに接続し、かつ、サービスサーバに接続しているソース機器である旨のソース機器情報を共有情報として通信インタフェースを介して他のネットワーク機器に配信し、前記複数のコントローラのうち第２のコントローラが前記複数のネットワーク機器のうち第２のネットワーク機器に接続すると、前記第２のネットワーク機器の処理部は、前記共有情報としてのソース機器情報を記憶部から読み出して前記第２のコントローラからの要求を処理することを特徴とする。
【０００８】
本発明では、第１のネットワーク機器の処理部により、サービスサーバに接続しているソース機器である旨のソース機器情報が共有情報として他のネットワーク機器に配信される。このため、他のネットワーク機器の処理部は、容易にソース機器を検知することができる。そして、ソース機器でない第２のネットワーク機器に対してコントローラが接続され、コントローラから要求を受信した場合に、当該ネットワーク機器の処理部は、ソース機器に対して要求を送信することができる。このように、本発明によれば、効率的に情報（ソース機器情報）を共有することで、コントローラからの要求を効率的に処理できる。
【０００９】
本発明の１つの実施形態では、前記第２のネットワーク機器の処理部は、前記第２のコントローラのアカウント情報を共有情報として他のネットワーク機器に配信し、かつ、前記第２のコントローラからの前記サービスサーバへの接続要求を受信すると、前記共有情報としてのソース機器情報に基づき、前記サービスサーバへの接続要求を前記第１のネットワーク機器に送信し、前記第１のネットワーク機器の処理部は、前記第２のネットワーク機器の処理部から前記サービスサーバへの接続要求を受信すると、前記共有情報としての前記第２コントローラのアカウント情報を用いて前記サービスサーバに接続することを特徴とする。
【００１０】
本実施形態では、第１のネットワーク機器の処理部により、共有情報としての第２コントローラのアカウント情報を用いてサービスサーバに接続される。このため、コントローラは、任意の機器に接続することでサービスサーバに接続することができる。
【００１１】
本発明の他の実施形態では、前記第２のネットワーク機器の処理部は、前記第２のコントローラからの画面要求を受信すると、前記共有情報としてのソース機器情報に基づき、前記画面要求を前記第１のネットワーク機器に送信し、前記第１のネットワーク機器の処理部は、前記第２のネットワーク機器の処理部から前記画面要求を受信すると、前記第１のコントローラに送信している画面情報を前記第２のネットワーク機器に送信することを特徴とする。
【００１２】
本実施形態では、第１のネットワーク機器の処理部により、第１のコントローラに送信している画面情報が第２のネットワーク機器に送信される。このため、コントローラは、他のコントローラに表示される画面を共有することができる。これにより、ユーザは、任意のネットワーク機器に接続したコントローラで、ソース機器に接続したコントローラと同一の画面を視認することが可能となる。
【００１３】
本発明のさらに他の実施形態では、前記複数のネットワーク機器のうちのいずれかの機器の処理部は、記憶部に記憶されている情報を共有情報として通信インタフェースを介して他の機器に配信することを特徴とする。
【００１４】
本実施形態では、複数のネットワーク機器のうちのいずれかの機器の処理部により、記憶部に記憶されている情報が共有情報として他のネットワーク機器に配信される。これにより、複数のネットワーク機器の各々の記憶部に同一の共有情報を記憶することが可能となる。
【発明の効果】
【００１５】
本発明によれば、効率的に情報を共有することで、コントローラからの要求を効率的に処理できる。特に、本発明によれば、コントローラは、任意の機器に接続することでサービスサーバに接続することができ、また、コントローラは、他のコントローラに表示される画面を共有することができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態のシステム構成図である。
【図２】ＵＤＰブロードキャスト機能を用いた機器リスト作成説明図である。
【図３】親機器設定後の説明図である。
【図４】設計図データの配信説明図である。
【図５】共有情報（仮共有情報）の収集説明図である。
【図６】共有情報（仮共有情報）の収集説明図である。
【図７】親以外の機器におけるマージ後の共有情報が正しいか否かを判断する処理動作を示すフローチャートである。
【図８】親機器による共有情報の収集処理を示すフローチャートである。
【図９】共有情報の配信説明図である。
【図１０】サービスサーバへのアクセス説明図（その１）である。
【図１１】サービスサーバへのアクセス説明図（その２）である。
【図１２】画面情報の共有説明図である。
【発明を実施するための形態】
【００１７】
以下、図面に基づき本発明の実施形態について説明する。
【００１８】
図１に、本実施形態におけるネットワークシステムの全体構成図を示す。複数のネットワーク機器１，２，３，４，５，６がネットワーク１０に接続される。図では、合計６個の機器が例示されているが、これに限定されない。各機器は、全て同一構成であってもよく、あるいは互いに異なった構成であってもよい。ネットワーク機器とは、通信回線（ネットワーク１０）を介して相互に接続してネットワークシステムを構成し、データを送受し得る機器を意味し、通信回線は有線、無線を問わない。また、ネットワーク機器の典型例はコンピュータ、パーソナルコンピュータ、タブレット端末、携帯電話等の情報機器であるが、通信回線を介して相互に接続し得るＡＶ機器あるいは音響機器も含まれる。図１では、機器１〜６として、音声を再生する音響機器を例示している。上述のように、各機器は、互いに異なった構成であってもよいが、本実施形態では、同一の構成であるものとして、以下、機器１についてのみその構成を説明する。
【００１９】
機器１は、ＣＰＵ１１（処理部）、メモリ１２（記憶部）、通信インタフェース（Ｉ／Ｆ）１３及び音声信号処理部１４を備える。
【００２０】
メモリ１２は、プログラムメモリ及びワーキングメモリを含む。プログラムメモリには、ＣＰＵで実行されるプログラムが記憶される。ワーキングメモリには、後述する機器リスト等が記憶される。
【００２１】
ＣＰＵ１１は、プログラムメモリに記憶されたプログラムに従い、後述する処理を実行して複数の機器１〜６の中から親機器（以下、単に「親」ともいう。）（ホスト）となるべき機器を特定する処理を実行する。また、親機器を設定した後、複数の機器１〜６でネットワークシステムを構築し、必要な情報を共有するための一連の処理を実行する。
【００２２】
通信Ｉ／Ｆ１３は、各種データ、例えば機器１が保持する機器リスト等をネットワーク１０を介して送受する。なお、ＣＰＵ１１は、通信Ｉ／Ｆ１３を介して、各種データの送受を行うが、説明の簡単のため、以下では、「ＣＰＵ１１は、機器リストを送信する」というように、「通信Ｉ／Ｆ１３を介して」の文言を省略している。
【００２３】
音声信号処理部１４は、入力された音声信号に対し復調、増幅等の所定の処理を施す。機器１がスピーカである場合、音声信号処理部１４は、音声信号を出力するためのドライバ回路を含む。機器１がアンプ及びスピーカである場合、音声信号処理部１４は、復調回路、増幅回路、ドライバ回路を含む。
【００２４】
機器１には、他の機器、例えばＣＤプレーヤやＤＶＤプレーヤ等が接続されていてもよい。
【００２５】
また、ネットワーク１０は、典型的にはＬＡＮ（ローカルエリアネットワーク）であるが、このネットワーク１０は、ＷＡＮ（ワイドエリアネットワーク）に接続され、ＷＡＮ経由で特定のサービスサーバに接続されていてもよい。ネットワーク１０は、有線ネットワークあるいは無線ネットワークのいずれでもよい。
【００２６】
図１において、初期状態では複数の機器１〜６のいずれも親（ホスト）として機能しておらず、親が存在していない。この初期状態では、機器１〜６は、ネットワーク１０に接続されてはいるが、機器１〜６同士は接続されていない。すなわち、機器１〜６によりネットワークシステムが構成されていない状態である。このような状態から、各機器１〜６は、各機器１〜６間でデータを送受することで、自律的に、いずれかの機器を親（ホスト）として設定し、設定した親を中心としたネットワークシステムを構成する。そして、ネットワークシステムを構成する機器１〜６は、情報を共有する。
【００２７】
以下、親機器が設定されていない初期状態から、親機器を自律的に設定する処理について説明する。
【００２８】
＜親機器の設定＞
図２に、各機器１〜６が通信Ｉ／Ｆ１３〜６３によりネットワーク１０に接続された状態を示す。各機器１〜６のＣＰＵ１１〜６１は、各機器１〜６の電源がオンされると、ＵＤＰ（User Datagram Protocol）ブロードキャスト機能を用いてほぼ同一内容の機器リストを取得し、取得した機器リストをそれぞれのメモリ１２〜６２に記憶する。ここで、「ほぼ同一内容」とは、完全に一致する内容であることを要しない趣旨であり、通信状態が不安定でエコーが返らない場合もあり得ることを考慮したものである。
【００２９】
このブロードキャスト機能により、各機器１〜６は、それぞれの共有情報及びスキーム情報とともに、ネットワーク１０に接続されている機器リストを保持することになる。例えば、機器１は、メモリ１２に共有情報１及びスキーム情報を記憶するとともに、機器リスト（機器１，機器２，・・・）を記憶する。また、機器２は、メモリ２２に共有情報２及びスキーム情報を記憶するとともに、機器リスト（機器１，２，・・・）を記憶する。初期状態では、各機器１〜６が保持する共有情報及び機器リストは同一である保証はなく、共有情報１と共有情報２が同一である保証はない（「共有情報」であるものの、初期状態では必ずしも全ての機器１〜６で共有されている保証はないので、この意味で仮共有情報といえる）。ここで、共有情報とは、各機器間で共有される情報である。また、スキーム情報とは、共有情報が正しい形式、書式、数値であるかどうかを判断するためのスキーム（枠組み）の情報である。共有情報とスキーム情報とは、常にセットで送受信される。
【００３０】
なお、ＵＤＰとは、Internet Protocol (IP) ネットワーク上の他のコンピュータへ「データグラム」と呼ばれるメッセージを送るのに使われるプロトコルであり、事前に転送チャネルやデータ経路といった特別な設定をする必要がない利点がある。
【００３１】
各機器１〜６のＣＰＵ１１〜６１は、機器リストを取得すると、メモリ１２〜６２に記憶されている機器リストに基づいて、自機器が機器１〜６の中で親として適当であるか否かを判断する。なお、初期状態では上述したように親は存在していないが、仮に親が存在していた場合、各機器１〜６のＣＰＵ１１〜６１は判断を行わずに既存の親を親とみなす。また、各機器１〜６のＣＰＵ１１〜６１は、判断の結果、自機器が親として適当であると判断したにもかかわらず、エコーを返してきた他の機器も親である場合（親の衝突）、自機器と他の機器のいずれが親として適当であるかを判断し、自機器が親として適当であると判断すれば既に親が存在することを知らせるメッセージを他の機器に送信する。判断の詳細については後述する。
【００３２】
図３に、各機器１〜６のＣＰＵ１１〜６１が、自機器が親として適当であるか否かを判断した結果、機器２のＣＰＵ２１が親として適当であると判断した場合を示す。機器２が親として設定されると、親である機器２のＣＰＵ２１は、メモリ２２に記憶されている機器リストを読み出し、読み出した機器リストをエコーメッセージに添付して他の機器１、３〜６に送信する。親以外の機器１，３〜６のＣＰＵ１１、３１〜６１は、エコーによる探索を中断し、機器２のエコーメッセージに含まれる機器リストを受信し、受信した機器リストをそれぞれのメモリ１２、３２〜６２に記憶する。すなわち、図３に示すように、親である機器２のみがブロードキャストして、保持している機器リストを他の機器１、３〜６に配信する。これにより、機器１〜６の全てが、同一の機器リストを保持することになる。
【００３３】
なお、親である機器２から一定時間エコーがなくなると、親以外の機器１，３〜６のＣＰＵ１１、３１〜６１は、エコー探索を再開する。また、さらに一定時間が経過すると、次の親が再設定される。
【００３４】
＜設計図データの作成及び配信＞
親である機器２のＣＰＵ２１は、図３に示すように、メモリ２２に記憶されている機器リストを他の機器１，３〜６に配信する。ＣＰＵ２１は、これと並行して、メモリ２２に記憶されている（つまり全ての機器１〜６が保持している）機器リストを用いて、ネットワークシステムの設計図データであるネットワーク設計図データ（以下、単に「設計図データ」ともいう。）を作成する。ＣＰＵ２１は、作成した設計図データにおける１つ下の階層（直近の子）の機器に自機器２を接続するとともに、作成した設計図データを送信する。
【００３５】
図４に、ネットワーク設計図データとして、親を頂点として複数の機器１〜６が２分木状に接続される構成を示す。親である機器２が頂点となり、その下に機器１及び機器３が接続される。機器１にはその下に機器４及び機器５が接続され、機器３にはその下に機器６が接続される。設計図データは、このような接続関係を記述したデータ列である。各機器１〜６は、作成された設計図データに従って必要な機器と接続してネットワークシステムを構築する。図４に示すように、本実施形態のネットワークシステムは、親機器と親機器に接続される子機器（以下、単に「子」ともいう。）とを含み、親機器を頂点とする階層構造となっている。
【００３６】
親である機器２のＣＰＵ２１は、設計図データに従って子である機器１及び機器３に自機器をそれぞれ接続し、作成した設計図データを送信する。機器１のＣＰＵ１１は、機器２からの設計図データを受信し、受信した設計図データをメモリ１２に記憶する。ＣＰＵ１１は、この設計図データに従って機器４及び機器５にそれぞれ自機器を接続し、受信した設計図データを送信する。機器４のＣＰＵ４１及び機器５のＣＰＵ５１は、受信した設計図データをそれぞれメモリ４２、５２に記憶する。また、機器３のＣＰＵ３１は、機器２からの設計図データを受信し、受信した設計図データをメモリ３２に記憶する。ＣＰＵ３１は、この設計図データに従って機器６に自機器を接続し、受信した設計図データを送信する。機器６のＣＰＵ６１は、受信した設計図データをメモリ６２に記憶する。機器４〜６のＣＰＵ４１〜６１は、受信した設計図データに従って、自機器がそれぞれネットワークシステムの最下位（末端）であると判断する。
【００３７】
＜共有情報の収集及び配信＞
親である機器が作成した設計図データに従って機器が接続され、ネットワークシステムが構築された後、親である機器２は、他の機器１,３〜６がそれぞれ保持している共有情報（仮共有情報）を収集する。
【００３８】
図５に、共有情報の収集処理を示す。親である機器２のＣＰＵ２１は、他の機器１,３〜６に対して共有情報の収集命令を送信する。具体的には、機器２のＣＰＵ２１は、子である機器１及び機器３に対して収集命令を送信する。機器１のＣＰＵ１１は、当該収集命令を子である機器４及び機器５に送信する。機器３のＣＰＵ３１は、当該収集命令を子である機器６に送信する。
【００３９】
各機器のＣＰＵは、収集命令を受信すると、その命令に従ってメモリに記憶されている（自機器が保持している）共有情報を読み出し、読み出した共有情報を１つ上の階層の機器に送信する。そして、子から共有情報を受信した１つ上の階層の機器のＣＰＵは、その１つ上の階層の機器に受信した共有情報を送信する。この際に、共有情報がメモリに記憶されていれば、ＣＰＵは、メモリに記憶されている共有情報と子から受信した共有情報とをマージ（合成）して１つ上の階層の機器に送信する。
【００４０】
すなわち、機器４のＣＰＵ４１は、メモリ４２に記憶されている共有情報４を機器１に送信する。また、機器５のＣＰＵ５１は、メモリ５２に記憶されている共有情報５を機器１に送信する。機器１のＣＰＵ１１は、共有情報４と共有情報５をマージするとともに、メモリ１２に記憶されている共有情報１もさらにマージして、共有情報１＋共有情報４＋共有情報５として機器２に送信する。また、機器６のＣＰＵ６１は、メモリ６２に記憶されている共有情報６を機器３に送信する。機器３のＣＰＵ３１は、メモリに記憶されている共有情報３と共有情報６をマージし、共有情報３＋共有情報６として機器２に送信する。
【００４１】
ここで、１つ下の階層の機器から送信される共有情報とメモリに記憶されている共有情報とをマージし、マージした共有情報（マージ共有情報）を１つ上の階層の機器に送信する機器のＣＰＵは、共有情報をマージした後、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しいか否か、すなわち、マージ後の共有情報とスキーム情報とが一致しているか否かを判断する。機器のＣＰＵは、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しい、すなわち、マージ後の共有情報とスキーム情報とが一致していると判断した場合、マージ後の共有情報を１つ上の階層の機器に送信する。一方、機器のＣＰＵは、マージ後の共有情報が正しくない、すなわち、マージ後の共有情報とスキーム情報とが一致していないと判断した場合、マージ後の共有情報を破棄する。例えば、機器１のＣＰＵ１１は、共有情報４、共有情報５、共有情報１をマージした後、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しいか否かを判断する。機器１のＣＰＵ１１は、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しいと判断すると、機器２にマージ後の共有情報を送信する。なお、マージ後の共有情報が正しいとは、共有情報のマージに成功したことを意味する。また、マージ後の共有情報が正しくないとは、共有情報のマージに失敗したことを意味する。
【００４２】
また、各機器のＣＰＵは、共有情報とセットでスキーム情報を送信する。例えば、図６に示すように、機器４のＣＰＵ４１は、メモリ４２に記憶されている共有情報４とバージョン１のスキーム情報とを機器１に送信する。機器５のＣＰＵ５１は、共有情報５とバージョン２のスキーム情報とを機器１に送信する。また、機器のＣＰＵは、メモリに記憶されているスキーム情報よりも受信したスキーム情報のバージョンが新しい場合、その新しいバージョンのスキーム情報を１つ上の階層の機器に送信する。例えば、図６に示すように、機器１のＣＰＵ１１は、メモリ１２に記憶されているバージョン１よりも新しいバージョン２のスキーム情報を１つ上の階層の機器２に送信する。
【００４３】
図７は、親以外の機器におけるマージ後の共有情報が正しいか否かを判断する処理動作を示したフローチャートである。機器のＣＰＵは、１つ下の階層の機器から送信される共有情報を受信すると（Ｓ１）、受信した共有情報とメモリに記憶されている共有情報とをマージする（Ｓ２）。次に、ＣＰＵは、マージ後の共有情報とスキーム情報とが一致しているか否かを判断する（Ｓ３）。ＣＰＵは、マージ後の共有情報とスキーム情報とが一致していると判断した場合（Ｓ３：Ｙｅｓ）、マージ後の共有情報及びスキーム情報を１つ上の階層の機器に送信する（Ｓ４）。ＣＰＵは、マージ後の共有情報とスキーム情報とが一致していないと判断した場合（Ｓ３：Ｎｏ）、マージ後の共有情報を破棄する（Ｓ５）。
【００４４】
親である機器２のＣＰＵ２１は、機器１からの共有情報１＋共有情報４＋共有情報５と、機器３からの共有情報３＋共有情報６を受信し、これらをマージするとともに、メモリ２２に記憶されている共有情報２もさらにマージして、共有情報＝共有情報１＋共有情報２＋共有情報３＋共有情報４＋共有情報５＋共有情報６を作成する。ここで、機器２のＣＰＵ２１は、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しいか否か、すなわち、マージ後の共有情報とスキーム情報とが一致しているか否かを判断する。機器２のＣＰＵ２１は、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しい、すなわち、マージ後の共有情報とスキーム情報とが一致していると判断した場合、マージ後の共有情報をメモリ２２に記憶する。従って、機器２のメモリ２２においては、共有情報２から新たな共有情報に更新される。機器２のＣＰＵ２１は、スキーム情報に基づいて、マージ後の共有情報（仮共有情報）が正しくない、すなわち、マージ後の共有情報とスキーム情報とが一致していないと判断した場合、マージ後の共有情報を破棄する。
【００４５】
図８は、親機器による共有情報の収集処理を示すフローチャートである。親機器のＣＰＵは、１つ下の階層の機器に共有情報の収集命令を送信する（Ｓ１１）。この後、ＣＰＵは、１つ下の階層の機器から共有情報及びスキーム情報を受信する（Ｓ１２）。次に、ＣＰＵは、受信したスキーム情報のバージョンが、メモリに記憶されているスキーム情報のバージョンよりも新しいか否かを判断する（Ｓ１３）。ＣＰＵは、受信したスキーム情報のバージョンが、メモリに記憶されているスキーム情報のバージョンよりも新しいと判断した場合（Ｓ１３：Ｙｅｓ）、受信したスキーム情報をメモリに記憶する（Ｓ１４）。ＣＰＵは、受信したスキーム情報のバージョンが、メモリに記憶されているスキーム情報のバージョンよりも新しくないと判断した場合（Ｓ１３：Ｎｏ）、又は、Ｓ１４の処理の後、受信した共有情報とメモリに記憶されている共有情報とをマージする（Ｓ１５）。次に、ＣＰＵは、マージ後の共有情報とスキーム情報とが一致しているか否かを判断する（Ｓ１６）。ＣＰＵは、マージ後の共有情報とスキーム情報とが一致していないと判断した場合（Ｓ１６：Ｎｏ）、マージ後の共有情報を破棄する（Ｓ１７）。このとき、ＣＰＵは、マージ後の共有情報が正しくない、すなわち、マージに失敗したことを１つ下の階層の機器に通知する。１つ下の階層の機器のＣＰＵは、再度、受信した共有情報とメモリに記憶されている共有情報とのマージを行う。そして、１つ下の階層の機器のＣＰＵは、マージ後の共有情報が正しければ、再度、１つ上の階層の機器にマージ後の共有情報を送信する。一方、１つ下の階層の機器のＣＰＵは、マージ後の共有情報が正しくなければ、１つ下の階層の機器にマージ後の共有情報が正しくない、すなわち、マージに失敗したことを１つ下の階層の機器に通知する。このようにして、各機器において、共有情報のマージがやり直され、最終的には、親機器にマージされた共有情報が送信される。
【００４６】
親機器のＣＰＵは、Ｓ１７の処理の後、Ｓ１２〜１６の処理を再度行う。また、ＣＰＵは、マージ後の共有情報とスキーム情報とが一致していると判断した場合（Ｓ１６：Ｙｅｓ）、処理を終了する。
【００４７】
各機器１，３〜６がそれぞれ自己の保持する共有情報を個別に親である機器２に送信するのでは、通信トラフィックが増大するだけでなく、親である機器２のＣＰＵ２１の負担が増大する。特に、各機器１〜６がコンピュータではなくアンプやスピーカ等の音響機器であるため、搭載されているＣＰＵ１１〜６１の処理能力には制限があり、大量のデータを一度に処理することは困難である。本実施形態のように、ネットワークシステムを構成する各機器のＣＰＵが、子である機器からの共有情報をマージし、さらに自機器が保持する共有情報をマージした上で、まとめて機器２に送信することで、機器２のＣＰＵは、２つの機器１，３から送信された共有情報を受信して自己の共有情報とマージするだけでよく、効率的な収集処理が可能となる。
【００４８】
親である機器２のＣＰＵ２１は、共有情報（全ての機器に共通の真の共有情報）を作成してメモリ２２に記憶した後、メモリ２２から共有情報（ネットワーク共有情報）及びスキーム情報を読み出して他の機器１,３〜６に送信する。本実施形態では、機器２のＣＰＵ２１は、１つ下の階層の機器１及び機器３にのみ、共有情報及びスキーム情報を送信する。
【００４９】
図９に、共有情報（ネットワーク共有情報）の配信処理を示す。機器２のＣＰＵ２１は、作成した共有情報及び最も新しいバージョンのスキーム情報を子である機器１及び機器３に送信する。機器１のＣＰＵ１１は、受信した共有情報及びスキーム情報をメモリ１２に記憶するとともに、子である機器４及び機器５に送信する。機器４のＣＰＵ４１及び機器５のＣＰＵ５１は、受信した共有情報及びスキーム情報をそれぞれメモリ４２、５２に記憶する。また、機器３のＣＰＵ３１は、受信した共有情報及びスキーム情報をメモリ３２に記憶するとともに、子である機器６に送信する。機器６のＣＰＵ６１は、受信した共有情報及びスキーム情報をメモリ６２に記憶する。これにより、全ての機器１〜６は、同一の共有情報（これを共有情報７とする）及びスキーム情報を保持することになる。
【００５０】
＜ソース機器情報及びアカウント情報の共有＞
図９に示すように、全ての機器１〜６は、それぞれのメモリ１１〜６１に同一の共有情報を有する。すなわち、ネットワーク１０に共有情報を記憶する共有データベースが接続され、各機器１〜６がそれぞれ共有データベースにアクセスし得る構成と等価な構成となる。以下では、各機器１〜６がそれぞれ保有するメモリ１１〜６１に代えて単一の共有データベースがネットワーク１０に接続されているものとして説明する。また、説明を簡易化するため、機器１〜６に代えて機器Ａ,Ｂ,Ｃがネットワーク１０に接続されているものとする。
【００５１】
図１０に、機器Ａ,Ｂ,Ｃのうち、機器Ａがサービスサーバ１００にアクセスしてサービスサーバ１００からのデータをダウンロードするソース機器として機能する場合を示す。この場合、機器Ａ,Ｂ,Ｃのうちのいずれかの機器が上述した処理により親機器として設定されているが、必ずしも親機器がソース機器として機能する必要はなく、子機器がソース機器として機能してもよい。また、図ではサービスサーバ１００としてインターネットラジオサービスＡを示しているが任意のサービスでよい。
【００５２】
ユーザは、コントローラＡを用いてソース機器である機器Ａに接続し、機器Ａに対してコントローラＡのアカウント情報を送信する。コントローラＡのメモリには、予めサービスサーバ１００のサービスにアクセスするためのアカウント情報が記憶されており、コントローラＡは、メモリからアカウント情報を読み出してソース機器Ａに送信する。コントローラＡのメモリには、複数のサービスのそれぞれにアクセスするための複数のアカウント情報が記憶されていてもよい。例えば、以下の如くである。
サービスＡ
アカウント：ａａａ
パスワード：ＡＡＡ
アカウント要否：ＹＥＳ
サービスＢ
アカウント：ｂｂｂ
パスワード：ＢＢＢ
アカウント要否：ＹＥＳ
【００５３】
コントローラＡからアカウント情報を受信したソース機器ＡのＣＰＵは、受信したコントローラＡのアカウント情報を共有データベースに記憶する。なお、実際には、共有データベースは各々の機器Ａ,Ｂ,Ｃが有するメモリである。機器Ａが親機器であれば、機器ＡのＣＰＵは、このアカウント情報を新たな共有情報としてメモリに記憶するとともに、他の機器Ｂ，Ｃに配信する。他の機器Ｂ，ＣのＣＰＵは、機器Ａから送信されたアカウント情報をそれぞれのメモリに記憶する。機器Ａが子機器であれば、機器ＡのＣＰＵは、アカウント情報を親機器に送信し、親機器からアカウント情報が他の機器に配信される。
【００５４】
また、ソース機器ＡのＣＰＵは、自機器がサービスサーバ１００に接続している旨の情報を示すソース機器情報を共有データベースに記憶する。ソース機器情報は、例えば機器ＡのＩＤを含み、サービスＡのＩＤを含んでもよい。このソース機器情報は、他の機器（機器Ｂあるいは機器Ｃ）が、サービスサーバ１００に接続するためのソース機器がどの機器であるかを特定するために用いられる。
【００５５】
共有データベースにコントローラＡのアカウント情報及びソース機器情報を記憶（すなわち、機器Ａ,Ｂ,Ｃのそれぞれのメモリに共有情報としてアカウント情報及びソース機器情報を記憶）した後、ユーザがコントローラＡを操作してサービスＡ（図ではインターネットラジオサービスＡ）を選択すると、選択情報がコントローラＡからソース機器Ａに送信される。ソース機器ＡのＣＰＵは、選択情報を受信すると、共有データベースからコントローラＡのアカウント情報のうち、サービスＡに対応するアカウント情報を読み出し、読み出したアカウント情報を用いてサービスサーバ１００にアクセスする（サインイン）。具体的には、ソース機器ＡのＣＰＵは、メモリに記憶された共有情報としてのアカウント情報のうち、サービスＡに対応するアカウント情報を読み出してサービスサーバ１００にアクセスする。ソース機器ＡのＣＰＵは、サービスサーバ１００にアクセスすると、所望のデータ、例えばインターネットラジオの音声データをダウンロードして、音声信号処理部により再生する。また、機器Ａ,Ｂ,Ｃはネットワーク１０で接続されているため、ソース機器ＡのＣＰＵは、他の機器Ｂあるいは機器Ｃにもダウンロードした音声データを配信し、機器Ｂあるいは機器Ｃで再生する。
【００５６】
従って、例えば機器Ａ、Ｂ，Ｃがそれぞれ別の部屋に配置されている場合でも、ユーザはコントローラＡを用いてソース機器Ａを制御するだけで、全ての部屋においてインターネットラジオサービスＡの音声を楽しむことができる。
【００５７】
図１１に、コントローラＡがソース機器Ａに接続してサービスＡを選択している間に、別のコントローラＢが機器Ｂに接続した場合を示す。この場合も、コントローラＡがソース機器Ａに接続した場合と同様に、コントローラＢのアカウント情報が共有データベースに記憶される。コントローラＢのメモリにはアカウント情報が記憶されており、コントローラＢはアカウント情報を機器Ｂに送信する。コントローラＢのアカウント情報は、例えば以下の如くである。
サービスＡ
アカウント：ｄｄｄ
パスワード：ＤＤＤ
アカウント要否：ＹＥＳ
サービスＢ
アカウント：ｅｅｅ
パスワード：ＥＥＥ
アカウント要否：ＹＥＳ
【００５８】
コントローラＢのアカウント情報を受信した機器ＢのＣＰＵは、共有データベースにこのアカウント情報を記憶する。実際には、共有データベースは各々の機器Ａ,Ｂ,Ｃが有するメモリである。機器Ｂが親機器であれば、機器ＢのＣＰＵは、このアカウント情報を新たな共有情報としてメモリに記憶するとともに、他の機器Ａ，Ｃに配信する。他の機器Ａ，ＣのＣＰＵは、機器Ｂから送信されたアカウント情報をそれぞれのメモリに記憶する。機器Ｂが子機器であれば、機器ＢのＣＰＵは、アカウント情報を親機器に送信し、親機器からアカウント情報が他の機器に配信される。従って、共有データベースには、コントローラＡのアカウント情報に加えて、コントローラＢのアカウント情報も記憶されることになる。
【００５９】
その後、ユーザ（コントローラＡを操作するユーザとは別のユーザ）がコントローラＢを操作してサービスＡを選択すると、選択情報がコントローラＢから機器Ｂに送信される。機器ＢのＣＰＵは、選択情報を受信すると、共有情報を参照してサービスＡのソース機器が機器Ａであることを検知して、ソース機器Ａに対しサービスＡが選択されたことを通知する。機器Ｂからの通知を受信したソース機器ＡのＣＰＵは、この通知に応じて共有データベースからコントローラＢのアカウント情報を読み出し、このアカウント情報を用いてサービスサーバ１００にアクセスする。この場合、コントローラＡのアカウント情報を用いてサービスサーバ１００にアクセス中である場合には、ソース機器ＡのＣＰＵは、必要に応じてコントローラＡのアカウント情報を用いたアクセスを中断して（サインアウト）、コントローラＢのアカウント情報を用いてアクセスする(サインイン)。ソース機器ＡのＣＰＵは、サービスサーバ１００にアクセスすると、インターネットラジオの音声データをダウンロードして音声信号処理部により再生する。また、ソース機器ＡのＣＰＵは通知を受けた機器Ｂにもダウンロードした音声データを配信し、機器Ｂで再生する。
【００６０】
本実施形態において、コントローラＢが接続した機器Ｂが新たにソース機器としてサービスサーバ１００にアクセスすることも考えられるが、機器Ｂの制約上、サービスサーバ１００にアクセスできない場合もあり得る。また、仮に機器Ｂがサービスサーバ１００にアクセスできたとしても、既にソース機器Ａがサービスサーバ１００にアクセスしているにもかかわらずこれとは別個にアクセスするのは非効率である。そこで、コントローラＢから機器Ｂに対してサービスＡの選択要求がなされた場合、既にサービスＡをダウンロードしているソース機器Ａが存在しているのであればソース機器Ａを活用することが好適である。しかし、コントローラＢは直接的には機器Ｂに接続しているため、ソース機器ＡがコントローラＢのアカウント情報を取得するのは困難である。
【００６１】
これに対し、本実施形態では、機器ＢのＣＰＵがコントローラＢのアカウント情報を共有データベースに記憶する。このため、ソース機器ＡのＣＰＵは、共有データベースにアクセスするだけでコントローラＢのアカウント情報を容易に取得することができる。いわば、機器Ａは、コントローラＢが接続した機器Ｂのプロキシ（代理）としてサービスサーバ１００にアクセスすることができる。
【００６２】
本実施形態では、コントローラＢが接続していない機器Ａがソース機器Ａであっても、ソース機器Ａは容易に、すなわち自機器のメモリに記憶されている共有情報としてのコントローラＢのアカウント情報を取得してサービスサーバ１００にアクセスできる点に留意されたい。
【００６３】
また、本実施形態では、ソース機器ＡのＣＰＵは、コントローラＡのアカウント情報を用いてサービスサーバ１００にアクセスしている間に、コントローラＢのアカウント情報に自動的に切り替えてサービスサーバ１００にアクセスする。このため、ユーザは、特にアカウント情報の切替を意識することなく、複数のコントローラを用いてサービスサーバ１００にアクセスできる。ソース機器ＡのＣＰＵは、コントローラＡのアカウント情報からコントローラＢのアカウント情報に切り替えた場合、共有データベースにコントローラＡのアカウント情報をそのまま残してもよいが、セキュリティの観点からコントローラＡのアカウント情報を削除してもよい。すなわち、サービスサーバ１００へのアクセスが中断した場合、そのアクセスに用いたアカウント情報は、共有データベースから削除されてもよい。
【００６４】
＜画面情報の共有＞
次に、画面情報の共有について説明する。
【００６５】
図１２に、コントローラＡがソース機器Ａに接続している場合を示す。コントローラＡは、機器Ａをソース機器Ａとして設定してサービスＡを選択する。ソース機器ＡのＣＰＵは、上述したようにコントローラＡのアカウント情報を用いてサービスサーバ１００のサービスＡにアクセスするとともに、コントローラＡのアカウント情報を共有データベースに記憶する。また、ソース機器ＡのＣＰＵは、アカウント情報とともに、サービスＡについて自機器がソース機器である旨のソース機器情報を共有データベースに記憶する。この場合、ネットワークシステムにおける複数の機器をグループ毎に分けている際には、グループと関連付けてソース機器Ａを共有データベースに記憶してもよい。例えば、機器Ａ及び機器Ｂが１つのグループ（これをグループ１とする）を構成し、機器Ｃが他のグループ（これをグループ２とする）を構成する場合、ソース機器情報は、
グループ１
ソース機器ＩＤ：機器ＡのＩＤ
参加機器：機器Ａ、機器Ｂ
サービスＩＤ：Ａ
再生状態：ＳＴＯＰ
等となる。ソース機器ＡのＣＰＵは、さらに、接続しているコントローラＡに対してサービスＡについての画面情報を送信する。コントローラＡは、この画面情報を受信して画面上に表示する。
【００６６】
他方、コントローラＡがソース機器Ａに接続し、コントローラＡに画面情報が表示されている間に、コントローラＢが機器Ｂに接続したものとする。コントローラＢは、機器Ｂに対してソース機器データを要求すると、機器ＢのＣＰＵは、共有データベースにアクセスして機器Ｂの属するグループにおけるソース機器が存在するか否かを判断する。機器ＢのＣＰＵは、ソース機器情報が存在すると判断した場合には、そのソース機器（この場合にはソース機器Ａ）のデータを読み出してコントローラＢに送信する。具体的には、機器ＢのＣＰＵは、メモリに共有情報として保持されているソース機器Ａのデータを読み出してコントローラＢに送信する。コントローラＢは、機器Ｂから送信されたデータを受信することで、同じグループにおけるソース機器が機器Ａであることを認識できる。
【００６７】
ユーザがコントローラＢを操作してサービスＡの画面情報を要求すると、コントローラＢは、画面要求メッセージとともに、ソース機器である機器ＡのＩＤを付加して機器Ｂに送信する。機器ＢのＣＰＵは、このメッセージを受信すると、メッセージに付加されている機器ＡのＩＤに基づいて機器Ａに対して画面情報を要求する。機器ＡのＣＰＵは、機器Ｂからの画面情報要求に対してコントローラＡに対して送信している画面情報と同一の画面情報を機器Ｂに対して返信する。機器ＢのＣＰＵは、機器Ａからの画面情報をコントローラＢに返信する。コントローラＢは、機器Ｂからの画面情報を受信して画面上に表示する。
【００６８】
このように、ソース機器が機器Ａであること示すソース機器情報が共有データベースに記憶されることで、コントローラＢがソース機器である機器Ａとは別の機器Ｂに接続しても、機器ＢのＣＰＵが、ソース機器情報に基づいて機器Ａに画面情報を要求することで、コントローラＡと同一の画面情報をコントローラＢの画面に表示することができ、利便性が向上する。また、画面情報を共有データベース、すなわち、機器のメモリに記憶しないため、メモリの記憶容量が削減できる。特に、機器は、音響機器であるから、メモリの容量に制限があるため、メモリの記憶容量が削減できる効果が大きい。
【００６９】
以上のように、機器Ａ,Ｂ,Ｃのうち、サービスサーバ１００に接続している機器を示すソース機器情報を共有データベースに記憶しておくことで、他の機器のＣＰＵは、容易にソース機器を検知することができる。そして、ソース機器でない機器に対してコントローラが接続され、コントローラから要求を受信した場合に、当該機器のＣＰＵは、ソース機器に対して要求を送信することができる。また、ソース機器情報のみならず、コントローラのアカウント情報を共有情報として記憶しておくことで、ソース機器のＣＰＵは、このアカウント情報を用いて容易にサービスサーバ１００に接続することが可能となる。さらに、当該機器に接続したコントローラでも、ソース機器に接続したコントローラと同一の画面をユーザは視認することが可能となる。
【００７０】
以上、本発明の実施形態について説明したが、本発明はこれに限定されず種々の変更が可能である。
【００７１】
例えば、本実施形態では、機器リストを用いていずれかの機器を親機器、それ以外を子機器に設定しているが、他の方法によって親機器を設定してもよい。要するに、サーバが存在していないシステムにおいていずれかの方法により親機器を設定し、この親機器が情報を他の機器に配信することで各機器が各々のメモリに同一の共有情報を記憶すればよい。
【００７２】
また、本実施形態では、図１０及び図１１において、ソース機器ＡのＣＰＵは、コントローラＡのアカウント情報を共有データベースに記憶している。このアカウント情報はソース機器Ａがサービスサーバ１００にアクセスする場合に用いる他、他の機器が別のサービスサーバに接続するソース機器となった場合に、コントローラＡからの要求に応じて別のサービスサーバに接続する場合にも利用することができる。例えば、機器Ｂがソース機器となった場合、ソース機器ＢのＣＰＵは共有データベースに記憶されているコントローラＡのアカウント情報を用いてサービスサーバに接続できる。
【００７３】
また、図１１において、ソース機器ＡのＣＰＵがコントローラＡのアカウント情報を用いたサービスサーバ１００に対するサインアウトを行う際に、直ちにコントローラＡのアカウント情報を共有データベースから削除するのではなく、一定時間経過後に削除してもよい。例えば、一定時間経過して再度のコントローラＡからの接続要求がない場合に、ソース機器ＡのＣＰＵは、コントローラＡのアカウント情報を削除してもよい。勿論、ソース機器ＡのＣＰＵがコントローラＡのアカウント情報を共有データベースに記憶する際に、コントローラＡに対してアカウント情報の登録を許可するか否かを問い合わせ、ユーザがコントローラＡを操作して許可した場合のみアカウント情報を共有データベースに記憶してもよい。
【００７４】
また、図１２において、ソース機器ＡのＣＰＵは、機器Ｂからの画面要求に応じて画面情報を機器Ｂに送信している。この場合においても、ソース機器ＡのＣＰＵは、コントローラＡに対して画面情報の送信の可否を問い合わせ、ユーザがコントローラＡを操作した許可した場合のみ画面情報を機器Ｂに送信し、機器ＢはコントローラＢに対して送信してもよい。
【００７５】
また、画面情報には、コントローラＡの画面に表示されている情報のみならず、画面を表示するために必要な各種パラメータを含めてもよい。各種パラメータにはユーザがコントローラＡを操作して設定したパラメータを含めてもよい。
【００７６】
本実施形態におけるコントローラは、機器に有線あるいは無線で接続して機器に対してメッセージあるいはコマンドを送信し得る任意の情報端末を用いることができ、音響機器のリモコンの他、タブレット端末やスマートフォン等を用いてもよい。
【符号の説明】
【００７７】
１〜６  機器、１０  ネットワーク、１１〜６１  ＣＰＵ（処理部）、１２〜６２  メモリ（記憶部）、１３〜６３  通信インタフェース、１４〜６４  音声信号処理部、１００  サービスサーバ。
【図１】
0005880526.tif 000002
【図２】
0005880526.tif 000003
【図３】
0005880526.tif 000004
【図４】
0005880526.tif 000005
【図５】
0005880526.tif 000006
【図６】
0005880526.tif 000007
【図７】
0005880526.tif 000008
【図８】
0005880526.tif 000009
【図９】
0005880526.tif 000010
【図１０】
0005880526.tif 000011
【図１１】
0005880526.tif 000012
【図１２】
0005880526.tif 000013