(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の方法であって、前記要求は、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの前記識別子のセットを含み、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの前記識別子のセットを決定することは、前記要求における前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの前記識別子のセットに少なくとも部分的に基づく、方法。
コンピューティングデバイスによって実行されると、請求項1乃至7の何れか1項に記載の方法を前記コンピューティングデバイスに実行させる命令を格納した1以上のコンピュータで読取可能な記憶媒体。
請求項9に記載のコンピューティングデバイスであって、前記要求は、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの前記識別子のセットを含み、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの前記識別子のセットを決定することは、前記要求において前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの前記識別子のセットに、少なくとも部分的に基づく、コンピューティングデバイス。
請求項9に記載のコンピューティングデバイスであって、前記要求は、前記コンテンツアイテムが属するコンテンツアイテムネームスペースの識別子を含み、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのセットの識別子のセットを決定することは、前記要求における前記コンテンツアイテムネームスペースの前記識別子に少なくとも部分的に基づく、コンピューティングデバイス。
【発明を実施するための形態】
【0007】
以下の詳細な説明において、本発明の実施形態の十分な理解を提供するために、説明の目的で多くの特定事例を記載する。しかしながら、本例示の実施形態がそれらの特定事例なしで実行されうるということが明らかであろう。他の例では、本例示の実施形態を不必要に不明りょうにすることを避けるために、既知の構成やデバイスがブロック図の形式で示される。
【0008】
<ホストされたコンテンツアイテムに対する見かけ上のクラウドアクセスの概要>
クラウドにおいてホストされたコンテンツアイテムへの見かけ上のアクセスに対する、コンピュータ実装の技術を開示する。当該技術に従って、オンラインコンテンツ管理システムにより提供されたブロックエージェントがクライアント(例えば、パーソナルコンピューティングデバイス)にインストールされる。オンラインコンテンツ管理システムは、ウェブサーバおよびブロックサーバを有するオンラインコンテンツ管理システムを運用する。クライアントで動作する従来のユーザエージェント(例えば、従来のウェブブラウザアプリケーション)は、ウェブサーバからウェブページを検索する。ウェブページは、オンラインコンテンツ管理システムでホストされる1つ以上のコンテンツに対する1つ以上のリンクを含む。各リンクは、コンテンツアイテムのうち対応するものへのコンテンツアイテムアクセスアクションを行うために、ユーザによりアクティベートされうる。
【0009】
本技術に従うと、1つのリンクがアクティベートされると、ユーザエージェントは、ブロックエージェント要求を、クライアントにおけるブロックエージェントに対して行う。ブロックエージェント要求は、アクティベートされたリンクに関連付けられたコンテンツアイテムに対するものである。ブロックエージェント要求を受信することに応じて、ブロックエージェントは、要求されたコンテンツアイテムを作り出す1つ以上のコンテンツアイテムブロックの1つ以上のコンテンツアイテムブロック識別子を決定する。1つ以上のブロック識別子を用いて、ブロックエージェントは、もしあれば、1つ以上のブロックのうち、どれが、クライアントにおいて既に記憶されているか、および、もしあれば、オンラインコンテンツ管理システムのブロックサーバからダウンロードされる必要があるかを判定する。ブロックエージェントは、ユーザエージェントからのブロックエージェント要求に対して、ブロックエージェント応答を返す。ブロックエージェント応答は、クライアントに既に記憶されている、要求されたコンテンツアイテムのいずれかのブロックまたは複数のブロック、または、ブロックサーバからダウンロードされる必要がある、要求されたコンテンツアイテムのいずれかのブロックまたは複数のブロックに基づきうる。ユーザエージェントのユーザには、アクセスされたコンテンツアイテムはオンラインコンテンツ管理システムから全体にダウンロードされると見えるかもしれない。しかしながら、実際には、コンテンツアイテムのいくつか、または全ては、クライアントにローカルに記憶されるブロックに基づいて、ブロックエージェントにより提供され得る。これは、オンラインコンテンツ管理システムからネットワークを介して全体のコンテンツアイテムをダウンロードする必要があることとは対照的である。このようにして、ブロックエージェントがユーザエージェントからブロックエージェント要求を受信した際に、コンテンツアイテムを構成する(make up)ブロックのいくつか、または全てがすでにクライアントに記憶されているならば、オンラインコンテンツ管理システムでホストされるコンテンツアイテムの全体を、ブロックエージェントを介して、より速くユーザに提供することができる。
【0010】
本技術を、図面を参照して以下により詳細に説明する。
【0011】
<オンラインコンテンツ管理システムの環境>
図1は、本発明の様々な実施の形態に従うオンラインコンテンツ管理システムの環境100を示す。環境100は、オンラインコンテンツ管理システム104のクライアント102の人間のユーザ108を含む。クライアント102とオンラインコンテンツ管理システム104は、ネットワーク104により接続される。クライアント102は、ユーザエージェント110、ブロックエージェント114、および、ローカルストレージ116とを有する。オプション的に、クライアント102は、クライアント102とオンラインコンテンツ管理システム104との間のコンテンツアイテムの同期を容易にするために、コンテンツアイテム同期エージェント112を有し得る。オンラインコンテンツ管理システム104は、ウェブサーバ122とブロックサーバ124とを有する。オプション的に、オンラインコンテンツ管理システム104は、クライアント102とオンラインコンテンツ管理システム104との間のコンテンツアイテムの同期を容易にするために、通知サーバ118とメタデータサーバ120とを有する。
【0012】
<クライアント>
クライアント102は、固定的またはモバイルのパーソナルコンピューティングであり得る。例えば、パーソナルコンピュータ、デスクトップコンピュータ、ワークステーションコンピュータ、携帯電話、タブレットコンピュータ、ゲーミングコンソール、セットアップデバイス、またはコンピューティングデバイス等の他のものである。
図1に示す構成要素に加えて、クライアント102は、例えば、以下に説明する
図4のベーシックコンピューティングデバイス400のハードウェア構成要素および以下に説明する
図5のソフトウェアシステム500等の他の構成要素を伴って構成され得る。
【0013】
クライアント102は、ネットワーク106を介してオンラインコンテンツ管理システム104と接続および通信を行うためのネットワーク機能を有する。そのようなネットワーク機能は、例えば、ハイパーテキスト転送プロトコル(HTTP)またはハイパーテキスト転送プロトコルセキュア(HTTPS)等のアプリケーションレイヤープロトコルに従ってクライアント103とオンラインコンテンツ管理システム104との間のネットワーク通信をサポートするオンラインコンテンツ管理システム104へインターネットプロトコル(IP)パケットを送信および当該オンラインコンテンツ管理システム104から受信するための機能を含みうる。
【0014】
クライアント102は、ローカルストレージ116も有する。ローカルストレージ116は、物理ホストインタフェース(シリアル接続SCSI、シリアルATA、PCI Express、ファイバーチャネル、USBなど)によってクライアント102のバスへ接続される電子、磁気又は光学のデータストレージ機構であってもよい。例えば、データストレージ機構は、パーソナルコンピューティングデバイスのハードディスク、半導体ドライブ、又は光学ドライブであってもよい。代替的に、ローカルストレージ116は、クライアント102上に“マウントされた”ローカルエリアネットワーク(LAN)上の例えばネットワークデータストレージデバイスなどのネットワークドライブであってもよい。ネットワークドライブをマウントすることによって、ネットワークドライブに格納されたデータは、ネットワークドライブがクライアント102から離れてネットワークを介して物理的に配置される場合であっても、ユーザ108や、クライアント102上で実行するアプリケーション(例えば、ユーザエージェント110とブロックエージェント114)には、クライアント(すなわち、デバイスの物理的なドライブ上)に格納されるように見えるようになる。一度マウントされると、クライアント102は、通常、UNIX用のネットワークファイルシステムプロトコル(NFS)又はWINDOWS用のサーバメッセージブロック(SMB)などのネットワークファイルシステムブロックに従ってネットワークドライブからデータを読み出し、ネットワークドライブへデータを書き込む。
【0015】
<ユーザエージェント>
クライアント102は、ユーザエージェント110で構成される。ユーザエージェント110は、従来のウェブブラウザアプリケーション、例えば、GOOGLE CHROME、FIREFOX、SAFARI、INTERNET EXPLORER、OPERA, ANDROID BROWSER、または、当業者によく知られている、現在利用可能または将来開発される他のウェブブラウザアプリケーション、でありうる。代替的に、ユーザエージェント110は、APPLE IOSベース、または、GOOGLE ANDROIDベースのモバイルコンピューティングデバイスに対するモバイルアプリケーション等の個別クライアントアプリケーションであり得る。
【0016】
動作中に、ユーザ108は、オンラインコンテンツ管理システム104のウェブサーバ122からウェブページを取得するために、ユーザエージェント110を使用する。例えば、ユーザ108は、ユーザエージェント110のアドレスバーに、ウェブページのアドレスを入力するか、クライアント102のビデオディスプレイに表示されたウェブページへハイパーリンクをアクティベートしうる。ウェブページは、HTTPまたはHTTPSプロトコルに従って、ネットワーク106を介して、ウェブサーバ122からクライアント102へ提供されるウェブページのインストラクションから構成されうる。ウェブページのインストラクションは、1つ以上の異なる種類の、ウェブの規格ベースのインストラクションの組み合わせで構成されうる。例えば、ウェブページのインストラクションは、ハイパーテキストマークアップ言語(HTML)、階層式スタイルシート(CSS)、ジャバスクリプト、ジャバスクリプトオブジェクトノーテーション(JSON)、拡張可能マークアップ言語(XML)、または、当業者にはよく知られている、現在知られているまたは将来開発される他の種類のウェブ規格ベースのインストレクションのうちの1つ以上の組み合わせから構成されうる。
【0017】
ユーザエージェント110により処理され、クライアント102のビデオディスプレイ上に表わせられる場合に、ウェブページは、オンラインコンテンツ管理システム104で保持されるユーザ108のユーザカウントに関連付けられた1つ以上のコンテンツアイテムのリストを提供する。「コンテンツアイテム」は、オンラインコンテンツ管理システム104の管理下のデジタル情報の論理的なコレクションとして定義されうる。クライアント102のローカルストレージ116に格納される場合、コンテンツアイテムは、ファイルシステムにおけるファイルとして格納されうる。したがって、コンテンツアイテムは、既知のファイルタイプに対応しうる。例えば、コンテンツアイテムは、ドキュメントファイルのタイプ(例えば、ワード処理ドキュメント、プレゼンテーションドキュメント、スプレッドシートドキュメント、又は他のタイプのドキュメント)、画像ファイルのタイプ(例えば、.jpg、.tiff、.gif、又は他のタイプの画像ファイル)、音声ファイルのタイプ(例えば、.mp3、.aiff、.mp4、wav、又は他のタイプの音声ファイル)、ビデオファイルのタイプ(例えば、.mov、.mp4、.m4v、又は他のタイプのビデオファイル)、ウェブページファイルのタイプ(例えば、.htm、.html、又は他のタイプのウェブページファイル)、テキストファイル又はリッチテキストファイルのタイプ(例えば、.txt、.rtf、又は他のタイプのテキスト若しくはリッチテキストファイル)、又は他のタイプのファイルであってもよい。ローカルストレージ116に格納されると、コンテンツアイテムは、ファイルシステムのファイル−フォルダ階層内のファイルシステムパスを有しうる。例えば、ローカルストレージに格納されるコンテンツアイテムについてのファイルシステムパスは、文字列として “C:\folder1\folder2\my.file”で表され、ここで、“C:\” は、ファイルシステムのルートを示し、“folder1” はファイルシステムのルートでのファイルシステムフォルダを示し、“folder2”はファイルシステムフォルダ“folder1” 内のファイルシステムフォルダを示し、“my.file”はコンテンツアイテムに対応するファイルシステムフォルダ“folder2”内のファイルを示す。文字“\”は、異なるファイルシステムフォルダや文字列表現のファイルリファレンスを描く文字列表現において使用される。
【0018】
<ウェブページをリストするコンテンツアイテム>
図2は、開示する実施形態に従う、オンラインコンテンツ管理システム104のウェブサーバ122により、オンラインコンテンツ管理システム104のクライアント102に提供された、ウェブページのグラフィカル表示200を示す。例えば、ウェブページは、ユーザ108がユーザエージェント110を介して、オンラインコンテンツ管理システム104で認証に成功した後に、提供されうる。
【0019】
示されるように、グラフィカル表示200は、ユーザ108のアカウントに関連付けられたコンテンツアイテムのセットの、双方向のコンテンツアイテムのファイル−フォルダの階層を提供する。グラフィカル表示はまた、ユーザ108のアカウント名、この例では、“Jon Doe”を表示する。
【0020】
グラフィカル表示200はまた、コンテンツアイテムのフォルダと、コンテンツアイテムのファイル−フォルダの階層における現在のコンテンツアイテムのフォルダに対するコンテンツアイテムを表示する。コンテンツアイテムのファイル−フォルダの階層におけるコンテンツアイテムのフォルダは、当該コンテンツアイテムのファイル−フォルダの階層にもある、1つ以上の他のコンテンツアイテムのフォルダ、および/または、1つ以上のコンテンツアイテムに対する名前付きの論理的コンテナである。現在のコンテンツアイテムのフォルダは、グラフィカル表示200により示される。この例では、現在のコンテンツアイテムのフォルダは、コンテンツアイテムのファイル−フォルダの階層における最高位の、または、最下位のコンテンツアイテムのフォルダである。したがって、現在のコンテンツアイテムのフォルダは、グラフィカル表示200において“\”として示される(例のオンラインコンテンツ管理サービス名“Dropbox”の隣)。
【0021】
ユーザ108のアカウントに関連付けられたコンテンツアイテム、および、現在のコンテンツアイテムのフォルダに含まれるコンテンツアイテムのフォルダは、以下の表におけるグラフィカル表示200の現在のフォルダインジケーターにおいて示される。表は、3つの表示欄、すなわち、name(名前)欄、kind(種類)欄、およびModified(修正)欄を有する。欄の名前は、表の最初の列で示される。表の2番目とそれに続く列は、コンテンツアイテムのフォルダ、または、現在のコンテンツアイテムのフォルダにおけるコンテンツアイテムに対応する。name欄は、コンテンツアイテムのフォルダと現在のコンテンツアイテムのフォルダにおけるコンテンツアイテムの名前を含む。kind欄は、コンテンツアイテムのフォルダと現在のコンテンツアイテムのフォルダにおけるコンテンツアイテムの種類を含む。特に、kind欄における各コンテンツアイテムフォルダまたはコンテンツアイテムの種類は、表における対応する列がコンテンツアイテムのフォルダまたはコンテンツアイテムに対応するかを示し、もしコンテンツアイテムであれば、コンテンツアイテムのコンテンツの種類(例えば、Document(書類)、Image(画像)、Video(ビデオ)、Audio(音声))を示す。Modified欄は、オンラインコンテンツ管理システム104には既知である現在のフォルダにおける各コンテンツアイテムの最後の修正の日付を含む。
【0022】
各コンテンツアイテムの名前はまた、対応するコンテンツアイテムに対するアクセスのアクションを実行するための実行可能なリンクでもある。ユーザ108は、コンテンツアイテムに対する実行可能なリンクをアクティベートし、ユーザエージェント110に、ウェブページのインストラクションに従うコンテンツアイテムに対するアクセスのアクションを実行させる。アクセスのアクションは、コンテンツアイテムの少なくとも一部をダウンロードまたはストリーミングすることを含む。クライアント102における提示であるならば、コンテンツアイテムのコンテンツのタイプに依存して、生じる提示は変化しうる。例えば、ユーザ108は、実行可能なリンク202を(例えば、マウスのクリックまたはタッチチジェスチャーで)アクティベートすると、ドキュメント“Some Document”のコンテンツがクライアント102のビデオディスプレイに表示されうる。同様に、ユーザ108は実行可能なリンク208をアクティベートする場合、“Some Image”の画像が、ビデオディスプレイに表示される。ユーザ108が実行可能なリンク204をアクティベートする場合、“Some Music”の音楽が、クライアント102のスピーカーデバイスを介して聞こえるように再生を開始する。ユーザ108が実行可能なリンク206をアクティベートする場合、“Some Video”のビデオが、ビデオディスプレイおよびスピーカーデバイスを介して、クライアント102において再生を開始する。
【0023】
<ブロックエージェント要求>
いくつかの実施形態に従って、ユーザ108は、コンテンツアイテムに対応する実行可能なリンク(例えば、202,204、206、207)をアクティベートする際、ウェブページのインストラクションは、ユーザエージェント110に対して、ブロックエージェント要求をクライアント102におけるブロックエージェント114に送信するように命令する。ブロックエージェント要求は、HTTPまたはHTTPSプロトコルに従って、ブロックエージェント114に送信されうる。したがって、ブロックエージェント114は、ユーザエージェント110に対して、HTTPサーバまたはHTTPSサーバとして機能しうる。
【0024】
ブロックエージェント要求は、要求されたコンテンツアイテムを識別する情報を含みうる。例えば、ブロックエージェント要求は、以下のものの1つ以上を識別する。
・コンテンツアイテムの識別子 − 要求されたコンテンツアイテムの固有の識別子。
・コンテンツアイテムネームスペースの識別子 − これは、要求されたコンテンツアイテムが属するコンテンツアイテムのネームスペースの識別子でありうる。この場合、コンテンツアイテムの識別子もブロックエージェント要求において特定されているならば、コンテンツアイテムの識別子は、コンテンツアイテムネームスペース内でのみ固有でありうる。コンテンツアイテムのネームスペースは、典型的には共通のアクセス権限を有する、オンラインコンテンツ管理システム104の管理下の1つ以上の関連コンテンツアイテムのグループとして定義されうる。例えば、ユーザ108のアカウントにのみアクセス可能なコンテンツアイテムは、1つのコンテンツアイテムネームスペースに属し、複数のユーザのアカウント間で共有されるコンテンツアイテムのグループは、別のコンテンツアイテムネームスペースとなりうる。
・コンテンツアイテムのファイル−フォルダの階層パス −コンテンツアイテムの ファイルフォルダ階層におけるコンテンツアイテムへのパスと似たファイルシステム。例えば、グラフィカル表示200におけるリストを参照すると、コンテンツアイテムのフォルダ“Some Folder\”における“myfile”と名前が付けられたコンテンツアイテムへのパスは、“\Some folder\myfile”であり、一方、コンテンツアイテム“Some Music\”へのパスは、“\Some music\”でありうる。
【0025】
ブロックエージェント要求をブロックエージェント114に送信することに応答して、ユーザエージェント110は、ブロックエージェント114からブロックエージェント応答を受信する。ブロックエージェント応答は、ユーザエージェント110にダウンロードされた、または、ストリーミングされた、要求されたコンテンツアイテムを含みうる。
【0026】
<ブロックエージェント>
ユーザエージェント110からの要求されたコンテンツアイテムに対するブロックエージェント要求を受信することに応答して、ブロックエージェント114は、要求されたコンテンツアイテムを構成するコンテンツアイテムブロックの識別子を決定する。コンテンツアイテムブロックは、コンテンツアイテムのアルゴリズムで決定された部分として定義されうる。例えば、最後のコンテンツアイテムを除いて全てのコンテンツアイテムが必然的に固定サイズとなるように、当該アルゴリズムは、バイト境界上のコンテンツアイテムを、固定ブロックサイズの転属的なコンテンツアイテムブロックに分割する。最後のコンテンツアイテムブロックは、固定サイズ、または、コンテンツアイテム全体のサイズに依存して、固定サイズよりも小さいサイズとなりうる。コンテンツアイテム全体のサイズが、固定サイズ以下である場合、単一のコンテンツアイテムブロックはコンテンツアイテムを構成する。
【0027】
コンテンツアイテムブロックの識別子は、暗号ハッシュ関数をコンテンツアイテムブロックに適用することにより、生成されうる。暗号ハッシュ関数により出力されたコンテンツアイテムブロックのダイジェスト、またはその符号化は、コンテンツアイテムブロックに対するコンテンツアイテムブロックの識別子として使用されうる。暗号ハッシュ関数は、例えば、コンテンツアイテムブロックに適用された場合に、全て固有の256ビットのハッシュを生成する、セキュアハッシュアルゴリズム−256(SHA-256)とすることができる。現在開発されている、または将来開発される、他の既知のハッシュ関数(例えば、MD4、 MD5、 SHA-1、他のSHA-2関数)は、目前の特定の実施形態の要件に従って使用されうる。
【0028】
コンテンツアイテムを構成する1つ以上のコンテンツアイテムブロックから生成された、一連の1つ以上のコンテンツアイテムブロックの識別子は、コンテンツアイテムに対するコンテンツアイテムブロックのリストをと称されうる。例えば、5メガバイトのサイズのコンテンツアイテムは、2つの連続するコンテンツアイテムブロックの識別子、B1、B2を有するコンテンツアイテムブロックのリストに関連付けられる。コンテンツアイテムブロックの識別子、B1は、最初の4メガバイトのコンテンツアイテムから暗号ハッシュ関数を適用することにより生成されうる。また、コンテンツアイテムの識別子、B2は、残る1メガバイトのコンテンツアイテムに暗号ハッシュ関数を適用することにより生成されうる。
【0029】
<コンテンツアイテムのメタデータ>
1つの実施形態に従うと、要求されたコンテンツアイテムに対するユーザエージェント110からのブロックエージェント要求を受信することに応答して、要求されたコンテンツアイテムに対するコンテンツアイテムブロックのリストを決定するために、ブロックエージェント114は、クライアント102のローカルストレージ116に格納されているコンテンツアイテムメタデータを調べる(参考にする)。コンテンツアイテムメタデータは、コンテンツアイテムを、それらのコンテンツアイテムに対するコンテンツアイテムブロックリストにマッピングする。具体的には、コンテンツアイテムメタデータは、コンテンツアイテムに対するコンテンツアイテムブロックリストのインデックスとして機能する。コンテンツアイテムのメタデータにおける各コンテンツアイテムブロックリストは、そのコンテンツアイテムブロックリストに対する固有キーに関連付けられる。当該キーは、コンテンツアイテムの識別子、コンテンツアイテムネームスペースの識別子、キー付きのコンテンツアイテムブロックのリストに対応するコンテンツアイテムに対するコンテンツアイテムファイル−フォルダ階層パス、のうちの1つ以上に基づきうる。ブロックエージェント要求における情報(例えば、コンテンツアイテムの識別子、コンテンツアイテムネームスペースの識別子、および/または、キー付きのコンテンツアイテムブロックのリストに対応するコンテンツアイテムに対するコンテンツアイテムファイル−フォルダ階層パス)を用いて、ブロックエージェントは、コンテンツアイテムのメタデータにおいて要求されたコンテンツアイテムに対するコンテンツアイテムブロックのリストを検索する。
【0030】
他の実施形態によれば、要求されたコンテンツアイテムに対するコンテンツアイテムブロックのリストは、ブロックエージェント114へのブロックエージェント要求において特定される。このケースでは、ブロックエージェント114は、要求されたコンテンツアイテムに対するコンテンツアイテムブロックのリストを決定するために、コンテンツアイテムメタデータを調べる必要がある。
【0031】
<不足しているコンテンツアイテムブロックの決定>
要求されたコンテンツアイテムを構成するコンテンツアイテムブロックの全て、またはいくつかが、クライアント102におけるローカルストレージ116に格納されていないケースが起こり得る。このケースでは、ブロックエージェント114は、ローカルストレージ116から要求されたコンテンツアイテムの全体を提供することはできず、不足しているコンテンツアイテムブロックを、オンラインコンテンツ管理システム104のブロックサーバ124からダウンロードしなければならない。要求されたコンテンツアイテムのうち、どのコンテンツアイテムブロックが既にクライアント102のローカルストレージ116に格納されているかを決定するために、ブロックエージェント114は、要求されたコンテンツアイテムに対するコンテンツアイテムブロックにおけるコンテンツアイテムブロックの識別子を用いる。例えば、コンテンツアイテムブロックメタデータは、ローカルストレージ116に格納されうる。それは、ローカルストレージ116に現在格納されているコンテンツアイテムブロックのコンテンツアイテムブロック識別子を含む。
【0032】
コンテンツアイテムブロックのメタデータは、ブロックエージェント114により、コンテンツアイテムブロックがローカルストレージ116に加えられる、または、コンテンツアイテムブロックがローカルストレージ116から除去されるように、更新されうる。例えば、ブロックエージェント114は、ブロックサーバ124からのコンテンツアイテムブロックのダウンロードに成功した後、コンテンツアイテムブロックのメタデータを更新する。この更新は、コンテンツアイテムブロックメタデータにおいて、ダウンロードされたコンテンツアイテムブロックのコンテンツアイテムブロック識別子を加えるまたは有効としてマークすることを含む。ブロックエージェント114はまた、ローカルストレージ116において、コンテンツアイテムブロックを除去または削除された後に、コンテンツアイテムブロックメタデータを更新しうる。この更新は、コンテンツアイテムブロックのメタデータにおいて、除去または削除されたコンテンツアイテムブロックのコンテンツアイテムブロック識別子を除去、削除、または無効としてマークすることを含みうる。
【0033】
ブロックエージェント114は、ローカルストレージ116に格納されているコンテンツアイテムブロックを周期的に除去し、新しいコンテンツアイテムブロックまたは他のアプリケーションのために、ローカルストレージ116において利用可能なストレージスペースを解放しうる。例えば、ブロックエージェント114は、ローカルストレージ116に格納されている、アクセス頻度が最も低い1つ以上のコンテンツアイテムブロックを周期的に除去しうる。例えば、ブロックエージェント114は、コンテンツアイテムブロックにより使用されるローカルストレージの量がストレージの制約を満たさないことを検出したことを受けて、アクセス頻度が最も低い1つ以上のコンテンツアイテムブロックを除去しうる。ストレージの制約は、以下の全てまた、サブセット、または上位セットに基づきうる。
・すなわち、コンテンツアイテムブロックにより現在使用されているローカルストレージ116のストレージスペースの全体の量、
・コンテンツアイテムブロックにより現在使用されているローカルストレージ116のストレージスペースのパーセンテージの量、
・ローカルストレージ116において現在利用可能なストレージスペースの全体の量、および、
・ローカルストレージ116において現在利用可能なストレージスペースのパーセンテージの量、である。
【0034】
コンテンツアイテムブロックのメタデータは、コンテンツアイテムブロックがコンテンツアイテム同期の一部として、ローカルストレージ116へ加えられる、またはローカルストレージ116から除去されるように、同期エージェント112により更新されうる。特に、同期エージェント112は、通知サーバ118へのロングポーリング接続を維持しうる。オンラインコンテンツ管理システム104がクライアント102に対するコンテンツアイテムを更新している場合、同期更新通知メッセージが、ロングポーリング接続を介して通知サーバ118により、同期エージェント112へ送信されうる。同期更新通知メッセージは、コンテンツアイテムの更新がオンラインコンテンツ管理システム104から利用可能であることを、同期エージェント112へ通知する働きをする。同期更新通知メッセージを受信することに応答して、同期エージェント112は、メタデータサーバ120に連絡し、クライアント102に対してどのようなコンテンツアイテムの更新が利用可能かを決定する。このプロセスでは、メタデータサーバ120は、同期サーバ112がブロックサーバ124からダウンロードすべき新しいコンテンツアイテムブロックのコンテンツアイテムブロック識別子を返しうる。これらのコンテンツアイテムブロックをブロックサーバ124からダウンロードすることに成功したことを受けて、同期エージェント112は、コンテンツアイテムブロックのメタデータを更新しうる。この更新は、コンテンツアイテムブロックのメタデータにおいて、ダウンロードされたコンテンツアイテムブロックのコンテンツアイテムブロック識別子を加える、または、有効としてマークすること含む。
【0035】
同期エージェント112はまた、コンテンツアイテムおよびそれらを構成するコンテンツアイテムブロックは、コンテンツアイテムの同期の一部として、ローカルストレージ116から除去または削除される場合、コンテンツアイテムブロックのメタデータを更新しうる。このケースでは、同期エージェント112は、コンテンツアイテムの同期の一部として、ローカルストレージ116から除去または削除されたコンテンツアイテムブロックのコンテンツアイテムブロック識別子を除去、削除、または無効としてマークしうる。
【0036】
同期エージェント112はまた、新しいコンテンツアイテムがローカルストレージに加えられた場合、または、ローカルストレージ116における現存のコンテンツアイテムが編集または修正された場合、コンテンツアイテムブロックのメタデータを更新しうる。このケースでは、同期エージェント112は、コンテンツアイテムブロックのメタデータにおいて、新しいコンテンツアイテムブロックのコンテンツアイテムブロック識別子を加える、または、有効としてマークしうる。新しいコンテンツアイテムのケースでは、新しいコンテンツアイテムの全てのコンテンツアイテムブロックが、新しいものでありうる。修正または編集されたコンテンツアイテムのケースでは、修正または編集されたコンテンツアイテムブロックのいくつかのコンテンツアイテムブロックのみが新しいものでありうる。
【0037】
現在ローカルストレージ116に格納されているコンテンツアイテムブロックのコンテンツアイテムの識別子を含めることに加えて、コンテンツアイテムブロックのメタデータはまた、各コンテンツアイテムブロックの識別子に対して、識別されたコンテンツアイテムブロックが格納されているローカルストレージ116に、位置のアドレスを格納し得る。アドレスは、例えば、1つ以上のコンテンツアイテムブロックを含むファイルシステムにおけるファイルへのパスまたはファイルの識別子でありうる。
【0038】
ファイルは、複数のコンテンツアイテムブロックを含み得るので(例えば、ファイルがコンテンツアイテムである場合)、コンテンツアイテムのメタデータにおけるコンテンツアイテムの識別子に関連付けられたアドレスは、バイトオフセット情報を特定しうる。バイトオフセット情報は、ファイルの始めに関連するファイル内の対応するコンテンツアイテムブロックの開始を識別しうる。
【0039】
代わりとして、コンテンツアイテムのメタデータにおけるアドレスは、ファイルを識別し、コンテンツアイテムのメタデータにおいてコンテンツアイテムブロックのリストと関連付けられうる。この代替案において、コンテンツアイテムブロックのリストにおいて識別された特定のコンテンツアイテムブロックは、コンテンツアイテムブロックにおけるコンテンツアイテムブロックの識別子の順序に基づいて、また、コンテンツアイテムを連続的なコンテンツアイテムブロックに分割するために使用された同じアルゴリズムに基づいて、ファイル内に位置しうる。
【0040】
<不足しているコンテンツアイテムブロックのダウンロード>
ブロックエージェント114が、要求されたコンテンツアイテムのコンテンツアイテムブロックがクライアント102におけるローカルストレージ116に現在格納されていないと決定した後、ブロックエージェント114は、ブロックサーバ124から、不足しているコンテンツアイテムブロックをダウンロードする。そのためには、ブロックエージェント114は、ダウンロードされるコンテンツアイテムブロックのコンテンツアイテムブロック識別子を特定するブロックサーバ124に対して、ブロックサーバ要求を送信しうる。
【0041】
ブロックサーバ124からコンテンツアイテムブロックをダウンロードした後、ブロックエージェント114は、ローカルストレージ116に(例えば、ファイルの一部として)コンテンツアイテムブロックを格納しうる。ブロックエージェント114はまた、ユーザエージェント110からのブロックエージェント要求に対するブロックエージェント応答において、コンテンツアイテムブロックのデータを、ユーザエージェント110に送信しうる。ここで、要求されたコンテンツアイテムは、例えば、音声またはビデオ等のストリーミングデータのタイプであり、ブロックエージェント114は、ローカルストレージ116にダウンロードされたコンテンツアイテムブロックを保持することを見送る。代わりに、コンテンツアイテムブロックのデータがネットワーク106を介してブロックサーバ124から受信されるので、ブロックエージェント114は、データをローカルストレージ116に保持することなく、データをユーザエージェント110にストリーミングしうる。このようにして、要求されたコンテンツアイテムは、ブロックエージェント114を介してブロックサーバ124からユーザエージェント110へ効果的にストリーミングされる。
【0042】
<サンプル動作>
以降の説明は、プロセッサの制御下でデバイスの動作を行わせる、コンピュータで実行可能な命令を用いて実施されうる方法のステップを示す。コンピュータで実行可能な命令は、ハードディスク、半導体ドライバ、CD、DVD、フラッシュメモリ等のコンピュータで読み取り可能な記録媒体に格納されうる。コンピュータで実行可能な命令はまた、例えば、インターネット上の記憶場所(例えば、ウェブサーバ)からダウンロード及びインストールするための、ダウンロード可能で、コンピュータで実行可能な命令のトークンのセットとして格納されうる。
【0043】
図3は、本発明のいくつかの例示の実施形態に従う、ホストされたコンテンツアイテムの見かけ上のクラウドアクセスに対する技術を実行する際の、ブロックエージェント114の動作300を示すフローチャートである。動作は以下の通りである。
【0044】
動作302において、ブロックエージェント114は、ユーザエージェント110からコンテンツアイテムに対するブロックエージェント要求を受信する。例えば、ブロックエージェント114は、ユーザ108が要求されたコンテンツアイテム上でコンテンツアイテムアクセスアクションを実行するためにリンクをアクティベートした後に、ユーザエージェント110からブロックエージェント要求を受信しうる。コンテンツアイテムアクセスアクションは、例えば、ユーザエージェント110へ要求されたコンテンツアイテムの少なくとも一部分をダウンロードすること、および/または、ユーザエージェント110に要求されたコンテンツアイテムの少なくとも一部を示すことでありうる。
【0045】
ブロックエージェント要求は、様々な手法で要求されたコンテンツアイテムを識別しうる。1つの手法では、ブロックエージェント要求は、要求されたコンテンツアイテムの固有の識別子(すなわち、コンテンツアイテムの識別子)により、要求されたコンテンツアイテムを識別しうる。別の手法では、ブロックエージェント要求は、要求されたコンテンツアイテムが増加するコンテンツアイテムネームスペースのコンテンツアイテムネームスペース識別子とコンテンツアイテムのコンテンツアイテムファイル−フォルダ階層パスにより、要求されたコンテンツアイテムを識別しうる。要求されたコンテンツアイテムのコンテンツアイテムファイル−フォルダ階層パスは、相対パスでありうる。相対パスは、要求されたコンテンツアイテムが属するコンテンツアイテムのネームスペースに関連しうる。また、相対パスは、要求されたコンテンツアイテムが属するコンテンツアイテムネームスペースが入れ子にされる、ルートコンテンツアイテムネームスペースに関連しうる。例えば、コンテンツアイテム“my.file”は、‘ABC123’のコンテンツアイテムネームスペースの識別子を有するコンテンツアイテムネームスペースに属しうる。コンテンツアイテムネームスペース‘ABC123’は、パス‘\myfolder1\myfolder2\’におけるルートコンテンツアイテムネームスペース内で入れ子にされうる。このケースでは、コンテンツアイテムに対するブロックエージェント要求は、‘ABC123’のコンテンツアイテムネームスペースと、‘\myfolder1\myfolder2\my.file’のコンテンツアイテムファイル−フォルダ階層パス、または、‘\my.file’のパスを特定しうる。
【0046】
動作304では、ブロックエージェント114は、要求されたコンテンツアイテムに対する現在のコンテンツアイテムブロックを決定する。いくつかの実装では、コンテンツアイテムブロックのリストは、ブロックエージェント要求において特定される。しかしながら、コンテンツアイテムブロックのリストがブロックエージェント要求において特定されない場合、ブロックエージェント114は、クライアント102におけるローカルストレージ116に格納されているコンテンツアイテムメタデータを調べる。そのようにして、ブロックエージェント114は、コンテンツアイテムの識別子、または、コンテンツアイテムネームスペースの識別子とコンテンツアイテムファイル−フォルダ階層パスとの組み合わせを、コンテンツアイテムメタデータへのインデックスとして用いる。インデックスは、要求されたコンテンツアイテムに対する現在のコンテンツアイテムブロックに、コンテンツアイテムメタデータにおいて関連付けられる。例えば、メタデータは、コンテンツアイテムネームスペースの識別子‘ABC123’とコンテンツアイテムファイル−フォルダ階層パス‘\myfolder1\myfolder2\my.file’との組み合わせを、[‘B1’, ‘B2’, ‘B3’]の要求されたコンテンツアイテムに対する現在のコンテンツアイテムブロックリストに関連付けうる。ここで、B1、B2、およびB3は、要求されたコンテンツアイテムを構成する3つのコンテンツアイテムブロックのコンテンツアイテムブロック識別子である。
【0047】
動作306では、ブロックエージェント114は、要求されたコンテンツアイテムに対する現在のコンテンツアイテムブロックにおける第1のコンテンツアイテムブロックの識別子を取得する。
【0048】
動作308では、ブロックエージェント114は、第1のコンテンツアイテムブロックの識別子により識別されるコンテンツアイテムブロックが、クライアント112におけるローカルストレージ116にローカルに格納されているかを判定(決定)する。この判定は、クライアント112におけるローカルストレージ116に格納されているコンテンツアイテムブロックのメタデータを調べるブロックエージェント114によりなされうる。コンテンツアイテムブロックメタデータは、クライアント112におけるローカルストレージ116にローカルに格納されているコンテンツアイテムブロックのコンテンツアイテムブロック識別子を含む。加えて、コンテンツアイテムブロックメタデータは、各コンテンツアイテムブロック識別子に対するローカルストレージ116における位置のアドレスを含む。ここで、コンテンツアイテムブロック識別子により識別されるコンテンツアイテムブロックはローカルストレージ116に格納される。例えば、アドレスは、1つ以上の識別されたコンテンツアイテムブロックを格納するファイルシステムにおけるファイルへのパスでありうる。
【0049】
ブロックエージェント114が、動作308において、第1のコンテンツアイテムブロックがクライアント102におけるローカルストレージ116に格納されていないと判定した場合、ブロックエージェント114は、ブロックサーバ124から第1のコンテンツアイテムブロックをダウンロードする。一方、いくつかの実施形態では、ブロックサーバ124は、オンラインコンテンツ管理システム104の一部である。別の実施形態では、ブロックサーバ124は、構内に配置され、クライアント102と同一場所に配置される。例えば、ブロックサーバ124は、統合したファイルサーバ、または、同じローカルエリアネットワーク(LAN)によりクライアント102に接続されるピアコンピューティングデバイスでありうる。ブロックサーバ124から第1のコンテンツアイテムブロックをダウンロードするために、ブロックエージェントは、ブロックサーバ124へ送信されるブロックサーバ要求における、第1のコンテンツアイテムブロックのコンテンツアイテムブロック識別子を提供しうる。
【0050】
第1のコンテンツアイテムブロックが既にクライアント102に格納されている場合、または、ブロックエージェント114がブロックサーバ124から第1のコンテンツアイテムブロックをダウンロードした後に、動作312において、ブロックエージェント114は、第1のコンテンツアイテムブロックのデータをユーザエージェント110に送信する。例えば、ブロックエージェント114は、ストリーミングを行い、それ以外では、第1のコンテンツアイテムブロックのデータを、ブロックエージェント要求に対するブロックエージェント応答において、ユーザエージェント110に提供しうる。
【0051】
動作314では、要求されたコンテンツアイテムに対する現在のコンテンツアイテムブロックのリストにおいて、より多くのコンテンツアイテムブロックが存在する場合、動作306、308、312と、場合によっては、動作310が、コンテンツアイテムブロックのリストにおける次のコンテンツアイテムブロック識別子に対して、再度実行される。
【0052】
動作312においダウンロードされたコンテンツアイテムブロックをユーザエージェント110に送信する前に、動作310においてブロックサーバ124からコンテンツアイテムブロックを全てダウンロードすることは、動作300の必要要件ではない。例えば、ブロックエージェント114は、動作310でブロックサーバ124からデータがダウンロードされていることから、動作312でダウンロードされたコンテンツアイテムブロックのデータを送信しうる。
【0053】
また、ブロックサーバ124から次のコンテンツアイテムブロックがダウンロードされる前に、動作312においてコンテンツアイテムブロックが全てユーザエージェント110に送信されることは、動作300の必要要件ではない。例えば、ブロックエージェント114は、動作312においてコンテンツアイテムブロックのデータをユーザエージェントに送信している一方、動作310で次のコンテンツアイテムブロックのダウンロードも行う。
【0054】
<基本的なコンピューティングデバイス>
図4は、本発明の例示の実施形態を具現化しうるベーシックコンピューティングデバイス400を示すブロック図である。コンピューティングデバイス400、及びそれらの接続、関係、及び機能を含むそのコンポーネントは、単なる一例であって、例示の実施形態の実装に限定する意図はない。例示の実施形態を実施するのに適切な他のコンピューティングデバイスは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを含みうる。
【0055】
コンピューティングデバイス400は、メインメモリ407をアドレス解決し、かつ、コンピューティングデバイス400の種々のコンポーネント間で及び種々のコンポーネントの中でデータを転送するための、バス402又は他の通信機構を含みうる。
【0056】
コンピューティングデバイス400はまた、情報を処理するためのバス402と結合した1以上のハードウェアプロセッサ404を含みうる。ハードウェアプロセッサ404は、一般用途マイクロプロセッサ、システム・オン・チップ(SoC)、又は他のプロセッサであってもよい。
【0057】
ランダムアクセスメモリ(RAM)又は他の動的ストレージデバイスなどのメインメモリ406はまた、情報やプロセッサ404によって実行されるソフトウェア命令を格納するためのバス402に結合されうる。メインメモリ406はまた、プロセッサ404によって実行されるべきソフトウェア命令の実行中に一時変数又は他の中間情報を格納するために使用されうる。
【0058】
プロセッサ404へアクセス可能な記憶媒体に格納される場合、ソフトウェア命令は、コンピューティングデバイス400を当該ソフトウェア命令で指定された動作を実行するようにカスタマイズされた特定用途のコンピューティングデバイスへ変換する。用語“ソフトウェア”、“ソフトウェア命令”、“コンピュータプログラム”、“コンピュータで実行可能な命令”、及び“プロセッサで実行可能な命令”は、人間が読取可能かどうかにかかわらず、特定の動作を実行するようにコンピューティングデバイスに命令するための、任意の機械可読情報をカバーするように、広く解釈されるべきであり、限定はしないが、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、JAVASCRIPT、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、仮想マシン、リンカー、及びテキストエディタを含む。
【0059】
コンピューティングデバイス400はまた、静的情報及びプロセッサ404へのソフトウェア命令を格納するためにバス402に結合された読み取り専用メモリ(ROM)408又は他の静的ストレージデバイスを含みうる。
【0060】
1以上の大容量ストレージデバイス410は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は大容量ストレージ技術を利用可能な他のものなどの固定媒体若しくは取り外し可能な媒体に、情報及びソフトウェア命令を永続的に格納するためのバス402に結合されうる。大容量ストレージデバイスは、ネットワーク上で共有され、或いは、専用の大容量ストレージであってもよい。通常、大容量ストレージデバイス410(例えば、デバイスに対するメインハードディスク)の少なくとも1つは、オペレーティングシステム、ユーザプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピュータデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
【0061】
コンピューティングデバイス400は、バス402を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ(LCD)又は他の電子的な視覚ディスプレイなどのディスプレイ412へ結合されうる。いくつかの構成において、タッチ検出技術(例えば、抵抗性、容量性など)を組み込むタッチセンサ式サーフェイスが、プロセッサ404へタッチジェスチャ(例えば指又はスタイラス)入力をやり取りするためのタッチセンサ式ディスプレイの形式でディスプレイ412上に敷かれてもよい。
【0062】
アルファベットキー及び他のキーを含む入力デバイス414は、情報及びコマンドの選択をプロセッサ404へ通知するためのバス402へ結合されうる。英数字キーや他のキーに追加して、或いは、代わりに、入力デバイス414は、例えば、電源(On/Off)ボタン、“ホーム”ボタン、音量制御ボタンなどの1以上の物理的なボタン又はスイッチを含むことができる。
【0063】
ユーザ入力デバイスの他のタイプは、プロセッサ404へ方向情報やコマンドの選択を通知し、ディスプレイ412上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御416でありうる。この入力デバイスは、典型的に、デバイスが平面上の位置を特定できるようにする第1軸(例えば、x)と第2軸(例えば、y)の二軸の2つの自由度を有する。
【0064】
図4に示される構成などのいくつかの構成において、1以上のディスプレイ412、入力デバイス414、及びカーソル制御416がコンピューティングデバイス400の外部コンポーネント(即ち、周辺デバイス)である一方で、ディスプレイ412、入力デバイス414、及びカーソル制御416のいくつか又は全ては、他の構成において、コンピューティングデバイス400のフォームファクタの一部として統合されてもよい。
【0065】
開示のシステム、方法及びモジュールの機能は、メインメモリ406に含まれる1以上のソフトウェア命令の1以上のプログラムを実行するプロセッサ404に応じて、コンピューティングデバイス400によって実行されうる。そのようなソフトウェア命令は、ストレージデバイス410などの他の記憶媒体からメインメモリ406へと読み込まれてもよい。メインメモリ406に含まれるソフトウェア命令の実行は、プロセッサ404に例示の実施形態の機能を実行させる。
【0066】
例示の実施形態の機能及び動作がソフトウェア命令で全体的に実装されうる一方で、コンピューティングデバイス400のハード・ワイヤード又はプログラマブル回路(例えば、ASIC、FPGAなど)は、手近な特定の実装の要件に従って、機能を実行するためにソフトウェア命令の一部として又は組み合わせて他の実施形態において使用されうる。
【0067】
ここで使用される用語“記憶媒体”は、コンピューティングデバイスを特定の様式で動作させるデータ及びソフトウェア命令の少なくとも1つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び揮発性の媒体の少なくとも1つを備えてもよい。不揮発性媒体は、ストレージデバイス410などの、例えば、不揮発性のランダムアクセスメモリ(NVRAM)、フラッシュメモリ、光学ディスク、磁性ディスク、又は半導体ドライバを含む。揮発性媒体はメインメモリ406などの動的メモリを含む。記憶媒体の一般的な形式は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、半導体ドライブ、磁性テープ、若しくは任意の他の時期的データ記憶媒体、CD-ROM、若しくは穴のパターンを伴う任意の他の光学的データ記憶媒体、RAM、PROM、及びEPROM、FLASH-EPROM、NVRAM、フラッシュメモリ、任意の他のメモリチップ又はカートリッジを含む。
【0068】
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用されうる。送信媒体は、記憶媒体間で情報を転送することに使用されてもよい。例えば、送信媒体は、バス402を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
【0069】
媒体の様々な形式は、実行のためにプロセッサ404へ1つ以上のソフトウェア命令の1つ以上のシーケンスを運ぶことに含まれうる。例えば、ソフトウェア命令は、リモートコンピュータの磁性ディスク又は半導体ドライバ上でまず実行されうる。リモートコンピュータは、その動的メモリへソフトウェア命令をロードし、モデムを用いて電話線を介してソフトウェア命令を送信することができる。コンピューティングデバイス400のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するための赤外線送信機を用いることができる。赤外線検出機は赤外線信号で運搬されたデータを受信することができ、適切な回路がそのデータをバス402に乗せる。バス402は、プロセッサ404がソフトウェア命令を読み出して実行するメインメモリ406にデータを運搬する。メインメモリ406によって受信される本ソフトウェア命令は、プロセッサ404によって実行される前又は実行された後の何れかにストレージデバイス410に選択的に格納されうる。
【0070】
コンピューティングデバイス400はまた、バス402へ結合される1以上の通信インタフェース418を含みうる。通信インタフェース418は、ローカルネットワーク422(例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Bluetooth無線ネットワーク、又は同様のもの)へ接続された、有線又は無線のネットワークリンク420へ結合する2つの方法のデータ通信を提供する。通信インタフェース418は、種々のタイプの情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース418は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム(例えば、ISDN、DSL、又はケーブルモデム)であってもよい。
【0071】
ネットワークリンク420は、通常、1以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク420は、ローカルネットワーク422を通じて、ホストコンピュータ424への又はインターネットサービスプロバイダ(ISP)426によって運用されるデータ装置への接続を提供しうる。ISP426は順に、“Internet”428として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク422及びInternet428は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピューティングデバイス400への及びコンピューティングデバイス400からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク420上の、及び通信インタフェース418を通じた信号は、送信媒体の例示の形式である。
【0072】
コンピューティングデバイス400は、ネットワーク、ネットワークリンク420、及び通信インタフェース418を通じて、プログラムコードを含む、メッセージを送信し、データを受信することができる。例えば、サーバ430は、インターネット428、ISP426、ローカルネットワーク422、及び通信インタフェース418を通じて、アプリケーションプログラムに対して要求されるコードを送信しうる。
【0073】
受信コードは、受信した際にプロセッサ404によって実行されてもよく、及び、後の実行のためにストレージデバイス410又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われてもよい。
【0074】
<基本的なソフトウェアシステム>
図5は、コンピューティングデバイス400の動作を制御するために使用されうる基本的なソフトウェアシステム500を示す概略図である。ソフトウェアシステム500、及びそれらの接続、関係、及び機能を含むそのコンポーネントは、単なる一例であって、例示の実施形態の実装に限定する意図はない。例示の実施形態を実施するのに適切な他のソフトウェアシステムは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを含んでもよい。
【0075】
ソフトウェアシステム500は、コンピューティングデバイス400の動作を方向付けるために提供される。システムメモリ(RAM)406及び固定ストレージ(例えば、ハードディスク、又はフラッシュメモリ)410に格納されるソフトウェアシステム500は、カーネル又はオペレーティングシステム(OS)510を含む。
【0076】
OS510は、プロセス、メモリ配置、ファイル入力及び出力(I/O)、及びデバイスI/Oの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。502A、502B、502C・・・502Nとして表される、1以上のアプリケーションプログラムは、システム500による実行のために“ロードされ”うる(例えば、固定ストレージ410からメモリ406へ転送される)。アプリケーション又はデバイス500上での使用を意図した他のソフトウェアはまた、ダウンロード可能で、コンピュータで実行可能な命令のトークンのセットとして、例えば、インターネット上の記憶場所から(例えば、ウェブサーバ、アプリストア、又は他のオンラインサービスから)ダウンロード及びインストールするために格納されうる。いくつかの実施形態では、1つ以上のアプリケーションプログラム502は、オペレーティングシステム510上で実行するソフトウェアコンテナ(例えば、DOCKERコンテナ)内で実行しうる。
【0077】
ソフトウェアシステム500は、グラフィカルな(例えば、“ポイント・アンド・クリック”又は“タッチジェスチャ”)形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース(GUI)515を含む。これらの入力は順に、オペレーティングシステム510及びアプリケーション502の少なくとも1つからの命令に従ってシステム500によって作動されうる。GUI915はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする(例えば、ログオフする)とすぐに、OS510及びアプリケーション502からの動作結果を表示するように務める。
【0078】
OS510は、デバイス400のベアハードウェア520(例えば、プロセッサ404)上で直接的に実行することができる。代替的に、タイプ1またはタイプ2のハイパーバイザ又は仮想マシンモニタ(VMM)530は、ベアハードウェア520及びOS510の間に割り込んで設けられてもよい。この構成において、VMM530はデバイス400のOS510及びベアハードウェア520の間のソフトウェア“クッション”又は仮想レイヤとして作動する。VMM530がタイプ1の仮想マシンモニタである場合、VMM530はベアハードウェア520上で直接実行しうる。一方、VMM530がタイプ2の仮想マシンモニタである場合、VMM530はベアハードウェア520上で直接実行するホストオペレーションシステム(不図示)上で実行しうる。
【0079】
VMM530は、1以上の仮想マシンインスタンス(“ゲストマシン”)を作成し実行する。各ゲストマシンは、OS510などの“ゲスト”オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーション502などの1以上のアプリケーションを含む。VMM530は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提示し、ゲストオペレーティングシステムの実行を管理する。
【0080】
いくつかの例において、VMM530は、デバイス400のベアハードウェア520上で直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容することができる。これらの例において、ベアハードウェア520上で実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにVMM930上で実行されうる。言い換えれば、VMM530は、いくつかの例において、ゲストオペレーティングシステムへ完全なハードウェアと、CPU仮想化を提供してもよい。
【0081】
他の例において、ゲストオペレーティングシステムは、効率的にVMM530上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ上で実行する“aware”であってもよい。言い換えれば、VMM530は、いくつかの例において、ゲストオペレーティングシステムへ準仮想化を提供することができる。
【0082】
<拡張及び代替例>
前述の明細書において、本発明の例示の実施形態は、多数の特定の詳細を参照して説明した。しかしながら、これらの詳細は、身近な特定の実装の要件に従って実装ごとに変化することができる。例示の実施形態は、従って、限定的な意味というよりはむしろ例示とみなされるものである。