(57)【特許請求の範囲】
【請求項１】
第１のユーザが利用している第１のクライアント装置と前記第１のユーザが利用している第２のクライアント装置とを登録する登録手段と、
送信するメッセージが他のメッセージと関連するかを前記送信するメッセージの内容に基づいて判定する判定手段と、
前記第１のユーザを宛先とするメッセージを前記第１のクライアント装置及び前記第２のクライアント装置のうちいずれのクライアント装置に送信するかを決定するために用いる優先度を設定する設定手段と、
他のメッセージと関連し前記第１のユーザを宛先とする第１のメッセージの送信後に前記第１のユーザを宛先として送信する第２のメッセージが前記第１のメッセージと関連しないと前記判定手段が判定した場合、前記優先度に基づいて前記第１のクライアント装置及び前記第２のクライアント装置のうちから前記第２のメッセージを送信するクライアント装置を決定し、前記第２のメッセージが前記第１のメッセージに関連すると前記判定手段が判定した場合、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記第１のメッセージが送信されたクライアント装置を前記第２のメッセージの送信先として決定する決定手段と、
前記決定手段が決定したクライアント装置に前記第２のメッセージを送信する送信手段と
を有することを特徴とする送信装置。
【請求項２】
前記第２のメッセージが前記第１のメッセージと関連すると前記判定手段が判定した場合であって前記第１のメッセージが送信されたクライアント装置がメッセージを受信できない状態である場合には、前記第２のメッセージの送信を行わず、前記第２のメッセージの送信元に前記第２のメッセージが送信できなかったことを示すエラーメッセージを送信することを特徴とする請求項１に記載の送信装置。
【請求項３】
前記送信手段は、前記第２のメッセージが前記第１のメッセージに関連しない場合、前記第２のメッセージを前記第１のクライアント装置よりも優先度が高い前記第２のクライアント装置に送信することを特徴とする請求項１に記載の送信装置。
【請求項４】
前記送信手段が前記第１のクライアント装置又は前記第２のクライアント装置に送信するメッセージを、第３のクライアント装置から受信する受信手段と、
前記第１のユーザを宛先とする前記第１のメッセージを送信した前記第１のクライアント装置を示すデータを記憶する記憶手段とを有し、
前記送信手段は、前記第２のメッセージに付与された識別子と前記第１のメッセージに付与された識別子とが対応すると前記判定手段が判定した場合、前記設定手段が設定した優先度にかかわらず、前記記憶手段に記憶された前記データに基づいて、前記第１のユーザを宛先とする前記第１のメッセージを送信した前記第１のクライアント装置に前記第２のメッセージを送信し、
前記第１のメッセージに付与された識別子に対応する識別子が付与され前記第１のユーザを宛先とする前記第２のメッセージを前記受信手段が所定の閾値以上の時間受信しない場合、前記記憶手段は、前記第１のユーザを宛先とするメッセージを送信した前記第１のクライアント装置を示すデータを削除する
ことを特徴とする請求項１に記載の送信装置。
【請求項５】
前記判定手段が他のメッセージと関連すると判定したメッセージに付与された識別子を記憶する記憶手段を有し、
前記判定手段は、送信すべきメッセージに付与された識別子に対応する識別子が前記記憶手段に記憶されているか判定し、
前記送信手段は、前記送信すべきメッセージが前記他のメッセージと関連すると前記判定手段が判定した場合であって前記送信すべきメッセージに付与された識別子に対応する識別子が前記記憶手段に記憶されている場合には、前記設定手段が設定した優先度にかかわらず、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記他のメッセージが送信されたクライアント装置に前記送信すべきメッセージを送信し、前記送信すべきメッセージが前記他のメッセージと関連すると前記判定手段が判定した場合であって前記送信すべきメッセージに付与された識別子に対応する識別子が前記記憶手段に記憶されていない場合には、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記設定手段が設定した優先度に応じて決定されるクライアント装置に前記送信すべきメッセージを送信することを特徴とする請求項１に記載の送信装置。
【請求項６】
前記送信手段は、前記第２のクライアント装置よりも高い前記優先度が設定された前記第１のクライアント装置に前記第１のメッセージを送信し、
前記設定手段は、前記第１のメッセージが前記第１のクライアント装置に受信された後に前記第１のクライアント装置よりも前記第２のクライアント装置の優先度が高くなるように前記優先度を更新し、
前記決定手段は、前記第１のメッセージと前記第２のメッセージとが関連すると前記判定手段が判定した場合であって、前記優先度の更新後に前記第２のメッセージを送信する場合、更新後の前記優先度にかかわらず、前記第１のメッセージが送信された前記第１のクライアント装置に前記第２のメッセージを送信することを決定することを特徴とする請求項１に記載の送信装置。
【請求項７】
第１のユーザが利用している第１のクライアント装置と前記第１のユーザが利用している第２のクライアント装置とを登録する登録手段と、
送信するメッセージが他のメッセージと関連するかを前記送信するメッセージの内容に基づいて判定する判定手段と、
前記第１のユーザを宛先とするメッセージを前記第１のクライアント装置及び前記第２のクライアント装置のうちいずれのクライアント装置に送信するかを決定するために用いる優先度を設定する設定手段と、
他のメッセージと関連し前記第１のユーザを宛先とする第１のメッセージの送信後に前記第１のユーザを宛先として送信する第２のメッセージが前記第１のメッセージと関連しないと前記判定手段が判定した場合、前記優先度に基づいて前記第１のクライアント装置及び前記第２のクライアント装置のうちから前記第２のメッセージを送信するクライアント装置を決定し、前記第２のメッセージが前記第１のメッセージに関連すると前記判定手段が判定した場合、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記第１のメッセージが送信されたクライアント装置を前記第２のメッセージの送信先として決定する決定手段と、
前記決定手段が決定したクライアント装置に前記第２のメッセージを送信する送信手段と
を有することを特徴とする送信システム。
【請求項８】
前記送信手段は、前記第２のメッセージが前記第１のメッセージに関連しない場合、前記第２のメッセージを前記第１のクライアント装置よりも優先度が高い前記第２のクライアント装置に送信することを特徴とする請求項７に記載の送信システム。
【請求項９】
第１のユーザが利用している第１のクライアント装置と前記第１のユーザが利用している第２のクライアント装置とを登録する登録ステップと、
送信するメッセージが他のメッセージと関連するかを前記送信するメッセージの内容に基づいて判定する判定ステップと、
前記第１のユーザを宛先とするメッセージを前記第１のクライアント装置及び前記第２のクライアント装置のうちいずれのクライアント装置に送信するかを決定するために用いる優先度を設定する設定ステップと、
他のメッセージと関連し前記第１のユーザを宛先とする第１のメッセージの送信後に前記第１のユーザを宛先として送信する第２のメッセージが前記第１のメッセージと関連しないと判定した場合、前記優先度に基づいて前記第１のクライアント装置及び前記第２のクライアント装置のうちから前記第２のメッセージを送信するクライアント装置を決定し、前記第２のメッセージが前記第１のメッセージに関連すると判定した場合、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記第１のメッセージが送信されたクライアント装置を前記第２のメッセージの送信先として決定する決定ステップと、
前記決定ステップにおいて決定したクライアント装置に前記第２のメッセージを送信する送信ステップと
を有することを特徴とする送信方法。
【請求項１０】
前記第２のメッセージが前記第１のメッセージと関連すると判定した場合であって前記第１のメッセージが送信されたクライアント装置がメッセージを受信できない状態である場合には、前記第２のメッセージの送信を行わず、前記第２のメッセージの送信元に前記第２のメッセージが送信できなかったことを示すエラーメッセージを送信する第３の送信ステップを有することを特徴とする請求項９に記載の送信方法。
【請求項１１】
前記送信ステップにおいて、前記第２のメッセージが前記第１のメッセージに関連しない場合、前記第２のメッセージを前記第１のクライアント装置よりも優先度が高い前記第２のクライアント装置に送信することを特徴とする請求項９に記載の送信方法。
【請求項１２】
前記第１のクライアント装置又は前記第２のクライアント装置に送信するメッセージを、第３のクライアント装置から受信する受信ステップと、
前記第１のユーザを宛先とする前記第１のメッセージを送信した前記第１のクライアント装置を示すデータを記憶手段に記憶する記憶ステップと、
前記第１のメッセージに付与された識別子に対応する識別子が付与され前記第１のユーザを宛先とするメッセージを前記受信ステップにおいて所定の閾値以上の時間受信しない場合、前記第１のユーザを宛先とするメッセージを送信した前記第１のクライアント装置を示すデータを前記記憶手段から削除する削除ステップとを有することを特徴とする請求項９に記載の送信方法。
【請求項１３】
コンピュータに、
第１のユーザが利用している第１のクライアント装置と前記第１のユーザが利用している第２のクライアント装置とを登録する登録手順と、
送信するメッセージが他のメッセージと関連するかを前記送信するメッセージの内容に基づいて判定する判定手順と、
前記第１のユーザを宛先とするメッセージを前記第１のクライアント装置及び前記第２のクライアント装置のうちいずれのクライアント装置に送信するかを決定するために用いる優先度を設定する設定手順と、
他のメッセージと関連し前記第１のユーザを宛先とする第１のメッセージの送信後に前記第１のユーザを宛先として送信する第２のメッセージが前記第１のメッセージと関連しないと判定した場合、前記優先度に基づいて前記第１のクライアント装置及び前記第２のクライアント装置のうちから前記第２のメッセージを送信するクライアント装置を決定し、前記第２のメッセージが前記第１のメッセージに関連すると判定した場合、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記第１のメッセージが送信されたクライアント装置を前記第２のメッセージの送信先として決定する決定手順と、
前記決定手順において決定したクライアント装置に前記第２のメッセージを送信する送信手順と
を実行させるためのプログラム。
【請求項１４】
前記コンピュータに、
前記第２のメッセージが前記第１のメッセージと関連すると判定した場合であって前記第１のメッセージが送信されたクライアント装置がメッセージを受信できない状態である場合には、前記第２のメッセージの送信を行わず、前記第２のメッセージの送信元に前記第２のメッセージが送信できなかったことを示すエラーメッセージを送信する第３の送信手順を実行させるための請求項１３に記載のプログラム。
【請求項１５】
前記コンピュータに、
前記送信手順において、前記第２のメッセージが前記第１のメッセージに関連しない場合、前記第２のメッセージを前記第１のクライアント装置よりも優先度が高い前記第２のクライアント装置に送信する処理を実行させるための請求項１３に記載のプログラム。
【請求項１６】
前記コンピュータに、
前記第１のクライアント装置又は前記第２のクライアント装置に送信するメッセージを第３のクライアント装置から受信する受信手順と、
前記第１のユーザを宛先とする前記第１のメッセージを送信した前記第１のクライアント装置を示すデータを記憶手段に記憶する記憶手順と、
前記第１のメッセージに付与された識別子に対応する識別子が付与され前記第１のユーザを宛先とする前記第２のメッセージを前記受信手順において所定の閾値以上の時間受信しない場合、前記第１のユーザを宛先とするメッセージを送信した前記第１のクライアント装置を示すデータを前記記憶手段から削除する削除手順とを実行させるための請求項１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージの転送装置、メッセージ転送システム、メッセージ転送方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、複数の電子機器をネットワークを介して接続してデータの送受信を行うことが一般的になった。また、一人のユーザが同時に複数台の電子機器をネットワークに接続して利用する場面も多くなった。
【０００３】
一人のユーザが複数のクライアントを利用する場合、当該ユーザ宛てのメッセージをどのクライアントに転送するかを選択するための技術として、特許文献１が公開されている。
【０００４】
特許文献１に記載のシステムでは、クライアントの優先度、クライアントの着信の可否を示すプレゼンス、およびクライアントにおけるメディア（例えば、テキスト、音声、ビデオ等）の使用状態をサーバに記憶させる。サーバが有するこれら優先度等の情報は、クライアントの利用状況等に応じて、逐次更新される。
【０００５】
サーバは、複数のクライアントを利用するユーザ宛てのメッセージを受信すると、当該ユーザが利用する全てのクライアントを対象に、優先度等を調査する。サーバは、プレゼンスが「着信可能」であり、かつ、保有する全てのメディアが未使用状態であるクライアントの中で優先度が最も高いクライアントを転送先として選択する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−１５３３５２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来のメッセージシステムにおいて、複数のクライアントを利用するユーザ宛てに、第１のメッセージに続いて、第２のメッセージが送信された場合、次のような挙動となる。
【０００８】
サーバは、第１のメッセージを受信した時点での優先度等の情報により、第１のメッセージを転送するクライアントを選択する。同様にサーバは、第２のメッセージを受信した時点での優先度等の情報により、第２のメッセージを転送するクライアントを選択する。
【０００９】
従って、従来の技術では、サーバが第１のメッセージを受信してから第２のメッセージを受信するまでの間に、転送先を選択するために使用する優先度等の情報が更新されると、第１のメッセージと第２のメッセージは異なるクライアントに転送されることがある。
【００１０】
しかしながら、第２のメッセージが、第１のメッセージと関連する内容である場合、２つのメッセージが異なるクライアントに転送されると不都合となることがある。
【００１１】
例えば第１のユーザが複数のデジタルカメラを利用している場合に、第２のユーザがネットワークを介して上記の複数のデジタルカメラのうちの１台を遠隔操作して撮影を実行し、当該デジタルカメラが撮影した撮像画像を第１のユーザ宛てに送信するように指示したいとする。このような場合、第２のユーザはクライアント端末を用いて、第１のメッセージとして「撮影の実行指示」を示すデータを送信し、第２のメッセージとして「画像の送信指示」を示すデータを送信する。
【００１２】
ここで、サーバが第１のメッセージを受信してから第２のメッセージを受信するまでの間に、メッセージの転送先を選択するために使用する優先度等の情報が更新された場合、「撮影の実行指示」と「画像の送信指示」が異なるクライアントに送信される。
【００１３】
しかし、「撮影の実行指示」と「画像の送信指示」が異なるクライアントに送信されてしまうと、第２のユーザは目的の操作を達成することができなくなってしまう。
【００１４】
ゆえに、第１のメッセージの受信と第２のメッセージの受信との間に、クライアントを選択するための優先度等が変更された場合にであっても、第２のメッセージは、第１のメッセージを受信したクライアントに転送される必要がある。
【００１５】
本発明では、上述の課題を鑑み、所望の目的を実現するために用いられる複数個のメッセージを、優先度等の変化にかかわらず同一のクライアントに転送することを可能とすることを目的とする。
【課題を解決するための手段】
【００１６】
前述の課題を解決するために、本発明は、第１のユーザが利用している第１のクライアント装置と前記第１のユーザが利用している第２のクライアント装置とを登録する登録手段と、送信するメッセージが他のメッセージと関連するかを前記送信するメッセージの内容に基づいて判定する判定手段と、前記第１のユーザを宛先とするメッセージを前記第１のクライアント装置及び前記第２のクライアント装置のうちいずれのクライアント装置に送信するかを決定するために用いる優先度を設定する設定手段と、他のメッセージと関連し前記第１のユーザを宛先とする第１のメッセージの送信後に前記第１のユーザを宛先として送信する第２のメッセージが前記第１のメッセージと関連しないと前記判定手段が判定した場合、前記優先度に基づいて前記第１のクライアント装置及び前記第２のクライアント装置のうちから前記第２のメッセージを送信するクライアント装置を決定し、前記第２のメッセージが前記第１のメッセージに関連すると前記判定手段が判定した場合、前記第１のクライアント装置及び前記第２のクライアント装置のうち前記第１のメッセージが送信されたクライアント装置を前記第２のメッセージの送信先として決定する決定手段と、前記決定手段が決定したクライアント装置に前記第２のメッセージを送信する送信手段とを有することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、所望の目的を実現するために一体として用いられる複数個のメッセージを、同一のクライアントに届けることができる。
【図面の簡単な説明】
【００１８】
【図１】実施例１における、メッセージ転送システムを示す図。
【図２】実施例１における、サーバ及びクライアントの構成図。
【図３】実施例１における、サーバのプログラムモジュール及びクライアントのプログラムモジュールの構成図。
【図４】実施例１における、メッセージ転送システムの動作のシーケンス図。
【図５】実施例１における、優先度データを示す図。
【図６】実施例１における、送信されるメッセージセットと要素メッセージを示す図。
【図７】実施例１における、クライアントのメッセージセット処理のフローチャート。
【図８】実施例１における、サーバのメッセージセット処理のフローチャート。
【図９】実施例１における、サーバが記憶する転送先データを示す図。
【図１０】実施例１における、サーバが実行する監視ルーチンのフローチャート。
【発明を実施するための形態】
【００１９】
（実施例１）
本実施例における、本提案のメッセージシステムの構成を図１を用いて説明する。図１において、サーバ６に、クライアント３、クライアント４、クライアント５が、ネットワーク７を介して接続されている。本実施例において、クライアント３及びクライアント４はデジタルカメラであるものとする。また、クライアント５はパーソナルコンピュータ（以下、「ＰＣ」という。）であるものとする。クライアントはＰＣやデジタルカメラに限られず、例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）や携帯電話、ポータブルミュージックプレイヤー、家庭用ゲーム機、プリンタなどの電子機器（装置）であってもよい。
【００２０】
本実施例では図１に示すように、ユーザ１およびユーザ２の二人のユーザを想定する。ユーザ１は、クライアント３およびクライアント４の２台の機器（装置）を利用している。また、ユーザ２は、クライアント５を利用している。本実施例のメッセージングシステムにおいて、ユーザ１の特定情報（ユーザＩＤ）として”ＪＩＤ＿ｕｓｅｒＡ＠ｅｘａｍｐｌｅ．ｃｏｍ”が設定されている。同様に、ユーザ２の特定情報（ユーザＩＤ）として、”ＪＩＤ＿ｕｓｅｒＢ＠ｅｘａｍｐｌｅ．ｃｏｍ”が設定されている。これらのユーザＩＤは図５を用いて後述するように、サーバ６（具体的には、後述の配信処理部５１（図３（ｂ）））が後述のメモリ２２に登録する。このようにして、配信処理部５１はユーザが利用しているクライアントを登録する。
【００２１】
次にサーバ６の構成を図２（ａ）を用いて説明する。サーバ６では、ＣＰＵ２１、メモリ２２、操作部２３及びインターフェース２４がバス２５を介して接続されている。ＣＰＵ２１は演算装置であり、後述のメモリ２２に記憶されたプログラムを読み出して実行する。
【００２２】
メモリ２２は、ＣＰＵ２１に実行させるためのプログラムを記憶する。メモリ２２に記憶されるプログラムのモジュール構成を図３（ｂ）に示す。配信処理部５１は、クライアントの状態管理およびメッセージの配信処理を実現するプログラムモジュールである。
【００２３】
配信処理部５１は優先度データ５６を有する。優先度データ５６は、同一のユーザＩＤが対応付けられたクライアントが複数ある場合に、配信処理部５１が当該ユーザＩＤ宛てのメッセージの転送先を選択するために用いる優先度を記憶したデータである。優先度データ５６の詳細については図５（ａ）を用いて後述する。解析部５２は、受信したメッセージが、メッセージセットに含まれるか否かを判断するプログラムモジュールである。ここでメッセージセットとは、特定の処理を実行するために一体として用いられる複数のメッセージの集合のことをいう。転送先決定部５４は、宛先とされた特定情報に対応するユーザが利用している１又は複数のクライアントの中からメッセージセットの転送先クライアントを決定するプログラムモジュールである。転送先記憶部５５は、転送先決定部５４で決定した転送先クライアントにメッセージセットの識別子を結び付けて記憶するプログラムモジュールである。
【００２４】
インターフェース２４は、ネットワーク７と接続して、クライアントとメッセージの送受信を行う。操作部２３は、サーバ６を操作するために用いられる。操作部２３として、表示器および操作キーボードが含まれる。
【００２５】
次にクライアント３の構成を図２（ｂ）を用いて説明する。クライアント３では、ＣＰＵ３１、メモリ３２、操作部３３、インターフェース３４、カメラ部３５がバス３６を介して接続されている。ＣＰＵ３１は演算装置であり、後述のメモリ３２に記憶されたプログラムを読み出して実行する。
【００２６】
メモリ３２は、ＣＰＵ３１に実行させるためのプログラムを記憶する。メモリ３２に記憶するプログラムのモジュール構成を図３（ａ）を用いて説明する。通知処理部４１は、ログイン通知処理を実現するプログラムモジュールである。ログイン通知処理とは、ユーザがクライアントへログインすると、ログインがあったことを示すログインメッセージをクライアントからサーバに送信する処理である。メッセージセット処理部４２は、メッセージセット処理を実現するプログラムモジュールである。ここでメッセージセット処理とは所定の処理を実行するために用いられる複数のメッセージにそれぞれ対応する識別子を付与してメッセージセットを構成する処理をいう。メッセージセット処理部４２の詳細な動作は図７、及び図６を用いて後述する。
【００２７】
インターフェース３４は、ネットワーク７と接続して、サーバ６とメッセージの送受信を行う。操作部３３は、クライアント３を操作するために用いられる。操作部３３として、表示器および操作キーボードが含まれる。本実施例において、クライアント３およびクライアント４はデジタルカメラである。クライアント４もクライアント３と同様にして構成される。また、本実施例においてクライアント５はＰＣである。クライアント５は図２（ｂ）に示したクライアント３の構成のうち、カメラ部３５を有さないが、その他の構成はクライアント３と同様に構成される。
【００２８】
次に、本実施例におけるメッセージシステムの動作について説明する。本実施例におけるメッセージシステムの動作シーケンスを図４に示す。
【００２９】
まずシーケンスＳ６０１において、ユーザ１がクライアント３へログインする。ユーザ１がクライアント３へログインすると、クライアント３の通知処理部４１が規定されたログインメッセージをサーバ６に送信する。サーバ６の配信処理部５１は、ログインメッセージを受信するとユーザ１がクライアント３からログイン状態となったことを記憶する。具体的には配信処理部５１は、図５（ａ）に示すように、クライアントとそのクライアントにログインしているユーザの特定情報とを記憶する。同様にして、シーケンスＳ６０２において、ユーザ１はクライアント４にもログインする。さらに同様にして、シーケンスＳ６０３において、ユーザ２がクライアント５へログインする。
【００３０】
次にシーケンスＳ６０４において、ユーザ１はサーバ６に対してクライアント３の優先度を設定する。また、シーケンスＳ６０５において、ユーザ１はサーバ６に対してクライアント４の優先度を設定する。ここで、優先度とはサーバ６が受信したメッセージをいずれのクライアントに送信するか決定するために用いられる値である。本実施例においては、優先度の値は「−１２８」から「＋１２７」までの範囲をとる整数であり、値の大きいほど優先度が高いものとする。また、優先度が最大のクライアントをメッセージの転送先として選択するものとする。本実施例においてログインした各クライアントの優先度を示す優先度データ５６を図５（ａ）のテーブル７１に示す。図５（ａ）のテーブル７１には、受信されたメッセージの宛先とされたユーザ１が利用している複数のクライアントが登録されている。テーブル７１の行７２において、クライアント３の優先度が「５０」に設定されている。同様に行７３において、クライアント４の優先度が「０」に設定されている。
【００３１】
続いてシーケンスＳ６０７では、ユーザ２が、ユーザ１がログインしているカメラを用いたリモート撮影を実行する。ここでリモート撮影とは、遠隔地にあるカメラにネットワークを介して撮影を実行させ、撮影して得られた画像データを取得する撮影動作のことをいう。本実施例においてユーザ２は、クライアント５を操作してデジタルカメラであるクライアント３又はクライアント４に対して図６（ａ）に示すメッセージを送信することでリモート撮影を実行する。
【００３２】
クライアント５はクライアント３又はクライアント４に対して、図６（ａ）に示した第１のメッセージ８２及び第２のメッセージ８３を送信する。第１のメッセージ８２は、デジタルカメラのレリーズ（撮影動作）の実行指示を意味するメッセージである。デジタルカメラであるクライアント３又はクライアント４は、第１のメッセージ８２を受け取ると、レリーズを実行する。第２のメッセージ８３は、撮影した画像データをメッセージの送信者に送信させる動作の実行指示を意味するメッセージである。デジタルカメラであるクライアント３又はクライアント４は、第２のメッセージ８３を受け取ると、直前のレリーズによって得られた撮影画像を第２のメッセージ８３の送信者であるクライアント５に送信する。シーケンスＳ６０７において、第１のメッセージ８２、第２のメッセージ８３の順でメッセージがデジタルカメラに送信されることでリモート撮影が行われる。
【００３３】
次にシーケンスＳ６０８において、クライアント５のメッセージセット処理部４２は、メッセージセット処理を実行する。ここで、メッセージセット処理とは特定の処理を実行するために一体として用いられる複数のメッセージに、共通の識別子を付与してメッセージセットを構成する処理をいう。本実施例において、メッセージセットとして、上述のリモート撮影動作を行うために用いられるメッセージ群である第１のメッセージ８２および第２のメッセージ８３が該当する。図６（ａ）の８１はリモート撮影を行うためのメッセージセットである。
【００３４】
クライアント５によるメッセージセット処理について図７のフローチャートを用いて説明する。まず、メッセージセット処理部４２は新規に識別子を生成する（Ｓ９１）。次に、メッセージセット処理部４２はすべての要素メッセージにステップＳ９１で生成した識別子を文字列として付与する（Ｓ９２）。本実施例ではメッセージの交換にリアルタイムメッセージングプロトコルであるＸＭＰＰ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍｅｓｓａｇｉｎｇ  ａｎｄ  Ｐｒｅｓｅｎｃｅ  Ｐｒｏｔｏｃｏｌ）を用いる。そして、ステップＳ９１で生成した識別子を、ＸＭＰＰで定義されているタグである「ｔｈｒｅａｄ」を用いて文字列としてメッセージに付与する。メッセージに「ｔｈｒｅａｄ」タグが含まれている場合、そのメッセージはメッセージセットの要素メッセージであることを示す。メッセージセットの要素メッセージであることを示すタグは「ｔｈｒｅａｄ」以外の予め定められたタグである形態としてもよく、任意に設定した文字列であってもよい。本実施例において、いずれのメッセージをメッセージセットの要素メッセージとするかについてはクライアント５を用いるユーザ２が設定することができる。ただし、設定方法はこれに限られるものではない。
【００３５】
シーケンスＳ６０８のメッセージ処理を行って作成されたメッセージを図６（ｂ）に示す。図６（ｂ）のメッセージ１０１は、上述の第１のメッセージ８２に識別子として文字列１０２を付与したものである。また、図６（ｂ）のメッセージ１０３は、上述の第２のメッセージ８３に識別子として文字列１０４を付与したものである。
【００３６】
識別子がメッセージに存在することで、サーバ６はそのメッセージがメッセージセットに属していることを認識することができる。さらに、サーバ６は同一の識別子がメッセージ中に存在する複数のメッセージを、同一のメッセージセットに属する要素メッセージであるとして認識することができる。ここで要素メッセージとは、メッセージセットに属する個々のメッセージのことをいう。例えば、第１のメッセージ８２および第２のメッセージ８３は、リモート撮影を行うためのメッセージセット８１の要素メッセージである。本実施例では、タグ１０５の中の文字列１０２、および、タグ１０６の中の文字列１０４は、ステップＳ９１で生成した識別子であり、同一の文字列が記載されている。なお、この文字列１０２と１０４は、第１のメッセージ８２と第２のメッセージ８３が同一のメッセージセットに属していると受信側で判断できれば、同一でなくてもよい。例えば、文字列の最後の数ケタは、同一メッセージセット内の何番目のメッセージかを示す数字としてもよい。
【００３７】
次にシーケンスＳ６０９において、クライアント５は、第１のメッセージ１０１をサーバ６に送信する。第１のメッセージ１０１は、デジタルカメラのレリーズ（撮影動作）の実行指示を意味するメッセージである。サーバ６は、第１のメッセージを受信するとメッセージセット処理部５３においてメッセージセット処理を実行する（Ｓ６１０）。シーケンスＳ６１０におけるメッセージセット処理のフローを図８を用いて説明する。図８の処理フローは図８に示される手順をＣＰＵ２１に実行させるためのプログラムを示す。
【００３８】
まず解析部５２が、クライアント５から受信したメッセージの内容を解析し、メッセージセットを示す文字列を格納するタグがあるかどうか判断する（Ｓ１１０１）。本実施例においては、図６（ｂ）に示したように、メッセージセットを示す識別子を「ｔｈｒｅａｄ」という名称のタグに格納している。本実施例では、解析部５２は「ｔｈｒｅａｄ」タグの有無を確認することにより、受信したメッセージがメッセージセットに含まれるか否かを判断する。
【００３９】
メッセージに「ｔｈｒｅａｄ」タグがある場合（Ｓ１１０１でＹＥＳの場合）は、後述のステップＳ１１０２へ進む。一方、メッセージセットを示す識別子を有しないメッセージを受信した場合（Ｓ１１０１でＮＯの場合）は、転送先決定部５４が、図５（ａ）に示したクライアント優先度データに基づいて転送先クライアントを決定する（Ｓ１１０８）。そして後述のステップＳ１１０６へ進む。ここで、クライアントの決定方法は優先度に限られない。クライアントのプレゼンスやメディアの使用状況を選択基準にしてもよい。またはそれらと優先度とを総合的に考慮してメッセージ転送先のクライアントを決定してもよい。
【００４０】
ステップＳ１１０２では転送先決定部５４が受信したメッセージからメッセージセットを示す識別子の値を抽出する。本実施例では、文字列１０２がメッセージセットを示す識別子として抽出される。
【００４１】
次に転送先決定部５４は、ステップＳ１１０２で抽出した識別子が、転送先記憶部５５に転送先データとして記憶されているか判断する（Ｓ１１０３）。ここで転送先データとは、メッセージの送信者、そのメッセージが含まれるメッセージセットを示す識別子、及びそのメッセージセットに含まれる要素メッセージの転送先についてのデータである。
【００４２】
転送先記憶部５５により記憶されている転送先データを表すテーブルの例を図９（ａ）に示す。本実施例において、第１のメッセージを受信した時点では、転送先データには文字列１０２と一致する識別子が格納されていない状態となっている。そこで、転送先決定部５４はステップＳ１１０３においてＮＯを選択し、ステップＳ１１０４に進む。
【００４３】
次にステップＳ１１０４において、サーバ６の転送先決定部５４は、上述の優先度データ５６を用いて第１のメッセージ１０１の転送先をユーザ１が利用している複数のクライアントの中から決定する。図５（ａ）に示したクライアント優先度データによれば、クライアント３の優先度が最上位であるため、このメッセージの転送先はクライアント３であると決定される。
【００４４】
次に転送先記憶部５５は、ステップＳ１１０２で抽出したメッセージセットの識別子と、ステップＳ１１０４で第１のメッセージの転送先として転送先決定部５４が決定したクライアントとを転送先データとして記憶する（Ｓ１１０５）。ステップＳ１１０５において転送先データが記録された様子を図９（ｂ）に示す。図９（ｂ）の例では、文字列１２３は、第１のメッセージ１０１の送信元であるユーザ２の識別子である。文字列１２４は、ステップＳ１１０２で抽出した第１メッセージ１０１の識別子である。文字列１２５は、ステップＳ１１０５で決定したメッセージの転送先クライアントの識別子である。
【００４５】
ステップＳ１１０５において転送先データが保存されると、配信処理部５１は決定された転送先クライアントに第１のメッセージ１０１を転送する（Ｓ１１０６）。こうしてシーケンスＳ６１０のメッセージセット処理を終了し、サーバ６はシーケンスＳ６１１において、第１のメッセージ１０１をクライアント３に送信する。図８に示したメッセージセット処理フローのステップＳ１１０３においてＹＥＳであった場合の処理の説明については、後述するシーケンスＳ６１６でのメッセージセット処理の説明において行う。
【００４６】
次に、シーケンスＳ６１２において、クライアント３はサーバ６から第１のメッセージ１０１を受信すると、それに対する返答をクライアント５に返信する。
【００４７】
ここで、本実施例では、クライアント３が第１のメッセージ１０１を受信した後に、ユーザ１がクライアント４の優先度を再設定する場合について説明する。ユーザ１によってクライアント４の優先度の再設定がなされると、シーケンスＳ６１３およびシーケンスＳ６１４の処理が実行される。すなわちシーケンスＳ６１３において、クライアント４は再設定された優先度をサーバ６に通知する。そしてシーケンスＳ６１４において、サーバ６の配信処理部５１が優先度データ５６を更新する。シーケンスＳ６１４において優先度データ５６が更新された後の優先度データ１３１を図５（ｂ）に示す。行１３３のクライアント４の優先度が更新されたことから、ユーザ１に宛てられたメッセージの転送先クライアントは優先度が最も高い「ｃｌｉｅｎｔ４」となる。
【００４８】
続いて、シーケンスＳ６１５において、クライアント５は第２のメッセージ１０３をサーバ６に送信する。第２のメッセージ８３は、撮影した画像データをメッセージの送信者に送信させる動作の実行指示を意味するメッセージである。第２のメッセージ１０３を受信したサーバ６は、シーケンスＳ６１６において、上述のシーケンスＳ６１０と同様に図８に示すフローチャートのメッセージセット処理を実施する。
【００４９】
ここで、シーケンスＳ６１６におけるメッセージセット処理について図８を用いて説明する。まず、Ｓ１１０１において、受信した第２のメッセージ１０３に「ｔｈｒｅａｄ」タグがあるため、ステップＳ１１０２に進む。
【００５０】
ステップＳ１１０２において転送先決定部５４はメッセージセットを示す識別子を抽出する。本実施例では、図６（ｂ）の文字列１０４がメッセージセットを示す識別子として抽出される。次に転送先決定部５４は、ステップＳ１１０２で抽出した識別子が転送先記憶部５５に転送先データとして記憶されているか判断する（Ｓ１１０３）。
【００５１】
本実施例では、図９（ｂ）に示すように、第１のメッセージ１０３のメッセージセットの識別子が、シーケンスＳ６１０のメッセージセット処理におけるステップＳ１１０５で転送先データ１２１として転送先記憶部５５に記憶されている。また上述の通り第１のメッセージ１０１のメッセージセットの識別子と第２のメッセージ１０３のメッセージセットの識別子は同一である。従って、シーケンスＳ６１６におけるメッセージセット処理では、ステップＳ１１０３においてＹＥＳに分岐してステップＳ１１０７に進む。そしてステップＳ１１０７において、転送先決定部５４は図９（ｂ）に示した転送先データ１２１の行１２２を参照し、メッセージの転送先クライアントをクライアント３と決定する。
【００５２】
このようにして、転送先決定部５４は、第２のメッセージの宛先が第１のメッセージの宛先と同一であり、第２のメッセージに付与された識別子が第１のメッセージに付与された識別子と対応する場合、以下のようにして第２のメッセージの転送先を決定する。すなわち、転送先決定部５４は、第１のメッセージに付与された識別子に対応する識別子が付与された第２のメッセージをユーザ１の特定情報を宛先として受信した場合に、転送先記憶部５５が記憶したクライアントを第２のメッセージの転送先として決定する。なお、転送先記憶部５５が記憶したクライアントは、第１のメッセージの宛先として転送先決定部５４により決定されたクライアントである。なお、転送先決定部５４は、第２のメッセージの識別子が第１のメッセージに対応する場合、第２のメッセージの宛先に関わらず、第１のメッセージと同じ転送先に転送してもよい。すなわち、撮影を指示するクライアントと、撮影された画像の送信を指示するクライアントは、別でもよい。
【００５３】
次にステップＳ１１０９では、決定した転送先クライアントが、メッセージを受信可能であるかどうかを確認する。転送先クライアントがメッセージを受信可能であるかの確認はメッセージセット処理部５３が、配信処理部５１にクライアント３のプレゼンスを問い合わせることにより行う。転送先クライアントがメッセージを受信可能である場合（Ｓ１１０９でＹＥＳの場合）は、ステップＳ１１０６に進み、決定した転送先にメッセージを転送する。本実施例では、クライアント３のプレゼンスはシーケンスＳ６０１のログイン時から変更されておらず、メッセージ受信可能状態であるためステップＳ１１０６に進む。こうしてシーケンスＳ６１６のメッセージセット処理を終了し、サーバ６はシーケンスＳ６１７において、第２のメッセージ１０３をクライアント３に送信する。
【００５４】
ステップＳ１１０９の処理でメッセージセット処理部５３が、転送先クライアントがメッセージを受信可能でないと判断した場合（Ｓ１１０９でＮＯの場合）は、ステップＳ１１１０に進む。ステップＳ１１１０では、メッセージの送信元（本シーケンスでは、クライアント５）に、第２のメッセージ１０３が転送できなかったことを示すエラーメッセージを返してメッセージセット処理を終了する。ここで、クライアントがメッセージを受信可能でない場合とは、例えば、既に転送先クライアントから宛先とされたユーザがログアウトしてしまった場合や、ユーザがログインしているがメッセージを受信しない設定がクライアントでなされた場合などが該当する。ただし、メッセージを受信可能でない場合とはこれらの場合に限定されるものではなく、メッセージを受信可能でない場合については適宜設定することができる。
【００５５】
このようにして、本実施例にかかるメッセージ転送システムは、第２のメッセージの転送先として決定したクライアントがメッセージを受信できない状態である場合には、第２のメッセージの送信を行わないようにする。従って、ユーザが意図しないメッセージの送信を防ぐことができる。また、本実施例にかかるメッセージ転送システムは、転送先として決定したクライアントがメッセージを受信できない状態である場合には、メッセージの送信を行ったクライアントに第２のメッセージが転送できなかったことを示すエラーメッセージを送信する。従って、ユーザは第２のメッセージが送信できなかったことを知ることができ、システムの利便性が向上する。
【００５６】
次に、シーケンスＳ６１８において、クライアント３はサーバ６から第２のメッセージ１０３を受信すると、メッセージを受信したことを示す信号をクライアント５に返信する。また、本実施例において、第２のメッセージは撮像した画像をメッセージの送信者であるクライアント５に送るように指示する内容であるので、メッセージを受信したことを示す信号とともに、クライアント３は撮像した画像をクライアント５に送信する。
【００５７】
最後に、転送先データの破棄に関する動作について説明する。本実施例では、サーバ６のメッセージセット処理部５３は、転送先データ１２１の各項目に対し以下の図１０に示す図８を用いて説明したメッセージセット処理と独立に並行して監視ルーチンを実行して、転送先データの破棄を行う。
【００５８】
ステップＳ１４０１では、メッセージセット処理部５３は、ステップＳ１１１０でのエラーメッセージが閾値以上送信されているか確認する。エラーメッセージが閾値（例えば、本実施例では５回）以上送信されていたら、該当する転送先データの項目を削除する（Ｓ１４０４）。
【００５９】
ステップＳ１４０２では、メッセージセット処理部５３は、メッセージセットの要素メッセージが閾値（例えば、本実施例では５分）以上の時間受信されないかを監視する。閾値以上受信されない場合（Ｓ１４０２でＹＥＳの場合）は、メッセージセット処理部５３は該当する転送先データの項目を削除する（Ｓ１４０４）。
【００６０】
ステップＳ１４０３では、メッセージセット処理部５３は、配信処理部５１を参照してメッセージの送信元のクライアントがログインしているか監視する。メッセージの送信元のクライアントがログアウトしている場合は、該当する転送先データの項目を削除する（Ｓ１４０４）。
【００６１】
こうして図１０に示した監視ルーチンを実行して転送先データを削除することにより、不要となった転送先データを自動的に削除してゆくことができる。
【００６２】
以上のようにして、図４に示したシーケンスが実現される。本実施例では、メッセージセット処理（シーケンスＳ６０８およびシーケンスＳ６１０）を行うことにより、第２のメッセージ１０３の転送先クライアントが、第１のメッセージ１０１の転送先クライアントと同一のクライアント３となる。このようにして、所望の目的を実現するために一体として用いられる複数個のメッセージを、メッセージの転送先を選択するために使用する優先度等の変化に関わらず、同一のクライアントに届けることができる。
【００６３】
（その他の実施例）
本発明には、以下の形態も含まれる。すなわちクライアント５が、メッセージセットの送信開始をメッセージサーバ６に伝え、メッセージセットの開始とともにサーバ６がメッセージセットの識別子の発行を開始する形態である。上述の実施例においてクライアント５のメッセージセット処理部４２が発行するメッセージセットの識別子を、本形態においてはサーバ６のメッセージセット処理部５３が発行することによりこれを実現することができる。この形態では、クライアントにメッセージＩＤを管理させる必要がなく、クライアントのプログラムモジュールの軽量化を図ることができる。従って、ハードウェアリソースの乏しい電子機器への実装に有利である。
【００６４】
実施例１ではメッセージ交換にＸＭＰＰを用いる場合を例にして説明したが、これに限られない。例えば、呼制御プロトコルであるＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いる場合にも本発明を適用することができる。ＳＩＰでは、ＸＭＰＰと同様に、ユーザ名に対して、メッセージの送り先の候補となるクライアントが複数ある場合は、サーバで解決する仕組みが定められている。（ＳＩＰは、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）により仕様が策定され、公開されている呼制御プロトコルである。）
【００６５】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６６】
５１  配信処理部
５４  転送先決定部
５５  転送先記憶部
【図１】
0005729994.tif 000002
【図２】
0005729994.tif 000003
【図３】
0005729994.tif 000004
【図４】
0005729994.tif 000005
【図５】
0005729994.tif 000006
【図６】
0005729994.tif 000007
【図７】
0005729994.tif 000008
【図８】
0005729994.tif 000009
【図９】
0005729994.tif 000010
【図１０】
0005729994.tif 000011