(57)【特許請求の範囲】
【請求項１】
グリッド表示を行うアプリケーションを実行するシステムにおいて、
セルの表示要素の集合で構成される格子状に区切られた画面を生成する画面生成部と、
前記画面生成部により生成された前記画面をディスプレイ装置に表示する表示部と、
前記ディスプレイ装置に表示された前記画面に対するスクロール操作を受け付け、画面のスクロールを制御するスクロール制御部とを備え、
前記スクロール制御部は、
前記スクロール操作によって、前記ディスプレイ装置に表示される可視領域から外れるセルと、新たに可視領域に入るセルとが存在する場合に、前記可視領域から外れるセルの表示に用いられた表示要素における位置情報を含む属性を前記可視領域に入るセルを表す内容に変更することにより、当該可視領域に入るセルを前記ディスプレイ装置に表示させる、システム。
【請求項２】
前記スクロール制御部は、前記可視領域から外れるセルの数よりも前記可視領域に入るセルの数の方が多い場合に、両者の差分の数だけ前記セルの表示要素を生成し、当該表示要素により当該可視領域に入るセルを前記ディスプレイ装置に表示させる、請求項１に記載のシステム。
【請求項３】
前記画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの列を構成するセルが前記可視領域から外れ、かつ少なくとも１つの列を構成するセルが新たに当該可視領域に入る場合に、前記スクロール制御部は、当該可視領域に入る列における各セルの行方向の位置が当該可視領域から外れた列における当該セルの行方向の位置に対応するように、当該セルの前記表示要素の属性を変更する、請求項１に記載のシステム。
【請求項４】
前記画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの行を構成するセルが前記可視領域から外れ、かつ少なくとも１つの行を構成するセルが新たに当該可視領域に入る場合に、前記スクロール制御部は、当該可視領域に入る行における各セルの列方向の位置が当該可視領域から外れた行における当該セルの列方向の位置に対応するように、当該セルの前記表示要素の属性を変更する、請求項１に記載のシステム。
【請求項５】
前記画面において複数の前記セルがまとまって１つのセルとして扱われる連結セルを構成する場合、前記スクロール制御部は、セルの前記表示要素の属性を変更した後、スクロール前に連結セルを構成していたセルを検出し、当該セルの表示要素の属性を、当該連結セルにおいてスクロール後に当該画面に表示されている部分を構成する内容に設定し直す、請求項１に記載のシステム。
【請求項６】
前記画面生成部は、前記画面のサイズと前記セルのサイズとに基づいて、当該画面に同時に表示されるセルの数の最大値を算出し、当該最大値に基づいて特定される数の前記表示要素を生成し、当該画面を生成する、請求項１に記載のシステム。
【請求項７】
コンピュータにより、グリッド表示を行うアプリケーションの表示制御を行う方法において、
セルの表示要素の集合で構成される格子状に区切られた画面を生成してディスプレイ装置に表示させるステップと、
前記ディスプレイ装置に表示された前記画面に対するスクロール操作を受け付けてスクロール制御を行い、前記ディスプレイ装置に表示される可視領域から外れるセルと、新たに可視領域に入るセルとが存在する場合に、前記可視領域から外れるセルの表示に用いられた表示要素における位置情報を含む属性を前記可視領域に入るセルを表す内容に変更することにより、当該可視領域に入るセルを前記ディスプレイ装置に表示させるステップと
を含む、方法。
【請求項８】
前記スクロール制御を行うステップでは、前記画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの列を構成するセルが前記可視領域から外れ、かつ少なくとも１つの列を構成するセルが新たに当該可視領域に入る場合に、当該可視領域に入る列における各セルの行方向の位置が当該可視領域から外れた列における当該セルの行方向の位置に対応するように、当該セルの前記表示要素の属性を変更する、請求項７に記載の方法。
【請求項９】
前記スクロール制御を行うステップでは、前記画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの行を構成するセルが前記可視領域から外れ、かつ少なくとも１つの行を構成するセルが新たに当該可視領域に入る場合に、当該可視領域に入る行における各セルの列方向の位置が当該可視領域から外れた行における当該セルの列方向の位置に対応するように、当該セルの前記表示要素の属性を変更する、請求項７に記載の方法。
【請求項１０】
前記画面において複数の前記セルがまとまって１つのセルとして扱われる連結セルを構成する場合に、セルの前記表示要素の属性を変更した後、スクロール前に連結セルを構成していたセルを検出し、当該セルの表示要素の属性を、当該連結セルにおいてスクロール後に当該画面に表示されている部分を構成する内容に設定し直すステップをさらに含む、請求項７に記載の方法。
【請求項１１】
前記画面を生成してディスプレイ装置に表示させるステップは、
前記画面のサイズと前記セルのサイズとに基づいて、当該画面に同時に表示されるセルの数の最大値を算出するステップと、
算出された前記最大値に基づいて特定される数の前記表示要素を生成するステップと
を含む、請求項７に記載の方法。
【請求項１２】
コンピュータを、
グリッド表示を行うアプリケーションにおける、セルの表示要素の集合で構成される格子状に区切られた画面を生成する手段と、
生成された前記画面をディスプレイ装置に表示する手段と、
前記ディスプレイ装置に表示された前記画面に対するスクロール操作を受け付け、画面のスクロールを制御する手段として機能させ、
前記スクロールを制御する手段の機能として、前記スクロール操作によって、前記ディスプレイ装置に表示される可視領域から外れるセルと、新たに可視領域に入るセルとが存在する場合に、前記可視領域から外れるセルの表示に用いられた表示要素における位置情報を含む属性を前記可視領域に入るセルを表す内容に変更することにより、当該可視領域に入るセルを前記ディスプレイ装置に表示させる処理を前記コンピュータに実行させる、プログラム。
【請求項１３】
前記スクロールを制御する手段の機能として、前記画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの列を構成するセルが前記可視領域から外れ、かつ少なくとも１つの列を構成するセルが新たに当該可視領域に入る場合に、当該可視領域に入る列における各セルの行方向の位置が当該可視領域から外れた列における当該セルの行方向の位置に対応するように、当該セルの前記表示要素の属性を変更する処理を前記コンピュータに実行させる、請求項１２に記載のプログラム。
【請求項１４】
前記スクロールを制御する手段の機能として、前記画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの行を構成するセルが前記可視領域から外れ、かつ少なくとも１つの行を構成するセルが新たに当該可視領域に入る場合に、当該可視領域に入る行における各セルの列方向の位置が当該可視領域から外れた行における当該セルの列方向の位置に対応するように、当該セルの前記表示要素の属性を変更する処理を前記コンピュータに実行させる、請求項１２に記載のプログラム。
【請求項１５】
前記スクロールを制御する手段の機能として、前記画面において複数の前記セルがまとまって１つのセルとして扱われる連結セルを構成する場合に、セルの前記表示要素の属性を変更した後、スクロール前に連結セルを構成していたセルを検出し、当該セルの表示要素の属性を、当該連結セルにおいてスクロール後に当該画面に表示されている部分を構成する内容に設定し直す処理を前記コンピュータに実行させる、請求項１２に記載のプログラム。
【請求項１６】
前記画面を生成する手段の機能として、前記画面のサイズと前記セルのサイズとに基づいて、当該画面に同時に表示されるセルの数の最大値を算出し、当該最大値に基づいて特定される数の前記表示要素を生成する処理を前記コンピュータに実行させる、請求項１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブラウザ上で動作するアプリケーション、特にスプレッドシート等のグリッド表示を行うアプリケーションを実行するシステム、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
今日、ウェブ・ブラウザにおけるＤＨＴＭＬ（Dynamic Hyper Text Markup Language）やJavaScript（登録商標）の機能を利用した、いわゆるリッチ・ユーザ・インタフェース技術の活用が盛んに行われている。この技術によれば、高度な表（グリッド）形式の部品やスプレッドシート・ユーザ・インタフェース部品等（以下、これらの部品を総称してスプレッドシートと呼ぶ）の機能を、標準的なウェブ・ブラウザの機能だけで実現することができる。
【０００３】
リッチ・ユーザ・インタフェースでは、例えば、ＨＴＭＬ（Hyper Text Markup Language）言語で用意された、テーブル形式の表示を行うＴＡＢＬＥ要素を用いてスプレッドシートが実現される。この場合、スプレッドシートの行と列を、例えばＴＲ要素およびＴＤ要素を用いて表示することができる。また、ＤＩＶ要素を用いてスプレッドシートのセルを表示することもできる。
【０００４】
この種のリッチ・ユーザ・インタフェースを実現した従来技術としては、例えば、米国グーグル（Ｇｏｏｇｌｅ）社のGoogle Spreadsheets（例えば、非特許文献１参照）やカナダ  ニトビ（Ｎｉｔｏｂｉ）社のnitobi Grid等が存在する。Google Spreadsheetsは、ウェブ・ブラウザ上でスプレッドシート機能を実現する。また、nitobi Gridは、スプレッドシート機能を持ったグリッド形式の表示を、ウェブ・ブラウザ上で実現する。
【０００５】
ところで、スプレッドシートにおいて、ディスプレイ装置に一度に表示できるセルの数は、比較的大型かつ高解像度のディスプレイ装置を用いた場合でも６００〜１０００程度である。一方、ビジネス・アプリケーション等においては、数万から１００万程度のセル数のスプレッドシートが必要とされる場合が少なくない。したがって、実際のスプレッドシートの使用においては、ディスプレイ装置に表示される画面をスクロールさせることが不可欠である。
【０００６】
リッチ・ユーザ・インタフェース技術を用いてスプレッドシートを実現する方法としては、様々な方法が可能であるが、スクロールに関しては、主として次のような方法が採られると考えられる。
第１に、最初にスプレッドシートを開く際に、スプレッドシート全体のＤＯＭ（Document Object Model）構造を生成する方法である。この方法では、一度アプリケーションを起動してしまえば、スプレッドシートの全ての行と列についての画面要素（ＴＲ要素、ＴＤ要素など）が生成される。スクロールにおいては、既に生成されているスプレッドシートの画面要素の中から表示領域に対応する箇所を順次表示していく。
【０００７】
第２に、初期表示においては実際に表示される領域のみについて画面要素を生成する方法である。この場合、画面のスクロールが行われて新しい行や列が表示される際に、スクロール操作に応じて必要なＤＯＭ構造を順次追加し、画面要素を動的に生成していくこととなる。
【０００８】
【非特許文献１】「米Ｇｏｏｇｌｅ、表計算Ｗｅｂアプリケーション「Ｇｏｏｇｌｅ  Ｓｐｒｅａｄｓｈｅｅｔｓ」ベータ版」、[online]、２００６年６月７日、INTERNET Watch、[２００７年１２月２８日検索]、インターネット＜URL : http://internet.watch.impress.co.jp/cda/news/2006/06/07/12229.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００９】
リッチ・ユーザ・インタフェース技術を用いてウェブ・ブラウザ上で動作するスプレッドシートを実現する場合、上記のように、初期表示の際に全ての行と列について画面要素を生成する方法と、初期表示の際には表示される領域のみについて画面要素を生成する方法とが考えられる。
しかし、第１の方法では、最初に、表示される部分に関わらずスプレッドシートの全体が生成されるため、スプレッドシートのサイズ次第では初期表示の際の待ち時間が非常に大きくなる。また、行や列の高さおよび幅のサイズを変えるような、画面要素の構成を変更する操作を行ったときの待ち時間も非常に大きくなる。
【００１０】
一方、第２の方法では、初期表示に要する時間は必要最小限で済むものの、スクロールの度にＤＯＭ構造を追加し画面要素を生成するため、処理に時間を要し、スムーズなスクロールを行うことが困難になる。また、生成された行や列が累積されるに伴って、ＤＯＭ構造が大きくなり、画面要素の追加生成の処理における負担が増加するため、スクロールがさらに遅くなる。
【００１１】
本発明は、以上の課題を解決し、初期表示に要する時間の短縮と、スクロール操作における反応時間の短縮とを両立させることを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するため、本発明は、次のようなシステムとして構成される。このシステムは、グリッド表示を行うアプリケーションを実行するシステムにおいて、セルの表示要素の集合で構成される格子状に区切られた画面を生成する画面生成部と、この画面生成部により生成された画面をディスプレイ装置に表示する表示部と、ディスプレイ装置に表示された画面に対するスクロール操作を受け付け、画面のスクロールを制御するスクロール制御部とを備える。そして、このスクロール制御部は、スクロール操作によって、ディスプレイ装置に表示される可視領域から外れるセルと、新たに可視領域に入るセルとが存在する場合に、可視領域から外れるセルの表示に用いられた表示要素における位置情報を含む属性を可視領域に入るセルを表す内容に変更することにより、可視領域に入るセルをディスプレイ装置に表示させる。
【００１３】
また、このシステムにおいて、スクロール制御部は、可視領域から外れるセルの数よりも可視領域に入るセルの数の方が多い場合に、両者の差分の数だけセルの表示要素を生成し、この表示要素により可視領域に入るセルをディスプレイ装置に表示させる。
さらに詳細には、画面において前記セルが行列をなして整列し、スクロール操作によって、少なくとも１つの列を構成するセルが可視領域から外れ、かつ少なくとも１つの列を構成するセルが新たに可視領域に入る場合に、スクロール制御部は、可視領域に入る列における各セルの行方向の位置が可視領域から外れた列におけるセルの行方向の位置に対応するように、セルの表示要素の属性を変更する。
さらにまた、スクロール操作によって、少なくとも１つの行を構成するセルが可視領域から外れ、かつ少なくとも１つの行を構成するセルが新たに可視領域に入る場合に、スクロール制御部は、可視領域に入る行における各セルの列方向の位置が可視領域から外れた行におけるセルの列方向の位置に対応するように、セルの表示要素の属性を変更する。
【００１４】
より好ましくは、このシステムは、画面において複数のセルがまとまって１つのセルとして扱われる連結セルを構成する場合、スクロール制御部は、セルの表示要素の属性を変更する際に、スクロール前に連結セルを構成していたセルを検出し、セルの表示要素の属性を、連結セルにおいてスクロール後に画面に表示されている部分を構成する内容に設定し直す。
さらに好ましくは、画面生成部は、画面のサイズとセルのサイズとに基づいて、画面に同時に表示されるセルの数の最大値を算出し、この最大値に基づいて特定される数の表示要素を生成し、画面を生成する。
【００１５】
また本発明は、方法のカテゴリにおいて把握することができる。この方法は、コンピュータにより、グリッド表示を行うアプリケーションの表示制御を行う方法において、セルの表示要素の集合で構成される格子状に区切られた画面を生成してディスプレイ装置に表示させるステップと、ディスプレイ装置に表示された画面に対するスクロール操作を受け付けてスクロール制御を行い、ディスプレイ装置に表示される可視領域から外れるセルと、新たに可視領域に入るセルとが存在する場合に、可視領域から外れるセルの表示に用いられた表示要素における位置情報を含む属性を可視領域に入るセルを表す内容に変更することにより、可視領域に入るセルをディスプレイ装置に表示させるステップとを含む。
【００１６】
さらに本発明は、コンピュータを制御して、上記のシステムとして機能させるプログラムや、上記の方法における各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【発明の効果】
【００１７】
以上のように構成された本発明によれば、グリッド表示を行うアプリケーションを実行し表示制御を行う場合に、初期表示に要する時間を短縮し、かつスクロール操作における反応時間も短縮させることができる。
【発明を実施するための最良の形態】
【００１８】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
＜システム構成＞
本実施形態によるアプリケーション実行システムは、パーソナルコンピュータ等のコンピュータにより実現される。図１は、本実施形態のシステムを実現するコンピュータのハードウェア構成例を示す図である。
【００１９】
図１に示すコンピュータ１０は、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、記憶手段であるメイン・メモリ１０ｃおよび磁気ディスク装置（ＨＤＤ：Hard Disk Drive）１０ｇを備える。また、ネットワークを介して外部装置に接続するためのネットワーク・インタフェース・カード１０ｆと、表示出力を行うためのビデオ・カード１０ｄおよび表示装置１０ｊと、音声出力を行うための音声機構１０ｈとを備える。さらに、キーボードやマウス等の入力デバイス１０ｉを備える。
【００２０】
図１に示すように、メイン・メモリ１０ｃおよびビデオ・カード１０ｄは、システム・コントローラ１０ｂを介してＣＰＵ１０ａに接続されている。また、ネットワーク・インタフェース・カード１０ｆ、磁気ディスク装置１０ｇ、音声機構１０ｈおよび入力デバイス１０ｉは、Ｉ／Ｏコントローラ１０ｅを介してシステム・コントローラ１０ｂと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。例えば、ＣＰＵ１０ａとメイン・メモリ１０ｃの間は、システム・バスやメモリ・バスにより接続される。また、ＣＰＵ１０ａと磁気ディスク装置１０ｇ、ネットワーク・インタフェース・カード１０ｆ、ビデオ・カード１０ｄ、音声機構１０ｈ、入力デバイス１０ｉ等との間は、ＰＣＩ（Peripheral Components Interconnect）、ＰＣＩ  Ｅｘｐｒｅｓｓ、シリアルＡＴＡ（AT Attachment）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Accelerated Graphics Port）等の入出力バスにより接続される。
【００２１】
なお、図１は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎず、実際の各サーバが図示の構成に限定されないことは言うまでもない。例えば、ビデオ・カード１０ｄを設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０ａにてイメージ・データを処理する構成としても良い。また、音声機構１０ｈを独立した構成とせず、システム・コントローラ１０ｂやＩ／Ｏコントローラ１０ｅを構成するチップセットの機能として備えるようにしても良い。また、補助記憶装置として磁気ディスク装置１０ｇの他に、各種の光学ディスクやフレキシブル・ディスクをメディアとするドライブを設けても良い。表示装置１０ｊとしては、主として液晶ディスプレイが用いられるが、その他、ＣＲＴディスプレイやプラズマ・ディスプレイ等、任意の方式のディスプレイを用いて良い。
【００２２】
図２は、本実施形態によるアプリケーション実行システムの機能構成を示す図である。
図２に示すアプリケーション実行システム１００は、例えば図１に示したコンピュータ１０において、メイン・メモリ１０ｃに読み込まれたプログラムをＣＰＵ１０ａが実行することにより実現され、オペレーティング・システム（以下、ＯＳと略記する）１１０と、ＯＳ１１０上で動作するウェブ・ブラウザ１２０とを備える。ウェブ・ブラウザ１２０は、スプレッドシート生成部１２１と、スクロール制御部１２２とを備える。スプレッドシート生成部１２１およびスクロール制御部１２２は、ＤＨＴＭＬやJavaScriptを用いて記述され、ウェブ・ブラウザ１２０上で動作するが、図示しないウェブ・サーバからオンラインで提供されるアプリケーション（スプレッドシート）の機能の一部として実現される。また、このアプリケーションによるスプレッドシートの画面は、ウェブ・ブラウザ１２０の機能により、ディスプレイ装置２００に表示される。すなわち、ウェブ・ブラウザ１２０は、スプレッドシートの画面をディスプレイ装置２００に表示する表示部としても機能する。ディスプレイ装置２００は、例えば図１に示した表示装置１０ｊにより実現される。
【００２３】
＜スプレッドシート生成部の機能＞
スプレッドシート生成部１２１は、アプリケーションの起動時に、セルの集合で構成されるスプレッドシートの画面要素を生成する。言い換えれば、スプレッドシート生成部１２１は、グリッド形式によるスプレッドシートの画面を生成する画面生成部である。スプレッドシートのセル表示には、ＴＡＢＬＥ要素およびその子要素となる特定のテーブル関連の要素群は使わず、ＣＳＳ（Cascading Style Sheet）機能のボックス・モデル に関するスタイル属性を用いる。ここで、ボックス・モデルとは、様々な表示要素に共通である矩形領域としてのスタイル属性の意味を規定するものである。
【００２４】
このスタイル属性は、それが有効であるような表示要素に関連付けて指定される。例えば、特定の表示様式を持たないＤＩＶ要素にこのスタイル属性を与えることができ、これにより、枠線（境界線）の表示、枠線の色、セルのサイズ、背景色などを表現した、スプレッドシートのセルとして用いられる矩形領域を表示することができる。なお、セルを構成するためにＤＩＶ要素以外の要素を用いることも可能であるが、以下では、ＤＩＶ要素が用いられた場合の例について説明する。
【００２５】
複数のＤＩＶ要素を、親表示要素（例えば、親もＤＩＶ要素でよい）の子要素として、行列状に配置することにより、格子状にセルが区切られたスプレッドシートが表示できる。ＤＩＶ要素は、さらに子要素を持つことができるので、スプレッドシートの各セルの内側に、ＤＩＶ要素の子要素としての適当な要素による表示を入れることができる。
【００２６】
ＣＳＳのボックス・モデルでは、ｐｏｓｉｔｉｏｎ属性を用いることにより、親表示要素のボックスと子要素のボックスとの位置関係を指定することができる。特に、子要素のｐｏｓｉｔｉｏｎ属性の値として「ａｂｓｏｌｕｔｅ」を指定し、さらにその実際の位置属性を与えることにより、その子要素の表示位置を親表示要素のボックスの左上の点を基点とした座標系の上で指定できる。
【００２７】
図３は、スプレッドシートを実現するためのＤＯＭ構造の例を示す図である。
図３に示す例では、スプレッドシートを構成するＤＯＭ構造が、可視域表示要素（第１層）、セル平面表示要素（第２層）、セル表示要素（第３層）の３層で構成されている。
第１層の可視域表示要素には、スプレッドシートのうち、現在画面上に表示されている部分（可視域）のサイズが指定されている。この可視域表示要素は、さらに上位の要素の部分として画面上に現れる。
第２層のセル平面表示要素は、第３層のセル表示要素群の配置を決めるための座標系を定義する。図３に示す例では、左端の上から２番目のセルの位置が、座標（△ｓ，△ｔ）で示されている。
第３層のセル表示要素は、スプレッドシートを構成する個々のセルを定義する。
【００２８】
ここで、第１層で設定される可視域と第２層で設定されるセル平面の位置関係を変えることがスクロール操作に相当する。図３に示す例では、可視域に対するセル平面の位置が、座標（△ｘ，△ｙ）で示されている。また、図３に示すセル平面のうち、網掛けの部分が画面上に見えている部分を表している。
【００２９】
スプレッドシートの全てのセルに関するサイズ、背景色、内容等の各種の情報は、アプリケーションを提供するウェブ・サーバからウェブ・ブラウザ１２０により取得され、図１に示したメイン・メモリ１０ｃ等のメモリ領域に読み込まれているものとする。また、必要なときに随時ウェブ・ブラウザ１２０からウェブ・サーバにリクエストして、必要な情報を取得できるものとしても良い。例えば、２次元配列ｃｅｌｌｓを用意し、ｉ行ｊ列目のセルの情報へのアクセスを、ｃｅｌｌｓ［ｉ］［ｊ］のような式で表すとする。このとき、例えばセルの幅は、ｃｅｌｌｓ［ｉ］［ｊ］．ｗｉｄｔｈといった式を評価することで取得される。
【００３０】
スプレッドシート生成部１２１は、最初の画面の作成において、可視域表示要素、セル平面表示要素を生成すると共に、セル表示要素とその子孫については、可視領域を埋めるのに十分な数を生成する。このとき、どれだけの数のセル表示要素を生成するかに関しては、次のいずれかの方針を採り得る。
（ｉ）可視領域を埋めるのに必要な行および列をそれぞれ求め、それの範囲に含まれるセルの数だけ生成する。
（ｉｉ）スプレッドシート全域にスクロールしたときに、それぞれの場所での可視領域に含まれる行数と列数を判定し、それぞれの最大値の積の数だけ生成する。
【００３１】
（ｉ）は、必要になるまではできるだけセル表示要素の数を増やさないという方針である。一方、（ｉｉ）は、可視領域のサイズが変わらない限りは、スクロールの途中で表示に必要なセル表示要素の追加が起こらない。そのため、スクロール中には表示要素の追加に関する処理時間を要しない。したがって、各スクロール単位の処理量が一定になる。
【００３２】
＜スクロール制御部の機能＞
スクロール制御部１２２は、ユーザが図１の入力デバイス１０ｉを用いて行ったスクロール操作に応じて、画面のスクロールを実行する。画面のスクロールは、セル平面の、可視領域からの相対的な位置を変更することにより行われる。可視領域が右にスクロールするということは、可視領域に対するセル平面の基点の位置が左に移動するということである。可視領域が左にスクロールする場合の処理、また上下方向のスクロールに関しても、同様に考える。
【００３３】
図４は、可視領域が右にスクロールする様子を示す図である。
所定の幅のスクロールを行うと、スクロール前に可視領域に含まれていてスクロール後に可視領域の外に出る列が発生する。これを削除列と呼ぶことにする。発生する削除列の数は、０列、１列または複数列である。図４（ａ）に示す例では、スクロールにより、セル平面の基点の位置が（△ｘ１，△ｙ）から（△ｘ２，△ｙ）に移動している。そして、これにより、左端の１列が可視領域から外れ、削除列となっている。
【００３４】
また、新しく可視領域になった領域のうち、まだセル表示要素が配置されていない部分が発生する。これを追加列と呼ぶことにする。発生する追加列の数は、０列、１列または複数列である。削除列よりも追加列の方が多い場合、スクロール制御部１２２は、その差の数の追加列を選び、それらの列上に配置するセル表示要素を新たに生成する。そして、生成した各セル表示要素に対して、位置属性を含む必要な属性を設定する。
【００３５】
残りの追加列（削除列と同数分の追加列、ただし１以上の場合）については、スクロール制御部１２２は、削除列上に配置されていたセル表示要素に関して、追加列上に配置しなおすために、位置属性を含む必要な属性を設定する。そして、削除列上にあった各セル表示要素は追加列上に再配置される。すなわち、削除列と同数分の追加列に関しては、セル表示要素が新しく生成されるのではなく、図４（ｂ）に示すように、既存のセル表示要素が移動することで充当されることとなる。セル表示要素の生成に要する処理時間は比較的大きいが、このように既存のセル表示要素を流用することで、処理時間を短縮できる。
【００３６】
さらに、各々のセル表示要素は、移動前と後とで同じ行に対応するように配置される。このようにすることで、行ごとに設定されるセルの属性（例えば、高さや背景色などが行ごとに設定されているような場合）について再度設定し直さずに済むため、処理時間のさらなる短縮を図ることができる。
【００３７】
さて、スクロール制御部１２２は、上述したように、スクロール時の処理として可視領域から外に出た削除列に配置されているセル表示要素を取得し、その属性を変更する操作を行う。そこで、各時点でのセル表示要素の行・列位置に応じて、特定の行や列上のセル表示要素を取得するための、また、行や列の単位でセル表示要素の位置を変更したときに変更後の位置関係を記憶しておくための、効率のよいデータ構造を設計する必要がある。
【００３８】
１つの方法として、JavaScriptの配列（１次元配列）を使って、行や列を表し、その集まりをさらに上位の配列で表すことで行列に相当する２次元配列を構成し、この配列を用いて特定の行や列に位置づけられているセル表示要素を記憶することが考えられる。例えば、配列名をｃｅｌｌｓとすると、１００行目、５００列目の位置をあらわすのにｃｅｌｌｓ［１００］［５００］のように記述する。そして、この配列への代入操作、アクセス操作により、セル表示要素を記憶したり、アクセスしたりする。一般に、スプレッドシート全体の位置を表すには、配列のインデックスは非常に大きな数になる。しかし、JavaScriptの配列は、インデックスが数字の場合でもいわゆる連想配列である。そのため、インデックスの数値が大きくなった場合でも、配列要素が空の部分に関しては実際の記憶領域を必要としない。したがって、この配列は、アクセスの性能と記憶領域の両方において十分効率の良いデータ構造である。
【００３９】
＜スプレッドシート生成部およびスクロール制御部の動作の具体例＞
次に、具体的なスプレッドシートの構成例を挙げて、スプレッドシート生成部１２１およびスクロール制御部１２２の動作について、さらに詳細に説明する。
図５は、スプレッドシートの構成例を示す図である。
図５において、スプレッドシートの上辺および左辺の数字は、各行および各列の幅および高さを表す。また、各セルに記載されたＣ（ｉ，ｊ）は、そのセルに付けられた名前とする。図示の例では、スプレッドシートの左上の３行４列についてのみサイズが記述されているが、省略されている右方向および下方向へセルは続いている。そして、図示されたサイズ以外に、データ、前景色、背景色などセルの表示に必要なデータが、各セルのＣ（ｉ，ｊ）に関連付けてメモリに保持されているものとする。
【００４０】
図６は、スプレッドシートにおける可視域のサイズの例を示す図である。
図６に示す可視域のサイズの値と図５に示したスプレッドシートの行および列のサイズの値は、同一の単位によるものとする。
図７は、図５のスプレッドシートの上に図６の可視域を重ね合わせた様子を示す図である。図において網掛けされた部分が可視域を表している。
図７に示す例では、スプレッドシートの左上隅の点から表示されるものとして、左上３行３列が可視域に掛かっていることがわかる。
以上の状況において、スプレッドシート生成部１２１は、スプレッドシートの可視域を表示するためにＤＩＶ要素による図３を参照して説明した３層のＤＯＭ構造を作成する。
【００４１】
第１層のＤＩＶ要素では、スタイル属性として少なくとも可視域の幅と高さが設定される。この設定を、以下のように表記する。
DIVp.style = “width: 200; height: 150”
この記載は、第１層目のＤＩＶ要素であるＤＩＶｐのスタイル属性として、幅属性ｗｉｄｔｈが２００、高さ属性ｈｅｉｇｈｔが１５０であることを意味する。なお、以下の説明も含め、これらの属性名は標準的なＷｅｂブラウザのスタイルシート技術に準じたものである。
【００４２】
次に、第２層のＤＩＶ要素ＤＩＶｍのスタイル属性は、次のように設定する。
DIVm.style = “position: absolute; overflow: visible; left: 0; top: 0; width: 0; height: 0”
この記載は、位置指定属性ｐｏｓｉｔｉｏｎは値がａｂｓｏｌｕｔｅで、この要素の位置が親の要素の左上の点からの座標で指定されることを意味する。オーバフロー属性ｏｖｅｒｆｌｏｗは値がｖｉｓｉｂｌｅで、この要素の子要素がＤＩＶｍの幅、高さの範囲を超えた場所に配置されたときの扱いとして可視とすることを指定している。位置は、左ｌｅｆｔが０、上ｔｏｐが０で、この要素の左上の点が親要素の左上の点と同じであることを意味する。幅、高さは何でも良いが、ここではｗｉｄｔｈは０と高さも０としている。オーバフロー属性の指定がｖｉｓｉｂｌｅであるので、子要素はＤＩＶｍのサイズに関わらず表示される。
【００４３】
第３層目のＤＩＶ要素群は、現在の可視域を漏れなく表示するために９個生成される。各ＤＩＶ要素にはＤＩＶ１からＤＩＶ９と名付ける。
図８に、各ＤＩＶ要素の配置の例を示す。
各ＤＩＶ要素のスタイル属性に関して、位置指定属性ｐｏｓｉｔｉｏｎは、値はａｂｓｏｌｕｔｅとし、親すなわちＤＩＶｍの左上の点からの位置で指定されるものとする。位置を指定する属性ｌｅｆｔ、ｔｏｐは、各々の行、列の高さ、幅の情報から計算され指定される。例えばＤＩＶ５は、ｌｅｆｔ：１００；ｔｏｐ：５０；ｗｉｄｔｈ：９０；ｈｅｉｇｈｔ：５０となる。その他、各セルに関する色やフォントなどのスタイル属性やデータ表示のための子要素などを第３層のＤＩＶ要素群に設定することで各セルの表示が完成する。
【００４４】
次に、上記のように生成されたスプレッドシートにおいて、右に１列分すなわち１００だけスクロールすることを考える。
図９は、スクロール後の新しい可視域と現在の第３層のＤＩＶ要素の位置の関係を示す図である。
図９を参照すると、現在１列目（左端）にあるＤＩＶ要素の位置は、スクロール後には完全に可視域から外に出る。一方２列、３列のＤＩＶ要素は新しい可視域にも含まれる。４列目のセルに関しては現在ＤＩＶ要素がない。第２、３、４列が表示できれば新しい可視域は漏れなく表示できる。そこで、スクロール後の表示を構成する操作は、次の通りになる。
【００４５】
スクロール制御部１２２は、まず、第２層のＤＩＶｍについて、ｌｅｆｔ属性を０から−１００に変更する。これにより、第２層の第１層に対する相対位置が左に１００移動する。これは、第１層の可視域を基準にすると第２層が右に１００移動することを意味する。次に、第３層のＤＩＶ１、ＤＩＶ２、ＤＩＶ３のｌｅｆｔ属性を２４０に、ｗｉｄｔｈ属性を１２０に変更する。さらに、この３つのＤＩＶ要素について、新しくこれらの要素が表示するセルの表示に必要なスタイル属性やデータを表示する子要素を設定する。
【００４６】
図１０は、以上の操作による最終的な第１層の可視域、第２層、第３層のＤＩＶ要素の位置関係を示す図である。
以上の操作において、ＤＩＶ４からＤＩＶ９に関しては位置を含め全く属性や下位構造を変更していない。また、第３層において新しいＤＩＶ属性を追加していない。これらの点は、スクロールにおける処理時間を低減するのに効果的であり、特にスプレッドシートの表示されるセル数が多い場合は顕著である。第３層の新しいＤＩＶ属性の生成については、可視域を埋め尽くすのに十分なＤＩＶ要素が足りない場合には必要になる。しかし、予め広めに第３層のＤＩＶ要素を作っておく場合や、ある程度ＤＩＶ要素を追加した後では、多くの場合で既存のＤＩＶ要素を再利用できることが期待できる。
【００４７】
図１１は、スクロール制御部１２２による処理の流れを示すフローチャートである。
図１１に示すように、スクロール制御部１２２は、スクロール動作を行った際に、まず削除列の数と追加列の数とを比較する。削除列の数が追加列の数以上である場合は（ステップ１１０１でＮｏ）、削除列の数が０であれば（すなわち、削除列も追加列も０である場合）、可視領域に含まれ表示されるセルはスクロールによって変わらないので、スクロール制御部１２２はそのまま処理を終了する（ステップ１１０２でＮｏ）。
【００４８】
一方、削除列の数が１以上である場合は（ステップ１１０２でＹｅｓ）、スクロール制御部１２２は、削除列にある各ＤＩＶ要素の属性を、追加列のセルを表す内容に変更する（ステップ１１０３）。これにより、削除列のセルを表示するために使用されていたＤＩＶ要素が、追加列のセルを表示するために使用されることとなる。
【００４９】
次に、削除列の数よりも追加列の数の方が多い場合（ステップ１１０１でＹｅｓ）、削除列の数が０であれば（ステップ１１０４でＮｏ）、追加列のセルの分だけＤＩＶ要素が不足するので、スクロール制御部１２２は、必要な数のＤＩＶ要素を生成する（ステップ１１０５）。生成されたＤＩＶ要素は、追加列のセルを表示するために使用される。
【００５０】
一方、削除列の数が１以上である場合は（ステップ１１０４でＹｅｓ）、スクロール制御部１２２は、削除列にある各ＤＩＶ要素の属性を、追加列のセルを表す内容に変更する（ステップ１１０６）。しかし、これでは追加列の全てのセルを表示するには足りないので、スクロール制御部１２２は、不足分のＤＩＶ要素を生成する（ステップ１１０７）。そして、削除列のセルを表示するために使用されていたＤＩＶ要素と、追加生成により補充されたＤＩＶ要素が、追加列のセルを表示するために使用される。
【００５１】
なお、上記の動作例は、スクロールによってスプレッドシートの列が削除され、また追加される場合について説明したが、他の方向へのスクロールによってスプレッドシートの行が削除され、追加される場合も、処理の流れは同様である。また、フローチャートには図示されていないが、削除列の方が追加列よりも多い場合、追加列のセルの表示に使用されない余剰のＤＩＶ要素が発生する。この場合、余ったＤＩＶ要素は、例えば、スクロール方向の延長上で未だ表示されていない列のセルに割り当てて配置しておけば良い。このようにすることで、実際にさらにスクロール操作が行われて、当該列が表示されることになったとしても、ＤＩＶ要素を新たに生成する必要がなくなる。あるいは、別の方法として、余剰分の削除列（ＤＩＶ要素）を変更せずに残すことも考えられる。残った削除列は、次の同方向へのスクロール時に、その時点の削除列の一部として考慮される。この方法によれば、スクロール時点での処理量を必要最小限とし、かつスクロール方向が逆方向に変わった場合の変更量を減らすことができる。
【００５２】
＜初期表示におけるセル表示要素の生成＞
スクロール中にセル表示要素の追加が起こると、そのための処理時間がかかり、スクロールの遅延の原因となる。スプレッドシート生成部１２１が、初期可視域において、必要な数よりも多めのセル表示要素を予め生成しておけば、このような要素追加が起こる可能性は低くなる。このような要素追加が全く起きないようにするには、スプレッドシート全域にわたってスクロールしたときのそれぞれの場所での可視領域に含まれる行数と列数を判定し、その最大数の行と列をもったセル表示要素を初期表示時に生成し、配置しておけば良い（スプレッドシート生成部１２１の機能で説明した（ｉｉ）の方針）。可視領域に含まれる行数と列数は、実際に競る表示要素を生成することなく、可視領域のサイズと各セルのサイズの情報に基づいて計算される。ただし、スプレッドシートのセルサイズの定義や可視域のサイズが変化しないことが前提となる。
【００５３】
図１２は、行方向に関して可視領域に含まれる行数の最大値を求めるプログラムのJavaScript言語で書いた擬似コードを示す図である。図には行方向に関するプログラムが記載されているが、列方向についても同様に計算できる。
図示のプログラム例は、１行単位でスクロールを順次進めていき、それぞれの時点で可視域を埋めるのに必要な行数を求め、その最大値を求めるものである。スクロールを行の単位で進める場合は、このプログラムで必要な行数の最大値が求められる。また、スクロールを行の単位よりも小さな単位で行える場合には、可視域を埋める行数の最大値は、このプログラムで計算した最大値よりも高々１大きな値になる。したがって、その場合でもこのプログラムを適用して行数の最大値を決めることができる。
【００５４】
このように計算した表示に必要な最大行数、最大列数が大きな数になった場合、初期状態の処理量が多くなり、初期画面の起動遅延時間が大きくなることもあり得る。初期起動時間を優先し、スクロール中で起こるセル表示要素の生成に起因する遅延を選択するか、初期起動時間を犠牲にしてスクロール中の遅延を全くなくすか、その中間の調整をして遅延を初期処理とスクロール時に分散させるかは、設計上の判断となる。
【００５５】
＜連結セルの取り扱い＞
通常、高機能のグリッド表示コンポーネントやスプレッドシートは、連結セルを扱う機能を持つ。連結セルは、複数のセルの集まりを、行の範囲と列の範囲により指定し、これらのセルの大きさをまとめた１つのセルとして表示するものである。連結セル中に表示する情報は、連結前のセルのうちのいずれか１つ（例えば左上隅のセル）と関連付ける。連結セルの範囲として指定したセルを連結要素と呼ぶ。
【００５６】
連結セルを含む場合の処理方法は、上述した連結セルを考えない場合の処理を拡張して実現される。初期画面の作成時、またはスクロール時で、それぞれのセル表示要素の幅、高さ、およびセル平面表示要素からの位置を指定する局面を考える。このとき、連結セルを考えない場合は、対応するセルの情報から幅、高さを取得し、また周囲のセルとの位置関係、周囲のセルの大きさにより位置を決定した。
【００５７】
これに対し、連結セルを考える場合は、次のように拡張する。まず、上記と同様の局面において、対応するセルが連結要素でなければこれまでと同様の処理を行う。一方、対応するセルが連結要素である場合、そのセル表示要素が代表表示要素かそれ以外の表示要素かを後述する方法で判定する。そして、代表表示要素である場合には、表示の大きさは対応する連結要素を含む連結セルの大きさとする。また、表示の位置はその連結セルに含まれる連結要素のうちの左上隅の要素の左上隅の位置にあわせる。それ以外の表示要素の場合は、表示の大きさはゼロ（もしくは非表示になるような方法であればどのようなものでも良い）にする。ある連結セルに対応する代表表示要素とは、現在の表示要素のなかで対応するセルがその連結セルの連結要素であるもののうち、その位置が左上隅にあるものを指す。
【００５８】
所定のセル表示要素が代表表示要素かどうかの判定は次のようにして行う。
（１）もし、そのセル表示要素が現在の全てのセル表示要素の中で左上隅にある場合は、代表表示要素である。
（２）それ以外の場合で、そのセル表示要素が現在の全てのセル表示要素の中で最も左の列にあり、かつ、対応するセルがある連結セルの連結要素のうち最も上の行にある場合は、代表表示要素である。
（３）それ以外の場合で、そのセル表示要素が現在の全てのセル表示要素の中で最も上の行にあり、かつ、対応するセルがある連結セルの連結要素のうち最も左の行にある場合は、代表表示要素である。
（４）それ以外の場合はそのセル表示要素は代表表示要素ではない。
【００５９】
スプレッドシート生成部１２１が初期画面を表示する際は、全てのセル表示要素において、上記の手順で、大きさと位置を指定する。スクロール制御部１２２が画面のスクロールを行う際は、例えば左から右にスクロールする場合、新しく生成されたセル表示要素および削除列に含まれ位置変更の対象となったセル表示要素について、上記の手順で、大きさと位置を指定する。また、所定の削除列のセル表示要素が移動し、新しく左端となった列に含まれるセル表示要素全てについて、上記の手順で大きさおよび位置を設定し直す。その他の方向にスクロールする場合も、同様の考え方で処理を行う。
【００６０】
図１３は、セルの定義と表示要素との関係を模式的に表した図である。図１３（ａ）には、大きさなどのセルの情報の位置的な関係と連結セルの定義（情報）が示されており、図１３（ｂ）には、これらのセルの定義と表示要素との関係が示されている。
セル表示要素のうち、連結要素と対応がとれ、かつ左上隅に位置するセル表示要素が、代表表示要素である（図において太線で示したＤＩＶ要素）。代表表示要素は、スクロールの度に選択され、その大きさと位置が設定される。代表表示要素の大きさと位置は、図において網掛けで示した部分、すなわち連結セルの大きさと位置に相当するものに設定される。また、代表表示要素がスクロールにより代表表示要素でなくなり、かつ依然として連結要素に対応している場合は、大きさがゼロに設定される。
【００６１】
＜連結セルの取り扱いの具体例＞
次に、具体的なスプレッドシートの構成例を挙げて、連結セルの取り扱いについて、さらに詳細に説明する。
図１４は、連結セルを含むスプレッドシートの構成例を示す図である。
図１４に示すスプレッドシートは、図５に示したスプレッドシートと同様の構成であるが、セルＣ（１，１）、Ｃ（１，２）、Ｃ（２，１）、Ｃ（２，２）が連結され、この４つのセルの領域を併せたものが１つの連結セルとして扱われる。このような連結情報は、それぞれの連結されるセルに関連してメモリに保持されており、連結されたセルの大きさが計算できるものとする。また、連結セルの表示データやサイズ以外のスタイルに関する情報も、適当な手段でこれらのセルと関連付けて記憶され、スプレッドシート表示の処理において、取得し計算できるものとする。図において網掛けされた部分が可視域を表している。
【００６２】
最初の表示がスプレッドシートの最左上の点を基準にするものとする。この場合、まず、第３層のＤＩＶ要素として、表示域を埋めるのに必要なセルに対応させてＤＩＶ１からＤＩＶ９までが生成される。
図１５に、各ＤＩＶ要素の配置の例を示す。
連結セルが画面に含まれているので、連結セルとして扱われるセルに対応するＤＩＶ要素の１つ、ここではＤＩＶ１を代表表示要素として選ぶ。図において、連結セルを構成するＤＩＶ要素は破線で示されており、特に代表表示要素は太い破線で示されている。
【００６３】
図１５に示すスプレッドシートにおいて、連結セル以外のセルに対応するＤＩＶ要素については、通常通りに位置、サイズなどの属性が設定される。
一方、連結セルの代表表示要素については、連結セルの位置、サイズその他の属性が設定される。図示の例では、位置、サイズは、ｌｅｆｔ：０；ｔｏｐ：０；ｗｉｄｔｈ：１９０；ｈｅｉｇｈｔ：１００となる。連結セル内のセルに対応していてかつ代表表示要素でない要素ＤＩＶ２、ＤＩＶ４、ＤＩＶ５については、非表示になるように、例えばサイズを０とするように属性が設定される。この結果、連結セルの部分が１つの大きなセルとして表示される。
【００６４】
次に、このスプレッドシートが右に１列分スクロールする場合を考える。
図１６は、図１５の状態から右に１列分スクロールした状態を示す図である。
まず、連結セルを考えずに、通常通り、第１列のＤＩＶ１、ＤＩＶ２、ＤＩＶ３要素に関して、第４列目を表示するように設定が変えられる。このとき、ＤＩＶ１は連結セルの表示として使われなくなる。
【００６５】
次に、新しく左端の列となった第２列に注目し、この列に連結セルの一部となる要素が含まれているか否かをチェックする。この例では第２列に連結セルが掛かっている。代表表示要素は、連結セルの一部として表示されるセル領域のなかで最左上に対応する要素と決めているので、連結セルの領域に対応しているＤＩＶ４、ＤＩＶ５のうちＤＩＶ４が代表表示要素となる。ＤＩＶ４の位置、サイズは、それぞれｌｅｆｔ０；ｔｏｐ０；ｗｉｄｔｈ１９０；ｈｅｉｇｈｔ１００となる。ＤＩＶ５は、非表示になるようにサイズが０に設定される。この結果、スクロール後には、左側が欠けた連結セルが可視域左端に現れることになる。
【００６６】
以上の操作では、スクロール後に新しく端になった列（縦方向のスクロールの場合は行）から代表表示要素を選択し、その代表表示要素とその回りの代表表示要素にならなかったＤＩＶ要素に対して、適切に位置、サイズを設定する処理が追加された。そして、この追加された処理を除けば、連結セルが無い場合のスクロール処理と同じである。すなわち、連結セルが無い場合のスクロール処理に対して上記の簡単な拡張を行うのみで、連結セルを含む場合のスクロール処理が実現できた。
【００６７】
効率上の配慮として、スプレッドシートにおいて、連結セルの指定、もしくは指定解除の時点で、スプレッドシート中の連結セルの有無を記憶しておき、それに応じてスクロール処理方式を切り替えるようにする。これにより、連結セルが１つも無い場合には、上記のような連結セルのための追加処理を行わないような制御を行っても良い。
【００６８】
図１７は、連結セルが存在する場合のスクロール制御部１２２による処理の流れを示すフローチャートである。
図１７において、ステップ１７０１〜１７０３の動作は、図１１に示したステップ１１０１〜１１０３と同様である。また、削除列の数よりも追加列の数の方が多い場合（ステップ１７０１でＹｅｓ）におけるステップ１７０６〜ステップ１７０８およびステップ１７１１の動作は、図１１に示したステップ１１０４〜１１０７の動作と同様である。
【００６９】
本動作例では、ステップ１７０３においてＤＩＶ要素の属性が変更された後、スクロール制御部１２２は、スクロール前に連結セルを構成していたセルであって、スクロール後の可視域に含まれているセルのＤＩＶ要素を検出し、代表表示要素を選択する（ステップ１７０４）。そして、スクロール後の可視域に含まれる範囲で連結セルを構成する各セルのＤＩＶ要素の属性を、連結セルを表す内容に再設定する（ステップ１７０５）。
【００７０】
ステップ１７０８においてＤＩＶ要素の属性が変更された後も、同様に、代表表示要素の選択（ステップ１７０９）、連結セルを構成する各セルのＤＩＶ要素における属性の再設定（ステップ１７１０）が行われる。なお、図１７のフローチャートでは、連結セルに対する処理（ステップ１７０９、１７１０）が行われた後に、不足分のＤＩＶ要素の生成（ステップ１７１１）が行われることとしているが、これらの実行順は図示の例に限定されるものではない。
【００７１】
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。例えば、上記実施形態では、ウェブ・ブラウザ１２０上で動作するアプリケーションがスプレッドシートである場合を例として説明したが、この他、グリッド形式の表示を行う種々のアプリケーションに対して、本実施形態を適用することができる。また、本実施形態では、アプリケーションは、ウェブ・サーバからオンラインで提供されることを想定して説明したが、ウェブ・ブラウザ１２０上で動作するアプリケーションであれば、オンラインで提供されるものに限定されない。その他、上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００７２】
【図１】本実施形態が適用されるシステムを実現するコンピュータのハードウェア構成例を示す図である。
【図２】本実施形態によるアプリケーション実行システムの機能構成を示す図である。
【図３】本実施形態でスプレッドシートを実現するためのＤＯＭ構造の例を示す図である。
【図４】本実施形態において、可視領域がスクロールする様子を示す図である。
【図５】本実施形態で用いられるスプレッドシートの構成例を示す図である。
【図６】スプレッドシートにおける可視域のサイズの例を示す図である。
【図７】図５のスプレッドシートの上に図６の可視域を重ね合わせた様子を示す図である。
【図８】図７に示すスプレッドシートにおける各ＤＩＶ要素の配置の例を示す図である。
【図９】スクロール後の新しい可視域と現在の第３層のＤＩＶ要素の位置の関係を示す図である。
【図１０】最終的な第１層の可視域、第２層、第３層のＤＩＶ要素の位置関係を示す図である。
【図１１】本実施形態のスクロール制御部による処理の流れを示すフローチャートである。
【図１２】行方向に関して可視領域に含まれる行数の最大値を求めるプログラムのJavaScript言語で書いた擬似コードを示す図である。
【図１３】本実施形態におけるセルの定義と表示要素との関係を模式的に表した図である。
【図１４】連結セルを含むスプレッドシートの構成例を示す図である。
【図１５】図１４に示すスプレッドシートにおける各ＤＩＶ要素の配置の例を示す図である。
【図１６】図１５の状態から右に１列分スクロールした状態を示す図である。
【図１７】連結セルが存在する場合のスクロール制御部による処理の流れを示すフローチャートである。
【符号の説明】
【００７３】
１００…アプリケーション実行システム、１１０…オペレーティング・システム（ＯＳ）、１２０…ウェブ・ブラウザ、１２１…スプレッドシート生成部、１２２…スクロール制御部、２００…ディスプレイ装置
【図１】
0005039903.tif 000002
【図２】
0005039903.tif 000003
【図３】
0005039903.tif 000004
【図４】
0005039903.tif 000005
【図５】
0005039903.tif 000006
【図６】
0005039903.tif 000007
【図７】
0005039903.tif 000008
【図８】
0005039903.tif 000009
【図９】
0005039903.tif 000010
【図１０】
0005039903.tif 000011
【図１１】
0005039903.tif 000012
【図１２】
0005039903.tif 000013
【図１３】
0005039903.tif 000014
【図１４】
0005039903.tif 000015
【図１５】
0005039903.tif 000016
【図１６】
0005039903.tif 000017
【図１７】
0005039903.tif 000018