(58)【調査した分野】(Int.Cl.,DB名)
ローカルユーティリティを含む1つ又は複数のプログラムを記憶する非一時的なコンピュータ可読記憶媒体であって、前記1つ又は複数のプログラムは命令を含み、前記命令は、電子装置によって実行されると、前記電子装置に、請求項1〜10に記載の方法のいずれかを実施させる、非一時的なコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0011】
例示的実施形態の説明
本明細書に記載のシステム及び方法は、クライアントコンピュータで実行される2つのアプリケーション間での双方向連続通信を可能にする。特に、開示される実施形態は、ユーザが、ウェブブラウザ等のローカルアプリケーションに表示されるウェブページに含まれる制御要素を通して、ローカルに実行されるユーティリティ(メディアプレーヤ、ダウンロードマネージャ、カメラ制御アプリケーション、フォト/ビデオエディタ等)の特定の側面を制御し、その特定の側面と対話できるようにする。本明細書に記載のシステム及び方法は、ウェブページに含めるローカルユーティリティの制御要素(制御ボタン、ステータスウィンドウ等)を含むモジュールを作成する方法も提供する。
【0012】
ウェブページは、限られた機能(単純なテキスト及び画像の表示等)のみの提供に使用されていたが、本明細書では、専用のローカルに記憶され実行されるソフトウェアによって従来は提供されていた機能を実行することが可能である。例えば、ウェブページは本明細書では、ユーザが各自のコンピュータに音楽をストリーミングできるように、又はビデオ若しくは写真を撮影するようローカルウェブキャムを制御できるようにすることができる。しかし、そのような機能はブラウザベースの解決策(例えば、JAVA(登録商標)、QUICKTIME(商標)、FLASH(商標)等のプラグイン等)によって提供し得るが、ローカルに記憶され実行されるソフトウェアがやはり、ブラウザベースの解決策よりも効率的であるか、好都合であることが多い。例えば、メディアプレーヤアプリケーションは、コンピュータのローカルファイル構造への直接アクセスを有し、ローカルファイル構造を制御し、したがって、記憶されたメディアファイルのアクセス、解析、編成、及び再生を素早く効率的に行うことができる場合に、最も効率的であることが多い。
【0013】
さらに、ローカルに記憶され実行されるアプリケーションは、ブラウザベースの解決策を用いては実施が難しい追加のサービス又は機能を提供し得る。例えば、ローカルメディアプレーヤは、最近再生された曲を識別するステータスアップデートをソーシャルネットワーキングサイトに自動的に掲示するように構成し得る。別の例では、ローカルメディアプレーヤは、ユーザのメディア消費履歴を追跡し得、それにより、メディアプレーヤに関連付けられたメディアサービスは、ユーザの好みに関連する新しいメディアアイテムの示唆を提供することができる。場合によっては、これらの特徴をウェブページにおいて、又はブラウザプラグインを用いて実施することは困難である。さらに、これらの機能を実行するローカルユーティリティがすでに存在する場合、ウェブブラウザ環境でそのようなローカルユーティリティを再生成しようとするよりも、そのローカルユーティリティを使用するほうが効率的であり得る。
【0014】
しかし、特定のタイプのアプリケーションをローカルに記憶し実行することが有利であるが、ウェブブラウザからそのようなアプリケーションを制御することは困難であり、且つ/又は非効率的であり得る。例えば、ユーザは、音楽を聴きながらウェブをサーフィンしている場合、トラックの変更、音量の調整等を行うために、ウィンドウをウェブブラウザとローカルメディアプレーヤとの間で常に変更する必要がある。さらに、ユーザが、特定の曲又はプレイリストをストリーミングする選択肢を提供するウェブページにウェブブラウザをナビゲートする場合を考える。示唆される特定の曲を気に入り、ユーザはその音楽を開始し、引き続きウェブを閲覧する。後に、ユーザは、新しい曲をストリーミングする選択肢を提供する異なるブラウザウィンドウ又はタブ内のウェブページに遭遇する。ユーザがその新しい曲を選択する場合、一方のウェブページが新しい曲のオーディオ再生を開始したことを別のウェブページが知る術はないため、両方の曲が同時に再生される。したがって、ユーザは、不要な音楽を提供しているウェブページを見つけ、その音楽を停止し、再び新しいページにナビゲートし、最後に新しい音楽を開始するために、開かれている複数のブラウザインスタンス間をナビゲートするのに時間を費やさざるを得ない。これは不便である。これらの問題及び他の問題に鑑みて、ウェブブラウザ環境を出る必要なく、又はウェブページから注意を逸らす必要なく、ローカルアプリケーションの制御及びローカルアプリケーションとの対話を可能にする、ウェブページに含めるモジュールを提供することが有利である。さらに、ウェブページ作成者及び管理者が、過度のプログラミングを必要とせずに、ローカルユーティリティとウェブブラウザとの間での通信を可能にする、ウェブページに含めるモジュールを素早く容易に作成できるようにすることが有利である。
【0015】
したがって、本明細書に開示される概念及び実施形態は、ローカルに記憶され実行されるユーティリティ(メディアプレーヤ等)と、別個のアプリケーション(ウェブブラウザ等)によって検索され、且つ/又は表示されるウェブページ及び他のリモートコンテンツ(まとめて「ウェブページ」)との間でのシームレスなユーザ経験を可能にする。開示されるシステム及び方法では、ユーザは、ウェブページから離れてナビゲートされずに、ローカルユーティリティを制御することができる。さらに、開示されるシステム及び方法では、複数の異なるモジュール及び/又はウェブページを通して、単一のローカルユーティリティを制御することができ、これは、上述した同時音楽再生状況等の制御衝突の回避に役立つ。場合によっては、開示される実施形態は、消費者に提供するローカルアプリケーションの利便性及びアクセス可能性を改善しようとするとともに、ユーザが訪れ得るウェブページ等の他のリソースとのシームレスな統合を可能にしようとするエンティティによって利用され得る。
【0016】
図、特に
図1をこれより参照し、
図1は、幾つかの実施形態によるクライアント−サーバ環境のブロック図を示す。クライアント−サーバ環境は、クライアントコンピュータシステム102と、ウェブサーバ104と、モジュールサーバ122と、DNSサーバ114と、ネットワーク106とを含む。
【0017】
クライアントコンピュータシステム102(「クライアントコンピュータ102」)は、ウェブブラウザ108と、ローカルウェブサーバ112と、ローカルユーティリティ110とを含む。ウェブブラウザ108は、ウェブページ116を検索し、且つ/又は表示するように構成される。以下に開示されるシステム及び方法を使用して、クライアントコンピュータ102は、ユーザが、ユーザに別個のウィンドウ又はアプリケーション環境でローカルユーティリティ110と対話するように要求するのではなく、ウェブブラウザ108を介してローカルユーティリティ110と対話できるようにする。
【0018】
幾つかの実施形態では、ウェブページ116は、ウェブサーバ104によってクライアントコンピュータ102に送信される。例えば、ウェブページ116は、ユーザの要求時にウェブサーバ104から検索されるブログ又はソーシャルネットワーキングウェブページであり得る。当然、上述したように、ウェブページ116は、電子商取引、ニュース、エンターテイメント、メディア、及び/又は他のウェブページを含む任意のタイプのリモートコンテンツであり得、且つ/又は任意のタイプのリモートコンテンツを含み得る。幾つかの実施形態では、ウェブページ116は、ウェブブラウザ108とローカルウェブサーバ112との間での通信を開始するように構成される複数のリンクを含む。幾つかの実施形態では、リンクにはローカルユーティリティ制御要素120が関連付けられる。ローカルユーティリティ制御要素120が関連付けられたリンクは、本明細書では、ローカルユーティリティ制御リンクとも呼ばれる。幾つかの実施形態では、リンクは、ローカルユーティリティ制御要素120にプログラム的に関連付けられたhtml要素である。
【0019】
幾つかの実施形態では、ローカルユーティリティ110はメディアプレーヤ(例えば、ローカル又はリモートに記憶されたメディアを再生するように構成されたメディアプレーヤ)であり、ローカルユーティリティ制御要素120は、選択された場合に、ローカルユーティリティに再生、一時停止、停止、スキップ等のメディア再生又は閲覧機能を実行させるグラフィカル要素を含む。(ユーザは、マウスクリック、キーボード入力、タッチ入力、音声入力等の任意の適切な様式でグラフィカル要素を選択し得る)。幾つかの実施形態では、ローカルユーティリティ制御要素120は、メディアプレーヤによって現在再生中のメディアについての情報を示す、「現在再生中」ウィンドウ等の出力要素を含む。
【0020】
幾つかの実施形態では、リンクは、出力要素又は選択可能な要素に直接関連付けられるのではなく、むしろ、ウェブブラウザ108とローカルウェブサーバ112との間での他の必要な通信又は望ましい通信を可能にする。さらに、以下の開示では頻繁にローカルユーティリティ「制御要素」を参照するが、本教示は、要求(例えば、http要求)をローカルユーティリティ110に送信するウェブページ内の任意の要素に適用可能である。要求は、ローカルユーティリティ110の動作状況を変更し得(例えば、トラックのスキップ)、ローカルユーティリティからの情報(例えば、「現在再生中」情報)を要求し得、又はローカルユーティリティ110に任意の他の行動をとらせ得る。
【0021】
幾つかの実施形態では、ローカルユーティリティ制御要素120及びそれに関連付けられたローカルユーティリティ制御リンクは、モジュールサーバ122から受信されるモジュール124に含まれる。幾つかの実施形態では、ウェブページ116は、ウェブページ116に含めるために、モジュール(すなわち、モジュールの内容)をモジュールサーバ122からダウンロードさせるhtml要素又は他のコンピュータコードを含む。幾つかの実施形態では、モジュール124はインラインフレームである。(インラインフレームは、ドキュメントを別のドキュメント内に埋め込ませる)。幾つかの実施形態では、モジュールは、ウェブページ116内のhtml iフレーム要素によって定義されるインラインフレームである。モジュールは、メディアプレーヤ及びビューア、カメラ又はウェブキャム制御アプリケーション、ダウンロードマネージャ等の様々な異なるタイプのローカルユーティリティのローカルユーティリティ制御要素120を含み得る。モジュールは、ローカルユーティリティ110の特定の側面を制御し、且つ/又は閲覧する「ウィジェット」として説明されることもあり得る。モジュール、モジュールの内容、及びモジュールがどのように作成されるかについて、
図6A及び
図6Bを参照して後述する。
【0022】
ローカルウェブサーバ112は、ローカルユーティリティ110と通信し、それにより、http要求等のウェブブラウザ108から発行された要求は、ローカルウェブサーバ112によって受信され、要求からの情報は、ローカルユーティリティ110に送信されるか、又は他の様式で提供される。本考察では、ローカルウェブサーバ112はローカルユーティリティ110のフロントエンドとして機能するため、ローカルウェブサーバ112との通信を、ローカルユーティリティ110との通信と同じものと見なし得ることを理解されたい。幾つかの実施形態では、ローカルウェブサーバ112は、ローカルユーティリティ110とプログラム的に統合され、ローカルユーティリティ110とローカルウェブブラウザ108(及び/又は他のローカル又はリモートアプリケーション)との間での専用インタフェースとして機能する。幾つかの実施形態では、ローカルユーティリティ110及びローカルウェブサーバ112は、同じソフトウェアアプリケーションの一部であり、一方によって実行又は提供されるものとして本明細書において説明される動作又は機能は、他方によって実行又は提供することもできる。
【0023】
幾つかの実施形態では、ウェブブラウザ108は、インターネットプロトコル(IP)通信を介してローカルウェブサーバ112と通信する。例えば、幾つかの実施形態では、ウェブページ116内のリンク(例えば、ローカルユーティリティ制御要素120に関連付けられたリンク)は、実行されると、ウェブブラウザ108にハイパーテキスト転送プロトコル(http)要求を特定のIPアドレスに送信させるユニフォームリソースロケータ(URL)である。幾つかの実施形態では、http要求は、ローカルウェブサーバ112及び/又はローカルユーティリティ110によって認識され、ローカルユーティリティ110に何らかの行動をとらせるパラメータ及び/又はコマンドを含む。ローカルユーティリティ110がメディアプレーヤである実施形態では、パラメータ及び/又はコマンドは、メディアプレーヤに再生制御機能(例えば、停止、再生、スキップ等)を実行させ得るか、又はメディアプレーヤに、要求された情報(例えば、現在再生されている曲、直前に再生されたアルバム等)をウェブブラウザ108に提供させ得る。
【0024】
ローカルユーティリティ制御要素120が実行されるとき、ローカルウェブサーバ112がhttp要求をウェブブラウザ108から受信するために、ローカルユーティリティ制御リンクは、ローカルウェブサーバ112のIPアドレスに向けられなければならない。この機能は、ローカルウェブサーバ112にループバックアドレスを関連付け、ループバックアドレスを予め定義されたドメイン名にリンクすることによって提供し得る。
【0025】
特に、幾つかの実施形態では、ローカルウェブサーバ112にはクライアントコンピュータ102のループバックアドレス(又はループバックネットワークアドレス)が関連付けられる。本明細書で使用される場合、ループバックアドレスは自己参照アドレスであり、それにより、コンピュータから発行され、ループバックアドレスにアドレス指定される通信(IP通信を含む)は、同じコンピュータによって受信されることになる。IPv4プロトコル通信が使用される実施形態では、コンピュータのループバックネットワークアドレスは、IPアドレス127.0.0.1に対応する(
図1に示されるように)。幾つかの実施形態では、他のループバックネットワークアドレスが使用される。
【0026】
ウェブブラウザ108がhttp要求をローカルウェブサーバ112に送信するために、ウェブページ116は、「http://127.0.0.1/[command]」等のURLに関連付けられたリンクを含み得る。(詳細に後述するように、URLの[command]部分は、ローカルユーティリティ110に同じ動作を実行させるように構成し得る)。リンクが実行されると、ウェブブラウザ108はhttp要求をIPアドレス127.0.0.1に送信し、このアドレスはローカルウェブサーバ112に対応する。したがって、通信が、ウェブブラウザ108とローカルウェブサーバ112(ひいてはローカルユーティリティ110)との間で可能になる。
【0027】
しかし、様々な理由により、ループバックアドレスをローカルユーティリティ制御リンクのURLに直接(すなわち、127.0.0.1をURLにハードコード化することにより)包含することが実際的ではないことがある。例えば、本発明の幾つかの実施形態で使用されるセキュリティの特徴は、URLがループバックアドレスに直接アドレス指定される場合、可能ではない。むしろ、URL内のIPアドレスを使用するよりも、ドメイン名を使用するほうが有利であり得る。したがって、1つ又は複数の外部ドメイン名をドメイン名システムに登録し、ループバックアドレスに関連付け得る。
図1に示されるように、ドメイン名システム(DNS)サーバ114はドメイン名テーブル118を含む。ドメイン名テーブルは、ドメイン名をネットワークアドレス(IPアドレス等)にマッピングする。ウェブブラウザがhttp要求をURLに発行すると、DNSサーバは通常、URL内のドメインを実際のネットワークアドレスに変換するのに使用される。例えば、http要求をURL www.Example.com/homeに発行するブラウザは、「ホーム」ページを要求する実際のネットワークアドレスを特定する必要がある。そうするために、ウェブブラウザ108はDNSサーバ114と通信し、ドメイン「Example.com」のネットワークアドレス(例えば、IPアドレス)を要求する。
図1に示されるように、ドメイン名テーブル118はドメイン「Example.com」にIPアドレス75.25.1.92を相関付け、DNSサーバ114はこのIPアドレスをウェブブラウザ108に返す。ウェブブラウザ108は次に、ページ「/home」(及び「Example.com」に意図される実際に任意の他の通信)に対する要求をIPアドレス75.25.1.92に送信する。
【0028】
幾つかの実施形態では、クライアントコンピュータ102でのウェブブラウザ108とローカルユーティリティ110との通信を促進するために、ドメインをドメイン名システムに登録し得、ドメイン名システムにおいて、ドメインにループバックアドレスが関連付けられる。
図1に示されるように、ドメイン名テーブル118は、ドメイン「loopdomain.com」のエントリを含み、このエントリにはループバックネットワークアドレス127.0.0.1が関連付けられる。
【0029】
「loopdomain.com」にループバックアドレスを関連付けるDNSエントリは、上述したように、ウェブページ116内のリンクと併せて使用し得る。特に、ループバックIPアドレスをローカルユーティリティ制御リンクにハードコード化するのではなく、リンクに「http://loopdomain.com/[command]」等のURLを関連付け得る。このドメインが、ドメイン名テーブル118を介してループバックアドレスにマッピングされるため、このドメインにアドレス指定された任意のhttp要求は、任意の他のコンピュータに送信されることなく(実際に、ローカルクライアントコンピュータ102を出る必要さえなく)、ウェブブラウザ108からローカルウェブサーバ112に直接送信される。しかし、URLに、単にIPアドレスではなく外部ドメイン名が関連付けられるため、
図3を参照して後述するような幾つかの他の特徴及び利点を達成し得る。
【0030】
IPプロトコルを介して通信するために、ウェブブラウザ108及びローカルウェブサーバ112は、幾つかの技法を使用して、オープン通信チャネルを確立し維持する。幾つかの実施形態では、ウェブブラウザ108は、開いているTCP/UDPポート等の開いているポートを使用してローカルウェブサーバ112と通信しなければならない。幾つかの実施形態では、ウェブブラウザ108は、ポートスキャン技法を使用して、ローカルウェブサーバ112で利用可能なポートを識別する。例えば、幾つかの実施形態では、ウェブページ116及び/又はウェブブラウザ108は、予め定義されたポート範囲内で利用可能な最初のポートを見つけることにより、ローカルウェブサーバ112に接続しようとする。開かれているポートが識別されると、ウェブブラウザ108はそのポートを介してローカルウェブサーバ112と通信する。
【0031】
しかし、ウェブブラウザ108が開いているポートを識別しようとしている場合、サーバがクライアントコンピュータ102で実行されていないとき、ローカルウェブサーバ112での開かれているポートは見つからない。場合によっては、開いているポートを識別することができないことは、ローカルユーティリティ110が現在、クライアントコンピュータ102で実行されていないことをウェブブラウザ108(又はウェブページ116内のスクリプト若しくは他のコード)に示す。したがって、ウェブブラウザ108は、ローカルユーティリティ110を自動的に起動するように構成し得る。(この考察では、ローカルユーティリティ110の起動は、ローカルウェブサーバ112の起動を含む)。幾つかの実施形態では、これは、クライアントコンピュータ102のオペレーティングシステムによって認識されるカスタムURIスキームを使用して達成される。幾つかの実施形態では、ウェブページ116は、カスタムURIスキームを使用するリンクを含み得、ローカルユーティリティ110を起動するコマンドを含む。このリンクがブラウザによって実行される(開いているポートが識別されなかった後)場合、クライアントコンピュータ102はローカルユーティリティ110を起動し、それにより、ウェブブラウザ108との通信を確立し得る。
【0032】
一例では、ユーザが、メディアプレーヤウィジェットを含むウェブページを閲覧しており、ユーザが「再生」コマンドを選択する場合、ウェブブラウザ108は、上述したポートスキャン法を介してローカルユーティリティ110と通信しようとする。ローカルユーティリティ110が実行されていない場合、ウェブブラウザ108は、カスタムURIスキームを使用してリンクを実行して、ローカルユーティリティ110を起動し、その後、選択された曲を再生するコマンドを首尾よく通信する。
【0033】
図2は、リアルタイム双方向通信を、クライアントコンピュータシステム102においてウェブブラウザ108とローカルサーバ112との間でいかに確立し得るかを示すブロック図である。http通信では、ウェブサーバは、クライアントコンピュータでのウェブブラウザとの招かれていない通信を開始しないことがある。むしろ、ウェブサーバは、ウェブブラウザによって発行される要求に応答することしかできない。したがって、通信がウェブブラウザとウェブサーバとの間で渡される間、全ての通信は最初に、ウェブブラウザによって開始されなければならない。しかし、特定の状況では、特定の要求なしでのウェブサーバによるウェブブラウザへの情報の送信を許可すべきである。例えば、ローカルメディアプレーヤアプリケーションが、ウェブページ内のメディアプレーヤウィジェットの「現在再生中」ウィンドウを埋めるなど、現在再生されている曲についての情報を送信することが有利であり得る。そして、ローカルメディアプレーヤは、ウェブブラウザがアップデートを要求するときだけではなく、アップデートが生じるときは常に、現在再生されている曲についての更新された情報を送信可能であるべきである。
【0034】
図2に示されるように、幾つかの実施形態では、ウェブページ116は、オープンエンドメッセージ要求202をローカルウェブサーバ112に送信するように構成される。幾つかの実施形態では、オープンエンドメッセージ要求202は、ウェブページ116がロードされるとすぐに、ウェブブラウザ108から送信され、それにより、ローカルユーティリティ110がウェブブラウザ108に送信したいあらゆる情報を、その後、随時、メッセージに応答して送信し得る。幾つかの実施形態では、オープンエンドメッセージ要求202は、ローカルユーティリティ110がウェブブラウザ108に提供したい任意のタイプの情報に対する要求である。幾つかの実施形態では、オープンエンドメッセージ要求202は、ローカルユーティリティ110がメディアプレーヤである実施形態では、現在再生されている曲等の、予め定義されるカテゴリの情報に対する要求である。
【0035】
ローカルウェブサーバ112は、オープンエンドメッセージ要求202を受信すると、ウェブブラウザ108に送信すべき何らかの情報があるとローカルユーティリティ110が判断するまで、要求に関して行動をとらない。場合によっては、ローカルユーティリティ110は、オープンエンドメッセージ要求202を受信した直後は、ウェブブラウザ108に送信するいかなる情報も有さない。したがって、ローカルウェブサーバ112は、リターンメッセージ204を送信する必要があるイベントを待つ。そのようなイベントが発生する場合、ローカルウェブサーバ112はリターンメッセージ204をウェブブラウザ108に送信する。幾つかの実施形態では、ウェブブラウザ108は即座に、別のオープンエンドメッセージ要求202をローカルウェブサーバ112に送信し、それにより、未決の要求が常に存在する。このようにして、ローカルウェブサーバ112は、オープンエンドメッセージ要求202を介してウェブブラウザ108に「未承認」情報を送信することができる。
【0036】
他方、ユーザが複数のローカルユーティリティ制御要素120のうちの1つを選択したなど、ウェブブラウザ108がコマンドをローカルウェブサーバ112に発行する準備ができた場合、ウェブブラウザ108は単にコマンド206を発行する。ウェブブラウザ108は、要求を送信するためにインビテーションを必要としないため、コマンド206は随時送信し得る。幾つかの実施形態では、コマンド206はhttp要求の部分である。コマンド206及びオープンエンドメッセージ要求202を使用して、連続した双方向通信が、ローカルウェブサーバ112とウェブブラウザ108との間で可能になる。
【0037】
幾つかの実施形態では、ウェブブラウザ108は、ウェブページ116及び/又はモジュール124によって要求される全ての通信を促進するために、ローカルウェブサーバ112との幾つかの接続を要求する。幾つかのブラウザは任意の単一のサーバへの同時接続数を制限するため、これは問題を呈し得る。しかし、場合によっては、ウェブページ116は、ローカルユーティリティ110との所望レベルの対話性を可能にするために、サーバ接続の最大数を超える接続数を要求し得る。例えば、ユーザは、単一のウェブブラウザで複数の開かれたウェブページを有し得、複数のウェブページは、ローカルユーティリティ110と通信するローカルユーティリティ制御要素120を有する。したがって、ブラウザが、ローカルウェブサーバ112への許容最大同時接続数をすぐに超える場合がある。さらに、未決の要求の維持により、多くの利用可能な接続が永続的に占有され得るため、この問題は、上述したオープンエンドメッセージ要求によって悪化するおそれがある。
【0038】
この問題は、複数のサブドメインを通してローカルウェブサーバ112に接続することによって回避し得る。特に、ループバックアドレスに関連付けられたドメインは、random1.loopdomain.com、random2.loopdomain.com等の複数のサブドメインに分割し得る。幾つかの実施形態では、
図1のドメイン名テーブル118に示されるように、これらのサブドメインにはそれぞれ、ループバックアドレス(この場合、127.0.0.1)が関連付けられる。ローカルウェブサーバ112との通信の開始を意図されるウェブページ116内のリンクは、これらのサブドメインに配信し得、したがって、ウェブブラウザ108からこれらのサブドメインのうちの任意のサブドメインへの任意の要求は、ローカルウェブサーバ112に向けられる。そして、要求は異なるドメイン名に送信されるため、ウェブブラウザ108は、異なるサーバに向けられているものとして要求を登録し、したがって、オープン接続の数を制限しない。
【0039】
図3は、幾つかの実施形態により、通信をウェブブラウザ108とローカルウェブサーバ112との間にいかに確立し得るかを示すブロック図であり、ウェブページ116はセキュアプロトコルを介して受信される。
【0040】
幾つかの場合、ウェブページは、ハイパーテキスト転送プロトコルセキュア(https)等のセキュアプロトコルを介してウェブブラウザに送信される。しかし、ウェブブラウザは、ウェブページがhttpsコンテンツ並びにhttpコンテンツを含む場合、アラート又は警告をユーザに発行するように構成される。したがって、ウェブページ116が、https(例えば、https://Example.com)を介してウェブブラウザ108によって受信されるが、ローカルユーティリティ制御要素120に通常のhttp(例えば、http://www.loopdomain.com/[control])が関連付けられている場合、ウェブブラウザ108は、警告メッセージをユーザに表示し得る。したがって、ウェブブラウザ108及びローカルウェブサーバ112がhttpsを介して通信できるようにすることが有利である。利点の中でも特に、これにより、ウェブブラウザ108での警告メッセージのトリガーが回避される。
【0041】
セキュアプロトコルを介してウェブサーバと自由に通信可能になるには、先に、ウェブブラウザは、ウェブサーバとのセキュア通信チャネルを確立しなければならない。セキュア通信チャネルとは、保護された通信のために、2つ以上の装置間で認証され、且つ/又はセキュアであるセッションを表す。セキュア通信チャネルは、2つの装置間での認証ルーチン成功を前提とする。セキュア通信チャネルは、リモートサーバからクライアントコンピュータにデジタル証明書を転送することを含むルーチンを通して確立し得る。幾つかの実施形態では、ウェブブラウザ108及びローカルウェブサーバ112は、このタイプの認証ルーチンを使用してセキュア通信チャネルを確立する。特に、幾つかの実施形態では、ローカルウェブサーバ112は、ウェブサーバ112を認証するために、ウェブブラウザ108がウェブサーバ112に要求し得るデジタル証明書302を記憶する。幾つかの実施形態では、デジタル証明書302は公開鍵を含み、ウェブブラウザ108は、公開鍵を用いて、ローカルウェブサーバ112に送信される1つ又は複数のメッセージを暗号化する。
【0042】
典型的なコンピュータネットワーキング使用では、デジタル証明書には、単一のドメイン(そのサブドメインを含む)が一意に関連付けられる。場合によっては、認証を続けるために、デジタル証明書に、証明書要求が送信されるドメインと同じドメインを関連付けなければならない。例えば、証明書要求がウェブブラウザから、www.BankPage.comに関連付けられたサーバに送信され、サーバが、www.EvilPage.comが関連付けられたデジタル証明書を返す場合、ウェブブラウザ108は、要求のドメイン(BankPage.com)と証明書のドメイン(EvilPage.com)とが一致しないことを認識する。これは、例えば、EvilPage.comからのサーバが、BankPage.comからのサーバとしてなりすまし、BankPage.comに意図される通信を傍受しようとする場合に生じ得る。しかし、ドメインが一致しないため、認証は失敗し、ウェブブラウザはそれ以上、EvilPage.comからのサーバとは通信しない。
【0043】
上述したように、幾つかの実施形態では、ローカルユーティリティ制御要素120には、外部ドメイン(例えば、loopdomain.com)へのリンクが関連付けられる。したがって、ローカルウェブブラウザ108が、上述した認証プロセスを使用してローカルウェブサーバ112とのセキュア通信チャネルを確立するためには、ローカルウェブサーバ108は、それと同じドメインが関連付けられたデジタル証明書を有さなければならない。したがって、幾つかの実施形態では、ローカルウェブサーバ112は、ローカルユーティリティ制御リンクと同じドメイン(例えば、loopdomain.com)が関連付けられたデジタル証明書302を記憶する。
【0044】
図3を再び参照し、
図3は、ローカルユーティリティ制御リンクがhttpsプロトコルを指定し、外部ドメイン「loopdomain.com」を参照する一実施形態を示す。例えば、ローカルユーティリティ制御要素120は、「再生」ボタンであり得、以下のリンク:https://loopdomain.com/[play command]を関連付け得る。このリンクを実行すると(ウェブページ116での再生ボタンのユーザ選択に応答するなど)、ウェブブラウザ108は、DNSサーバ114によって供給されるアドレスでのサーバとのセキュア通信チャネルを確立しようとする。
図3に示されるように、loopdomain.comのアドレスはループバックアドレスであるため、ウェブブラウザ108は、デジタル証明書に対する要求をローカルウェブサーバ112に送信する。これに応答して、ローカルウェブサーバ112は、デジタル証明書302(loopdomain.comが関連付けられる)をウェブブラウザ108に送信する。この場合、ブラウザ108は、loopdomain.comに証明書を要求し(実行されたリンクがそのドメインにアドレス指定されていたため)、ローカルウェブサーバ112から、そのドメインに関連付けられた証明書を受信してある。したがって、ウェブブラウザ108は、証明書に要求と同じドメインが関連付けられていることを確認し、したがって、認証ルーチンのこの部分を完了し、ウェブブラウザ108とローカルウェブサーバ112との間にセキュア通信チャネルを確立する。
【0045】
幾つかの実施形態では、デジタル証明書302がクライアントコンピュータのユーザに提供される際、デジタル証明書302にはローカルウェブサーバ112がバンドルされる。幾つかの実施形態では、デジタル証明書302はコピーされ、ローカルウェブサーバ112のあらゆるインスタンスに含められる。幾つかの実施形態では、デジタル証明書302はワイルドカード証明書であり、それにより、証明書は、親ドメインに関連付けられた任意のサブドメイン(例えば、random1.loopdomain.com、random2.loopdomain.com等)を認証する。他の実施形態では、ユーザは、最初にローカルウェブサーバを実行するとき、デジタル証明書を取得し、且つ/又はインストールする。さらに他の実施形態では、ユーザは定期的に、デジタル証明書を更新し、且つ/又は他の様式で置き換える。
【0046】
上記考察では、httpsプロトコルに関して認証プロセスを説明しているが、開示される概念は、他のセキュアプロトコル及び認証技法にも適用される。さらに、https実施でのデジタル証明書が説明されるが、他のタイプの認証トークン、証明書、及びルーチンを、特に上述したものに代えて使用することも可能である。そして、認証プロセスの特定の態様について上述されているが、考察されていない他のステップ及び/又は手順を含んでもよい。例えば、認証プロセスは、セキュア通信チャネルに使用すべき暗号コード又は暗号鍵を確立し得る。
【0047】
図4は、幾つかの実施形態による、クライアント−サーバ環境での複数のクライアントコンピュータ102−1〜102−nを示すブロック図である。上述したように、デジタル証明書302は、各クライアントコンピュータ102−nにインストールされたローカルウェブサーバに含めることができる。例えば、企業が、ローカルユーティリティと、関連付けられたローカルウェブサーバとを含むメディアプレーヤソフトウェア(例えば、メディアプレーヤアプリケーション)を配信する場合、各ソフトウェアパッケージはデジタル証明書302のコピーを含むことになる。したがって、同じデジタル証明書302(又は単一のデジタル証明書の同一コピー)が各クライアントコンピュータ102−nに常住することになる。
【0048】
デジタル証明書302は通常、厳密に保護され、証明書を所有する組織外部で共有されることは意図されない。したがって、デジタル証明書302は、
図3及び
図4に記載されるように使用される場合、コピーが証明書所有者によって所有又は制御されない異なるコンピュータに常駐するため、侵害されたとみなされ得る。実際に、クライアントコンピュータには、証明書が発行された当事者ではなく、ソフトウェアパッケージのユーザが関連付けられる。
【0049】
通常、侵害されたセキュリティ証明書は、深刻なセキュリティの問題である。例えば、オンライン商取引ウェブサイトの支払いページのデジタル証明書が侵害される場合、クライアントと商取引ウェブサイトのサーバとの通信が、悪意のある第三者によって傍受されるおそれがある。しかし、証明書が侵害されていることは、上述した実施形態では、同様のセキュリティリスクを生み出さない。むしろ、暗号化された通信は単に、クライアントコンピュータ自体にループバックされるため、セキュアメッセージは実際には決してクライアントコンピュータから出ない。これらの内部通信は、悪意のある当事者によって容易に傍受又は他の様式で改竄されない。
【0050】
場合によっては、ローカルウェブサーバ112は、悪意のあるウェブページがローカルユーティリティ110と通信して、望ましくない動作を実行すること、又は機密データにアクセスすることを阻止するために、許可されたモジュール124からのコマンド及び要求のみを許容すべきである。例えば、ローカルユーティリティ110がカメラ制御アプリケーションである場合、悪意のあるウェブページは、接続されたウェブキャムを作動させ、許可されていない画像を捕捉しようとすることがある。または、悪意のあるウェブページは、メディアプレーヤからメディアアクセス履歴を抽出しようとすることがある。したがって、ローカルウェブサーバ112は、ウェブページからの要求が許可されているか否かを判断し、許可されていない要求を阻止することが可能であるべきである。本発明の一実施形態による方法例について、
図5を参照して考察する。
【0051】
図5は、幾つかの実施形態によるクライアント−サーバ環境のブロック図を示す。クライアント−サーバ環境は、クライアントコンピュータ102、ウェブサーバ104、モジュールサーバ122、トークンサーバ502、及び認証サーバ504を含み、これらはそれぞれネットワーク106に結合される。クライアントコンピュータ102は、
図1を参照して上述したように、ウェブブラウザ108、ローカルユーティリティ110、及びローカルウェブサーバ112を含む。幾つかの実施形態では、モジュールサーバ122、トークンサーバ502、及び認証サーバ504には全て、共通のエンティティ又はサービスプロバイダに関連付けられる。
【0052】
幾つかの実施形態では、
図5のクライアント−サーバ環境を参照して後述するように、トークンパッシング手順を使用して、モジュール124とローカルウェブサーバ112との間に認証された通信を確立する。
【0053】
ウェブブラウザ108は、ウェブサーバ104からウェブページ116を受信するように構成される。幾つかの実施形態では、ウェブページ116は、ローカルユーティリティ制御要素120を含むモジュール124への参照を含み、モジュール(及び/又はローカルユーティリティ制御要素120及びローカルユーティリティ制御リンクを含む、モジュールの内容)は、モジュールサーバ122から受信される。幾つかの実施形態では、ウェブサーバ104及びモジュールサーバ122には異なるドメインが関連付けられる。幾つかの実施形態では、モジュールへの参照は、モジュールサーバ122のURLが関連付けられたhtml iフレーム要素である。
【0054】
ウェブブラウザ108は、ウェブページ116をウェブサーバ104から受信すると、モジュールサーバ122と交信して、モジュール124を受信する。幾つかの実施形態では、モジュール124に対する要求の受信に応答して、モジュールサーバ122は、トークンサーバ502に第1のトークンを要求して受信する。次に、モジュールサーバ122は、モジュール124及び第1のトークンをウェブブラウザ108に送信する。幾つかの実施形態では、トークンは、文字列、ファイル、又はhttp通信に含めることができるか、又は他の様式でコンピュータ間で共有することができる任意の他の情報である。
【0055】
次に、第1のトークンは、ウェブブラウザ108からローカルウェブサーバ112に送信される。幾つかの実施形態では、モジュール124は、第1のトークンを、モジュール124に含まれるリンクの実行によって開始されるhttp要求と共にローカルウェブサーバ112に送信するように構成される。ローカルウェブサーバ112への要求にトークンが含まれない場合、要求は無視される。第1のトークンが要求に含まれる場合、トークンは、認証のために、ローカルウェブサーバ112からローカルユーティリティ110に渡される。
【0056】
幾つかの実施形態では、第1のトークンを認証するために、ローカルユーティリティ110は第1のトークンを認証サーバ504に送信する。認証サーバ504は、トークンサーバ502を使用して、トークンサーバ502が実際に第1のトークンを発行したか否かを確認する。次に、認証サーバ504は、ローカルユーティリティ110に、第1のトークンが真正であるか否か(例えば、第1のトークンがトークンサーバ502によってモジュール124に発行されたか否か)を返信する。
【0057】
認証サーバ504からの返信により、第1のトークンがトークンサーバ502によって発行されていなかったことが示される場合、ローカルユーティリティは、ウェブブラウザ108からの要求を無視し、要求に含まれるあらゆるコマンドに関してそれ以上の行動をとらない。返信により、第1のトークンが真正であることが示される場合、ローカルユーティリティ110(及び/又はローカルウェブサーバ112)は第2のトークンを生成し、ウェブサーバ112は第2のトークンをモジュール124に送信する。次に、モジュール124は、ローカルウェブサーバ112への続く全ての要求に第2のトークンを含め、ローカルウェブサーバ112は、第2のトークンを含む要求に対してのみ行動をとる。
【0058】
幾つかの実施形態では、ローカルウェブサーバ112とウェブブラウザ108との間の許容される唯一の通信は、モジュールサーバ122によって提供されるモジュールから発せられる通信である。したがって、上述したトークンパッシング法は、有効な第2のトークンを含む要求のみが認識され、有効な第2のトークンは、認証サーバ504による第1のトークンの認証後でのみ取得可能であるため、ウェブページとローカルウェブサーバ112との間での許可されてない通信を阻止する。
【0059】
上記では、ユーザが、リモートソースから受信されるウェブページを介してローカルユーティリティ110と対話することができるように、ウェブブラウザ108とローカルユーティリティ110との間での連続した双方向通信をいかに可能にするかの態様について説明している。一態様は、ウェブページ116内にローカルユーティリティ制御要素120を提供することに関する。ローカルユーティリティ制御要素120及びモジュール124の態様について、
図6A及び
図6Bを参照して考察する。
【0060】
図6Aは、幾つかの実施形態によるウェブページ600及びモジュール124を示すブロック図である。モジュール124は、メディアプレーヤであるローカルユーティリティ110を制御し、ローカルユーティリティ110についての情報を提供する幾つかのローカルユーティリティ制御要素120を含む。幾つかの実施形態では、ローカルユーティリティ制御要素120は、再生制御要素602、プレイリスト情報604、及び現在再生中ウィンドウ606を含む。幾つかの実施形態では、モジュール124は、画像(例えば、アルバムアート)、テキスト(例えば、歌詞)等の他の情報を表示し、テキスト(例えば、カラオケ表示)、ビデオ(例えば、音楽ビデオ)等をスクロールし、且つ/又は同期することが可能である。異なるより多数又はより少数の制御要素を含むローカルユーティリティ制御要素120の異なる組み合わせも可能である。さらに、モジュール124内のローカルユーティリティ制御要素120のタイプは、通信するように構成されるローカルユーティリティ110の特定のタイプに依存する。
【0061】
上述したように、幾つかの実施形態では、モジュール124はインラインフレームであり、このフレームは、html iフレーム要素によって定義し得る。幾つかの実施形態では、インラインフレームの内容はリモートサーバ(例えば、モジュールサーバ122)から受信される。幾つかの実施形態では、ウェブページ600のhtmlは、厳密にどのローカルユーティリティ制御要素120をモジュール120に含めるべきかをモジュールサーバ122に対して指定するリンクを含む。幾つかの実施形態では、リンクは、モジュール124の他の側面も同様に指定する。モジュール124が、例えば、メディアプレーヤウィジェットである場合、リンクは、ウィジェットがユーザに提供すべき曲を指定することができる。
【0062】
特に、ウェブページ作成者は、ウェブページ600内に、ウェブページ訪問者が特定の曲、プレイリスト、アルバム、ラジオ局等を再生できるようにするように構成されたウィジェットを含めたいことがある。このように、ウェブページ600は、カスタマイズされた独自のユーザ経験を訪問者に提供することができる。したがって、ウェブ作成者は、ウェブページに含めるためのカスタマイズモジュールを提供するモジュール作成サービスを使用し、厳密に、1つ又は複数のどの曲(又は他のメディアタイプ)をモジュール124に含めるべきかを指定し得る。このサービスは、作成者によって要求される特定のモジュールコンテンツに対応するカスタムリンク(例えば、URL)を提供し得る。このカスタムリンクをウェブページ600内に含めることにより、モジュールに、厳密に作成者が要求したものが入れられる。そして、詳細に上述したように、訪問者が、モジュール120によって提供される曲の再生を要求する場合、ウェブページ600はローカルユーティリティ110と通信して、曲の再生を開始する。(ローカルユーティリティ110がメディアプレーヤである実施形態では、メディアプレーヤは、ローカルに記憶されたファイルにアクセスして、ユーザが選択したものを再生するか、又はメディアを外部メディアプロバイダから受信し得る。幾つかの実施形態では、メディアプロバイダにはモジュール作成サービスが関連付けられる)。
【0063】
幾つかの実施形態では、カスタムリンクは、モジュールサーバ122に関連付けられたドメインにアドレス指定されたURLであり、モジュールサーバ122によって認識される一意の文字列を含む。幾つかの実施形態では、一意の文字列は、特定のコンテンツを有するモジュール124のカスタムリンクを提供する要求に応答して、モジュールサーバ122によって提供される。例えば、ウェブページ作成者は、作成者が好きなアルバム又はプレイリストが入ったモジュールを要求し得る(モジュールサーバ122から)。それと引き換えに、モジュールサーバ122は、一意の文字列を含むカスタムリンクを作成し、それをウェブページ作成者に提供する。カスタムリンクが実行される(ウェブブラウザ108に、モジュールサーバ122への文字列を含むhttp要求を作成させる)と、モジュールサーバ122は、文字列に基づいて、要求されたモジュールコンテンツを特定し、そのコンテンツをウェブブラウザ108に提供する。
【0064】
幾つかの実施形態では、モジュール124の内容は、ウェブページ600によって自動的にリアルタイムで確立される。幾つかの実施形態では、ウェブページ600は、動的に生成される情報に基づいて、カスタムリンクをモジュールサーバ122に要求するコード(例えば、スクリプト)を含む。例えば、ウェブページ600は、曲のリストを表示し、ユーザがお気に入りに投票できるようにし得る。ウェブブラウザによってロードされると、ウェブページ600は、現在の最高の評価の曲に基づいて、モジュールサーバ122からカスタムリンクを要求し得る。したがって、投票結果が経時変化するにつれて、又は新しい曲が投票リストに追加され、他の曲が投票リストから削除されるにつれ、モジュールのコンテンツ(ウェブページ600がロードされる際に作成される)はそれに従って変更される。
【0065】
ローカルユーティリティ110がメディアプレーヤである幾つかの実施形態では、モジュール124は、所定のメディア選択肢をユーザに提供せず、むしろ、メディアプレーヤの現在のステータスへのウィンドウとして動作する。例えば、ウェブページが指定する曲、アルバム、又はプレイリストを示す代わりに、モジュール124は、ユーザの現在選択されているプレイリストと、「現在再生中」情報とを示す。したがって、このモジュール124は単に、ユーザの都合を考えて、ウェブページ600によって提供し得、したがって、メディアプレーヤを制御するために、ウェブページ600から離れてナビゲートされる必要がない。
【0066】
図6Bは、幾つかの実施形態によるウェブページ610及びモジュール124を示すブロック図である。ウェブページ600のように、ウェブページ610はモジュール124を含み、モジュール124は、現在再生中ウィンドウ606と、プレイリスト情報604と、再生制御要素602とを含むローカルユーティリティ制御要素120を含む。(上述したように、ローカルユーティリティ制御要素120の多くの異なる組み合わせをモジュール124に含め得る)。ウェブページ610は幾つかのモジュール作成リンク612も含む。幾つかの実施形態では、モジュール作成リンク612には、モジュール作成リンク612が実行される際、カスタムリンクをモジュールサーバ122に要求するコード(例えば、スクリプト)が関連付けられる。幾つかの実施形態では、モジュール作成リンク612が選択される(ウェブブラウザ108に、モジュールサーバ122への文字列を含むhttp要求を行わせる)場合、モジュールサーバ122は、要求に含まれる情報に従ってモジュールを作成する。次に、ユーザに表示するために、モジュールをウェブページ610に含めることができる。
【0067】
幾つかの実施形態では、モジュール作成リンク612には、他の人々又はエンティティによって共有される情報が関連付けられる。幾つかの実施形態では、モジュール作成リンク612には、ソーシャルネットワークのメンバによって提供される情報を関連付け得る。例えば、ウェブページ610には、ユーザが、メディア消費についての情報(メディアアクセス履歴、記憶されているプレイリスト、お気に入りの曲等を含む)等の情報を共有することができるソーシャルネットワークを関連付け得る。幾つかの実施形態では、ユーザは、情報をウェブページに掲示し、且つ/又は個人情報へのソーシャルネットワークによるアクセスを可能にする(例えば、ユーザのメディアプレーヤ又はユーザが加入しているメディアサービスから情報を検索する)ことによってそのような情報を共有する。
【0068】
ウェブページ610又はそのプロバイダは、この情報を使用して、ユーザの情報に基づくモジュール作成リンク612を作成し、且つ/又は提供し得る。次に、モジュール作成リンク612を他のユーザに提示し得、それにより、他のユーザは、その情報に基づいてモジュールを作成することができる。(プライバシーを保護するために、あるユーザの情報に基づくモジュール作成リンク612は、ユーザがそのような共有を許可した他のユーザのみに提供し得る)。
図6Bに示されるように、モジュール作成リンク612は、別のユーザのトップトラック、別のユーザのお気に入りのプレイリスト、及び/又は別のユーザが何を現在再生中であるかに基づいて、ユーザがモジュールを作成できるようにし得る。モジュール作成リンク612は、ユーザが、別のユーザの「好きなサウンド」であるラジオ局を開始できるようにもし得る。
【0069】
ユーザの「トップ」又は「お気に入り」の曲又はプレイリストは、最も頻繁に再生されるか、最近再生されたか、最も高い評価等のものを含み得る。そして、
図6Bに示されるモジュール作成リンク612の例では、「トラック」及び「プレイリスト」が言及されるが、これらのリンクは、曲、プレイリスト、アルバム、アーティスト、ジャンル、ラジオ曲、音楽テーマ等の任意のメディア情報又は分類に基づき得る。
【0070】
幾つかの実施形態では、別のユーザが何を「現在再生中」であるかは、そのユーザに最近作成されたモジュールに基づく。例えば、幾つかのウェブページは、モジュールを要求し、且つ/又は表示することが可能であるが、作成された後、モジュール(又はローカルユーティリティ)のリアルタイムステータスを識別することができない。したがって、どの曲又はプレイリストが実際に、任意所与のユーザでアクティブであるかを確実に特定することは可能ではないことがあるが、ウェブページ及び/又はウェブページプロバイダは、任意所与のユーザのためにどのモジュールが最近作成されたかの記録を有し得る。
【0071】
幾つかの実施形態では、モジュール作成リンク612は、音楽選択アルゴリズムを使用して、どの曲、アーティスト、ジャンル等をモジュール124に含めるかを判断し得る。例えば、ユーザが、特定のユーザが好きなサウンドのラジオ局を開始するように構成されるモジュール作成リンクを選択する場合、そのユーザが「好きなサウンド」が何であるか(すなわち、そのユーザのテイスト及び/又は好みに基づく音楽フィンガープリント)を判断し、次に、その記述に合う曲を選択することが必要であり得る。幾つかの実施形態では、ユーザの音楽フィンガープリントは、最も頻繁に再生されるか、最近再生されたか、又は評価が最も高い曲、アーティスト、ジャンル等に基づく。次に、音楽フィンガープリントを使用して、モジュール124に含める音楽(例えば、曲識別子)を提供する音楽選択アルゴリズムにシーディングする(seed a music selection algorithm)。幾つかの実施形態では、音楽選択アルゴリズムは、ウェブサーバ104、モジュールサーバ122、ウェブページ610のプロバイダ、又は任意の他のリモートソースによって提供される。
【0072】
図7は、幾つかの実施形態によるローカルユーティリティを制御する方法700を表すフローチャートである。方法700は、少なくとも1つのプロセッサと、メモリとを有するクライアントコンピュータ(例えば、クライアントコンピュータ102)において実行され、メモリはプロセッサによって実行される命令を記憶する。幾つかの実施形態では、方法700は、ローカルユーティリティ110、ローカルウェブサーバ112、及び/又はウェブブラウザ108のうちの任意を含むローカルコンピュータ102において実行される。
【0073】
クライアントコンピュータのローカルユーティリティは、アプリケーションから発せられ、第1のトークンを含む第1の要求を受信し(702)、ここで、アプリケーションは、複数のリンク及び第1のトークンを含むウェブページを第1のサーバから受信してある。複数のリンクは、第2のサーバからアプリケーションによって受信されている。
【0074】
幾つかの実施形態では、ローカルユーティリティは、クライアントコンピュータによって記憶され実行されるソフトウェアである。幾つかの実施形態では、アプリケーションは、ウェブブラウザ108等の、リモートサーバから受信した情報を表示し、且つ/又はレンダリングすることが可能な任意のアプリケーションである。
【0075】
幾つかの実施形態では、ウェブページは、ハイパーテキストマークアップ言語(http)及び/又は他のタイプ、標準、又はスタイルのプログラミング言語、スクリプト、実行可能関数等で符号化される。幾つかの実施形態では、複数のリンク及び第1のトークンは、ウェブページ内のモジュールに存在する。幾つかの実施形態では、モジュールはiフレームである。上述したように、複数のリンクはユニフォームリソースロケータ(URL)であり得、ハイパーテキスト転送プロトコル又はハイパーテキスト転送プロトコルセキュアを含む任意の適切なプロトコルを指定し得る。幾つかの実施形態では、複数のリンクのうちの1つ又は複数には、ループバックネットワークアドレス(例えば、127.0.0.1、*.loopdomain.com等)に帰着するドメインが関連付けられる。
【0076】
幾つかの実施形態では、ウェブページは、複数のリンクのうちの1つ又は複数がそれぞれ関連付けられた1つ又は複数のローカルユーティリティ制御要素を含む。ローカルユーティリティ制御要素の例については上に述べた。幾つかの実施形態では、ローカルユーティリティ制御要素は、ユーザにより選択可能であり(例えば、制御ボタン)、幾つかの実施形態では、選択可能ではなく、ステータス情報又は他の出力をユーザに提供するだけである(例えば、ステータスウィンドウ)。ローカルユーティリティがメディアプレーヤである実施形態では、ローカルユーティリティ制御要素は、メディアプレーヤ制御要素であり得、ローカルユーティリティに、メディアファイルの再生、メディアファイルの停止、メディアファイルの一時停止、メディアファイルの高速先送り、メディアファイルの巻き戻し、メディアファイルのスキップ、プレイリストの再生順序の変更、プレイリストへのメディアファイルの追加、メディアファイルの購入、ローカルライブラリへのメディアファイルの追加、及びプレイリストからのメディアファイルの削除のうちの1つ又は複数を実行させ得る。
【0077】
幾つかの実施形態では、ローカルユーティリティは、音楽及び/又はビデオ等のメディアの記憶、再生、及び/又は編集を行うことが可能なメディアプレーヤである。幾つかの実施形態では、ローカルユーティリティはダウンロードマネージャである。幾つかの実施形態では、ローカルユーティリティは、ローカルユーティリティに結合されて通信するウェブサーバ(例えば、ローカルウェブサーバ112)を含む。幾つかの実施形態では、第1のトークンを含む第1の要求は、ウェブサーバで受信され、ウェブサーバは第1のトークンをローカルユーティリティに渡す。
【0078】
図7に戻ると、方法700は、第1のトークンを第3のサーバに送信することを含む、第1のトークンを認証すること(706)を更に含む。幾つかの実施形態では、第1のトークンを認証することは、第1のトークンをローカルユーティリティから第3のサーバに送信すること(707)と、ローカルユーティリティにおいて、第3のサーバから認証メッセージを受信すること(708)とを含む。幾つかの実施形態では、認証メッセージは、第1のトークンは第2のサーバによって発行されたことを示す。幾つかの実施形態では、第1のトークンは、ローカルユーティリティから第3のサーバに送信される。
【0079】
方法700は、第1のトークンの認証に応答して、ローカルユーティリティにおいて第2のトークンを生成すること(710)を更に含む。第2のトークンは、アプリケーションからの続く要求に含めるために、アプリケーションに送信される(712)。幾つかの実施形態では、第2のトークンは、ローカルユーティリティのローカルウェブサーバによってアプリケーションに送信される。
【0080】
幾つかの実施形態では、方法は、第3のトークンを含む第2の要求を受信すること(714)を含む。幾つかの実施形態では、第2の要求は、アプリケーション(例えば、ウェブブラウザ108)から送信され、ローカルユーティリティ(例えば、ローカルユーティリティ110及び/又はローカルウェブサーバ112)によって受信される。幾つかの実施形態では、第2の要求は、第3のトークンと、1つ若しくは複数のローカルユーティリティ制御コマンド、1つ若しくは複数のローカルユーティリティステータス要求、又はそれらの任意の組み合わせとを含むhtml要求である。幾つかの実施形態では、要求は、ローカルユーティリティ及び/又はローカルウェブサーバによって認識可能な文字列であり、ローカルユーティリティ及び/又はウェブサーバに何らかの行動をとらせる。幾つかの実施形態では、ペイロードはファイル又は他のデータ構造である。
【0081】
幾つかの実施形態では、方法は、第3のトークンが第2のトークンに一致することを検証すること(716)を含む。第2のトークンと第3のトークンが一致する場合、第2の要求の内容に基づく1つ又は複数の行動がとられる(718)。第2のトークンと第3のトークンとが一致しない場合、第2の要求の内容に基づく行動はとられない(720)。第3のトークンが第2のトークンに一致する(すなわち、同じトークンである)ことを検証することにより、ローカルユーティリティは、第2の要求が、第1のトークンを使用して前に認証された(
図5を参照して上述したように)モジュールと同じモジュールによって発行されたことを検証する。
【0082】
方法700は、第1の要求及び第2の要求を受信することを含み得る。幾つかの実施形態では、第1の要求又は第2の要求のうちの少なくとも一方は、アプリケーションでの複数のリンクのうちの1つの実行に応答して、アプリケーションからローカルユーティリティに送信される。例えば、アプリケーションは、リンクに関連付けられた制御要素のユーザ選択に応答して、又はアプリケーション(例えば、ウェブブラウザ)が、ウェブページの処理、表示、若しくはレンダリングに併せてリンクを実行することに応答して、第1及び第2の要求のうちのいずれか又は両方を送信し得る。
【0083】
実行されるリンクがユーザ選択可能な実施形態では、アプリケーションは、リンクを実行する前にリンクのユーザ選択を受信し、ユーザ選択に応答して、少なくとも1つの第1の要求又は第2の要求をアプリケーションからローカルユーティリティに送信し得る。幾つかの実施形態では、ユーザは、上述したように、ローカルユーティリティ制御要素のうちの1つを選択することによってリンクを選択する。実行されるリンクがユーザ選択可能ではない実施形態では、クライアントコンピュータは、ウェブページを処理し、ウェブページの処理に応答して、少なくとも1つの第1の要求又は第2の要求をアプリケーションからローカルユーティリティに送信し得る。
【0084】
図8は、幾つかの実施によるクライアントコンピュータ102を示すブロック図である。クライアントコンピュータ102は通常、プログラム(例えば、メモリ810に記憶されたプログラム)を実行する1つ又は複数の処理ユニット(プロセッサと呼ばれることもあるCPU)802と、1つ又は複数のネットワーク又は他の通信インタフェース804と、ユーザインタフェース805と、メモリ810と、これらの構成要素を相互接続する1つ又は複数の通信バス801とを含む。通信バス801は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路(チップセットと呼ばれることもある)を含み得る。幾つかの実施形態では、ユーザインタフェース805は、ディスプレイ806と、入力装置807(例えば、キーボード、マウス、タッチスクリーン、キーパッド等)とを備える。
【0085】
メモリ810は、DRAM、SRAM、DDR RAM、又は他のランダムアクセス個体状態メモリ装置等の高速ランダムアクセスメモリを含み、通常、1つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、又は他の不揮発性個体状態記憶装置等の不揮発性メモリを含む。メモリ810は任意選択的に、CPU802から離れて配置される1つ又は複数の記憶装置を含む。メモリ810又は代替的にメモリ810内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を備える。幾つかの実施では、メモリ810又はメモリ810のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する:
・様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するプロシージャを含むオペレーティングシステム812、
・インターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワーク等の1つ又は複数の通信インタフェース804(有線又は無線)及び1つ又は複数の通信ネットワーク106を介して、クライアントコンピュータ102を他のコンピュータ(例えば、ウェブサーバ104、モジュールサーバ122、トークンサーバ502、及び/又はDNSサーバ114)に接続するために使用される通信モジュール814、
・入力装置807を介してユーザからコマンドを受信し、ディスプレイ装置806においてユーザインタフェースオブジェクトを生成するユーザインタフェースモジュール816、
・情報リソースを受信して表示し、ウェブサーバ(例えば、ウェブサーバ104、モジュールサーバ122、DNSサーバ114、及び/又はローカルウェブサーバ112)と通信するように構成されるウェブブラウザ108、
・1つ又は複数のコンピュータベースの機能をユーザに提供するローカルユーティリティ110、及び
・ローカルユーティリティ110及び/又はウェブブラウザ108等の他のソースと通信するローカルウェブサーバ112。
【0086】
幾つかの実施形態では、ウェブブラウザ108は、情報リソースの受信及び/又は表示を行うことが可能な任意のプログラム、ソフトウェア、又はアプリケーションである。幾つかの実施形態では、情報リソースはウェブページである。幾つかの実施形態では、ウェブページは、ハイパーテキストマークアップ言語で書かれるか、又はハイパーテキストマークアップ言語を含むが、同様に、追加の言語及び/又は異なる言語を含んでもよく、又は追加の言語及び/又は異なる言語で書かれてもよい。
【0087】
幾つかの実施形態では、ローカルユーティリティ110は、1つ又は複数のコンピュータベースの機能をユーザに提供する任意のプログラム、ソフトウェア、又はアプリケーションである。幾つかの実施形態では、ローカルユーティリティはメディアプレーヤである。幾つかの実施形態では、ローカルユーティリティはダウンロードマネージャである。幾つかの実施形態では、ローカルユーティリティはカメラ又はプリンタ制御ソフトウェアである。ローカルユーティリティはメディアエディタである。ローカルユーティリティ110は、ローカルウェブサーバ112並びに特にウェブサーバ104、モジュールサーバ122、トークンサーバ502、及び認証モジュール504等の他のコンピュータ、サーバ、及びシステムと通信し得る。
【0088】
幾つかの実施形態では、ローカルウェブサーバ112は、情報をウェブブラウザ108から受信し、その情報をローカルユーティリティ110に渡す。ウェブブラウザ108から受信される情報については上述してある。幾つかの実施形態では、情報は1つ又は複数のhttp要求である。
【0089】
幾つかの実施態様では、上で識別されたプログラム又はモジュールは、
図1〜
図6を参照して上述したものを含め、上述した機能又は方法を実行する命令セットに対応する。命令セットは、1つ又は複数のプロセッサ(例えば、CPU802)によって実行することができる。上で識別されたモジュール又はプログラム(すなわち、命令セット)は、別個のソフトウェアプログラム、プロシージャ、又はモジュールとして実施される必要はなく、したがって、様々な実施態様において、これらのプログラム又はモジュールの様々なサブセットを組み合わせるか、又は他の様式で再構成し得る。幾つかの実施態様では、メモリ810は、上で識別されたモジュール及びデータ構造のサブセットを記憶する。さらに、メモリ810は、上述されていない追加のモジュール及びデータ構造を記憶し得る。
【0090】
図9は、幾つかの実施形態によるモジュールサーバ122を示すブロック図である。モジュールサーバ122は通常、プログラム(例えば、メモリ910に記憶されたプログラム)を実行する1つ又は複数の処理ユニット(プロセッサと呼ばれることもあるCPU)902と、1つ又は複数のネットワーク又は他の通信インタフェース904と、任意選択的なユーザインタフェース905と、メモリ910と、これらの構成要素を相互接続する1つ又は複数の通信バス901とを含む。通信バス901は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路(チップセットと呼ばれることもある)を含み得る。幾つかの実施形態では、ユーザインタフェース905は、ディスプレイ906と、入力装置907(例えば、キーボード、マウス、タッチスクリーン、キーパッド等)とを備える。
【0091】
メモリ910は、DRAM、SRAM、DDR RAM、又は他のランダムアクセス個体状態メモリ装置等の高速ランダムアクセスメモリを含み、通常、1つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、又は他の不揮発性個体状態記憶装置等の不揮発性メモリを含む。メモリ910は任意選択的に、CPU902から離れて配置される1つ又は複数の記憶装置を含む。メモリ910又は代替的にメモリ910内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を備える。幾つかの実施態様では、メモリ910又はメモリ910のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する:
・様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するプロシージャを含むオペレーティングシステム912、
・インターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワーク等の1つ又は複数の通信インタフェース904(有線又は無線)及び1つ又は複数の通信ネットワーク106を介して、モジュールサーバ122を他のコンピュータ(例えば、クライアントコンピュータ102、ウェブサーバ104、トークンサーバ502、及び/又はDNSサーバ114)に接続するために使用される通信モジュール914、
・入力装置907を介してユーザからコマンドを受信し、ディスプレイ装置906においてユーザインタフェースオブジェクトを生成する、任意選択的なユーザインタフェースモジュール916、及び
・ウェブページに含めるモジュールを生成するモジュール作成モジュール918。
【0092】
幾つかの実施形態では、モジュール作成モジュール918は、別個のコンピュータに提供すべきモジュールの内容についての仕様を受信する。例えば、モジュール作成モジュール918は、ウェブページ作成者又はウェブページそれ自体からモジュール仕様を受信し得る(上述したように)。幾つかの実施形態では、モジュールはメディアプレーヤウィジェットであり、仕様は、曲識別子、プレイリスト識別子、アルバム識別子、ラジオ局識別子、ディスプレイパラメータ、及び/又は任意の他の情報を含む。
【0093】
幾つかの実施形態では、モジュール作成モジュール918は、仕様に従ってモジュールを作成し、モジュールをモジュール識別子に関連付けて記憶する。モジュールが要求される(例えば、モジュール識別子を含むhttp要求により)場合、モジュールサーバ122は、記憶されているモジュールを要求側装置(例えば、クライアントコンピュータ102)に送信し得る。
【0094】
他の実施形態では、モジュール作成モジュール918は、モジュール仕様受信時にモジュールを作成して記憶せず、むしろ、モジュール識別子を仕様に割り当てる。モジュールが要求される(例えば、モジュール識別子を含むhttp要求により)場合、モジュール作成モジュール918は、モジュールをリアルタイムで作成し、モジュールを要求側装置(例えば、クライアントコンピュータ102)に送信する。
【0095】
幾つかの実施態様では、上で識別されたプログラム又はモジュールは、
図1〜
図6を参照して上述したものを含め、上述した機能又は方法を実行する命令セットに対応する。命令セットは、1つ又は複数のプロセッサ(例えば、CPU902)によって実行することができる。上で識別されたモジュール又はプログラム(すなわち、命令セット)は、別個のソフトウェアプログラム、プロシージャ、又はモジュールとして実施される必要はなく、したがって、様々な実施態様において、これらのプログラム又はモジュールの様々なサブセットを組み合わせるか、又は他の様式で再構成し得る。幾つかの実施態様では、メモリ910は、上で識別されたモジュール及びデータ構造のサブセットを記憶する。さらに、メモリ910は、上述されていない追加のモジュール及びデータ構造を記憶し得る。
【0096】
図10は、幾つかの実施形態による認証サーバ504を示すブロック図である。認証サーバ504は通常、プログラム(例えば、メモリ1010に記憶されたプログラム)を実行する1つ又は複数の処理ユニット(プロセッサと呼ばれることもあるCPU)1002と、1つ又は複数のネットワーク又は他の通信インタフェース1004と、任意選択的なユーザインタフェース1005と、メモリ1010と、これらの構成要素を相互接続する1つ又は複数の通信バス1001とを含む。通信バス1001は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路(チップセットと呼ばれることもある)を含み得る。幾つかの実施形態では、ユーザインタフェース1005は、ディスプレイ1006と、入力装置1007(例えば、キーボード、マウス、タッチスクリーン、キーパッド等)とを備える。
【0097】
メモリ1010は、DRAM、SRAM、DDR RAM、又は他のランダムアクセス個体状態メモリ装置等の高速ランダムアクセスメモリを含み、通常、1つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、又は他の不揮発性個体状態記憶装置等の不揮発性メモリを含む。メモリ1010は任意選択的に、CPU1002から離れて配置される1つ又は複数の記憶装置を含む。メモリ1010又は代替的にメモリ1010内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を備える。幾つかの実施態様では、メモリ1010又はメモリ1010のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する:
・様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するプロシージャを含むオペレーティングシステム1012、
・インターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワーク等の1つ又は複数の通信インタフェース1004(有線又は無線)及び1つ又は複数の通信ネットワーク106を介して、認証サーバ504を他のコンピュータ(例えば、クライアントコンピュータ102、ウェブサーバ104、トークンサーバ502、及び/又はDNSサーバ114)に接続するために使用される通信モジュール1014、
・入力装置1007を介してユーザからコマンドを受信し、ディスプレイ装置1006においてユーザインタフェースオブジェクトを生成する、任意選択的なユーザインタフェースモジュール1016、及び
・通信及び/又はトークンを認証する認証モジュール1018。
【0098】
幾つかの実施形態では、認証モジュール1018は、通信に含まれる情報に基づいて、情報を信頼すべきか否かを確認するように構成される。幾つかの実施形態では、認証モジュール1018は、通信を認証する要求を受信し、要求はトークンを含む。幾つかの実施形態では、認証モジュール1018は、トークンが真正であるか否か(例えば、1つ又は複数の通信を認証するために、トークンが前に発行されたか否か)を判断し、トークンが真正であるか否かを示すリターンメッセージを要求側装置に送信する。認証サーバ504によって提供し得る機能のうちのいくつかは、
図5を参照してより詳細に上述している。
【0099】
幾つかの実施態様では、上で識別されたプログラム又はモジュールは、
図1〜
図6を参照して上述したものを含め、上述した機能又は方法を実行する命令セットに対応する。命令セットは、1つ又は複数のプロセッサ(例えば、CPU1002)によって実行することができる。上で識別されたモジュール又はプログラム(すなわち、命令セット)は、別個のソフトウェアプログラム、プロシージャ、又はモジュールとして実施される必要はなく、したがって、様々な実施態様において、これらのプログラム又はモジュールの様々なサブセットを組み合わせるか、又は他の様式で再構成し得る。幾つかの実施態様では、メモリ1010は、上で識別されたモジュール及びデータ構造のサブセットを記憶する。さらに、メモリ1010は、上述されていない追加のモジュール及びデータ構造を記憶し得る。
【0100】
図8〜
図10はクライアントコンピュータ及びサーバコンピュータを示すが、これらの図は、本明細書に記載される実施態様の構造的概略としてよりも、これらのコンピュータに存在し得る様々な特徴の機能的説明として意図される。実際に、当業者によって認識されるように、別個に示されるアイテムを結合することができ、幾つかのアイテムを分離することができる。例えば、
図8〜
図10で別個に示される幾つかのアイテムは、単一のモジュール又はデータ構造で実施することもできる。
【0101】
複数の事例を、本明細書において単一の事例として記載される構成要素、動作、又は構造体に提供し得る。最後に、様々な構成要素、動作、及びデータ記憶装置間の境界はいくらか任意的なものであり、特定の動作は、特定の例示的な構成の状況において示される。機能の他の割り振りも考えられ、実施態様の範囲内に含まれ得る。一般に、構成例において別個の構成要素として提示される構造体及び機能は、結合された構造体又は構成要素として実施することもできる。同様に、単一の構成要素として提示される構造体及び機能は、別個の構成要素として実施することもできる。これら及び他の変形、変更、追加、及び改善は、記載される実施態様の範囲内にある。
【0102】
上記説明は、説明を目的として、特定の実施形態を参照して説明された。しかし、上記の例示的な考察は、網羅的である、すなわち、開示される概念を、開示される厳密な形態に限定する意図はない。上記教示に鑑みて、多くの変更及び変形が可能である。実施形態は、開示される概念の原理及び実際の適用を最良に説明し、それにより、当業者が、意図される特定の用途に合うように様々な変更を行って様々な実施形態で最良に利用できるようにするために、選ばれ説明された。
【0103】
さらに、上記説明では、提示される概念の完全な理解を提供するために、多くの特定の詳細な記載されている。しかし、これらの特定の詳細なしでもこれらの概念を実施し得ることが当業者には理解されるだろう。他の例では、当業者に周知の方法、手順、構成要素、及びネットワークについては、本明細書に手時される概念の側面を曖昧にしないように、詳述していない。
【0104】
「第1」、「第2」等の用語を、様々な要素を説明するために本明細書において使用し得るが、これらの要素をこれらの用語によって限定すべきではないことも理解されるだろう。これらの用語は、ある要素を別の要素から区別するためだけに使用される。例えば、「第1のサーバ」の全ての発生が一貫して名称変更され、「第2のサーバ」の全ての発生が一貫して名称変更される限り、説明の意味を変更せずに、第1のサーバを第2のサーバと呼ぶこともでき、同様に、第2のサーバを第1のサーバと呼ぶこともできる。
【0105】
さらに、本明細書において使用される用語は、特定の実施形態を説明することのみを目的とし、特許請求の範囲を限定する意図はない。実施態様の説明及び添付の特許請求の範囲で使用される場合、単数形「a」、「an」、及び「the」は、文脈により明確に別段のことが示される場合を除き、複数形も同様に包含することが意図される。本明細書において使用される「及び/又は」という用語が、関連付けられ、列挙された項目のうちの1つ又は複数の可能なありとあらゆる組み合わせを指し、包含することも理解されるだろう。「備える」及び/又は「備えている」という用語が、本明細書において使用される場合、述べられた特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を指定するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそのグループの存在又は追加を除外しないことが更に理解されるだろう。
【0106】
最後に、本明細書において使用される場合、「場合」という用語は、文脈に応じて、述べられる前提条件が真である「とき」、述べられる前提条件が真である「と」、述べられる前提条件が真である「との判断に応答して」、述べられる前提条件が真である「との判断に従い」、又は述べられる前提条件が真である「ことの検出に応答して」を意味するものとして解釈し得る。同様に、「(述べられる前提条件が真であると)判断される場合」、「(述べられる前提条件が真である)場合」、又は「(述べられる前提条件が真である)とき」は、文脈に応じて、述べられる前提条件が真である「と判断されると」、述べられる前提条件が真である「との判断に応答して」、述べられる前提条件が真である「との判断に従い」、述べられる前提条件が真である「ことが検出されると」、又は述べられる前提条件が真である「ことの検出に応答して」を意味するものとして解釈し得る。