(57)【特許請求の範囲】
【請求項１】
第１のデバイス、１以上の送信先デバイス、及びサーバを含むコンピュータデバイスで実行される方法であって、前記サーバが、
第１のデバイス及び１以上の送信先デバイスを含む複数のデバイスに関連するデータを記憶する処理と、
前記第１のデバイスに記憶されたファイルが前記１以上の送信先デバイスに送信される指示を、前記複数のデバイスからネットワークを介して受信する処理と、
前記指示を受信したことに応じて、前記ファイルが前記複数のデバイスのすべてに対して遠隔にあるサーバ上の固定記憶媒体に記憶されるようにする処理と、
前記ファイルが前記１以上の送信先デバイスに送信されるようにする処理と、
前記１以上の送信先デバイスのうちの任意のデバイスが当該ファイルを受信したかに関係なく、所定の期間が経過したことに応じて、前記ファイルが前記複数のデバイスのいずれによってもアクセスできないようにする処理と、
第２の複数デバイスに関連する第２のデータを記憶する処理と、
前記第１のファイルとは異なる第２のファイルであって、前記第２の複数デバイスのいずれかに記憶されていなかった当該第２のファイルが、前記第２の複数デバイスのうちの特定デバイスに記憶されるという第２の指示を、前記ネットワークを介して前記特定デバイスから受信する処理と、
前記第２の指示を受信したことに応じて、前記第２のファイルが前記第２の複数デバイスのすべてに対して遠隔のサーバ上の固定記憶媒体に記憶されるようにする処理と、
前記第２の複数デバイスのうちの前記特定デバイス以外の任意のデバイスが前記サーバとのコネクションを確立することが検出されると、前記第２のファイルが前記任意のデバイスに送信されるようにする処理と、
前記第２の複数デバイスのうちの前記特定デバイスとは異なる任意のデバイスが前記第２のファイルを受信したかに関係なく、前記所定の期間とは異なる第２の期間が経過したことに応じて、前記第２のファイルが前記第２の複数デバイスのいずれによってもアクセスできないようにする処理と、
を実行する方法。
【請求項２】
前記ファイルが前記第１のデバイスに新たに記憶されるときには、前記第１のデバイスと前記サーバとの間に特定のタイプのコネクションが確立されず、
前記特定のタイプのコネクションが確立されると、前記指示が前記第１のデバイスから前記サーバへ自動的に送信されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記指示は前記ファイルを含まず、
前記第１のデバイスが前記ファイルをどこに送信するかを示す第１の記憶ロケーションデータを前記第１のデバイスに送信させ、
前記１以上の送信先デバイスが前記ファイルをどこで読出すかを示す第２の記憶ロケーションデータを前記１以上の送信先デバイスに送信させる、請求項１に記載の方法。
【請求項４】
前記１以上の送信先デバイスに送信されるファイルは、前記ファイルのコピー又は前記第１のデバイスに記憶されるファイル形式とは異なる形式のファイルバージョンである、請求項１に記載の方法。
【請求項５】
前記特定の期間は、前記ファイルのタイプ、前記指示を送信したデバイス、前記指示に含まれるデータ、前記指示が送信された日時、前記ファイルが生成された日時、又は前記ファイルを作成した人物の識別データのうちの少なくとも１つに基づき決定される、請求項１に記載の方法。
【請求項６】
前記複数デバイスは同一ユーザアカウントに関連する、請求項１に記載の方法。
【請求項７】
前記ファイルを前記１以上の送信先デバイスに送信されるようにした後で、
特定デバイスを含まない前記複数デバイスに当該特定デバイスが関連していることを指示するために関連データを修正する処理と、
前記ファイルが前記特定デバイスに送信されるようにする処理と、
を更に含む、請求項１に記載の方法。
【請求項８】
前記１以上の送信先デバイスのうちの任意のデバイスが前記サーバとのコネクションを確立することが検出されると、前記ファイルが前記１以上の送信先デバイスに送信されるようにする、請求項１に記載の方法。
【請求項９】
１以上のプロセッサが実行するとき、請求項１〜８の何れかに記載した方法が実行される命令を記憶した１以上の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照：特許請求の範囲の利益〕
本出願は、２０１１年６月３日に出願された既に出願済みの米国仮特許出願第６１／４９３，２１４号の利益を主張するものであり、３５Ｕ．Ｓ．Ｃ．１１９条(e)の下、本願明細書で述べるが如く、上記特許出願は引用により本明細書に組み入れられる。
【０００２】
本発明は、デジタル写真などのデジタル品目を、ネットワークを介して１つのコンピュータデバイスから別のコンピュータデバイスへ送信することに関する。
【背景技術】
【０００３】
スマートフォン、デスクトップコンピュータ、ラップトップコンピュータなど、ますます、人々は複数のコンピュータ装置を所有するのが普通になってきている。複数のコンピュータ装置を所有する多くの人は、それら装置の各々に記憶されるファイルの少なくとも幾つかを持っていることを望む。これを実現する１つのアプローチとしては、ユーザが、彼らの装置の一つ（“ソース”デバイス）から、ｅメイルアカウントなどのオンラインアカウントへファイルをｅメイルすることである。次に、ユーザは別の彼らの装置（“送信先”デバイス）を操作することにより、オンラインアカウントにアクセスしてそのファイルを送信先デバイスにダウンロードすることを開始すればよい。ユーザは、彼らの装置の各々でこの一連の処理を実行する。
【０００４】
他のステップとしては、２つの装置を物理的に接続し（例えば、各装置のＵＳＢポートを介して）、ソースデバイスにアクセスするよう送信先デバイスに指令し、そしてソースデバイスからファイルのコピーを読出す。ユーザは各送信先デバイスでこの一連の処理を実行しなければならないだろう。
【０００５】
上記２つのアプローチは、重要、且つ多くの時間と労力を要する相互作用を要求する。また、ユーザが複数の送信先デバイスに転送されるファイルを望むという点において、この２つのアプローチは、オンラインアカウントにアクセスすること又は２つのデバイスを（例えば、ＵＳＢなどの）コードで接続するといった、反復的な（または、少なくとも非常に類似する）処理を要求する。
【０００６】
このセクションに記載したアプローチは達成されることができたであろうアプローチであるが、必ずしも以前に考え出されたり達成されたアプローチであるというわけではない。したがって、特に示唆がない限り、このセクションに記載されるアプローチのどれも、単に本セクションに含まれているという理由で先行技術となり得ると仮定すべきではない。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施例に従い、１つの装置（デバイス）から他の１以上の装置へ発生する、ファイルを転送するための例示的なシステムを示したブロック図である。
【図２】本発明の一実施例に従い、ソースデバイスから受信したファイルを格納すること、及び送信先デバイスに対するそれらのファイルの通知を管理する仲介によって維持される異なるタイプのデータを示したブロック図である。
【図３Ａ】本発明の一実施例に従い、ファイルがソースデバイスから他の１以上の送信先デバイスへ送られることを生じさせるプロセスを示す図である。
【図３Ｂ】本発明の一実施例に従い、ファイルがソースデバイスから他の１以上の送信先デバイスへ送られることを生じさせるプロセスを示す図である。
【図４】コンピュータシステム４００を示すブロック図であり、ここで本発明の一実施例が実行され得る。
【発明を実施するための形態】
【０００８】
以下の記載において、例示の目的で、本発明の包括的な理解を提供するための特定の詳細が多数述べられる。しかしながら、本発明がこれらの特定の詳細無しでも実行され得ることは明らかであろう。他の例においては、本発明を不必要に不明瞭にすることを避けるため、よく知られた構造及びデバイスがブロック図形式で示される。
【０００９】
全体の概要
ユーザは、１つの装置（“ソース”デバイス）で記憶されるファイルを他の１以上の装置（“送信先”デバイス）へネットワークを介して送られることを生じさせることができ、その場合、ソースデバイスからファイルが送信されると、送信先デバイスでそのファイルを取得するのに送信先デバイスで特段のオペレーティングを何ら実行することを要しない。ソースデバイスからのファイルを受信するのに１以上の仲介デバイスが用いられ、ファイルを受信する１以上の送信先デバイスを識別し、そしてファイルをその１以上の送信先デバイスに送る。その結果、ソースデバイスと１以上の送信先デバイスとの間の物理的コネクションが要求されない。
【００１０】
一実施例において、ソースデバイスからのファイルのコピーを取得した後、仲介デバイスはそのファイルのテンポラリー（一時）コピーを記憶する。仲介シデバイスでファイルのテンポラリーコピーを記憶することによって、ソースデバイスが利用可能であってファイルを配信するのと同時に、送信先デバイスがそのファイルを受信するのに利用可能な状態である必要はなくなる。例えば、仲介デバイスがソースデバイスからのファイルコピーを取得する間、送信先デバイスが仲介デバイスに対して利用不可能であり、そしてソースデバイスが仲介デバイスに対して利用不可能なときに仲介デバイスは送信先デバイスにファイルを転送する。一実施例において、一つの仲介サービスが送信先デバイスを識別し通知する役割がある一方で、別の仲介サービスはファイルのテンポラリーコピーを記憶する役割がある。
【００１１】
したがって、各送信先デバイスがそのコピーを読出す若しくは幾つかの他の削除基準が満たされるまで、ファイル（又はそのコピー）がソースデバイス及び送信先デバイスとは離れて、少なくとも一時的には、記憶される。例えば、一つのアプローチでは、送信先デバイスのすべてがファイルを受信していなかったとしても、ファイルのテンポラリーコピーは、或る一定期間記憶された後、遠隔記憶装置で削除されたりアクセスできなくされる。
【００１２】
一つのアプローチでは、ファイルの複数バージョンがソースデバイスから送信され、遠隔で記憶される。仲介エンティティは、どの送信先デバイスがどのバージョンを受信するかを決定する。その結果、或る送信先デバイスが（例えば、同一ファイルの第２のバージョンをそれまで受信することなしに）第１のバージョンを受信し、そして別の送信先デバイスが（そのファイルの第１のバージョンをそれまで受信することなしに）第２のバージョンを受信したりする。
【００１３】
一つのアプローチでは、（ソースデバイスからの）ファイル属性は、どの送信先デバイスがファイルを受信するかを決定するのに用いられる。例えば、デジタル画像で検出された人の識別（アイデンティティ）は、そのデジタル画像が１以上の送信先デバイスの特別な組に送信されるべきであることを決定するのに用いられたりする。
【００１４】
一つのアプローチでは、ネットワークを介してソースデバイスから送信されるデジタル画像は送信先デバイスに送られ、その間、送信先デバイスはスライドショーを実演している。送信先デバイスがそのスライドショーを中断することなく実演しながら、デジタル画像がスライドショーに追加される。
【００１５】
システムの概観
図１は、本発明の実施例に従い、ファイルが１つのコンピュータデバイスから他の１以上のコンピュータデバイスへ発生するように生じさせる例示的なシステムを示したブロック図である。図１は、ソースデバイス１１０、ネットワーク１２０、転送サーバ１３０、サードパーティ記憶サービス１４０、送信先デバイス１５０Ａ−Ｃを描画している。これに関連する実施例の場合、サードパーティ記憶サービス１４０は存在しない。そのかわり、転送サーバ１３０がサードパーティ記憶サービス１４０（本明細書は記載される）の機能を実行する。
【００１６】
ソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃは、ネットワーク１２０を介して転送サーバ１３０と通信することができるコンピュータ装置である。ソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃの非限定的な例として、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ＰＤＡ、及び他の携帯型電子端末を含む。また、本発明の実施例は、ソースデバイス１１０と転送サーバ１３０との間、並びに、転送サーバ１３０と送信先デバイス１５０Ａ−Ｃとの間のデータ及びメッセージを伝達するために用いられる特定の通信プロトコルに限定されるものではない。図１に示すエンティティによって用いられ得る通信プロトコルの非制限的な例として、ハイパーテキスト転送プロトコル（ＨＴＴＰ）がある。
【００１７】
簡略さのため、１つのソースデバイスだけ、そして３つの送信先デバイスだけを図１に示す。しかしながら、ソースデバイス１１０がネットワーク１２０を介して送信し、サードパーティ記憶サービス１４０により（又は転送サーバ１３０により）記憶されるファイルコピーを各々受信する送信先デバイスは、これよりもさらに多く又はさらに少なく（少なくとも１つ）存在し得る。また、転送サーバ１３０は、多くのソースデバイスをサポートするよう構成され、その各々は異なる組の送信先デバイスに関連する。
【００１８】
一実施例において、仮に、ソースデバイス（例えば、ソースデバイス１１０）はどの送信先デバイスに関連していなくとも、サードパーティ記憶サービス１４０（又は転送サーバ１３０）により記憶されるファイルをネットワーク１２０を介して送信する。例えば、ソースデバイスから送信されたファイルを受信するどの送信先デバイスも登録されていなかったり、ソースデバイスが送信するファイルを受け取る機器としての送信先デバイスを、ソースデバイスが（例えば、転送サーバ１３０と共に）登録していなかったりする。しかしながら、ソースデバイスにより送信される１以上のファイルがサードパーティ記憶サービス１４０により（又は転送サーバ１３０により）記憶された後、送信先デバイスはソースデバイスからのファイルを受信するために登録されるようになる。その後、転送サーバ１３０により、サードパーティ記憶サービス１４０又は転送サーバ１３０により記憶される１以上のファイルが送信先デバイスに送られることになる。この場合、１以上のファイルは、ソースデバイスがそれらのファイルを送信するときに送信先デバイスがその受信のために登録されることを要求することなく、“クラウド(the cloud)の中に蓄積される。
【００１９】
ソースデバイス１１０はネットワーク１２０を介してメッセージを送信するよう構成される。メッセージの少なくとも幾つかはファイルを含む。メッセージの幾つかは、転送サーバ１３０によって受信され、１以上のファイルがソースデバイス１１０からアップロード（又は送信）されることの通知を含むことができる。ファイルは任意のタイプのものであってよい。ファイルタイプの非制限的な例として、実行ファイル、ワード処理ファイル、テキストファイル、音楽ファイル、ビデオファイルを含む。さらに各ファイルタイプの各ファイルは、多くの異なるタイプフォーマットの一つで構成され得る。例えば、画像ファイルのフォーマットとして、JPEG、TIFF、RAW、PNG、GIF、BMP、及びWebPを含む。
【００２０】
送信先デバイス１５０Ａ−Ｃは、ソースデバイス１１０から送信されたファイルを受信し且つ記憶するよう構成される。一実施例において、送信先デバイス１５０Ａ−Ｃは、様々なタイプのファイルを消費するためのソフトウェアを有する。例えば、ファイルが画像ファイルの場合、送信先デバイス１５０Ａ−Ｃは表示スクリーン上で対応する画像を表示することのできるソフトウェアを有する。また、ファイルがビデオファイルの場合、送信先デバイス１５０Ａ−Ｃは対応するビデオを再生するソフトウェアを有する。
【００２１】
ソースデバイスからのメッセージ送信
本発明の一実施例に従い、ソースデバイス１１０は、或るイベントが発生したことの検出に応じて、ネットワーク１２０上でメッセージを自動的に送信するよう構成される。デバイスがアクションを遂行する能力があるソフトウェアを実行する場合、そのアクションを遂行するように“構成（configured）される”と言われる。ソースデバイス１１０によりメッセージを転送サーバ１３０に自動的に送信させるようにするイベントは、メッセージ・トリガーイベントとしてここでは称する。
【００２２】
特定のメッセージ・トリガーイベントがあらゆるインプリメンテーションを変化させ得る。例えば、一実施例において、ソースデバイス１１０上でデジタル画像を新たに生成することはメッセージ・トリガーイベントである。そのような実施例において、新たなデジタル画像がソースデバイス１１０に存在することを検出すると、ソースデバイス１１０はメッセージを転送サーバ１３０に送信するよう構成される。例えば、ソースデバイス１１０に組み込まれているカメラが写真を撮ったことを検出することによって、新たな画像が検出される。
【００２３】
別の一実施例においては、ソースデバイス１１０で新たなファイルが生成された後、或るタイプのコネクションを確立することがメッセージ・トリガーイベントとなる。例えば、ソースデバイス１１０がＥｄｇｅコネクション、３Ｇコネクション、及びＷｉ-Ｆｉコネクションを用いてインターネット上で通信可能なモバイルフォンであると仮定する。このような実施例において、１以上の新たな画像がソースデバイス１１０で作り出された後に、インターネットによりＷｉ-Ｆｉコネクションを確立することは、Ｗｉ-Ｆｉコネクションを介してメッセージを転送サーバ１３０に送信するようソースデバイスを自動的にトリガーすることである。例えば、そのメッセージは、１以上の新たなファイルがアップロードされること、送信先デバイス１５０Ａ−Ｃに再送信されることを教示することができる。
【００２４】
ソースデバイス１１０から転送サーバ１３０へメッセージを自動的に送信されるようにするメッセージ・トリガーイベントの非限定的な一覧を以下に示す。
・ソースデバイス１１０が転送サーバ１３０へのコネクションを有しながら、特定のファイルタイプをもつ新たなファイルがソースデバイス１１０上で生成されること；
・ソースデバイス１１０が転送サーバ１３０へのコネクションを有しながら、特定のタイプのファイルがソースデバイス１１０上で特定のディレクトリに移動されること；
・ソースデバイス１１０が転送サーバ１３０へのコネクションを有しながら、特定のタイプのファイルがソースデバイス１１０上で特定のタグ（tag）でタグ付けされること；
・ソースデバイス１１０が転送サーバ１３０へのコネクションを有しながら、新たな送信先デバイスが指定されること；
・ソースデバイス１１０が転送サーバ１３０に対して第１のタイプのコネクションを有しながら、第２のタイプのコネクションがソースデバイス１１０と転送サーバ１３０との間で確立されること；
・ソースデバイス１１０が転送サーバ１３０とのコネクションを解除した後、任意のタイプのコネクションがソースデバイス１１０と転送サーバ１３０との間で確立されること。
【００２５】
なお、これらは、ファイルのテンポラリーコピーがソースデバイス１１０から記憶サービス１４０へ自動的に転送されるようにする処理を開始するのに用いられる様々なメッセージ・トリガーイベントの幾つかの例示にすぎない。
【００２６】
送信先デバイスへの通知
本発明の一実施例に従い、ファイルが送信先デバイス１５０Ａ−Ｃに向けて宛先指定されたことを、転送サーバ１３０により送信先デバイス１５０Ａ−Ｃに通知する。上述したように、そのような通知は、仲介の記憶装置にファイルを送信することに比べて、非同期的に発生する。例えば、送信先デバイスが転送サーバとのコネクションを確立したことを検出する転送サーバ１３０に応じて前記通知が発生し、それはファイルコピーがソースデバイス１１０から仲介デバイスに送信された後のある時に発生する。仲介デバイスがファイルのテンポラリーコピーを記憶する実施例の場合、この通知は、ソースデバイス１１０自体がオフラインの期間中であっても発生する。
【００２７】
転送サーバ１３０からの通知は、ファイル自体を含むことができる。或いはまた、通知はファイルが記憶される場所を教示する記憶ロケーションデータを含む。通知を受信することに応じて、各送信先デバイス１５０Ａ−Ｃは、記憶ロケーションデータ又はファイルを識別するデータを含むリクエストを、適切な記憶サービス（例えば、サードパーティ記憶サービス１４０）へ送信する。サードパーティ記憶サービス１４０は、（リクエスト内の）記憶ロケーションデータ又はファイル識別子を使用して、ファイルを探し出し、そしてリクエストを送信した送信先デバイスにファイルを送る。その結果、送信先デバイスのユーザは、ソースデバイスからファイルを受信するために（その送信先デバイスをパワーオンさせる以外の）どのようなアクションも実行することが要求されない。
【００２８】
暗号化
一実施例において、再送信に関するソースデバイス１１０から送信先デバイスへ送られるファイルは、サードパーティ記憶サービス１４０で記憶される前に暗号化される、この暗号は、ソースデバイス１１０又は転送サーバ１３０により実行され得る。ファイルを暗号化する任意の技術が用いられる。また、暗号化及び復号化を実行するのに任意の鍵（キー）が用いられる。１以上のファイルを暗号化するための非制限的な暗号キーの例として、ソースデバイス１１０に関するデータ、ソースデバイス１１０のユーザに関するデータ、又はユーザパスワードに関するデータを含む。
【００２９】
１以上の暗号ファイルを復号するために、送信先デバイス１５０Ａ−Ｃ（又は転送サーバ１３０）は暗号キーへのアクセスを必要とするだろう。その結果、一実施例において、送信先デバイスがサードパーティ記憶サービス１４０から暗号ファイルを受信したとき、転送サーバ１３０は暗号キーを送信先デバイス１５０Ａ−Ｃに送信する。或いはまた、送信先デバイス１５０Ａ−Ｃは、１以上のファイルを暗号化する前に送信先デバイス１５０Ａ−Ｃに記憶されている暗号キーに対するアクセスを既に有している。いずれの場合であっても、サードパーティ記憶サービス１４０で暗号ファイルを記憶しながら、記憶サービス１４０によって、若しくは暗号ファイルに対する未承認のアクセスをし得る別のエンティティによって、サードパーティ記憶サービス１４０によりその暗号ファイルが記憶されている間は、その暗号ファイルを復号化することができない。
【００３０】
ネットワーク
転送サーバ１３０と、ソースデバイス１１０、サードパーティ記憶サービス１４０及び送信先デバイス１５０Ａ−Ｃとの間の通信は、ネットワーク１２０を介して可能となる。様々なコンピュータデバイス間でデータ交換を可能にする任意の記憶媒体又はメカニズムによってネットワーク１２０は具体化される。そのようなネットワークの例として、これに限定するものではないが、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イーサネット（Ｒ）若しくはインターネット、又は１以上の地上波や衛星や無線リンクを含む。ネットワークとして、これらの組み合わせも含む。ネットワークは、通信制御プロトコル（ＴＣＰ）、ユーザ・データグラム・プロトコル（ＵＤＰ）及び／又はインターネットプロトコル（ＩＰ）に従いデータを送信する。
【００３１】
転送サーバ及びサードパーティ記憶サービス
転送サーバ１３０は、ソースデバイス１１０から送信されたファイルが（ソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃと比べて）遠隔に記憶され、そして最終的にはこれを１以上の送信先デバイス１５０Ａ−Ｃに送信することを保証するという役割がある。言い換えると、（サードパーティ記憶サービス１４０に接続する）転送サーバ１３０はリモートキャッシュとして機能し、ファイルはソースデバイス１１０から転送サーバ１３０に転送され、且つ、転送サーバ１３０から送信先デバイス１５０Ａ−Ｃに転送される。最後に、転送サーバ１３０は図２に示す或るタイプのデータを保持する。
【００３２】
転送サーバ１３０は、１以上のファイルがソースデバイス１１０から送信されるという通知をソースデバイス１１０から受け取るように構成される。このような通知があると、転送サーバ１３０は、１以上のファイルがどこに送信されるかを教示する記憶ロケーションデータをソースデバイス１１０に送信する。記憶ロケーションデータはサードパーティ記憶サービス１４０に関連するデータであり得る。ソースデバイス１１０は記憶ロケーションデータを用いて、この１以上のファイルをサードパーティ記憶サービス１４０に送信する。
【００３３】
例えば、転送サーバ１３０からソースデバイス１１０へ送信される記憶ロケーションデータは、ＵＲＬ(Uniform Resource Locator)を含むことができる。ＵＲＬは、転送サーバ１３０によって生成される１以上の値を含み、それはソースデバイス１１０から送信される１以上のファイルに関連する。この１以上の値はファイル識別子を含み、ソースデバイス１１０（及び／又は他のソースデバイス）がサードパーティ記憶サーバ１４０に送信する他のすべてのファイルから１以上のファイルを一義的に識別する。これらの値は１以上のファイルに関連するサードパーティ記憶サービス１４０によって記憶される。後に、サードパーティ記憶サービス１４０は、送信先デバイス１５０Ａ−Ｃの一つから、１以上の値を含むリクエストを受け取る。サードパーティ記憶サービス１４０は、この１以上の値を用いて、対応する１以上のファイルを識別し、サードパーティ記憶サービス１４０はそれを送信先デバイスに送信する。
【００３４】
サードパーティ記憶サービス
サードパーティ記憶サービス１４０は、ソースデバイス１１０（及び図１に描画していない他のソースデバイス）から送られるファイルの記憶を提供するため、転送サーバ１３０を操作するエンティティが連絡をとりあう記憶サービスである。したがって、転送サーバ１３０により、ソースデバイス１１０から送信されたファイルや、それらのファイルをどこに送信（すなわち、転送）されるかに関する情報が管理される一方で、サードパーティ記憶サービス１４０はファイルを単に記憶するだけである。サードパーティ記憶サービス１４０により管理された固定記憶装置内のロケーションをファイルの識別子に関連づけるデータをサードパーティ記憶サービス１４０は記憶する。そして、サードパーティ記憶サービス１４０があるファイルに関する識別子を含むリクエストを受け取るとき、サードパーティ記憶サービス１４０は記憶装置からそのファイルを読出し、ファイルを要求装置（すなわち、送信先デバイス１５０Ａ-Ｃの一つ）に送信する。
【００３５】
サードパーティ記憶サービス１４０がシステムの一部ではない一実施例において、ソースデバイス１１０はファイルを転送サーバ１３０に送る。転送サーバ１３０はファイルを記憶する役割がある。したがって、この実施例の場合、転送サーバ１３０が記憶ロケーションデータを生成しソースデバイス１１０或いは送信先デバイス１５０Ａ−Ｃのいずれかに送信する必要はない。
【００３６】
デバイス関連データ
図２に従い、転送サーバ１３０はデバイス関連データ２１０、送信先デバイス選択基準２２０、及びファイル読出しデータ２３０を記憶する。デバイス関連データ２１０はソースデバイス１１０を送信先デバイス１５０Ａ−Ｃに関連づける。デバイス関連データ２１０は事前ソースデバイス基準で論理的に体系化されることができる。例えば、デバイス関連データ２１０は（例えば、テーブル内の）エントリの組を含み、そこでは各エントリはソースデバイスを１以上の送信先デバイスに関連づける。各エントリは、２つのフィールド、すなわちソースデバイスフィールド及び送信先デバイスフィールドを含む。適切なエントリに対して比較的早いアクセスができるようにするため、ソースデバイスフィールドに基づいてインデックスが作られるようにしてもよい。
【００３７】
２つのデバイス間の関連は、一方向若しくは双方向である。一方向関連の場合、第１のデバイスで作られる或るファイルは自動的に第２のデバイスに転送されるが、第２のデバイスで作られる同じタイプのフィールドは第１のデバイスに自動的に転送されない。双方向関連の場合、第１のデバイスで作られるファイルは第２のデバイスへ、第２のデバイスで作られるファイルは第１のデバイスへ転送される。なお、単一のソースデバイスは幾つかのデバイスとの一方向関連、及び他のデバイスとの双方向関連を有する。
【００３８】
一実施例において、デバイス関連データ２１０内の各エントリは単純に複数のデバイスをあらわす。その結果、適切なソースデバイスに関する識別子を識別するために、各エントリをチェックする必要はない。ソースデバイスの識別子が見つけ出されると、エントリ内の他のデバイス識別子は対応する送信先デバイスを識別するために用いられる。
【００３９】
デバイス関連データ２１０は、ソースデバイス１１０、又はユーザが異なれば送信先デバイス１５０Ａ−Ｃの一つのユーザによって確立される。ユーザは、ソースデバイス１１０又は送信先デバイス１５０Ａ−Ｃ（又は別のデバイス）の一つを操作してデバイス関連データ２１０を確立し、そしてデバイスがデバイス関連データ２１０を転送サーバ１３０に送信されることをもたらす。デバイス関連データ２１０は、任意のデバイスからのユーザ入力に基づきいつでも更新され得る。
【００４０】
或いはまた、ソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃが同じユーザで若しくはオンラインアカウントで登録されているすべてのデバイスであるということを転送サーバ１３０が検出するとき、デバイス関連データ２１０は転送サーバ１３０によって確立される。その結果、ユーザがデバイスを購入した後、ユーザはそのデバイスを転送サーバ１３０又は転送サーバ１３０に関連する別のエンティティで登録する。同一ユーザが複数のデバイスを登録していたこと（又は複数のデバイスが同じアカウントで登録され、そのアカウントが複数のユーザに関連していること）が判明したら、転送サーバ１３０はすべての登録デバイスを互いに関連づけるデータを記憶する。
【００４１】
その結果、ソースデバイスのユーザは、転送サーバ１３０に送信される各ファイルに関し、ファイルを受信するのがどの送信先デバイスであるかを指定する必要がない。その代わり、転送サーバ１３０により、どの送信先デバイスがファイルを受信するかを（例えば、以前にユーザから提供された情報）に基づき決定し、そしてファイルが適切な送信先デバイスに送信されることを保証するように構成されている。
【００４２】
遅れて来た送信先デバイス
上述したように、ファイルはソースデバイス１１０から、当該ソースデバイス１１０に関連する送信先デバイス１５０Ａ−Ｃへと自動的に転送される。この方法で、ファイルがソースデバイス１１０から送信先デバイス１５０Ａ−Ｃへと転送された後、ソースデバイス１１０に関連する送信先デバイスに対して追加的な送信先デバイスを追加することが可能である。
【００４３】
この状況は、例えば、ソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃにすでに関連しているアカウントでユーザが別のコンピュータデバイスを購入し登録するときに生じる。したがって、新たに登録されたデバイスは、すべてのファイルがソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃの何れか一つから今までにアップロードされた全てのファイル、又は或る一定期間（例えば、最後の３０日）アップロードされたすべてのファイルを受信することができる。
【００４４】
この状況は、ユーザがソーシャルネットワーク内で新たな“友人（friend）”を追加し、その友人がソースデバイス１１０の所有者から転送されたファイルを受信することを望むことを指定していたときにも生じる。これらの状況下では、転送サーバ１３０はソースデバイス１１０により転送されていたすべてのファイル、又は特定の一定期間内に転送サーバ１３０により転送されていたすべてのファイルを新たな友人のデバイスに転送することができる。
【００４５】
送信先デバイス選択基準
一実施例において、デバイス関連データ２１０は、所与のソースデバイスに関し、複数の異なる送信先デバイスの組を指し示す。例えば、デバイス関連データ２１０は、（１）ソースデバイス１１０がすべての画像ファイルのための送信先デバイス１５０Ａ−Ｃに関連づけられていること、（２）ソースデバイス１１０が他のタイプのファイルすべてのための送信先デバイス１５０Ａ及び１５０Ｂ（送信先デバイス１５０Ｃではない）に関連づけられていること、を示す。送信先デバイスの適切な組を識別するために、転送サーバ１３０は送信先デバイス選択基準（又は単なる“選択基準２２０”）を用いる。選択基準２２０の非制限的な例として、以下のものを含む。
・時間（例えば、ソースデバイス１１０が転送サーバ１３０にファイルを通知する時、又はファイルが作られる時など）、
・ファイルのタイプ、
・ファイルの著作者又はクリエータ、
・ファイルのコンテンツ（内容）、
・他のデータ（例えば、ソースデバイス１１０から送信され、且つ、（ａ）ファイル若しくは（ｂ）ファイル通知に関するソースデバイス１１０からの送信に関連する、明示的な示唆。
【００４６】
明示的な示唆の一例は、ソースデバイス１１０からの送信に含まれるデバイス識別データであり、そのデバイス識別データは送信先デバイス１５０Ａ及び１５０Ｃ（送信先デバイス１５０Ｂではない）を（直接的又は間接的のいずれかで）識別する。
【００４７】
したがって、特定のファイルは送信先デバイスのどの組に転送されるべきかを指示するために、当該特定のファイルの時間、タイプ、著作者、又はコンテンツが用いられる。更なる例として、午後１０時以降で午前５時前にソースデバイス１１０から送信された任意のファイルは送信先デバイス１５０Ａ及び１５０Ｂに送信される一方で、ジョージ  スミスによって創られたファイルが送信先デバイス１５０Ａに送信されるというようなものがある。
【００４８】
選択基準２２０は、デバイス関連データ２１０の一部として記憶されてもよいし、されなくてもよい。例えば、選択基準２２０はデバイス関連データ２１０内の各エントリに関する別のフィールドに記憶されることができる。別の例としては、選択基準２２０はデバイス関連データ２１０内の各エントリのソースデバイスフィールドに記憶されることができる。したがって、複数のエントリがソースデバイス１１０のために存在しながら、各エントリは異なる選択基準の組を含むことができる。
【００４９】
デバイス関連データ２１０と同様に、選択基準２２０はソースデバイス１１０又は送信先デバイス１５０Ａ−Ｃ（若しくは他のデバイス）の何れかを操作するユーザによって確立されることができる。
【００５０】
未処理ファイル
サードパーティ記憶サービス１４０によって（又は転送サーバ１３０によって）記憶され、且つ各送信先デバイスのすべてに未だ送信されていないファイルは、送信先デバイスに未だ転送されていないことに関して、本明細書では“未処理ファイル”と称される。例えば、ファイルＡ及びファイルＢがサードパーティ記憶サービス１４０に記憶され、送信先デバイス１５０Ａがサードパーティ記憶サービス１４０からファイルＡ及びファイルＢを読出し、送信先デバイス１５０Ｂがサードパーティ記憶サービス１４０からファイルＡ（ファイルＢではない）を読出し、送信先デバイス１５０Ｃがサードパーティ記憶サービス１４０からファイルＡ、ファイルＢのいずれも未だ読出していない。このとき、ファイルＡは送信先デバイス１５０Ｃに関して“未処理ファイル”とされ、ファイルＢは送信先デバイス１５０Ｂ及び１５０Ｃに関して“未処理ファイル”とされる。
【００５１】
送信先デバイスが、或る一定期間、未処理ファイルを通知されなかったことの理由の一つとして、送信先デバイスが転送サーバ１３０と所定のタイプのコネクションを有していないことを挙げることができる。したがって、転送サーバ１３０が送信先デバイスに、その送信先デバイスに関する１以上の未処理ファイルを通知する方法が（少なくとも当該一定期間の間）ない。転送サーバ１３０と送信先デバイスとの間でコネクションが再確立されると、送信先デバイスと比べて遠隔で記憶されその送信先デバイスに向けて宛先指示される１以上のファイルを見つけ出すために、転送サーバ１３０は送信先デバイスに対し、送信先デバイスが転送サーバ１３０にクエリーすべきである通知を送信するよう構成されている。
【００５２】
ファイル読出しデータ
未処理ファイルが適切な送信先デバイスに送信されることを保証するため、転送サーバ１３０は図２に示すファイル読出しデータ２３０内に未処理ファイルについてのデータを保持する。ファイル読出しデータ２３０は１以上の未処理ファイルを１以上の送信先デバイスに関連づける。ファイル読出しデータ２３０は送信先デバイス基準ごとの情報を含むことができる。例えば、ファイル読出しデータ２３０は送信先デバイス１５０ＡをファイルＡ及びＢに関連づけるエントリを含んでいたとしよう。ファイル読出しデータ２３０内にそのエントリが存在することは、送信先デバイス１５０ＡがファイルＡ及びＢに未だ通知（又はファイルＡ及びＢを読出し）していないことを意味する。別の例として、ファイル読出しデータ２３０は送信先デバイス１５０ＢをファイルＡ及びＣに関連づける別のエントリを含んでいたとしよう。ファイル読出しデータ２３０内にそのエントリが存在することは、送信先デバイス１５０ＢがファイルＡ及びＣに未だ通知（又はファイルＡ及びＣを読出し）していないことを意味する。
【００５３】
転送サーバ１３０が、（１）ソースデバイス１１０が特定のファイルを記憶している知らせをソースデバイス１１０から受信すること、及び（２）（例えば、デバイス関連データ２１０を用いて）その特定のファイルを受信することになる１以上の送信先デバイスを識別することに応じて、転送サーバ１３０はファイル読出しデータ２３０に新たなエントリ（又はレコード）を生成することができる。１以上の未処理ファイルを１以上の送信先デバイスに関連づけることに加え、転送サーバ１３０はファイル記憶ロケーションデータを１以上の未処理ファイルに関連づけることも行うことができる。転送サーバ１３０が１以上の未処理ファイルについての１以上の送信先デバイスを通知するとき、その通知はファイル記憶ロケーションデータを含み、サードパーティ記憶サービス１４０を識別する。上記通知は、サードパーティ記憶サービス１４０に関連し、且つ、サードパーティ記憶サービス１４０が１以上のファイルを識別するのに用いるファイル識別データを有するＵＲＬを含むことができる。このアプローチの場合、サードパーティ記憶サービス１４０はファイルＩＤ−記憶ロケーション間マッピングを保持する。サードパーティ記憶サービス１４０は、適切なマッピングを識別するためにファイル識別データを用い、対応するロケーションから１以上のファイルを読出し、そして要求する送信先デバイスにその１以上のファイルを送信する。
【００５４】
追加的又は代替的に、ファイル読出しデータ２３０はソース基準ごとの情報を含むことができる。例えば、各ソースデバイスは、２つの欄（ファイル識別欄とタイムスタンプ欄）を有する“ソース”テーブルに関連づけられる。転送サーバ１３０はソースデバイスから受信した各ファイルに関するソーステーブルに行を追加する。転送サーバ１３０は、受信したファイルの識別子を指し示す行と、ファイルが受信されたタイムスタンプを更新する。送信先デバイスにより、１以上のファイルについての情報に関するリクエストが転送サーバ１３０に送信されるとき、転送サーバ１３０はどのソースデバイスが送信先デバイスに関連しているかを決定し、そして“最後に閲覧された”タイムスタンプに関するリクエストを解析する。最後に閲覧されたタイムスタンプは、最後に閲覧されたタイムスタンプより後のタイムスタンプに関連する各ファイルをソーステーブル内で識別するために用いられる。
【００５５】
ファイル読出しデータ２３０がソース基準ごとの情報を含む実施例の場合、転送サーバ１３０は送信先デバイスを可能性のあるあらゆるソースデバイスに関連づける送信先−ソース間マッピングを保持することができる。送信先−ソース間マッピングは、特定の送信先デバイスに関し、どのファイルが当該特定の送信先デバイスに送信されるべきであるかを決定するためにどのソーステーブルが解析されるべきであるかを判断する上で使用される。
【００５６】
また、ソーステーブルは、対応のファイルがサードパーティ記憶サービス１４０から削除されることになる時、又は少なくとも、対応のファイルを未だ受信していない送信先デバイスがその対応するファイルをもはや受信することができない時を示す期限切れ欄を含むことができる。期限切れ欄の入力によって示される日時が現在の日時に一致するとき、ソーステーブルは更新され、対応する行をソーステーブルから移動したり削除したりする。
【００５７】
あるシナリオでは、幾つかの状況（他の状況ではない）において、送信先デバイスがソースデバイス１１０からファイルを受信するように予約することができる。例えば、送信先デバイス１５０Ｂは、ソースデバイス１１０からすべての画像ファイル（どんな非画像ファイルでもない）を受信するとしよう。ソースデバイス１１０が転送サーバ１３０に非画像ファイルを通知するとき、転送サーバ１３０は送信先デバイス１５０Ｂがその非画像ファイルを受信しないことを保証する必要はない。したがって、一実施例において、ソーステーブルは、ソースデバイス１１０からのファイルを受信するかもしれない各送信先デバイスに対して“受信すべき”欄を含むことができる。この“受信すべき”欄は、送信先デバイスが対応のファイルを受信すべきであるか否かを指し示すものである。これにより、送信先デバイスが１以上のファイルについての情報をリクエストするとき、転送サーバ１３０は、どのソースデバイスが送信先デバイスに関連するかを決定し、そして送信先デバイスが対応のファイルを受信すべきであるか否かを判断するために“受信すべき”欄を分析する。送信先デバイスの“最後に閲覧された”タイムスタンプが対応のファイルのタイムスタンプより前の日時であり、且つ送信先デバイスは対応のファイルを受信すべきであることを“受信すべき”欄が指し示している場合であれば、転送サーバ１３０は対応のファイルについての情報を送信先デバイスに送信する。
【００５８】
転送処理
図３Ａ−Ｂは、本発明の一実施例に従い、転送サーバ１３０を用いてソースデバイス１１０から送信先デバイス１５０Ａ−Ｃへファイルを転送する処理３００を示している。
【００５９】
ステップ３０５で、ソースデバイス１１０は特定のファイルを記憶する。ソースデバイス１１０はその特定のファイルを作成していたかもしれない。或いはまた、ソースデバイス１１０はその特定のファイルを他のデバイス（例えば、カメラ、別のコンピュータデバイス、スマートフォン、ラップトップ又はタブレットなど）から受信してもよい。さらに別の実施例として、ソースデバイス１１０上の或るロケーションから別のロケーションへ特定のファイルをユーザが移動させることによって、又は特定のファイルに特定のタグでタグ付けすることによって、ステップ３０５を引き起こすようにしてもよい。
【００６０】
ステップ３１０で、ソースデバイス１１０は１以上の他のデバイスに自動的に転送されるファイルを有しているという知らせ（indication）を、ソースデバイス１１０はネットワーク１２０を介して転送サーバ１３０へ送信する。この知らせは、メッセージ・トリガー・イベントを検出すると送信されるものであるが、メッセージ・トリガー・イベントの直後には生じないかもしれない。例えば、メッセージ・トリガー・イベントが発生するときにソースデバイス１１０がオフラインであれば、ステップ３１０はソースデバイス１１０がネットワーク１２０に接続する次の時に当該知らせが生じることができる。
【００６１】
或る一実施例では、ステップ３１０においてソースデバイス１１０によって送信される知らせは特定のファイルを含む。しかしながら、処理３００の以下の記載は、ソースデバイス１１０から特定のファイルが送信されない実施例であり、その代わりに、ソースデバイス１１０からサードパーティ記憶サービス１４０へ特定のファイルが送信される。
【００６２】
ステップ３１０で送られる知らせは、特定のファイルを識別する識別データを含むことができる。或いはまた、転送サーバ１３０はその特定のファイルの識別子を生成する。特定ファイルの識別子は１以上の基準に基づくことができ、具体的には例えば、特定ファイルの名前、ソースデバイス１１０の識別（名前など）、特定ファイルが生成された日時、及び／又は転送サーバ１３０で知らせが受信された日時などである。特定ファイルの識別は、ソースデバイス１１０から送信されるすべてのファイルの中で、又はどの転送サーバ１３０がすべてのソースデバイスから通知されるかに関するあらゆるファイルの中で唯一な値を示す。
【００６３】
ソースデバイス１１０における特定ファイルの生成（又は記憶）は、ステップ３１０の実行のトリガーとなる。例えば、ユーザがカメラを備えたスマートフォンを用いてデジタル画像を撮るとする。このスマートフォンで実行されるソフトウェアは、デジタル画像が生成されたことを検出し、そして実行されるべきステップ３１０を生じさせる。
【００６４】
ステップ３１０の実行をもたらす可能性としてあり得る別のトリガーは、ソースデバイス１１０と転送サーバ１３０との間のコネクション確立である。例えば、ソースデバイス１１０は、スマートフォンで写真を撮るときにＷｉ-Ｆｉ信号のエリアに入っていないスマートフォンを利用できるようにするＷｉ-Ｆｉである。スマートフォンがＷｉ-Ｆｉ信号のエリアにあり、コネクションがＷｉ-Ｆｉ能力を使用してメッセージを送るのに十分な強さであるとき、スマートフォンで実行される処理はステップ３１０を開始する。同様な例として、ステップ３１０を実行する前にセル式電話ネットワークからの信号範囲に入るまでスマートフォンは待つことができる。
【００６５】
ステップ３１０の実行をもたらす可能性としてあり得る別のトリガーは、ソースデバイス１１０上の特定のフォルダ、ライブラリー、又は記憶ロケーションにファイルを記憶することである。ソースデバイス１１０のユーザは、ソースデバイス１１０に関連する他のデバイス（例えば、送信先デバイス１５０Ａ−Ｃ）の特定フォルダに記憶される全てのファイルを共有するように指定したとしよう。ファイルがそのファイルに記憶されると、ソースデバイス１１０はファイルの通知を転送サーバ１３０に送信する。
【００６６】
ステップ３１５で、転送サーバ１３０は、ソースデバイス１１０が特定のファイルをどこへ送信すべきであるかを示すファイルロケーションデータをソースデバイス１１０に送る。ファイルロケーションデータはＵＲＬ(Uniform Resource Locator)であってもよく、サードパーティ記憶サービス１４０により保持される記憶媒体内の記憶場所を特定ファイルに関連づけるために用いるデータを含む。その後、サードパーティ記憶サービス１４０が例えば送信先デバイス１５０Ｂから特定ファイルを識別するデータを含むリクエストを受信するとき、サードパーティ記憶サービス１４０はそのデータを使って記憶媒体内で特定ファイルを識別し、その特定ファイルを送信先デバイス１５０Ｂに転送する。
【００６７】
ステップ３２０で、ソースデバイス１１０は、特定ファイルを、ファイルロケーションデータ内で識別されたロケーションへ送信する。例えば、転送サーバ１３０からのファイルロケーションデータがＵＲＬを含む場合、ソースデバイス１１０は、ＵＲＬ、特定ファイル、その特定ファイルを識別する識別データを含むＨＴＴＰ  ＰＯＳＴリクエストを送信する。
【００６８】
ステップ３２５で、サードパーティ記憶サービス１４０は、特定ファイルを記憶し、そして（１）特定ファイルを識別する（ステップ３２０で送信されるような）識別データを、（２）サードパーティ記憶サービス１４０によって保持される固定記憶媒体内のロケーションに一致させるマッピングを管理（維持）する。
【００６９】
ステップ３３０で、転送サーバ１３０はどの送信先デバイスが特定ファイルを通知されるべきであるかを決定する。ソースデバイス１１０が複数の送信先デバイスに関連づけられている場合、転送サーバ１３０はソースデバイス１１０に関連する選択基準２２０を分析し、デバイス関連データ２１０において指示された１以上の送信先デバイスの適当な組を決定する。
【００７０】
ステップ３３５で、転送サーバ１３０は、どのファイルがどの送信先デバイスに行く必要があるかを指し示すデータを記憶する。このステップは、ステップ３３０で識別された各送信先デバイスに関連するファイル読出しデータを更新することによって実行され、これにより、ステップ３１０で識別した特定のファイルをその送信先デバイスが未だ受信していない（又は通知されていない）ことが反映されることになる。例えば、転送サーバ１３０により、特定ファイルが通知されることになる送信先デバイス１５０Ａ−Ｃが決定されると、送信先デバイスがその特定ファイルの通知を未だされていないことを示すために、転送サーバ１３０は各送信先デバイス１５０Ａ−Ｃに関連するファイル読出しデータを更新（又はそのファイル内に新たなエントリを作成）する。１以上の送信先デバイス１５０Ａ−Ｃのそれぞれに関し新たなエントリが既にファイル読出しデータに２３０存在する場合、そのエントリは特定ファイルについてのデータ（例えば、その特定ファイルを一義的に識別する識別子など）を含むように更新することができる。
【００７１】
ステップ３４０で、転送サーバ１３０はステップ３３０で識別した各送信先デバイスへ、１以上のファイルが送信先デバイスによる読出しのために用意が整っているという通知を送信する。例えば、送信先デバイス１５０Ａ−Ｃがステップ３３０で識別された場合、各送信先デバイス１５０Ａ−Ｃは上記通知を受信する。その通知は、ファイル名やタイプやファイルのソースなど、読出すにあたりファイルの詳細に関する情報を含んでいてもよいし、含んでいなくてもよい。通知が読出されるファイルについてのデータを含む場合、その通知はどこに１以上のファイルが位置付けられるかを示すファイルロケーションデータを含むことができる。通知は、サードパーティ記憶サービス１４０に対して、読出されることになる特定ファイルを識別するデータを含むＵＲＬを有することができる。そのデータは、サードパーティ記憶サービス１４０によって記憶される他のファイルのうりその特定ファイルを一義的に識別する１以上の値を含む。
【００７２】
ステップ３４０における通知は、転送サーバ１３０と送信先デバイスとの間に或るタイプのコネクションが確立されたことが決定された後にのみ、送信先デバイスへ送信されるようにすることができる。例えば、転送サーバ１３０と送信先デバイス１５０Ｂとの間にコネクションがない場合、転送サーバ１３０は、通知を送信先デバイス１５０Ｂに送信する前に、送信先デバイス１５０Ｂとのコネクションが再確立するまで待つ。送信先デバイス１５０Ｎと転送サーバ１３０との間にコネクションがない間、転送サーバ１３０は、送信先デバイス１５０Ｂへ送信されるはずのファイルについてソースデバイス１１０（及び／又は他のソースデバイス）から膨大な通知を受信するであろう。これらの通知に応じて、転送サーバ１３０は、送信先デバイス１５０Ｂに向けて宛先指示されるそれらファイルを反映するために、送信先デバイス１５０Ｂに関連するファイル読出しデータを更新する。例えば、転送サーバ１３０は、１以上のファイルをそれぞれに識別する膨大なエントリを生成し、そしてそれらエントリを送信先デバイス１５０Ｂに関連づける。他の例として、転送サーバ１３０は、それらファイルのすべてを識別するデータを、ファイル読出しデータ２３０内の単一エントリに追加する。
【００７３】
特定の送信先デバイスに通知が送信されるか否かの決定の際の他の要因として、転送サーバ１３０上の作業負荷がある。例えば、転送サーバ１３０は、ソースデバイスからの知らせ/通知を処理すたり、他の送信先デバイスとの通信に忙しい。いつ特定の送信先デバイスに知らせるかを決めるにあたり、コネクション・バンド幅、最新の作業負荷、及び／又は他の要因が考慮される。例えば、転送サーバ１３０の全体のコネクション・バンド幅が所定の閾値以下に入っている場合に、転送サーバ１３０は通知を特定の送信先デバイスに送信するだろう。
【００７４】
追加的に或いは代替的に、送信先デバイスのユーザは、転送サーバ１３０がいつ転送できるかを指示した１以上のパラメータを確立することができる。例えば、ユーザは、すべての転送通知が一日の或る時間の間（例えば、午前２時と午前５時の間）に生じるように指定することができる。そのとき、ユーザの送信先デバイスの使用量は所定の閾値よりも下（例えば、５０％ＣＰＵ）であるか、若しくは、送信先デバイスが所定の期間（例えば、３０分）以上アイドル状態のままである。
【００７５】
ステップ３４５で、ステップ３４０で送られた通知が、サードパーティ記憶サービス１４０への特定ファイルを識別するのにどんなデータも使用しない場合、ステップ３４０で通知された各送信先デバイスは、送信先デバイスへ転送されるファイルの識別に関するリクエストを転送サーバ１３０に送信する。
【００７６】
ステップ３５０で、ステップ３４５で受信したリクエストに応じて、転送サーバ１３０は、リクエストしている送信先デバイスが特定ファイルをどこで読出すことができるかを示すファイルロケーションデータを、リクエストしている送信先デバイスに送信する。ファイルロケーションデータは、特定のファイル及びリクエストしている送信先デバイスに転送される他の任意のファイルを識別するデータを含むことができる。ファイルロケーションデータは、サードパーティ記憶サービス１４０に関連づけられ（又は識別する）、且つ、リクエストしている送信先デバイスが特定ファイルを読出すのに使用するＵＲＬを含むことができる。ステップ３５０は、適当なエントリ若しくはファイル読出しデータ２３０内のエントリを探し、そして特定のファイル及びリクエストしている送信先デバイスに送信される他の任意のファイルを識別するデータを特定するために、リクエストしている送信先デバイスの識別を用いる転送サーバ１３０を含むことができる。
【００７７】
ステップ３５５で、転送サーバ１３０は送信先デバイスに関連するファイル読出しデータを更新し、その送信先デバイスが（特定のファイルを含む）１以上のファイルの通知がなされたことを示す。この更新は、送信先デバイスに関連するエントリにおいて、１以上のファイルを識別するデータを削除することを含む。本ステップにおけるファイル読出しデータ２３０の更新は、転送サーバ１３０により（ａ）ステップ３４０における通知、又は（ｂ）ステップ３５０における識別を送信する転送サーバ１３０が行われることに応じて実行される。或いはまた、転送サーバ１３０は、送信先デバイスが（ａ）ステップ３４０における通知、又は（ｂ）ステップ３５０における識別を実際に受信したということを示すデータを、（例えば、送信先デバイスから）受け取ると、送信先デバイスに関連するファイル読出しデータを更新する。或いはまた、転送サーバ１３０は、送信先デバイスが１以上のファイルを首尾良く受信したということを示すデータを、（例えば、サードパーティ記憶サービス１４０から又は送信先デバイスから）受け取ると、送信先デバイスに関連するファイル読出しデータを更新する。特定のファイルを未だ受信していない若しくは通知されていない他の任意の送信先デバイスに関連するファイル読出しデータは、少なくともその特定のファイルに関しては未変更のままである。
【００７８】
関連する実施例において、転送サーバ１３０は、送信先デバイスに関する未処理のファイルに関して或るアクションが実行されたかを転送サーバ１３０が決定するたびごとに、送信先デバイスに関連するファイル読出しデータを更新する。例えば、転送サーバ１３０はファイル読出しデータ２３０内にエントリ（又はレコード）を生成し、そのエントリは送信先デバイス１５０Ｂに関連する。そのエントリにより、転送サーバ１３０がファイルＡを送信先デバイス１５０Ｂに未だ通知していないことが示される。その後、転送サーバ１３０はエントリを更新して、転送サーバ１３０がファイルＡを送信先デバイス１５０Ｂに送信したことを示すようにする。その後、転送サーバ１３０は送信先デバイス１５０Ｂがその通知を受信したことを示すためにエントリを更新する。その後、転送サーバ１３０は送信先デバイス１５０ＢがファイルＡに関するリクエストをサードパーティ記憶サービス１４０に送信したことを示すためにエントリを更新する。その後、転送サーバ１３０は、サードパーティ記憶サービス１４０が送信先デバイス１５０ＢにファイルＡを送信したことを示すためにエントリを更新する。その後、転送サーバ１３０は、送信先デバイス１５０ＢがファイルＡを受信したことを示すためにエントリを更新する。その後、転送サーバ１３０はエントリを削除することができる。
【００７９】
ステップ３６０で、通知を受けた送信先デバイスのそれぞれは、ファイルロケーションデータを用いて、ファイルに関するリクエストを系統立ててサードパーティ記憶サービス１４０へ送信する。例えば、そのリクエストは、ファイルを識別するためにサードパーティ記憶サービス１４０によって用いられる識別データを含むＵＲＬを有するＨＴＴＰ  ＧＥＴリクエストである。
【００８０】
ステップ３６５で、サードパーティ記憶サービス１４０は、送信先デバイスからリクエストを受信することに応じて、リクエスト内で示された１以上のファイル（特定ファイルを含む）を識別し、そしてその１以上のファイルを送信先デバイスに送信する。
【００８１】
ステップ３７０で、特定ファイルを受信する各送信先デバイスは、その特定ファイルを、例えば、当該特定ファイルを処理するよう構成されているアプリケーションにアクセス可能な特別なライブラリの中に記憶する。例えば、特定ファイルがデジタル画像であれば、そのデジタル画像は送信先デバイスにインストールされるフォト管理アプリケーションにアクセス可能な画像ライブラリに記憶することができる。フォト管理アプリケーションは、デジタル画像ライブラリにデジタル画像が記憶されるとき、送信先デバイス上で実行中でもよいし、実行中でなくてもよい。
【００８２】
一実施例において、特定ファイルを受信する送信先デバイス上で実行する処理（例えば、特定ファイルを処理するよう構成されるアプリケーション）は、或るファイルが最近送信先デバイスで受信されたかを示すメッセージを送信先デバイスに表示させるようにする。このようなメッセージにより、送信先デバイスのユーザは新たなファイルが送信先デバイスに追加されたかを直ちに知ることができる。メッセージは短い期間（例えば、送信先デバイスのユーザを現在の仕事の大きな邪魔にならないよう２秒程度など）表示される。メッセージは特定ファイルの名称及び／又は特定ファイルの画像を含むことができる。例えば、特定ファイルがデジタル画像の場合、メッセージはデジタル画像のサムネイル画像及びデジタル画像名を含むことができる。他の例としては、特定ファイルがビデオファイルの場合、メッセージはビデオファイルからのフレームのサムネイル画像を含むことができる。また、特定ファイルがＰＤＦファイルの場合、メッセージはＰＤＦファイルからのページのサムネイル画像を含むことができる。
【００８３】
一実施例において、サードパーティ記憶サービス１４０から特定ファイルを受信する送信先デバイスで実行される処理は、特定ファイルを解析して送信先デバイスのどこにその特定ファイルを記憶するかを決定する。この決定は、特定ファイルのタイプ（例えば、画像、ビデオ、テキストなど）に基づくものであってよい。例えば、特定ファイルが画像ファイルの場合、その処理はデジタル画像のライブラリ内に画像ファイルを記憶し、フォト管理アプリケーションはそこにアクセスするよう構成される。特定ファイルがビデオファイルの場合、その処理はビデオファイルに対するライブラリ内にそのビデオファイルを記憶し、フォト管理アプリケーションはそこにアクセスするよう構成される。
【００８４】
本発明の実施例は図３に示した正確なステップ又はステップの順序に限定されるものではない。例えば、１以上の送信先デバイス１５０Ａ−Ｃが未処理ファイルのために転送サーバ１３０を規則的にポーリングするよう構成されるのであれば、ステップ３４０はオプションである。別の例として、ステップ３３０及び３３５は、ステップ３２５の前、又はステップ３２０の前でも生じうるものである。
【００８５】
ファイルの一時的記憶
一実施例において、ソースデバイス１１０からのファイルは一定の期間、サードパーティ記憶サービス１４０（又は転送サーバ１３０）によって記憶され、その後、ファイルは削除される。その結果、１以上の送信先デバイス１５０Ａ−Ｃ（すなわち、それらファイルを受信するものと思われていたデバイス）が未だファイルを受信していないとしても、もはや送信先デバイス１５０Ａ−Ｃにアクセスすることができない。言い換えると、一定の期間経過後は、未だファイルを読出ししていない送信先デバイスは、送信先デバイスが適当なリクエストをサードパーティ記憶サービス１４０（又は転送サーバ１３０）に送信する場合であっても、そのファイルを読出すことができなくなるであろう。
【００８６】
１以上の削除基準に基づき、ファイルごとに一定時間は変えてもよい。例えば、ソースデバイス１１０からの或るファイルに関する一定期間が３０日であるのに対して、（ソースデバイス１１０又は別のソースデバイスからの）他のファイルに関連する一定期間は１０日であるというように。削除基準の非制限的例には、ファイルのタイプ、ファイルの著作者、ファイルのサイズ、画像ファイルの画像内で識別される人々、特定のソースデバイス、及びファイルに関連するデバイス関連データに示されるデバイスなどを含む。例えば、ソースデバイス１１０から送信される未処理の画像ファイルすべてが３０日間の記憶後に削除される。別の例としては、ソースデバイス１１０から送信される未処理の画像ファイルすべてが削除されない（つまり、画像でないファイルが削除された後では一定期間は存在しないこと）。言い換えると、画像でないファイルは無制限に記憶されるが、画像ファイルは一定期間経過後には送信先デバイスに対してアクセス不可能になるということである。別の例としては、ソースデバイス１１０から送信される未処理の画像ファイルすべてが２０日間後に削除される一方で、別のソースデバイスから送信される未処理の画像ファイルすべては３０日間後に削除される。さらに別の例として、送信先デバイス１５０Ａに関する未処理の画像ファイルすべてが２０日間後に削除される一方で、送信先デバイス１５０Ｂに関する未処理の画像ファイルすべては５日間後に削除される。
【００８７】
ファイルがサードパーティ記憶サービス１４０に記憶されてから一定期間が経過した後に、サードパーティ記憶サービス１４０はそのファイルを自動的に削除するよう構成することができる。一定期間はサードパーティ記憶サービス１４０で予め、すなわちサードパーティ記憶サービス１４０でファイルを受信する前に、設定（プリセット）しておいてもよいし、或いは、例えば、ソースデバイス１１０の送信に付随したデータにおいて示すように構成してもよい。その結果、ファイルに関連する一定期間は転送サーバ１３０又はソースデバイス１１０により確立され、そしてサードパーティ記憶サービス１４０によって実施される。例えば、転送サーバ１３０は削除時間データをサードパーティ記憶サービス１４０に送信し、サードパーティ記憶サービス１４０はこの削除時間データに基づき特定ファイルをいつ削除するかを決定する。或いはまた、転送サーバ１３０は、サードパーティ記憶サービス１４０がファイルを直ちに削除することを示す指令をサードパーティ記憶サービス１４０に送信する。このような方法の場合、サードパーティ記憶サービス１４０は、ファイルをいつ削除すべきか（そうでなければ、送信先デバイスに対するアクセスをできないようにする）の追跡を維持しておくことが要求されない。
【００８８】
一実施例において、転送サーバ１３０はサードパーティ記憶サービス１４０によって記憶される１以上のファイルに関して削除時間データを記憶する。削除時間データは、１以上のファイルのそれぞれについて、そのファイルが送信先デバイスにもはやアクセスできない時間をあらわしている。削除時間データは、送信先デバイス１５０Ａ−Ｃに関連するファイル読出しデータ２３０内に記憶するようにできる。例えば、ファイル読出しデータ２３０内の各エントリは特定の送信先デバイスに関する未処理ファイルを示す。エントリは、対応するファイルがアクセスできないようにされる（例えば、削除される等）日にち、そしてオプションとして時間である削除時間データを含む。
【００８９】
一実施例において、転送サーバ１３０は、送信先デバイスが（当該送信先デバイスに関する）未処理ファイルを未だ受信していなかったか否かの通知をソースデバイスに送信する。例えば、転送サーバ１３０はファイル読出しデータ２３０内の削除時間データを分析し、対応するファイルに関連した一定期間がまさに期限切れ（例えば、１〜２日のうちに）となるかを決定する。もしそうであれば、転送サーバ１３０はファイルが送信先デバイスによって受信されていなかったことをソースデバイス１１０（ファイルの発信元）に通知する（ソースデバイスの識別において手助けとなるよう、ファイル読出しデータ２３０は未処理ファイルに関し、どのソースデバイスが未処理ファイルを送信したかを示すソースデバイスデータを含んでいる）。例えば、ソースデバイス１１０は、ユーザが送信先デバイスの電源をＯＮしたり、送信先デバイスと転送サーバ１３０間のコネクション（接続）が確立するようにＷｉ-Ｆｉ若しくはセルラー信号の受信エリアに移動する必要があるかを決定する。コネクション（接続）が確立した後で、送信先デバイスはファイルを受信するために、ファイルに関する情報のリクエストを転送サーバ１３０に送信する。このリクエストは、送信先デバイスの１以上の未処理ファイルに関して転送サーバ１３０と連絡するために、転送サーバ１３０からのメッセージに応答して送信される。
【００９０】
上述したように、デバイス関連データ２１０は他の送信先デバイスを示すよう修正され得る。例えば、ソースデバイス１１０及び送信先デバイス１５０Ａ−Ｃを所有するユーザは、別の送信先デバイスを購入し、ユーザのアカウントにその送信先デバイスを登録する。新たな送信先デバイスの登録により、デバイス関連データ２１０はソースデバイス１１０、送信先デバイス１５０Ａ−Ｃ、及び新たな送信先デバイスのすべてが互いに関連していることを反映するように更新される。送信先デバイス１５０Ａ−Ｃが未処理のファイルについて転送サーバ１３０が通知していた場合、新たな送信先デバイスはその未処理のファイルが通知される。例えば、未処理ファイルＡが３０日間送信先デバイス１５０Ａ−Ｃによってアクセス可能であり、新たな送信先デバイスがその３０日期間に５日の関連を追加した場合、未処理ファイルＡは２５日間、新たな送信先デバイスによってアクセス可能である。転送サーバ１３０は、（例えば、デバイス関連データ２１０が更新後の関連を反映するために更新されるやいなや）新たな送信先デバイスに未処理ファイルＡを通知する。
【００９１】
ファイルの属性に基づく転送
一実施例において、どの送信先デバイスにファイルを送信するかを決定するために１以上のファイル属性が使用される。ファイル属性の一例は、送信先デバイスの選択基準２２０である。さらに、他のデバイス選択基準２２０を用いて特定の組の送信先デバイスを決定しながら、（ファイル内容を含む）１以上のファイル属性を、その特定の組の送信先デバイスの狭義のサブセットを識別するのに用いることができる。
【００９２】
ファイル属性の非制限的な例として、ファイルのタイプ、ファイルのサイズ、ファイルがどこで作られたか（例えば、写真を撮ったり/生成した地理的な場所など）、ファイルが特定のデータを含んでいるか否か（例えば、ファイルは、“Geronimo”という語を含むテキストファイル等である）、特定の人若しくは物体の画像がファイル内で検出され認識されたか否か（例えば、検出/認識された場合、そのファイルは画像ファイルである）。
【００９３】
例えば、ソースデバイス１１０から送信されるどんな画像ファイルも送信先デバイス１５０Ａと１５０Ｃのみに送信される一方で、ソースデバイス１１０から送信されるどんなビデオファイルも送信先デバイス１５０Ａへのみ送信される。別の例として、“Grandma Jane”の画像が削除された画像ファイルは送信先デバイス１５０Ｂにのみ送信される一方で、他のすべてのファイルは送信先デバイス１５０Ａ−Ｃのそれぞれに送信される。
【００９４】
別の例として、ソースデバイス１１０は、Ａさんの顔とＢさんの顔に関する第１の写真を有しているとしよう。この第１の写真が通知されたことを受けて、転送サーバ１３０は、第１の写真がＡさんのデバイス及びＢさんのデバイスに転送されるようにする。その後、ソースデバイス１１０はＢさんの顔及びＣさんの顔に関する第２の写真を有するとする。この第２の写真が通知されたことを受けて、転送サーバ１３０は、第２の写真がＢさんのデバイス及びＣさんのデバイスに転送されるようにする。
【００９５】
一実施例において、多くのソースデバイスが或るファイルを特定の記憶場所に送信されるよう構成することができる。例えば、野球チームの少年の母親のカメラは、特定の野球場で撮った写真を、そのチームのウェブサイトに関連する記憶場所へ自動的に転送するよう構成される。その結果、特定の野球場でそのカメラで撮ったどんな写真もサードパーティ記憶サービス１４０に転送され、結局はその記憶場所に転送されることになる。この方法では、写真を撮った後にチームのウェブサイトにアクセスするユーザはその写真を閲覧することができる。
【００９６】
別の例として、Georgeがパーティを開催し、パーティ会場で大きなディスプレイにスライドショーを進行させているとする。Georgeは、ディスプレイに接続された特定のデバイスの識別についてあらゆるパーティ出席者に通知する。パーティ中、パーティ会場の付近で撮られたすべての写真がその特定デバイスに転送され、パーティで進行されているスライドショーに自動的に追加される。
【００９７】
ソースデバイス１１０から転送サーバ１３０へ送信される属性データにおいて、１以上の属性がファイル通知の一部として認識されるようにできる（図３のステップ３１０参照のこと）。例えば、ソースデバイス１１０から転送サーバ１３０への通知は、ファイルのタイプ、ファイルのサイズ、及び／又は画像がファイル内で検出された人の識別を教示する。或いはまた、転送サーバ１３０がファイルを受信する場合、転送サーバ１３０は１以上のファイル属性を用いて、ファイルが通知される１以上の送信先デバイスの組を決定する。
【００９８】
ファイルの転送バージョン
一実施例において、ソースデバイス１１０は、サードパーティ記憶サービス１４０（転送サーバ１３０）へ２つのバージョンのファイルを送信する。例えば、ソースデバイス１１０からの１つのバージョンの画像ファイルが第１の解像度をもち、別のバージョンの画像ファイルが第１の解像度よりも低い第２の解像度をもっている。別の例としてはソースデバイス１１０からのワード処理ファイルが第１のフォーマット（例えば、.doc）で作成され、そのファイルの別のバージョンが第１のフォーマットとは区別される第２のフォーマット（例えば、.txt）で作成されている。転送サーバ１３０は、宛先が片方又は両方のバージョンであるとして送信先デバイス１５０Ａ−Ｃを識別する。その結果、送信先デバイス１５０Ａが或るバージョンのファイルを受信し、送信先デバイス１５０Ｂ及び１５０Ｃが別のバージョンのファイルを受信する。
【００９９】
或るデバイスに送信される或るバージョンのファイルと、別のデバイスに送信されるその別のバージョンのファイルを生じされることは、例えば、送信先デバイスの能力に応じて、バージョンが適切なデバイスに送信されるようにできる。例えば、送信先デバイス１５０Ａが比較的大きなディスプレイ画面（例えば、１８インチスクリーン）をもつラップトップコンピュータである一方で、送信先デバイス１５０Ｂは比較的小さなディスプレイ画面（例えば、４インチスクリーン）をもつスマートフォンである。高解像度バージョンの画像よりも低解像度バージョンの画像は、スマートフォンにおける小さなスクリーンサイズによく適している。
【０１００】
一実施例において、ソースデバイス１１０は第２のバージョンのファイル（ファイルは“第１のバージョン”である）を生成する。ソースデバイス１１０は、ネットワーク２００を介して、第１のバージョンのファイルのみ、又は第１のバージョンファイルと第２のバージョンファイルの両方を送信する。或いはまた、転送サーバ１３０などの他のエンティティが第１のバージョンのファイルから第２のバージョンのファイルを生成する。
【０１０１】
一実施例において、転送サーバ１３０は、送信先デバイスに関連するバージョンデータに基づき、どの送信先デバイスがバージョンを受信するかを決定する。１以上の送信先デバイスに関し、バージョンデータは、どの送信先デバイスが特定のバージョンのファイルを受信するかを示している。例えば、送信先デバイス１５０Ａに関連するバージョンデータは、送信先デバイス１５０Ａがソースデバイス１１０から送信される高解像度の画像を受信する一方で、送信先デバイス１５０Ｂに関連するバージョンデータは、送信先デバイス１５０Ｂが低解像度の画像を受信するということを指し示す。
【０１０２】
進行中のスライドショーに写真を転送する
一実施例において、送信先デバイス１５０Ａ−Ｃの一つは画像のスライドショーを表示するデバイスであり、そのとき、そのデバイスはサードパーティ記憶サービス１４０（又は転送サーバ１３０）から画像ファイルを読出す。画像ファイルを受信すると、送信先デバイスはスライドショーにその画像ファイルを含むように更新する。例えば、送信先デバイス１５０Ａは、１以上のファイルについての通知を転送サーバ１３０から受信するとき、３秒毎に１００個のデジタル画像のスライドショーの中から異なるデジタル画像を表示する。
【０１０３】
スライドショーを表示しながら、送信先デバイス１５０Ａは、（１）１以上のファイルについてのリクエストをサードパーティ記憶サービス１４０に送信する、（２）その１以上のファイルをサードパーティ記憶サービス１４０から受信する、（３）スライドショーがその１以上のファイルからのデジタル画像を含むように更新する。送信先デバイス１５０Ａは、デジタル画像を受信するやいなや、そのデジタル画像が表示されるように構成されるようにすることができる。或いはまた、送信先デバイス１５０Ａは、スライドショー内の他のデジタル画像の表示順の或る位置にそのデジタル画像を含むように構成することができる。表示順は、各デジタル画像に関連するタイムスタンプや、他の基準（例えば、ソースデバイスや、デジタル画像コンテンツの地理的ロケーション若しくは他の特徴など）に基づくことができる。
【０１０４】
ハードウェア概観
一実施例によれば、ここで述べる技術は１以上の特定目的用のコンピュータデバイスによって実装される。特定目的用のコンピュータデバイスは本技術を実行するために配線で接続されたり、又は１以上の特定用途向け集積回路（ＡＳＩＣ）や本技術を実行するよう固定的にプログラムされるフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのデジタル電子デバイスを含む。或いは、ファームウェア、メモリ、若しくはこれらの組み合わせにあるプログラム命令に従い本技術を実行するようプログラムされた１以上の汎用目的ハードウェアプロセッサを含むことができる。特定用途向け集積回路は、カスタム配線ロジック、ＡＳＩＣ、若しくはＦＰＧＡを、本技術を達成するためのカスタムプログラミングを組み合わせることもできる。汎用目的コンピュータデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯型デバイス、ネットワーキングデバイス、又は本技術を実行する配線接続及び／又はプログラムロジックを組み込んだ他の任意のデバイスである。
【０１０５】
例えば、図４は、コンピュータシステム４００を示したブロック図であり、これにより本発明の実施例が実行される。コンピュータシステム４００は、バス４０２又は情報を通信する他の通信メカニズム、及びバス４０２と接続する情報処理用ハードウェアプロセッサ４０４を含む。ハードウェアプロセッサ４０４は、例えば、汎用目的マイクロプロセッサである。
【０１０６】
コンピュータシステム４００は、ランダムアクセスメモリ（ＲＡＭ）などのメインメモリ４０６、又は情報及びプロセッサ４０４で実行される命令を記憶するためにバス４０２と接続された他のダイナミック記憶デバイスも含む。また、メインメモリ４０６は、プロセッサ404により実行される命令の演算中に一時変数若しくは他の中間情報を記憶するために用いられる。このような命令は、プロセッサ４０４にアクセス可能な持続性記憶媒体に記憶されるとき、コンピュータシステム４００を、命令で特定されたオペレーションを実行するようにカスタマイズされた特定用途マシーンにする。
【０１０７】
コンピュータシステム４００は、さらに、リードオンリーメモリ（ＲＯＭ）４０８又は静的情報及びプロセッサ４０４用の命令を記憶するためにバス４０２に結合された他のスタティック記憶デバイスを含む。磁気ディスク又は光ディスクなどの記憶デバイス４１０は、情報及び命令を記憶するために提供され、バス４０２に接続される。
【０１０８】
コンピュータシステム４００は、コンピュータユーザに対して情報を表示するため、バス４０２を介して、ブラウン管（ＣＲＴ）などのディスプレイ４１２と接続されている。アルファベット及び他のキーを含む入力デバイス４１４は、プロセッサ４０４と情報及びコマンド選択をやりとりするためにバス４０２に接続している。ユーザの入力デバイスの他のタイプとしてはカーソルコントロール４１６であり、例えば、マウス、トラックボール、送信先情報及びコマンド選択をプロセッサ４０４とやりとりしてディスプレイ４１２上でカーソルの動きを制御するためのカーソル矢印キーがある。この入力デバイスは、典型的には、２軸上で２自由度、すなわち第１軸（例えば、Ｘ）と第２軸（例えば、Ｙ）をもち、当該入力デバイスが平面上の位置を特定できるようにする。
【０１０９】
カスタマイズされた配線接続のロジック、１以上のＡＳＩＣ若しくはＦＰＧＡ、コンピュータシステム４００と一緒になって生じさせるファームウェア及び／又はプログラムロジック、又は汎用目的のマシーンとなるプログラムコンピュータシステム４００を用いながら、コンピュータシステム４００はここで述べた技術を実装することができる。一実施例によれば、ここで述べた技術は、メインメモリ４０６に含まれる１以上の命令の１以上のシーケンスをプロセッサ４０４が実行することに呼応して、コンピュータシステム４００によって実行される。このような命令は、記憶デバイス４１０などの記憶媒体からメインメモリ４０６へと読出される。メインメモリ４０６に含まれる命令のシーケンスを実行することにより、プロセッサ４０４はここで述べる処理ステップを実行する。別の実施例においては、配線接続された回路がソフトウェア命令に代わり、若しくはソフトウェア命令と組み合わせて使用される。
【０１１０】
“記憶媒体”という用語は、ここでは、マシーンが特定の様式でオペレーションするような命令及び／又はデータを記憶する任意の固定的媒体を指す。このような記憶媒体は、不揮発性及び／又は揮発性媒体を含むことができる。不揮発性媒体は、例えば、記憶デバイス４１０などの光ディスクや磁気ディスクを含む。揮発性媒体は、メインメモリ４０６などのダイナミックメモリを含む。通常の形式の記憶媒体は、例えば、フロッピー（Ｒ）ディスク、フレキシブルディスク、ハードディスク、固定ドライブ、磁気テープ、他の任意の磁気データ記憶媒体、ＣＤ−ＲＯＭ、他の任意の光データ記憶媒体、ホールパターンを有する任意の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、他の任意のチップ若しくはカートリッジを含む。
【０１１１】
記憶媒体ごとに形式は異なるが、どれも伝送媒体と一緒に用いられる。伝送媒体は、記憶媒体間で情報を送信することに参加する。例えば、伝送媒体は、同軸ケーブル、銅線、及び光ファイバー、バス４０２を含む線、を含む。また、伝送媒体は、電波及び赤外線通信の間に生成される音響波又は光波の形式をとり得る。
【０１１２】
様々な形式の媒体が、実行プロセッサ４０４に対して、１以上の命令の１以上のシーケンスを伝搬することに関係し得る。例えば、当初、リモートコンピュータの磁気ディスク又は固定状態ドライブ上に命令が運ばれる。リモートコンピュータは、そのダイナミックメモリ内に命令をロードし、モデムを使って電話線上に命令を送信する。コンピュータシステム４００に対してローカルなモデムは、その電話線上のデータを受信し、赤外線送信機を使ってデータを赤外線信号に変換する。赤外線検出器は赤外線信号で運ばれてきたデータを受信し、そして適当な回路によってバス４０２上にデータを置くことができる。バス４０２は、メインメモリ４０６にデータを運搬し、そこからプロセッサ４０４は命令を読出して実行する。メインメモリ４０６により受信された命令は、オプション的に、プロセッサ４０４による実行の前又は後のいずれかに、記憶デバイス４１０上に記憶されることができる。
【０１１３】
また、コンピュータシステム４００は、バス４０２に接続された通信インタフェース４１８を含む。通信インタフェース４１８は、ローカルね４２２に接続されるネットワークリンク４２０へつながる双方向送信する通信を提供する。例えば、通信インタフェース４１８は、総合デジタル通信網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、又は電話線の対応するタイプに対してデータ通信コネクションを提供するモデムである。別の例としては、通信インタフェース４１８は、互換性のあるＬＡＮにデータ通信コネクションを提供するローカルエリアネットワーク（ＬＡＮ）カードである。無線リンクもまた実装され得る。このような実装において、通信インタフェース４１８は、様々なタイプの情報をあらわすデジタルデータストリームを運搬する電気、電磁気、又は光信号を送受信する。
【０１１４】
ネットワークリンク４２０は、典型的には、１以上のネットワークを介して他のデータデバイスに対してデータ通信を提供する。例えば、ネットワークリンク４２０は、ローカルネットワーク４２２を介してホストコンピュータ４２４若しくはインターネットサービスプロバイダー（ＩＰＳ）４２６により操作されるデータ設備に至るコネクションを提供する。ＩＳＰ４２６は、今度は、今では“インターネット”と呼ばれているワールドワイドのパケットデータ通信ネットワークを介したデータ通信サービスを提供する。ローカルネットワーク４２２及びインターネット４２８は、共に、デジタル送信するストリームを運搬する電気、電磁気、又は光信号を用いる。様々なネットワークを介した信号、並びにネットワークリンク４２０上及び通信インタフェース４１８を介した信号は、コンピュータシステム４００へ及びコンピュータシステム４００からデジタルデータを運搬するのであるが、伝送媒体の形式の一例である。
【０１１５】
コンピュータシステム４００は、１以上のネットワーク、ネットワークリンク４２０、通信インタフェース４１８を介して、メッセージを送信したりプログラムコードを含むデータを受信する。インターネットの例の場合、サーバ４３０は、アプリケーションプログラムのためのリクエストされたコードを、インターネット４２８、ＩＳＰ４２６、ローカルネットワーク４２２、及び通信インタフェース４１８を介して送信する。
【０１１６】
受信されたコードは、それが受信されたときにプロセッサ４０４によって実行されたり、及び／又は記憶デバイス４１０若しくは後の実行のために不揮発性媒体に記憶されたりする。
【０１１７】
上述したように、本発明の実施例はあらゆる実装に対応し得る多くの特定の詳細を参照して説明されてきた。本明細書及び図面は、制限的に用いられるのはなく、例示としてみなされるものである。本発明の範囲の完全及び排他的な意味合い、そして本願出願人が本発明の範囲をどのように規定するかは、特許請求の範囲及びその均等の範囲に記載されている。
【図１】
0005559251.tif 000002
【図２】
0005559251.tif 000003
【図３Ａ】
0005559251.tif 000004
【図３Ｂ】
0005559251.tif 000005
【図４】
0005559251.tif 000006