説明

動的に更新される仮想リストビュー

ウェブアプリケーションの仮想リストビューは、ウェブに必然的に伴う待ち時間にかかわらず、ユーザが途切れることなく提示されたデータにアクセスし、そのデータを管理することができるように、動的に更新される。仮想リストビューに関連付けられたデータは、ユーザがスクロールすると、チャンクでダウンロードされ、ビューが更新される。ユーザのスクロールと、ダウンロードされる個々のデータチャンクを結び付けることによって、システムリソースは、効率的に利用される。ユーザインタフェース用の追加のユーザインタフェースコントロールが、データの一部への迅速で効率的なアクセスのために採用されて、遅延とシステムリソースの占領を最小限にする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想リストビューを動的に更新する方法およびシステムに関する。
【背景技術】
【0002】
ウェブ閲覧アプリケーションは、一般に、リストビューの形でユーザにデータを提示する。例えば、データのページは、キーボード、マウスなどの様々なコントロールを用い、上下にスクロールすることによって見ることができる。可視データは、テキスト、グラフィック、その両方を組み合わせたデータなどを含むことができ、実際にリスト形式(表、箇条書き項目など)でフォーマットしてもよく、自由形式でフォーマットしてもよい。どちらの場合でも、ウェブ閲覧アプリケーションは、任意の大きさの項目リストをユーザに提示することができる。
【0003】
実際の環境においては、ユーザインタフェースにデータが提示される前に、ユーザがデータへのリンクを選択すると、ウェブアプリケーションは、データ全体のダウンロードを試みるかもしれない。データが大きい場合、利用可能な帯域幅が小さい場合、または、他のシステムリソースがウェブサーバからのデータのダウンロードの制限となっている場合、この方法は、ユーザへのデータの提示に容認できない遅れを生じさせ、実行不可能な場合がある。別の代替的な方法としては、データをグループでダウンロードし、データをダウンロードしながらユーザインタフェースを更新することがある。しかしながら、この方法も、システムが「重くて動きにくい(clunkiness)」になる場合がある。そうなると、提示されたウェブページがばらばらに表示されたり、ユーザが遅れにいらいらしたり、ユーザがデータの特定の部分にしか興味がないのに、システムリソースがデータ全体のダウンロードに不必要に占領されたりする。
【発明の概要】
【0004】
この概要は、下記の詳細な説明で詳述するコンセプトの一部を簡単に紹介する。この概要は、請求の主題の主要な特徴や不可欠な特徴を特定することを意図するものではないし、当該主題の範囲を決定するための補助として用いられることを意図するものでもない。
【0005】
本実施形態では、ウェブアプリケーションの仮想リストビューを動的に更新して、ウェブに必然的に伴う待ち時間にもかかわらず、ユーザが提示されたデータに途切れることなくアクセスし、そのデータを管理できるようにする。仮想リストビューに関連付けられたデータは、チャンク(塊)でダウンロードし、ユーザのスクロールによってビューを更新することができる。ユーザのスクロールとダウンロードする個々のデータチャンクを結び付けることにより、システムリソースを効率的に利用することができる。データの一部に迅速に効率よくアクセスするために、追加のユーザインタフェースコントロールを採用することができ、それによって遅延やシステムリソースの占領を最小限に抑える。
【0006】
これらの特徴や利点および他の特徴や利点は、下記の詳細な説明を読み、添付図面を参照することで明らかとなる。前述の一般的記述および下記の詳細な記述は、説明のためだけのものであり、特許請求の範囲を制限するものではないことを理解されたい。
【図面の簡単な説明】
【0007】
【図1】サーバとクライアント間におけるウェブアプリケーションのデータの提示を示す概念図である。
【図2】仮想リストビューを有するウェブページの一例のスクリーンショットを示す図である。
【図3】ある実施形態に従って、図2の仮想リストビューの例と、その前後のデータチャンクを、ビューポートに提示されたチャンクと比較して示す図である。
【図4】本実施形態に従って、仮想リストビューを動的に更新するためにチャンクでダウンロードすることができるデータブロックの図である。
【図5】データの一部に効率的にアクセスするための追加のユーザインタフェースコントロールを備えた、図2のリストビューの例の別のスクリーンショットを示す図である。
【図6】本実施形態を実装することができるネットワーク環境の図である。
【図7】本実施形態を実装することができるコンピュータ動作環境の一例を示すブロック図である。
【図8】本実施形態に従って仮想リストビューを動的に更新するプロセスの一例を示す論理フロー図である。
【発明を実施するための形態】
【0008】
上記に簡単に記述したように、ウェブアプリケーションの仮想リストビューは、ユーザのスクロール動作をダウンロードしているデータチャンクと連係させることによって動的に更新することができ、それによってユーザは途切れることなく提示されたデータにアクセスし、そのデータを管理できる。下記の詳細な説明においては、本明細書の一部を構成する添付図面を参照し、具体的な実施形態または実施例を、例として示す。本明細書の開示内容の精神または範囲を逸脱することなく、これらの態様を組み合わせることができ、他の態様を利用することができ、構造を変えることができる。従って、下記の詳細な説明は、限定的な意味で捉えるべきではなく、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲と同等のものによって定義される。
【0009】
本実施形態は、パーソナルコンピュータのオペレーティングシステムで実行するアプリケーションプログラムと共に実行するプログラムモジュールという一般的なコンテキストで記載するが、態様は他のプログラムモジュールと共に実装することもできることを当業者は理解するであろう。
【0010】
一般的に、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造、その他の種類の構造を含むが、それらは特定のタスクを実行する、または、特定の抽象データ型を実装する。さらに、本実施形態は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電、ミニコンピュータ、メインフレームコンピュータなどの他のコンピュータシステム構成で実施してもよいことを、当業者は理解するであろう。本実施形態は、通信ネットワークを介してつながった遠隔処理装置でタスクを行う分散コンピューティング環境で実施してもよい。分散コンピューティング環境では、プログラムモジュールは、ローカル記憶装置と遠隔記憶装置の両方に置くことができる。
【0011】
本実施形態は、コンピュータプロセス(方法)、コンピューティングシステム、または、コンピュータプログラム製品やコンピュータ可読媒体などの製品として、実装することができる。コンピュータプログラム製品は、コンピュータシステムで読み取ることができ、かつ、コンピュータプロセスを実行するコンピュータプログラム命令を符号化するコンピュータ記憶媒体であってよい。
【0012】
図1を参照すると、サーバとクライアント間におけるウェブアプリケーションでデータを提示するための概念図が示されている。ウェブアプリケーションは、様々なアプリケーションが含まれ、一般的にはクライアント装置/アプリケーション(106)内にユーザインタフェースを有し、サーバ102などのデータソースとデータを交換する。アプリケーションのための実データは、1つまたは複数のデータストア104に常駐することができ、サーバ102によって管理されることができる。
【0013】
ウェブアプリケーションのユーザインタフェース108によって、ユーザは、データを見たり、ユーザインタフェース108上で操作を行ったり、入力によってデータを変更してデータソースに送り返すことができる。ユーザインタフェースが提示するデータは、様々なフォーマットで、テキストデータ、グラフィックデータ、またはその両方の組合せを含んでよい。例えば、様々な書式の、リスト、表、自由形式テキスト、およびページとして提示してよく、他のフォーマットとして提示してもよい。
【0014】
下記の実施形態は、上記のようなウェブアプリケーションを参照しているが、下記の実施形態は、ウェブアプリケーションに限定されない。ネットワークを介してデータを交換し、かつ、リストビューフォーマットの形でユーザにデータを提示する任意のアプリケーションで、実施形態に従った動的更新方法を実装することができる。なお、ネットワークにおいては、システムリソースや交換されるデータの量が制限を受ける。そのようなアプリケーションの例としては、クライアント装置にある電子メールアプリケーションがあり、電子メールアプリケーションは、受信した電子メールのコンテンツは主としてサーバに置いたままで、受信した電子メールのリスト(例えば、件名と送信者)をユーザに提供する。このような電子メールアプリケーションは、ウェブアプリケーションである必要はない。イントラネットアプリケーションであっても、異なったネットワークのプロトコル(HTTPである必要はない)を用いても、下記の実施形態を実装することができる。
【0015】
仮想リストビューの動的更新を実装することができる他のアプリケーションの例には、インスタントメッセージアプリケーション、検索エンジン結果表示などのアプリケーションが含まれるが、これらに限定されない。このようなアプリケーションは、ハイパーテキストマークアップ言語(HTML)での実装にも限定されない。アプリケーション閲覧用の任意の種類のプログラミング言語を用いることができる。さらに、仮想リストビューの幅と高さは、データブロックの行数やスクロール速度などのプロパティに基づいて動的に変更可能であってよい。
【0016】
図2は、仮想リストビューを有するウェブページの一例のスクリーンショットを示す。上述のように、動的に更新された仮想リストビューは、交換したデータをリスト形式でユーザに提示する任意のユーザインタフェースで実装することができる。
【0017】
ウェブページ208の例が、一般的なウェブ閲覧ユーザインタフェースによって提示されている。そのユーザインタフェースは、提示されているウェブページのURL(Uniform Resource Locator)212と、メニューコマンド218と、操作アイコン216と、を含む。メインコンテンツは、リストビュー214に提示される。ウェブページの例は、米国特許庁のウェブサイトの特許法の部分である。ご覧のように、そのウェブページは、合衆国法典の長いリストを含み、各行はその法典の個々の条項へのリンクを示している。ユーザインタフェースは、完全なリストの限られた部分だけを提示することができる。リストビューの提示された部分は、ビューポートと呼ばれる。スクロールバー210によって、ユーザはリスト上を上下にスクロールして、リストの異なる部分を見ることができる。
【0018】
そのリストの例は、単一の行からなるリストであり、リスト全体をクライアントにダウンロードするのに長くはかからないが、多くの場合、完全なリストビューは、単に長すぎて一度の素早い操作ではダウンロードできなかったり、個々の行がさらにデータを含んでいて、ダウンロード操作が、ユーザのスクロール動作に追いつかず、その結果、提示が遅れたり、システムリソースを消耗することになる。
【0019】
図3は、図2の仮想リストビューの例と、その前後のデータチャンクを、ある実施形態に従ってビューポートに提示されたチャンクと比較して、示している。
【0020】
本実施形態に従ったウェブ閲覧アプリケーションにおいては、仮想リストビューは、スクロールバー310とビューポート314という2つの主要部分から構成されている。これら2つの要素は切り離されており、スクロールバー310からのイベントを捕らえて、要求に応じて処理することも捨てることもできる。ビューポートは、行の「チャンク」(例えば、HTMLでは、チャンクは、複数の行からなる表と追加のメタデータを含む仕切り要素「DIV」であり得る)を含む。チャンクは、(所定の基準に対する)位置属性を与えられており、チャンクのスタイルプロパティを変更することによって、任意の範囲の行(クライアント上でその行が利用可能である限り)をビューポート内に可視的に配置することが可能である。ユーザがスクロールすると、ビューにチャンクが追加されたり、ビューからチャンクが取り除かれたりして、ビューポート314内に現在見えている行の上(322)および下(326)の両方に追加の行を保持する。
【0021】
クライアントとデータソース間で交換されるデータを減らすことによってシステムリソース(通信帯域幅、メモリ等)の消費を最小限にするために、所定の閾値より速くユーザがスクロールすると、データがロードされないようにしてもよい。一実施形態による閾値の定義は、「スクロール位置が最後のMミリ秒でN行を越えて変化した場合、ユーザは速くスクロールしている」であってよい。この場合、ビューポートは、スクロールが減速するまで変わらないままであってよく、スクロールが減速した時点で、スクロールバーの最終位置に対応するデータのみがロードされる。
【0022】
表示のための行(1行または複数行)の選択は、クライアント上で、行ID(複数可)にハッシュとして保持されてもよい。これによって、ファーストルックアップは、ある行が選択されているか否かを知ることができ、選択された項目のセットを得るように列挙することができる。行IDがすでにクライアント上に存在するので、選択された個々の項目は行選択に付け加えることができる。選択された項目は、単にハッシュに付け加えられてもよい。広い範囲の選択に関しては、クライアント上にない行もある。その場合は、同期コールをサーバ(データソース)に行い、ビューを再構成してその範囲に含まれる行IDのセットを返すことができる。もちろん、行のIDを保持する他の方法も、本明細書に記述の原理を逸脱することなく、実装することができる。
【0023】
実際のネットワーク環境においては、リストのコンテンツは、データソースで変わることがある。クライアント上のウェブアプリケーションのユーザインタフェースは、これを反映するために動的に更新する必要がある。実行不可能かもしれないデータセット全体のプレロードの代わりに、本実施形態によるアプリケーションは、ユーザが現在見ているデータ範囲と、ユーザが少しスクロールするとすぐにクライアント(側)を更新可能なデータ範囲という、一部のデータ範囲のみをロードすることができる。
【0024】
更新は、データソースが変わる時に、一行ベースでクライアントに伝えられてもよい。サーバは、行を挿入、削除、変更したか否かに応じて、ビューを更新するのに最小限のデータをクライアントに送ってもよい。データには、影響を受けた行のIDと、その行の新しいマークアップと、その行のリスト上の位置(前の行のIDによって示される)と、を含むことができる。そうすると、クライアントは、この更新を適用することができる。
【0025】
他の一実施形態によると、クライアント上のビューはサーバと同期がずれているかもしれないため、更新の各バッチと共にウォータマーク含むことができる。ウォータマークは、リストビュー操作(例えば、削除、移動)が行われると送り返され、サーバ上の現在のウォータマークと比較することができる。ウォータマークが一致しなければ、更新時に何らかの更新が途中で行われたに違いなく、その更新が把握されなかったということを意味する。この場合、サーバは、その更新を適用した後、クライアントに再度操作するように通知することができる。
【0026】
図4は、本実施形態による、仮想リストビューを動的に更新するためにチャンクでダウンロードすることができるデータブロックの図である。
【0027】
上述のように、仮想リストビューのデータは、ダウンロードし、ビューポートのブロック(430)に提示することができる。一実施形態によると、現在見ているブロック432に加えて、1ブロック前のデータと1ブロックのデータ(両方とも所定の行数を含む)(例えば、ブロックN−1、ブロックN、および、ブロックN+1)をダウンロードすることができる。ユーザが、所定の閾値より速くスクロールすると、閾値以下のレベルまでスクロールが減速するまで後続のブロックはスキップされ、減速すると、連続する3つのブロックを再度ダウンロードして、ユーザが現在選択しているデータ行をユーザに提示することができる。
【0028】
しかしながら、本実施形態は、連続する3つのデータブロックをダウンロードすることに限定されるわけではない。利用可能な通信帯域幅、データの種類、ユーザプリファレンス、スクロール速度、ビューポートのサイズ、利用可能なメモリなどの多くの要素に基づいて、現在見ているブロックの前後の任意の数のブロックをクライアントにダウンロードしてもよい。このように、データ全体の一部を、クライアントとデータソース間の往復のトラフィックなしに見ることができる。さらに、アルゴリズムを実装することによって、人工知能を用いて、ダウンロードされたデータブロックの数とユーザがそのデータブロックをどのように使用したかという過去の情報に基づいて、先行ダウンロードのためのデータブロックの数を予測してもよい。
【0029】
前述のように、ソースのデータは、ユーザがクライアント上でデータの一部を見ている間に、変化する場合がある。選択した中に一部の行が存在して、他の行が存在しない場合、抜けている行を検索して選択が保存されるように、データソースを呼び出してもよい。新しい行が作成または更新される場合、これらの行は、選択した中から削除されず、選択した中に再び保存される。
【0030】
図5は、図2のリストビューの例の別のスクリーンショットで、各データ部分に効率的にアクセスする追加のユーザインタフェースコントロールを備えている。
【0031】
仮想リストビューを動的に更新して、ユーザ体験を高め、データへのアクセスを容易にする幾つかのコントロール機能を、ユーザインタフェースに備えてもよい。ウェブ閲覧ユーザインタフェース508の例には、URL512、操作アイコン516、スクロールバー510などの標準的な要素が、仮想リストビュー514の一部と共に示されている。
【0032】
強化されたコントロール機能の一つは、スクロールマークである。ユーザは、データとの対話を通して仮想リストビューの特定の部分に戻りたい場合がある。アイコン542などのスクロールマークアイコンを用いて、ユーザの指示(例えば、ポインタデバイスの右クリック、メニューバーの項目の選択など)でスクロールバー上の位置を示すことができる。スクロールマーク機能のさらに強化された点は、各スクロールマークアイコンは、その位置に対応する行に関連付けることができ、その行に関する要約情報を、ユーザが見るのを妨害することなく(例えばユーザがスクロールマークアイコン上を指すと現れるポップアップボックスという形で)、ユーザに提示することができる。
【0033】
データをダウンロードする様々な方法を記載したが、それらの方法では、スクロールの速度に基づいて、チャンクがダウンロードされる。ユーザが閾値より遅くスクロールすると、ビューは連続して更新される。スクロール速度が閾値を超えると、スクロールが再び減速するまでビューをフリーズすることができ、減速すると、データの新しいチャンクがダウンロードされ、表示される。閾値は、予め設定しても、システムの選択したプロパティに基づいて動的に決定してもよい。他の強化されたコントロール機能は、ユーザがすばやくスクロールしてデータの行を通り過ぎている間、通り過ぎたデータ行のプレビューをユーザに提示することを含むことができる。プレビューは、行のグループに基づいてよく、かつ、タイトル、見出し、日付などのユーザ定義による(または選択した)パラメータに基づいて分類されてもよい。例えば、ユーザが米国法典(タイトル35)をすばやくスクロールしている場合、プレビューボックス(546)は、15章「植物特許」、17章「意匠特許」などの個々の章を表示することができ、ユーザが見たい行をうっかり通り過ぎてスクロールしてしまうのを防止する。
【0034】
プレビュー機能は、ユーザが選択可能な任意の方法で構築してもよく、デフォルトパラメータに基づいて構築してもよい。パラメータは、グループ分けの種類、メタデータの種類、ソートスタイル(アルファベット、日付、タイトルなど)を含むことができる。
【0035】
強化されたさらなるコントロール機能は、ジャンプツーコントロール(jump-to control)(544)と呼ばれる。この機能によって、ユーザは、大きいリストの特定の位置を、リストビュー全体をロードする必要なく探すことができる。例えば、図で示される位置にスクロールする代わりに、行をアルファベットで選択することにより、ユーザは特定の行にジャンプすることができる。プレビュー機能においてと同様、ジャンプツーコントロールは、アルファベット、時間順、ユーザ定義など複数の基準に基づいていてよい。一実施形態によると、ジャンプツーコントロールは、ソート基準にふさわしいドロップダウンメニューとして提供することができる。例えば、リストをアルファベット順にソートする場合、メニューはアルファベットを表示することができ、日付でソートする場合、メニューはデートピッカー(date picker)を表示することができる。ドロップダウンメニューの値を選択すると、リストは、選択した値に等しいか、またはその後の最初の行を探す。
【0036】
本実施形態に従って動的に更新された仮想リストビューは、アプリケーションの例と共に上述したコンポーネントや機能に追加して、また、それらより少ないコンポーネントや機能と共に実装することができる。このようなリストビューを実装するアプリケーションは、1つまたは複数のコンピュータ装置に、ネットワーク化された方法でローカルに実行することができる。データは1つまたは複数のサーバまたはデータストアに記憶することができる。データは、構造化されていても構造化されていなくてもよく、暗号化されていても暗号化されていなくてもよい。さらに、例としてあげた強化されたコントロール機能に代えて、またはその機能に追加して、動作を最適化する追加の方法を採用してもよい。
【0037】
図6は、本実施形態を実装することができるネットワーク化された環境の一例である。仮想リストビューの動的更新は、1つまたは複数のコンピュータ装置で実行するローカルアプリケーションまたは分散アプリケーションで実装することができる。このコンピュータ装置は、多数の物理的クライアント、多数の仮想クライアント、多数の物理的サーバおよび多数の仮想サーバにわたって分散した方法で構成される。1つまたは複数のネットワーク(例えば、ネットワーク660)上で通信する複数のノードを用いて、クラスタ化されていないシステムで実装しても、クラスタ化されたシステムで実装してもよい。
【0038】
このようなシステムは、サーバ、クライアント、インターネットサービスプロバイダ、および通信媒体の、任意のトポロジを備えることができる。また、このシステムは、静的トポロジまたは動的トポロジを有してもよく、システムの階層内のサーバとクライアントの役割や、サーバとクライアントの相互関係は、管理者が静的に決定してもよく、装置の利用可能性、ロードバランシングなどに基づいて動的に決定されてもよい。「クライアント」という用語は、クライアントアプリケーションまたはクライアント装置を指すことができる。ネットワーク化されたシステムが動的に実装する一方で、更新された仮想リストビューはさらに多くのコンポーネントを伴うかもしれない。この図に関連して、関係のあるコンポーネントを記述する。
【0039】
上述のように、ウェブアプリケーション(または、リストビュー更新を実装する任意のアプリケーション)は、クライアント装置654から656またはサーバ652で実行することができ、クライアント装置653によってアクセスすることができる。ユーザは、ウェブサーバ662からネットワーク660を介して仮想リストビューに提示されたデータにアクセスすることができる。ウェブサーバ662は、データストア668を用いて、データそのものを管理し、記憶してもよく、データベースサーバ664と通信してデータストア666を管理してもよい。
【0040】
ネットワーク660は、企業ネットワークなどの安全なネットワーク、オープンワイヤレスネットワークなどの安全でないネットワーク、またはインターネットを含むことができる。ネットワーク660は、本明細書に記載のノード間に通信を提供する。限定ではなく例として、ネットワーク660は、有線ネットワークや直接配線接続などの有線媒体、音響、RF、赤外線、および他の無線媒体などの無線媒体を含む。
【0041】
コンピュータ装置、アプリケーション、データソース、データ配信システムの他の多くの構成を採用し、データのカテゴリーに基づいて、協調サーバに対する分散データ記憶装置を実装することができる。さらに、図6で記載したネットワーク化された環境は、例示のみを目的としている。本実施形態は、例示したアプリケーション、モジュールまたはプロセスに限定されない。
【0042】
図7および図7に関する記載は、本実施形態を実装することができる適切なコンピューティング環境を簡単に一般的に記載することを目的としたものである。図7を参照して、コンピュータ装置700などのコンピュータ動作環境のブロック図の例を示す。基本的構成においては、コンピュータ装置700はクライアント装置であってよい。コンピュータ装置700は、一般的には、少なくとも1つの処理装置702と少なくとも1つのシステムメモリ704を含むことができる。コンピュータ装置700は、協働してプログラムを実行する複数の処理装置を含んでもよい。コンピュータ装置の具体的構成と具体的種類に応じて、システムメモリ704は、揮発性(例えば、RAM)、不揮発性(例えば、ROM、フラッシュメモリなど)、または揮発性、不揮発性の両方を組み合わせたものであってよい。システムメモリ704は、一般的に、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適切な、本件特許出願人のWINDOWS(登録商標)オペレーティングシステムなどのオペレーティングシステム705を備える。また、システムメモリ704は、プログラムモジュール706、クライアントアプリケーション722、ビューモジュール724、およびデータ検索モジュール726などの、1つまたは複数のソフトウェアアプリケーションを含んでもよい。
【0043】
クライアントアプリケーション722は、別のソースからのデータを仮想リストビューでユーザに提示する、ウェブ閲覧アプリケーションのような、任意のアプリケーションであってよい。データ検索モジュール726は、ウェブサーバのようなリモートデータソースから、提示のためのデータを検索することができる。前述のように、仮想リストビュー全体をダウンロードすることは、システムリソースに限りがあることから、実用的でなく、実行不可能な場合がある。ビューモジュール724は、ユーザのスクロールを対応するデータチャンクに連係させることができ、それによって、データ検索モジュール726は、ユーザがすぐに見る必要のあるそれらのデータチャンクのみを検索することができる。ビューモジュール724はまた、図5に関連して上述した、強化されたコントロール機能も提供することができる。この基本的構成は、図7に示す点線708内のコンポーネントである。クライアントアプリケーション722の機能性は、ここに記載されている2つのモジュールに割り当てる必要はない。上述の機能性は、より多くのモジュールまたはより少ないモジュールで行ってもよく、全く同じアプリケーションで行ってもよい。
【0044】
コンピュータ装置700は、追加の機能または機能性を有することができる。例えば、コンピュータ装置700は、磁気ディスク、光学ディスク、テープなどの追加のデータ記憶装置(取り外し可能および/または取り外し不可)を含むこともできる。このような追加の記憶装置は、取り外し可能な記憶装置709と取り外し不可の記憶装置710として図7に示されている。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報、を記憶するための任意の方法または任意の技術で実装される、揮発性媒体、不揮発性媒体、取り外し可能な媒体、および、取り外し不可の媒体が含まれる。システムメモリ704、取り外し可能な記憶装置709、および取り外し不可の記憶装置710は全て、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するのに使うことができ、かつ、コンピュータ装置700がアクセスすることができる任意の他の媒体を含むが、それらに限定されない。このような任意のコンピュータ記憶媒体が、装置700の一部となることができる。コンピュータ装置700は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置712も含むことができる。ディスプレイ、スピーカー、プリンタなどの出力装置714も含むことができる。これらの装置は、この技術分野において周知であり、詳述する必要はない。
【0045】
コンピュータ装置700は、通信接続716も含むことができ、通信接続716によって、コンピュータ装置700は、イントラネットやインターネットなどの分散コンピューティング環境にある無線ネットワーク上などで、他のコンピュータ装置と通信することができる。他のコンピュータ装置718は、ウェブサーバ、データベースサーバ、ファイルサーバ、プロバイダサーバなどを含むことができる。通信接続716は、通信媒体の一例である。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波や他の搬送機構などの変調データ信号の形の他のデータで具現することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、特性の1つまたは複数が、情報を信号に符号化する方法で、設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体と、を含む。
【0046】
本請求の主題は、操作方法も含む。操作方法は、本明細書に記載した構造を含む任意の数の方法で実装することができる。本明細書に記載の種類の装置の方法の1つは、機械操作による。
【0047】
選択できる別の方法は、その方法の個々の操作の1つまたは複数を、操作を行う1人または複数の人間オペレータと組み合わせて行うことである。この人間オペレータは、互いに結びついている必要はなく、各人間オペレータは、プログラムの一部を実行する機械とだけ共に操作を行う。
【0048】
図8は、本実施形態に従って仮想リストビューを動的に更新するプロセス800の一例を示す論理フロー図である。プロセス800は、任意のウェブアプリケーション環境で実装することができる。
【0049】
プロセス800は操作802から始まる。操作802において、ウェブ閲覧アプリケーションのウェブページの最初のビューなどのデータソースから、ユーザに提示するための初期データブロックが受信される。処理は操作802から操作804に続く。
【0050】
操作804において、受信された初期データブロックは、ウェブアプリケーションによってユーザに提示される。処理は操作804から操作806に続く。
【0051】
操作806において、仮想リストビューを介したユーザのスクロールが検出される。上述のように、ユーザは、スローペースでスクロールしてもよく、また、アプリケーションが、スクロール中のデータを同時にダウンロードして、提示するのが可能な速さより速くスクロールしてもよい。処理は操作806から決定操作808に進む。
【0052】
決定操作808において、スクロール操作が所定の閾値より速いか否かが判断される。スクロールが閾値より速くない場合、処理は操作810に進む。操作810において、データ交換がシステムリソースに負担をかける可能性があるものではないので、ビューは連続して更新される。
【0053】
スクロールが閾値より速い場合、処理は決定操作808から操作812に続く。操作812において、スクロールされたデータブロックは、(クライアントにダウンロードされずに)スキップされる。ビューは、そのタイムフレームの間フリーズしてもよく、プレビュー機能などの追加の拡張されたコントロール機能を備えてもよい。処理は操作812から決定操作814に進む。
【0054】
決定操作814において、スクロールが減速して所定の閾値を下回ったか否かが判断される。スクロールがまだ閾値を越えたままなら、処理は操作812に戻って、スクロール中のデータは引き続きスキップされる。スクロールが減速すると、処理は操作816に進む。
【0055】
操作816において、ビューポートに提示される1つと、提示されたブロックの前後の所定の数のブロックと、を含む範囲のデータブロックが、クライアントにダウンロードされる。処理は操作816から操作818に進む。
【0056】
データソースに何らかの変更がある場合、操作818において、データが更新される。処理は操作818から操作820に続く。
【0057】
操作820において、ダウンロードされたデータブロックが、スロースクロールモードで、ユーザに提示される。操作820の後、処理は、次のアクションを呼び出すプロセスに進む。
【0058】
プロセス800に含まれる操作は、例示を目的としている。ウェブアプリケーションにおける仮想リストビューの動的更新は、より少ないステップまたは追加のステップと共に同様のプロセスによって実装することができ、かつ、本明細書に記載の原理を用いて、異なった操作順で実装することもできる。
【0059】
上記明細書、実施例、およびデータは、本実施形態の構成の製造および使用を全て記載したものである。本発明の主題は、構造的特徴および/または方法論的行為に特有の言葉で記載したが、特許請求の範囲で定義する主題は、上記の具体的な特徴や行為に必ずしも限定されないことを理解されたい。正しくは、上記の具体的な特徴や行為は、特許請求の範囲や実施形態を実装する形の例として、開示している。

【特許請求の範囲】
【請求項1】
仮想リストビュー(214)を動的に更新するために、コンピュータ装置において少なくとも部分的に実行される方法(800)であって、
前記方法(800)は、
ダウンロードしたデータを提示するアプリケーションユーザインタフェース(108)の仮想リストビュー(214)の提示において、ユーザによるスクロール速度を検出するステップ(808)と、
前記スクロール速度が所定の閾値を下回る場合、前記データのダウンロードに続き(810)、ビューポート(314)の提示を連続して更新するステップと、
前記スクロール速度が前記閾値を越える場合、前記スクロール速度が前記閾値を再び下回るまで、ユーザによってスクロールされているデータ行のブロック(430)のダウンロード操作をスキップするステップ(812)と、
前記スクロール速度が再び前記閾値を下回ると、ビューポート(314)に提示されるブロック(432)と、提示される前記ブロック(432)の前後のブロックの数(430)と、を含む所定の数のブロック(430)をダウンロードするステップ(816)と、
前記ビューポート(314)に提示される前記ブロック(432)を表示するステップ(820)と、
を備えることを特徴とする方法。
【請求項2】
各ブロックのデータ行の数は、利用可能な通信帯域幅、データの種類、ユーザプリファレンス、前記スクロール速度、前記ビューポート(314)のサイズ、および利用可能なメモリ、からなるセットの少なくとも1つに基づいて決定されることを特徴とする請求項1に記載の方法。
【請求項3】
提示される前記ブロック(432)の前後の前記ブロックの数(430)は、利用可能な通信帯域幅、データの種類、ユーザプリファレンス、前記スクロール速度、前記ビューポート(314)のサイズ、および利用可能なメモリ、からなるセットの少なくとも1つに基づいて決定されることを特徴とする請求項1に記載の方法。
【請求項4】
前記仮想リストビュー(214)は、番号付リスト、箇条書きリスト、表、自由形式テキスト、ページフォーマットのセットのうちの少なくとも1つの形式で、テキストデータおよびグラフィックデータの少なくとも1つを、含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記仮想リストビュー(214)内の各ブロックに、所定の基準に対する位置属性を割り当てるステップをさらに備え、前記位置属性は、前記ビューポート(314)に提示するために任意の範囲の行を選択できるように行識別子に関連付けられていることを特徴とする請求項1に記載の方法。
【請求項6】
前記識別子は、メタデータとして記憶されることを特徴とする請求項5に記載の方法。
【請求項7】
表示のための行の選択は、行識別子上のハッシュとして、前記アプリケーションによって保持されることを特徴とする請求項5に記載の方法。
【請求項8】
選択した複数の行が前記アプリケーションを実行するクライアント(106)に存在しない場合、前記データを保持するデータソースに同期コールを開始し、前記行識別子を利用して、抜けている行をリクエストするステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項9】
前記データソースで前記データの一部が変更された場合、影響を受けたデータ行の識別子と、前記データ行に関する変更と、前記データ行の位置インジケータと、を提供することによって、前記クライアント(106)を更新するステップを更に備え、前記更新は、1行ベースと、複数行からなるバッチベースのいずれか1つで行われることを特徴とする請求項8に記載の方法。
【請求項10】
前記データソースからの各更新と共にウォータマークを含むステップと、
前記クライアント(106)からのウォータマークを前記データソースに送り返すステップと、
前記データソースの前記ウォータマークと、前記クライアント(106)から送り返された前記ウォータマークとの比較に基づいて、前記クライアント(106)の前記データの更新状況を判断するステップと、
をさらに備えることを特徴とする請求項9に記載の方法。
【請求項11】
前記アプリケーションは、ウェブ閲覧アプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および検索エンジンアプリケーションのうちの1つを含むことを特徴とする請求項1に記載の方法。
【請求項12】
前記スクロール速度の閾値は、所定の期間に、所定の数の行を超えてスクロール位置が変化することとして定義されることを特徴とする請求項1に記載の方法。
【請求項13】
仮想リストビュー(214)を動的に更新する(800)システムであって、
データソースとデータを交換する通信モジュールと、
メモリと、
前記メモリと前記通信モジュールとに接続されて、クライアントアプリケーション(106)を実行することができるプロセッサと、
を備え、
前記プロセッサは、
ビューポート(314)に表示するための最初のブロックと、表示される前記最初のブロックの前後の所定の数のブロック(430)とを、前記データソースからダウンロードし(802)、かつ、
前記仮想リストビュー(214)の各ブロックに、所定の基準に対する位置属性であって、前記ビューポート(314)に表示するために任意の範囲の行を選択できるように行識別子と関連付けられる位置属性を割り当て、
ユーザによるスクロールの速度を検出し(806)、
前記スクロールの速度を所定の閾値と比較し(808)、
前記速度が前記所定の閾値を下回る場合、前記データをブロック(430)でダウンロードし、前記ビューポート(314)を連続して更新することを続け(810)、
前記速度が前記閾値を越える場合、前記速度が前記閾値を下回るまで、ユーザによりスクロールされているブロック(430)のダウンロードをスキップし(812)、
前記速度が前記閾値を下回ると、前記ビューポート(314)に表示するブロック(432)と、表示される前記ブロック(432)の前後複数のブロック(430)と、を含む所定の数のブロックを新たにダウンロードし(816)、
前記ビューポート(314)を更新する(820)
ように構成されていることを特徴とするシステム。
【請求項14】
前記クライアントアプリケーション(106)は、前記ユーザが、スクロールバーの選択した位置に、次に見るデータ行の位置を示すマーカを配置できるようにさらに構成されることを特徴とする請求項13に記載のシステム。
【請求項15】
前記マーカは、ポップアップボックスと関連付けられており、前記ポップアップボックスは、前記選択した位置で、前記データ行に関する要約情報を前記ユーザに提供することを特徴とする請求項14に記載のシステム。
【請求項16】
前記クライアントアプリケーション(106)は、タイトル、見出し、日付、および、ユーザ定義の属性からなるセットから少なくとも1つを含む基準に基づいてソートされた、スキップしたデータ行のプレビューを提供するようにさらに構成されることを特徴とする請求項13に記載のシステム。
【請求項17】
前記クライアントアプリケーション(106)は、ユーザインタフェースメニューからのユーザの選択に応答して、スクロールすることなしに、ユーザを選択した行にジャンプさせることを可能にするようにさらに構成され、前記ユーザインタフェースメニューは、アルファベット順ソート、タイトルソート、経時ソート、および、ユーザ定義によるソートのうちの1つを含むソート基準に基づいた範囲の選択を含むことを特徴とする請求項13に記載のシステム。
【請求項18】
動的に仮想リストビュー(214)を更新するための符号化された命令を有するコンピュータ読み取り可能な記憶媒体であって、
前記命令は、実行時に、コンピュータに、
ウェブアプリケーションのビューポート(314)に表示するための最初のブロックと、表示される前記最初のブロックの前後の所定の数のブロック(430)をデータソースからダウンロードするステップ(802)と、
前記仮想リストビュー(214)の各ブロックに、所定の基準に対する位置属性であって、前記ビューポート(314)に表示するために任意の範囲の行を選択できるように行識別子に関連付けられた位置属性を、割り当てるステップ(804)と、
ユーザによるスクロールの速度を検出するステップ(806)と、
前記スクロールの速度を所定の閾値と比較するステップ(808)と、
前記速度が前記所定の閾値を下回る場合、ブロック(430)でデータをダウンロードし、連続して前記ビューポート(314)の更新を続けるステップ(810)と、
前記速度が前記閾値を越える場合、前記速度が減速して前記閾値を下回るまで、前記ユーザによってスクロールされるブロック(430)のダウンロードをスキップするステップ(812)と、
前記速度が前記閾値を越えている間、表示された行をフリーズし、タイトル、見出し、日付、および、ユーザ定義の属性のセットから少なくとも1つを含む基準に基づいてソートした、スキップしたデータ行のプレビューを提供するステップと、
前記速度が減速して前記閾値を下回ると、前記ビューポート(314)に表示されるブロック(432)と、表示される前記ブロックの前後の複数のブロック(430)と、を含む所定の数のブロック(430)を新たにダウンロードするステップ(816)と、
前記ビューポート(314)を更新するステップ(820)と、
ユーザが、アルファベット順ソート、タイトルソート、経時ソート、および、ユーザ定義によるソートのうちの1つを含むソート基準に基づいた範囲の選択を含むユーザインタフェースメニューからのユーザの選択に応答して、スクロールすることなしに選択した行にジャンプできるようにするステップと、
を含むこと実行させることを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項19】
前記命令は、前記データソースで前記データの一部が変更された場合、影響を受けたデータ行の識別子と、前記データ行に関する変更と、前記データ行の位置インジケータと、を提供することによって前記ウェブアプリケーションを更新するステップ(818)をさらに含み、前記更新は、一行ベースおよび複数行のバッチベースの一つで行われることを特徴とする請求項18に記載のコンピュータ読み取り可能な記憶媒体。
【請求項20】
前記命令は、人工知能アルゴリズムを採用することによって、過去にダウンロードされたデータ行の数と、前記ダウンロードされた行に関するユーザの活動と、に基づいて、ダウンロードされるデータ行の数を決定するステップをさらに含むことを特徴とする請求項18に記載のコンピュータ読み取り可能な記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2011−501299(P2011−501299A)
【公表日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2010−530040(P2010−530040)
【出願日】平成20年10月11日(2008.10.11)
【国際出願番号】PCT/US2008/079669
【国際公開番号】WO2009/052033
【国際公開日】平成21年4月23日(2009.4.23)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】