(57)【要約】  ウェブアプリケーションの仮想リストビューは、ウェブに必然的に伴う待ち時間にかかわらず、ユーザが途切れることなく提示されたデータにアクセスし、そのデータを管理することができるように、動的に更新される。仮想リストビューに関連付けられたデータは、ユーザがスクロールすると、チャンクでダウンロードされ、ビューが更新される。ユーザのスクロールと、ダウンロードされる個々のデータチャンクを結び付けることによって、システムリソースは、効率的に利用される。ユーザインタフェース用の追加のユーザインタフェースコントロールが、データの一部への迅速で効率的なアクセスのために採用されて、遅延とシステムリソースの占領を最小限にする。
2011501299.tif 000002
【特許請求の範囲】
【請求項１】
仮想リストビュー（２１４）を動的に更新するために、コンピュータ装置において少なくとも部分的に実行される方法（８００）であって、
前記方法（８００）は、
ダウンロードしたデータを提示するアプリケーションユーザインタフェース（１０８）の仮想リストビュー（２１４）の提示において、ユーザによるスクロール速度を検出するステップ（８０８）と、
前記スクロール速度が所定の閾値を下回る場合、前記データのダウンロードに続き（８１０）、ビューポート（３１４）の提示を連続して更新するステップと、
前記スクロール速度が前記閾値を越える場合、前記スクロール速度が前記閾値を再び下回るまで、ユーザによってスクロールされているデータ行のブロック（４３０）のダウンロード操作をスキップするステップ（８１２）と、
前記スクロール速度が再び前記閾値を下回ると、ビューポート（３１４）に提示されるブロック（４３２）と、提示される前記ブロック（４３２）の前後のブロックの数（４３０）と、を含む所定の数のブロック（４３０）をダウンロードするステップ（８１６）と、
前記ビューポート（３１４）に提示される前記ブロック（４３２）を表示するステップ（８２０）と、
を備えることを特徴とする方法。
【請求項２】
各ブロックのデータ行の数は、利用可能な通信帯域幅、データの種類、ユーザプリファレンス、前記スクロール速度、前記ビューポート（３１４）のサイズ、および利用可能なメモリ、からなるセットの少なくとも１つに基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項３】
提示される前記ブロック（４３２）の前後の前記ブロックの数（４３０）は、利用可能な通信帯域幅、データの種類、ユーザプリファレンス、前記スクロール速度、前記ビューポート（３１４）のサイズ、および利用可能なメモリ、からなるセットの少なくとも１つに基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項４】
前記仮想リストビュー（２１４）は、番号付リスト、箇条書きリスト、表、自由形式テキスト、ページフォーマットのセットのうちの少なくとも１つの形式で、テキストデータおよびグラフィックデータの少なくとも１つを、含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記仮想リストビュー（２１４）内の各ブロックに、所定の基準に対する位置属性を割り当てるステップをさらに備え、前記位置属性は、前記ビューポート（３１４）に提示するために任意の範囲の行を選択できるように行識別子に関連付けられていることを特徴とする請求項１に記載の方法。
【請求項６】
前記識別子は、メタデータとして記憶されることを特徴とする請求項５に記載の方法。
【請求項７】
表示のための行の選択は、行識別子上のハッシュとして、前記アプリケーションによって保持されることを特徴とする請求項５に記載の方法。
【請求項８】
選択した複数の行が前記アプリケーションを実行するクライアント（１０６）に存在しない場合、前記データを保持するデータソースに同期コールを開始し、前記行識別子を利用して、抜けている行をリクエストするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記データソースで前記データの一部が変更された場合、影響を受けたデータ行の識別子と、前記データ行に関する変更と、前記データ行の位置インジケータと、を提供することによって、前記クライアント（１０６）を更新するステップを更に備え、前記更新は、１行ベースと、複数行からなるバッチベースのいずれか１つで行われることを特徴とする請求項８に記載の方法。
【請求項１０】
前記データソースからの各更新と共にウォータマークを含むステップと、
前記クライアント（１０６）からのウォータマークを前記データソースに送り返すステップと、
前記データソースの前記ウォータマークと、前記クライアント（１０６）から送り返された前記ウォータマークとの比較に基づいて、前記クライアント（１０６）の前記データの更新状況を判断するステップと、
をさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記アプリケーションは、ウェブ閲覧アプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および検索エンジンアプリケーションのうちの１つを含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記スクロール速度の閾値は、所定の期間に、所定の数の行を超えてスクロール位置が変化することとして定義されることを特徴とする請求項１に記載の方法。
【請求項１３】
仮想リストビュー（２１４）を動的に更新する（８００）システムであって、
データソースとデータを交換する通信モジュールと、
メモリと、
前記メモリと前記通信モジュールとに接続されて、クライアントアプリケーション（１０６）を実行することができるプロセッサと、
を備え、
前記プロセッサは、
ビューポート（３１４）に表示するための最初のブロックと、表示される前記最初のブロックの前後の所定の数のブロック（４３０）とを、前記データソースからダウンロードし（８０２）、かつ、
前記仮想リストビュー（２１４）の各ブロックに、所定の基準に対する位置属性であって、前記ビューポート（３１４）に表示するために任意の範囲の行を選択できるように行識別子と関連付けられる位置属性を割り当て、
ユーザによるスクロールの速度を検出し（８０６）、
前記スクロールの速度を所定の閾値と比較し（８０８）、
前記速度が前記所定の閾値を下回る場合、前記データをブロック（４３０）でダウンロードし、前記ビューポート（３１４）を連続して更新することを続け（８１０）、
前記速度が前記閾値を越える場合、前記速度が前記閾値を下回るまで、ユーザによりスクロールされているブロック（４３０）のダウンロードをスキップし（８１２）、
前記速度が前記閾値を下回ると、前記ビューポート（３１４）に表示するブロック（４３２）と、表示される前記ブロック（４３２）の前後複数のブロック（４３０）と、を含む所定の数のブロックを新たにダウンロードし（８１６）、
前記ビューポート（３１４）を更新する（８２０）
ように構成されていることを特徴とするシステム。
【請求項１４】
前記クライアントアプリケーション（１０６）は、前記ユーザが、スクロールバーの選択した位置に、次に見るデータ行の位置を示すマーカを配置できるようにさらに構成されることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記マーカは、ポップアップボックスと関連付けられており、前記ポップアップボックスは、前記選択した位置で、前記データ行に関する要約情報を前記ユーザに提供することを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記クライアントアプリケーション（１０６）は、タイトル、見出し、日付、および、ユーザ定義の属性からなるセットから少なくとも１つを含む基準に基づいてソートされた、スキップしたデータ行のプレビューを提供するようにさらに構成されることを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記クライアントアプリケーション（１０６）は、ユーザインタフェースメニューからのユーザの選択に応答して、スクロールすることなしに、ユーザを選択した行にジャンプさせることを可能にするようにさらに構成され、前記ユーザインタフェースメニューは、アルファベット順ソート、タイトルソート、経時ソート、および、ユーザ定義によるソートのうちの１つを含むソート基準に基づいた範囲の選択を含むことを特徴とする請求項１３に記載のシステム。
【請求項１８】
動的に仮想リストビュー（２１４）を更新するための符号化された命令を有するコンピュータ読み取り可能な記憶媒体であって、
前記命令は、実行時に、コンピュータに、
ウェブアプリケーションのビューポート（３１４）に表示するための最初のブロックと、表示される前記最初のブロックの前後の所定の数のブロック（４３０）をデータソースからダウンロードするステップ（８０２）と、
前記仮想リストビュー（２１４）の各ブロックに、所定の基準に対する位置属性であって、前記ビューポート（３１４）に表示するために任意の範囲の行を選択できるように行識別子に関連付けられた位置属性を、割り当てるステップ（８０４）と、
ユーザによるスクロールの速度を検出するステップ（８０６）と、
前記スクロールの速度を所定の閾値と比較するステップ（８０８）と、
前記速度が前記所定の閾値を下回る場合、ブロック（４３０）でデータをダウンロードし、連続して前記ビューポート（３１４）の更新を続けるステップ（８１０）と、
前記速度が前記閾値を越える場合、前記速度が減速して前記閾値を下回るまで、前記ユーザによってスクロールされるブロック（４３０）のダウンロードをスキップするステップ（８１２）と、
前記速度が前記閾値を越えている間、表示された行をフリーズし、タイトル、見出し、日付、および、ユーザ定義の属性のセットから少なくとも１つを含む基準に基づいてソートした、スキップしたデータ行のプレビューを提供するステップと、
前記速度が減速して前記閾値を下回ると、前記ビューポート（３１４）に表示されるブロック（４３２）と、表示される前記ブロックの前後の複数のブロック（４３０）と、を含む所定の数のブロック（４３０）を新たにダウンロードするステップ（８１６）と、
前記ビューポート（３１４）を更新するステップ（８２０）と、
ユーザが、アルファベット順ソート、タイトルソート、経時ソート、および、ユーザ定義によるソートのうちの１つを含むソート基準に基づいた範囲の選択を含むユーザインタフェースメニューからのユーザの選択に応答して、スクロールすることなしに選択した行にジャンプできるようにするステップと、
を含むこと実行させることを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記命令は、前記データソースで前記データの一部が変更された場合、影響を受けたデータ行の識別子と、前記データ行に関する変更と、前記データ行の位置インジケータと、を提供することによって前記ウェブアプリケーションを更新するステップ（８１８）をさらに含み、前記更新は、一行ベースおよび複数行のバッチベースの一つで行われることを特徴とする請求項１８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
前記命令は、人工知能アルゴリズムを採用することによって、過去にダウンロードされたデータ行の数と、前記ダウンロードされた行に関するユーザの活動と、に基づいて、ダウンロードされるデータ行の数を決定するステップをさらに含むことを特徴とする請求項１８に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想リストビューを動的に更新する方法およびシステムに関する。
【背景技術】
【０００２】
ウェブ閲覧アプリケーションは、一般に、リストビューの形でユーザにデータを提示する。例えば、データのページは、キーボード、マウスなどの様々なコントロールを用い、上下にスクロールすることによって見ることができる。可視データは、テキスト、グラフィック、その両方を組み合わせたデータなどを含むことができ、実際にリスト形式（表、箇条書き項目など）でフォーマットしてもよく、自由形式でフォーマットしてもよい。どちらの場合でも、ウェブ閲覧アプリケーションは、任意の大きさの項目リストをユーザに提示することができる。
【０００３】
実際の環境においては、ユーザインタフェースにデータが提示される前に、ユーザがデータへのリンクを選択すると、ウェブアプリケーションは、データ全体のダウンロードを試みるかもしれない。データが大きい場合、利用可能な帯域幅が小さい場合、または、他のシステムリソースがウェブサーバからのデータのダウンロードの制限となっている場合、この方法は、ユーザへのデータの提示に容認できない遅れを生じさせ、実行不可能な場合がある。別の代替的な方法としては、データをグループでダウンロードし、データをダウンロードしながらユーザインタフェースを更新することがある。しかしながら、この方法も、システムが「重くて動きにくい（clunkiness）」になる場合がある。そうなると、提示されたウェブページがばらばらに表示されたり、ユーザが遅れにいらいらしたり、ユーザがデータの特定の部分にしか興味がないのに、システムリソースがデータ全体のダウンロードに不必要に占領されたりする。
【発明の概要】
【０００４】
この概要は、下記の詳細な説明で詳述するコンセプトの一部を簡単に紹介する。この概要は、請求の主題の主要な特徴や不可欠な特徴を特定することを意図するものではないし、当該主題の範囲を決定するための補助として用いられることを意図するものでもない。
【０００５】
本実施形態では、ウェブアプリケーションの仮想リストビューを動的に更新して、ウェブに必然的に伴う待ち時間にもかかわらず、ユーザが提示されたデータに途切れることなくアクセスし、そのデータを管理できるようにする。仮想リストビューに関連付けられたデータは、チャンク（塊）でダウンロードし、ユーザのスクロールによってビューを更新することができる。ユーザのスクロールとダウンロードする個々のデータチャンクを結び付けることにより、システムリソースを効率的に利用することができる。データの一部に迅速に効率よくアクセスするために、追加のユーザインタフェースコントロールを採用することができ、それによって遅延やシステムリソースの占領を最小限に抑える。
【０００６】
これらの特徴や利点および他の特徴や利点は、下記の詳細な説明を読み、添付図面を参照することで明らかとなる。前述の一般的記述および下記の詳細な記述は、説明のためだけのものであり、特許請求の範囲を制限するものではないことを理解されたい。
【図面の簡単な説明】
【０００７】
【図１】サーバとクライアント間におけるウェブアプリケーションのデータの提示を示す概念図である。
【図２】仮想リストビューを有するウェブページの一例のスクリーンショットを示す図である。
【図３】ある実施形態に従って、図２の仮想リストビューの例と、その前後のデータチャンクを、ビューポートに提示されたチャンクと比較して示す図である。
【図４】本実施形態に従って、仮想リストビューを動的に更新するためにチャンクでダウンロードすることができるデータブロックの図である。
【図５】データの一部に効率的にアクセスするための追加のユーザインタフェースコントロールを備えた、図２のリストビューの例の別のスクリーンショットを示す図である。
【図６】本実施形態を実装することができるネットワーク環境の図である。
【図７】本実施形態を実装することができるコンピュータ動作環境の一例を示すブロック図である。
【図８】本実施形態に従って仮想リストビューを動的に更新するプロセスの一例を示す論理フロー図である。
【発明を実施するための形態】
【０００８】
上記に簡単に記述したように、ウェブアプリケーションの仮想リストビューは、ユーザのスクロール動作をダウンロードしているデータチャンクと連係させることによって動的に更新することができ、それによってユーザは途切れることなく提示されたデータにアクセスし、そのデータを管理できる。下記の詳細な説明においては、本明細書の一部を構成する添付図面を参照し、具体的な実施形態または実施例を、例として示す。本明細書の開示内容の精神または範囲を逸脱することなく、これらの態様を組み合わせることができ、他の態様を利用することができ、構造を変えることができる。従って、下記の詳細な説明は、限定的な意味で捉えるべきではなく、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲と同等のものによって定義される。
【０００９】
本実施形態は、パーソナルコンピュータのオペレーティングシステムで実行するアプリケーションプログラムと共に実行するプログラムモジュールという一般的なコンテキストで記載するが、態様は他のプログラムモジュールと共に実装することもできることを当業者は理解するであろう。
【００１０】
一般的に、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造、その他の種類の構造を含むが、それらは特定のタスクを実行する、または、特定の抽象データ型を実装する。さらに、本実施形態は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電、ミニコンピュータ、メインフレームコンピュータなどの他のコンピュータシステム構成で実施してもよいことを、当業者は理解するであろう。本実施形態は、通信ネットワークを介してつながった遠隔処理装置でタスクを行う分散コンピューティング環境で実施してもよい。分散コンピューティング環境では、プログラムモジュールは、ローカル記憶装置と遠隔記憶装置の両方に置くことができる。
【００１１】
本実施形態は、コンピュータプロセス（方法）、コンピューティングシステム、または、コンピュータプログラム製品やコンピュータ可読媒体などの製品として、実装することができる。コンピュータプログラム製品は、コンピュータシステムで読み取ることができ、かつ、コンピュータプロセスを実行するコンピュータプログラム命令を符号化するコンピュータ記憶媒体であってよい。
【００１２】
図１を参照すると、サーバとクライアント間におけるウェブアプリケーションでデータを提示するための概念図が示されている。ウェブアプリケーションは、様々なアプリケーションが含まれ、一般的にはクライアント装置／アプリケーション（１０６）内にユーザインタフェースを有し、サーバ１０２などのデータソースとデータを交換する。アプリケーションのための実データは、１つまたは複数のデータストア１０４に常駐することができ、サーバ１０２によって管理されることができる。
【００１３】
ウェブアプリケーションのユーザインタフェース１０８によって、ユーザは、データを見たり、ユーザインタフェース１０８上で操作を行ったり、入力によってデータを変更してデータソースに送り返すことができる。ユーザインタフェースが提示するデータは、様々なフォーマットで、テキストデータ、グラフィックデータ、またはその両方の組合せを含んでよい。例えば、様々な書式の、リスト、表、自由形式テキスト、およびページとして提示してよく、他のフォーマットとして提示してもよい。
【００１４】
下記の実施形態は、上記のようなウェブアプリケーションを参照しているが、下記の実施形態は、ウェブアプリケーションに限定されない。ネットワークを介してデータを交換し、かつ、リストビューフォーマットの形でユーザにデータを提示する任意のアプリケーションで、実施形態に従った動的更新方法を実装することができる。なお、ネットワークにおいては、システムリソースや交換されるデータの量が制限を受ける。そのようなアプリケーションの例としては、クライアント装置にある電子メールアプリケーションがあり、電子メールアプリケーションは、受信した電子メールのコンテンツは主としてサーバに置いたままで、受信した電子メールのリスト（例えば、件名と送信者）をユーザに提供する。このような電子メールアプリケーションは、ウェブアプリケーションである必要はない。イントラネットアプリケーションであっても、異なったネットワークのプロトコル（ＨＴＴＰである必要はない）を用いても、下記の実施形態を実装することができる。
【００１５】
仮想リストビューの動的更新を実装することができる他のアプリケーションの例には、インスタントメッセージアプリケーション、検索エンジン結果表示などのアプリケーションが含まれるが、これらに限定されない。このようなアプリケーションは、ハイパーテキストマークアップ言語（ＨＴＭＬ）での実装にも限定されない。アプリケーション閲覧用の任意の種類のプログラミング言語を用いることができる。さらに、仮想リストビューの幅と高さは、データブロックの行数やスクロール速度などのプロパティに基づいて動的に変更可能であってよい。
【００１６】
図２は、仮想リストビューを有するウェブページの一例のスクリーンショットを示す。上述のように、動的に更新された仮想リストビューは、交換したデータをリスト形式でユーザに提示する任意のユーザインタフェースで実装することができる。
【００１７】
ウェブページ２０８の例が、一般的なウェブ閲覧ユーザインタフェースによって提示されている。そのユーザインタフェースは、提示されているウェブページのＵＲＬ（Uniform Resource Locator）２１２と、メニューコマンド２１８と、操作アイコン２１６と、を含む。メインコンテンツは、リストビュー２１４に提示される。ウェブページの例は、米国特許庁のウェブサイトの特許法の部分である。ご覧のように、そのウェブページは、合衆国法典の長いリストを含み、各行はその法典の個々の条項へのリンクを示している。ユーザインタフェースは、完全なリストの限られた部分だけを提示することができる。リストビューの提示された部分は、ビューポートと呼ばれる。スクロールバー２１０によって、ユーザはリスト上を上下にスクロールして、リストの異なる部分を見ることができる。
【００１８】
そのリストの例は、単一の行からなるリストであり、リスト全体をクライアントにダウンロードするのに長くはかからないが、多くの場合、完全なリストビューは、単に長すぎて一度の素早い操作ではダウンロードできなかったり、個々の行がさらにデータを含んでいて、ダウンロード操作が、ユーザのスクロール動作に追いつかず、その結果、提示が遅れたり、システムリソースを消耗することになる。
【００１９】
図３は、図２の仮想リストビューの例と、その前後のデータチャンクを、ある実施形態に従ってビューポートに提示されたチャンクと比較して、示している。
【００２０】
本実施形態に従ったウェブ閲覧アプリケーションにおいては、仮想リストビューは、スクロールバー３１０とビューポート３１４という２つの主要部分から構成されている。これら２つの要素は切り離されており、スクロールバー３１０からのイベントを捕らえて、要求に応じて処理することも捨てることもできる。ビューポートは、行の「チャンク」（例えば、ＨＴＭＬでは、チャンクは、複数の行からなる表と追加のメタデータを含む仕切り要素「ＤＩＶ」であり得る）を含む。チャンクは、（所定の基準に対する）位置属性を与えられており、チャンクのスタイルプロパティを変更することによって、任意の範囲の行（クライアント上でその行が利用可能である限り）をビューポート内に可視的に配置することが可能である。ユーザがスクロールすると、ビューにチャンクが追加されたり、ビューからチャンクが取り除かれたりして、ビューポート３１４内に現在見えている行の上（３２２）および下（３２６）の両方に追加の行を保持する。
【００２１】
クライアントとデータソース間で交換されるデータを減らすことによってシステムリソース（通信帯域幅、メモリ等）の消費を最小限にするために、所定の閾値より速くユーザがスクロールすると、データがロードされないようにしてもよい。一実施形態による閾値の定義は、「スクロール位置が最後のＭミリ秒でＮ行を越えて変化した場合、ユーザは速くスクロールしている」であってよい。この場合、ビューポートは、スクロールが減速するまで変わらないままであってよく、スクロールが減速した時点で、スクロールバーの最終位置に対応するデータのみがロードされる。
【００２２】
表示のための行（１行または複数行）の選択は、クライアント上で、行ＩＤ（複数可）にハッシュとして保持されてもよい。これによって、ファーストルックアップは、ある行が選択されているか否かを知ることができ、選択された項目のセットを得るように列挙することができる。行ＩＤがすでにクライアント上に存在するので、選択された個々の項目は行選択に付け加えることができる。選択された項目は、単にハッシュに付け加えられてもよい。広い範囲の選択に関しては、クライアント上にない行もある。その場合は、同期コールをサーバ（データソース）に行い、ビューを再構成してその範囲に含まれる行ＩＤのセットを返すことができる。もちろん、行のＩＤを保持する他の方法も、本明細書に記述の原理を逸脱することなく、実装することができる。
【００２３】
実際のネットワーク環境においては、リストのコンテンツは、データソースで変わることがある。クライアント上のウェブアプリケーションのユーザインタフェースは、これを反映するために動的に更新する必要がある。実行不可能かもしれないデータセット全体のプレロードの代わりに、本実施形態によるアプリケーションは、ユーザが現在見ているデータ範囲と、ユーザが少しスクロールするとすぐにクライアント（側）を更新可能なデータ範囲という、一部のデータ範囲のみをロードすることができる。
【００２４】
更新は、データソースが変わる時に、一行ベースでクライアントに伝えられてもよい。サーバは、行を挿入、削除、変更したか否かに応じて、ビューを更新するのに最小限のデータをクライアントに送ってもよい。データには、影響を受けた行のＩＤと、その行の新しいマークアップと、その行のリスト上の位置（前の行のＩＤによって示される）と、を含むことができる。そうすると、クライアントは、この更新を適用することができる。
【００２５】
他の一実施形態によると、クライアント上のビューはサーバと同期がずれているかもしれないため、更新の各バッチと共にウォータマーク含むことができる。ウォータマークは、リストビュー操作（例えば、削除、移動）が行われると送り返され、サーバ上の現在のウォータマークと比較することができる。ウォータマークが一致しなければ、更新時に何らかの更新が途中で行われたに違いなく、その更新が把握されなかったということを意味する。この場合、サーバは、その更新を適用した後、クライアントに再度操作するように通知することができる。
【００２６】
図４は、本実施形態による、仮想リストビューを動的に更新するためにチャンクでダウンロードすることができるデータブロックの図である。
【００２７】
上述のように、仮想リストビューのデータは、ダウンロードし、ビューポートのブロック（４３０）に提示することができる。一実施形態によると、現在見ているブロック４３２に加えて、１ブロック前のデータと１ブロックのデータ（両方とも所定の行数を含む）（例えば、ブロックＮ−１、ブロックＮ、および、ブロックＮ＋１）をダウンロードすることができる。ユーザが、所定の閾値より速くスクロールすると、閾値以下のレベルまでスクロールが減速するまで後続のブロックはスキップされ、減速すると、連続する３つのブロックを再度ダウンロードして、ユーザが現在選択しているデータ行をユーザに提示することができる。
【００２８】
しかしながら、本実施形態は、連続する３つのデータブロックをダウンロードすることに限定されるわけではない。利用可能な通信帯域幅、データの種類、ユーザプリファレンス、スクロール速度、ビューポートのサイズ、利用可能なメモリなどの多くの要素に基づいて、現在見ているブロックの前後の任意の数のブロックをクライアントにダウンロードしてもよい。このように、データ全体の一部を、クライアントとデータソース間の往復のトラフィックなしに見ることができる。さらに、アルゴリズムを実装することによって、人工知能を用いて、ダウンロードされたデータブロックの数とユーザがそのデータブロックをどのように使用したかという過去の情報に基づいて、先行ダウンロードのためのデータブロックの数を予測してもよい。
【００２９】
前述のように、ソースのデータは、ユーザがクライアント上でデータの一部を見ている間に、変化する場合がある。選択した中に一部の行が存在して、他の行が存在しない場合、抜けている行を検索して選択が保存されるように、データソースを呼び出してもよい。新しい行が作成または更新される場合、これらの行は、選択した中から削除されず、選択した中に再び保存される。
【００３０】
図５は、図２のリストビューの例の別のスクリーンショットで、各データ部分に効率的にアクセスする追加のユーザインタフェースコントロールを備えている。
【００３１】
仮想リストビューを動的に更新して、ユーザ体験を高め、データへのアクセスを容易にする幾つかのコントロール機能を、ユーザインタフェースに備えてもよい。ウェブ閲覧ユーザインタフェース５０８の例には、ＵＲＬ５１２、操作アイコン５１６、スクロールバー５１０などの標準的な要素が、仮想リストビュー５１４の一部と共に示されている。
【００３２】
強化されたコントロール機能の一つは、スクロールマークである。ユーザは、データとの対話を通して仮想リストビューの特定の部分に戻りたい場合がある。アイコン５４２などのスクロールマークアイコンを用いて、ユーザの指示（例えば、ポインタデバイスの右クリック、メニューバーの項目の選択など）でスクロールバー上の位置を示すことができる。スクロールマーク機能のさらに強化された点は、各スクロールマークアイコンは、その位置に対応する行に関連付けることができ、その行に関する要約情報を、ユーザが見るのを妨害することなく（例えばユーザがスクロールマークアイコン上を指すと現れるポップアップボックスという形で）、ユーザに提示することができる。
【００３３】
データをダウンロードする様々な方法を記載したが、それらの方法では、スクロールの速度に基づいて、チャンクがダウンロードされる。ユーザが閾値より遅くスクロールすると、ビューは連続して更新される。スクロール速度が閾値を超えると、スクロールが再び減速するまでビューをフリーズすることができ、減速すると、データの新しいチャンクがダウンロードされ、表示される。閾値は、予め設定しても、システムの選択したプロパティに基づいて動的に決定してもよい。他の強化されたコントロール機能は、ユーザがすばやくスクロールしてデータの行を通り過ぎている間、通り過ぎたデータ行のプレビューをユーザに提示することを含むことができる。プレビューは、行のグループに基づいてよく、かつ、タイトル、見出し、日付などのユーザ定義による（または選択した）パラメータに基づいて分類されてもよい。例えば、ユーザが米国法典（タイトル３５）をすばやくスクロールしている場合、プレビューボックス（５４６）は、１５章「植物特許」、１７章「意匠特許」などの個々の章を表示することができ、ユーザが見たい行をうっかり通り過ぎてスクロールしてしまうのを防止する。
【００３４】
プレビュー機能は、ユーザが選択可能な任意の方法で構築してもよく、デフォルトパラメータに基づいて構築してもよい。パラメータは、グループ分けの種類、メタデータの種類、ソートスタイル（アルファベット、日付、タイトルなど）を含むことができる。
【００３５】
強化されたさらなるコントロール機能は、ジャンプツーコントロール（jump-to control）（５４４）と呼ばれる。この機能によって、ユーザは、大きいリストの特定の位置を、リストビュー全体をロードする必要なく探すことができる。例えば、図で示される位置にスクロールする代わりに、行をアルファベットで選択することにより、ユーザは特定の行にジャンプすることができる。プレビュー機能においてと同様、ジャンプツーコントロールは、アルファベット、時間順、ユーザ定義など複数の基準に基づいていてよい。一実施形態によると、ジャンプツーコントロールは、ソート基準にふさわしいドロップダウンメニューとして提供することができる。例えば、リストをアルファベット順にソートする場合、メニューはアルファベットを表示することができ、日付でソートする場合、メニューはデートピッカー（date picker）を表示することができる。ドロップダウンメニューの値を選択すると、リストは、選択した値に等しいか、またはその後の最初の行を探す。
【００３６】
本実施形態に従って動的に更新された仮想リストビューは、アプリケーションの例と共に上述したコンポーネントや機能に追加して、また、それらより少ないコンポーネントや機能と共に実装することができる。このようなリストビューを実装するアプリケーションは、１つまたは複数のコンピュータ装置に、ネットワーク化された方法でローカルに実行することができる。データは１つまたは複数のサーバまたはデータストアに記憶することができる。データは、構造化されていても構造化されていなくてもよく、暗号化されていても暗号化されていなくてもよい。さらに、例としてあげた強化されたコントロール機能に代えて、またはその機能に追加して、動作を最適化する追加の方法を採用してもよい。
【００３７】
図６は、本実施形態を実装することができるネットワーク化された環境の一例である。仮想リストビューの動的更新は、１つまたは複数のコンピュータ装置で実行するローカルアプリケーションまたは分散アプリケーションで実装することができる。このコンピュータ装置は、多数の物理的クライアント、多数の仮想クライアント、多数の物理的サーバおよび多数の仮想サーバにわたって分散した方法で構成される。１つまたは複数のネットワーク（例えば、ネットワーク６６０）上で通信する複数のノードを用いて、クラスタ化されていないシステムで実装しても、クラスタ化されたシステムで実装してもよい。
【００３８】
このようなシステムは、サーバ、クライアント、インターネットサービスプロバイダ、および通信媒体の、任意のトポロジを備えることができる。また、このシステムは、静的トポロジまたは動的トポロジを有してもよく、システムの階層内のサーバとクライアントの役割や、サーバとクライアントの相互関係は、管理者が静的に決定してもよく、装置の利用可能性、ロードバランシングなどに基づいて動的に決定されてもよい。「クライアント」という用語は、クライアントアプリケーションまたはクライアント装置を指すことができる。ネットワーク化されたシステムが動的に実装する一方で、更新された仮想リストビューはさらに多くのコンポーネントを伴うかもしれない。この図に関連して、関係のあるコンポーネントを記述する。
【００３９】
上述のように、ウェブアプリケーション（または、リストビュー更新を実装する任意のアプリケーション）は、クライアント装置６５４から６５６またはサーバ６５２で実行することができ、クライアント装置６５３によってアクセスすることができる。ユーザは、ウェブサーバ６６２からネットワーク６６０を介して仮想リストビューに提示されたデータにアクセスすることができる。ウェブサーバ６６２は、データストア６６８を用いて、データそのものを管理し、記憶してもよく、データベースサーバ６６４と通信してデータストア６６６を管理してもよい。
【００４０】
ネットワーク６６０は、企業ネットワークなどの安全なネットワーク、オープンワイヤレスネットワークなどの安全でないネットワーク、またはインターネットを含むことができる。ネットワーク６６０は、本明細書に記載のノード間に通信を提供する。限定ではなく例として、ネットワーク６６０は、有線ネットワークや直接配線接続などの有線媒体、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。
【００４１】
コンピュータ装置、アプリケーション、データソース、データ配信システムの他の多くの構成を採用し、データのカテゴリーに基づいて、協調サーバに対する分散データ記憶装置を実装することができる。さらに、図６で記載したネットワーク化された環境は、例示のみを目的としている。本実施形態は、例示したアプリケーション、モジュールまたはプロセスに限定されない。
【００４２】
図７および図７に関する記載は、本実施形態を実装することができる適切なコンピューティング環境を簡単に一般的に記載することを目的としたものである。図７を参照して、コンピュータ装置７００などのコンピュータ動作環境のブロック図の例を示す。基本的構成においては、コンピュータ装置７００はクライアント装置であってよい。コンピュータ装置７００は、一般的には、少なくとも１つの処理装置７０２と少なくとも１つのシステムメモリ７０４を含むことができる。コンピュータ装置７００は、協働してプログラムを実行する複数の処理装置を含んでもよい。コンピュータ装置の具体的構成と具体的種類に応じて、システムメモリ７０４は、揮発性（例えば、ＲＡＭ）、不揮発性（例えば、ＲＯＭ、フラッシュメモリなど）、または揮発性、不揮発性の両方を組み合わせたものであってよい。システムメモリ７０４は、一般的に、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適切な、本件特許出願人のＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなどのオペレーティングシステム７０５を備える。また、システムメモリ７０４は、プログラムモジュール７０６、クライアントアプリケーション７２２、ビューモジュール７２４、およびデータ検索モジュール７２６などの、１つまたは複数のソフトウェアアプリケーションを含んでもよい。
【００４３】
クライアントアプリケーション７２２は、別のソースからのデータを仮想リストビューでユーザに提示する、ウェブ閲覧アプリケーションのような、任意のアプリケーションであってよい。データ検索モジュール７２６は、ウェブサーバのようなリモートデータソースから、提示のためのデータを検索することができる。前述のように、仮想リストビュー全体をダウンロードすることは、システムリソースに限りがあることから、実用的でなく、実行不可能な場合がある。ビューモジュール７２４は、ユーザのスクロールを対応するデータチャンクに連係させることができ、それによって、データ検索モジュール７２６は、ユーザがすぐに見る必要のあるそれらのデータチャンクのみを検索することができる。ビューモジュール７２４はまた、図５に関連して上述した、強化されたコントロール機能も提供することができる。この基本的構成は、図７に示す点線７０８内のコンポーネントである。クライアントアプリケーション７２２の機能性は、ここに記載されている２つのモジュールに割り当てる必要はない。上述の機能性は、より多くのモジュールまたはより少ないモジュールで行ってもよく、全く同じアプリケーションで行ってもよい。
【００４４】
コンピュータ装置７００は、追加の機能または機能性を有することができる。例えば、コンピュータ装置７００は、磁気ディスク、光学ディスク、テープなどの追加のデータ記憶装置（取り外し可能および／または取り外し不可）を含むこともできる。このような追加の記憶装置は、取り外し可能な記憶装置７０９と取り外し不可の記憶装置７１０として図７に示されている。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報、を記憶するための任意の方法または任意の技術で実装される、揮発性媒体、不揮発性媒体、取り外し可能な媒体、および、取り外し不可の媒体が含まれる。システムメモリ７０４、取り外し可能な記憶装置７０９、および取り外し不可の記憶装置７１０は全て、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するのに使うことができ、かつ、コンピュータ装置７００がアクセスすることができる任意の他の媒体を含むが、それらに限定されない。このような任意のコンピュータ記憶媒体が、装置７００の一部となることができる。コンピュータ装置７００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置７１２も含むことができる。ディスプレイ、スピーカー、プリンタなどの出力装置７１４も含むことができる。これらの装置は、この技術分野において周知であり、詳述する必要はない。
【００４５】
コンピュータ装置７００は、通信接続７１６も含むことができ、通信接続７１６によって、コンピュータ装置７００は、イントラネットやインターネットなどの分散コンピューティング環境にある無線ネットワーク上などで、他のコンピュータ装置と通信することができる。他のコンピュータ装置７１８は、ウェブサーバ、データベースサーバ、ファイルサーバ、プロバイダサーバなどを含むことができる。通信接続７１６は、通信媒体の一例である。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波や他の搬送機構などの変調データ信号の形の他のデータで具現することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、特性の１つまたは複数が、情報を信号に符号化する方法で、設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体と、を含む。
【００４６】
本請求の主題は、操作方法も含む。操作方法は、本明細書に記載した構造を含む任意の数の方法で実装することができる。本明細書に記載の種類の装置の方法の１つは、機械操作による。
【００４７】
選択できる別の方法は、その方法の個々の操作の１つまたは複数を、操作を行う１人または複数の人間オペレータと組み合わせて行うことである。この人間オペレータは、互いに結びついている必要はなく、各人間オペレータは、プログラムの一部を実行する機械とだけ共に操作を行う。
【００４８】
図８は、本実施形態に従って仮想リストビューを動的に更新するプロセス８００の一例を示す論理フロー図である。プロセス８００は、任意のウェブアプリケーション環境で実装することができる。
【００４９】
プロセス８００は操作８０２から始まる。操作８０２において、ウェブ閲覧アプリケーションのウェブページの最初のビューなどのデータソースから、ユーザに提示するための初期データブロックが受信される。処理は操作８０２から操作８０４に続く。
【００５０】
操作８０４において、受信された初期データブロックは、ウェブアプリケーションによってユーザに提示される。処理は操作８０４から操作８０６に続く。
【００５１】
操作８０６において、仮想リストビューを介したユーザのスクロールが検出される。上述のように、ユーザは、スローペースでスクロールしてもよく、また、アプリケーションが、スクロール中のデータを同時にダウンロードして、提示するのが可能な速さより速くスクロールしてもよい。処理は操作８０６から決定操作８０８に進む。
【００５２】
決定操作８０８において、スクロール操作が所定の閾値より速いか否かが判断される。スクロールが閾値より速くない場合、処理は操作８１０に進む。操作８１０において、データ交換がシステムリソースに負担をかける可能性があるものではないので、ビューは連続して更新される。
【００５３】
スクロールが閾値より速い場合、処理は決定操作８０８から操作８１２に続く。操作８１２において、スクロールされたデータブロックは、（クライアントにダウンロードされずに）スキップされる。ビューは、そのタイムフレームの間フリーズしてもよく、プレビュー機能などの追加の拡張されたコントロール機能を備えてもよい。処理は操作８１２から決定操作８１４に進む。
【００５４】
決定操作８１４において、スクロールが減速して所定の閾値を下回ったか否かが判断される。スクロールがまだ閾値を越えたままなら、処理は操作８１２に戻って、スクロール中のデータは引き続きスキップされる。スクロールが減速すると、処理は操作８１６に進む。
【００５５】
操作８１６において、ビューポートに提示される１つと、提示されたブロックの前後の所定の数のブロックと、を含む範囲のデータブロックが、クライアントにダウンロードされる。処理は操作８１６から操作８１８に進む。
【００５６】
データソースに何らかの変更がある場合、操作８１８において、データが更新される。処理は操作８１８から操作８２０に続く。
【００５７】
操作８２０において、ダウンロードされたデータブロックが、スロースクロールモードで、ユーザに提示される。操作８２０の後、処理は、次のアクションを呼び出すプロセスに進む。
【００５８】
プロセス８００に含まれる操作は、例示を目的としている。ウェブアプリケーションにおける仮想リストビューの動的更新は、より少ないステップまたは追加のステップと共に同様のプロセスによって実装することができ、かつ、本明細書に記載の原理を用いて、異なった操作順で実装することもできる。
【００５９】
上記明細書、実施例、およびデータは、本実施形態の構成の製造および使用を全て記載したものである。本発明の主題は、構造的特徴および／または方法論的行為に特有の言葉で記載したが、特許請求の範囲で定義する主題は、上記の具体的な特徴や行為に必ずしも限定されないことを理解されたい。正しくは、上記の具体的な特徴や行為は、特許請求の範囲や実施形態を実装する形の例として、開示している。
【図１】
2011501299.tif 000003
【図２】
2011501299.tif 000004
【図３】
2011501299.tif 000005
【図４】
2011501299.tif 000006
【図５】
2011501299.tif 000007
【図６】
2011501299.tif 000008
【図７】
2011501299.tif 000009
【図８】
2011501299.tif 000010
【国際調査報告】
2011501299.tif 000011
2011501299.tif 000012