(57)【要約】【課題】  分割データの処理結果が影響し合う場合に、各分割データの処理結果の繋がりが悪くならないように分割データを処理する為に必要な分割データや、前記処理をやりやすくするようなデータを生成することを目的とする。【解決手段】  分割データを単独で処理しても分割データの意味する内容が損なわれない処理結果が得られ、かつ、分割データのデータサイズが指定最大データサイズを超えない、という条件を満たす分割境界を求め、またこれらの条件を満たしつつ、分割境界の前の分割データの処理結果が、分割境界の後の分割データの処理結果に影響を与えない分割境界が存在するのならば、その分割境界を優先して求め、分割境界データや分割データ、分割データ単体では本来意図した処理結果を得るのに足りない情報、あるいは分割データの処理結果の間の影響に関する情報を生成する。【選択図】  図１
2005182517.tif 000002
【特許請求の範囲】
【請求項１】
単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成する場合に、その部分データのデータサイズが、予め定めた標準データサイズ以下であるかを判断する部分データサイズ判断ステップと、
その生成される部分データの処理結果に、上記分割境界における分割による所定の影響が表れるか否かを判断する影響判断ステップと、
データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界を、標準内非依存分割境界として抽出する標準内非依存境界抽出ステップと、
を備えたことを特徴とするデータ生成方法。
【請求項２】
上記標準内非依存分割境界が存在しない場合に、予め定めた最大データサイズ以下で、かつ、分割の影響が表れない分割境界を、標準外非依存分割境界として抽出する標準外非依存境界抽出ステップをさらに備えたことを特徴とする請求項１に記載のデータ生成方法。
【請求項３】
求まった標準内非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準内非依存分割境界を抽出する第１の分割境界抽出ステップをさらに備えたことを特徴とする請求項１に記載のデータ生成方法。
【請求項４】
求まった標準外非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準外非依存分割境界を抽出する第２の分割境界抽出ステップをさらに備えたことを特徴とする請求項２に記載のデータ生成方法。
【請求項５】
上記標準内非依存分割境界も上記標準外非依存分割境界も存在しない場合に、上記最大データサイズを超えないデータ位置の分割境界を抽出する第３の分割境界抽出ステップをさらに備えたことを特徴とする請求項２に記載のデータ生成方法。
【請求項６】
抽出された分割境界で上記電子データを分割して、分割データを生成する分割データ生成ステップと、
分割データを部分データとするには足りない情報である処理補助データを、着目した分割データとそれ以外の分割データとから生成する処理補助データ生成ステップと、
をさらに有することを特徴とする請求項２ないし５のいずれか１項に記載のデータ生成方法。
【請求項７】
部分データの処理結果間に依存関係があることを示す情報である依存関係データを生成する依存関係データ生成ステップ
を有することを特徴とする請求項１に記載のデータ生成方法。
【請求項８】
依存関係データ生成ステップにおいて、依存関係データを生成する対象となる部分データを、各部分データの直前あるいは直後あるいは両方の部分データとすることを特徴とする請求項７に記載のデータ生成方法。
【請求項９】
単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成する場合に、その部分データのデータサイズが、予め定めた標準データサイズ以下であるかを判断する部分データサイズ判断手段と、
その生成される部分データの処理結果に、上記分割境界における分割による所定の影響が表れるか否かを判断する影響判断手段と、
データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界を、標準内非依存分割境界として優先的に抽出する標準内非依存境界抽出手段と、
を備えたことを特徴とするデータ生成装置。
【請求項１０】
請求項１から請求項８のいずれか１項に記載のデータ生成方法が備える各ステップを、コンピュータに実行させるためのデータ生成プログラム。
【請求項１１】
請求項９に記載のデータ生成装置が備える各手段として、コンピュータを機能させるためのデータ生成プログラム。
【請求項１２】
請求項１０または請求項１１に記載のデータ生成プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速、省リソースで処理できるという部分データの処理の利点をできるだけ損なわず、また、部分データの処理結果が影響し合う場合に各部分データの処理結果の繋がりが悪くならないように部分データを扱う、という処理に関して、前記処理を行うのに必要な部分データや、前記処理をやりやすくするようなデータを生成するデータ生成方法、およびデータ生成装置、およびデータ生成プログラム、およびデータ生成プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
大きな電子データを、高速に処理したり、あるいはメモリなどの処理リソースが少ない動作環境で処理したりする為に、当面の処理に必要な一部のデータだけを読み書きして、利用することは従来から行われてきている。
【０００３】
しかし、電子データから単に一部のデータを読み込んで処理するだけなら簡単だが、読み込みたいデータが、前後のデータと関連性を持つ場合は、読み込みたいデータだけを読むだけではうまく処理できない。
【０００４】
前後のデータと関連性をもつデータとして、例えば圧縮されたデータや暗号化されたデータなどがある。例えば、一般に動画像圧縮では、フレーム画像間の差分情報だけを記録することでデータ圧縮している。すなわち、記録されるデータとしては、まず、基準となるフレーム画像（通常は最初のフレーム画像）のデータがあり、その後は各フレーム画像の情報として、前のフレーム画像との差分情報のデータが、残りのフレーム画像数分だけ繰り返されることになる。
【０００５】
従って、特定のフレーム画像を展開（再生）する際、その特定のフレーム画像のデータである、前のフレーム画像との差分情報だけを入手しても、意味が損なわれないフレーム画像を展開することはできない。意味が損なわれないフレーム画像を展開するには、最初の基準フレーム画像を最初の展開画像とし、展開画像に次のフレーム画像の差分情報を付加して新たな展開画像とする、という処理を、特定のフレーム画像まで繰り返し行う必要がある。
【０００６】
これに対して、例えば、ＭＰＥＧ（ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）形式の動画像圧縮データは、圧縮する前の一連のフレーム画像を複数のフレーム画像群（ＧＯＰ：ｇｒｏｕｐ  ｏｆ  ｐｉｃｔｕｒｅ）に分割し、ＧＯＰ毎に独立して圧縮して、記録する。すなわち、基準フレーム画像がＧＯＰ毎に存在することになる。再生時に特定の画像フレームを展開したい時は、最初の画像フレームから順次展開する必要はなく、特定の画像フレームの属するＧＯＰだけを展開すればよい。これによって、素早く、特定の画像フレームを再生することができる。
【０００７】
また、「表示設定によって表示レイアウトが変わる文書データ」としては、例えば、ＷＷＷ（ｗｏｒｌｄ  ｗｉｄｅ  ｗｅｂ）ブラウザに表示されるＨＴＭＬ（ｈｙｐｅｒ  ｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）データがある。
【０００８】
この場合、文字の大きさを変えたり、表示レイアウトを表示するウィンドウの幅を変えたりすることで、行の折り返し位置なども変わり、表示レイアウトが変更され、見た目が変わる。
【特許文献１】特開平  ７−  ９５３８８号公報（１９９５年４月７日公開）
【特許文献２】特開平１０−２８３３５０号公報（１９９８年１０月２３日公開）
【特許文献３】特開平１１−３４１４３４号公報（１９９９年１２月１０日公開）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、これら従来技術では、大きく３つの問題が出てくる。
【００１０】
上述したように、ＭＰＥＧデータのＧＯＰなどは、「電子データが複数に分割されたデータであり、単体で処理可能なデータ」（以降、説明の為、「ブロックデータ」あるいは「部分データ」と呼ぶ）であるが、電子データによっては、（１）うまくブロックデータに分割することができない問題や、（２）ブロックデータに分割はできるが、処理結果が影響し合い（処理結果に分割の影響が表れ）、各ブロックデータの処理結果の繋がりが悪くなる問題や、（３）ブロックデータに分割できるが、分割の仕方によっては、高速、省メモリという利点を減じるようなブロックデータサイズになってしまうことがある問題や、（４）処理結果が影響し合わないようにするとブロックデータが大きくなってしまう問題がある。
【００１１】
（１）の問題に関しては、例えば、ＨＴＭＬデータが当てはまる。ＨＴＭＬデータは、文字列を開始タグと終了タグで挟み、開始タグと終了タグの組を入れ子にすることで階層構造を作ることができるが、開始タグと終了タグの間で単純に分割してしまうと、それぞれの分割データは、単体では分割データの意味する内容が損なわれずに処理できなくなってしまう。
【００１２】
図４はこれを説明する図で、５行目に文字の大きさを変える開始タグ（「＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞」）があり、これ以降、１６行目の終了タグ（「＜／ｆｏｎｔ＞」）まで、文字を指定の大きさに変えるように指示されている。このＨＴＭＬデータを、１行目から８行目までの前半部分と、９行目から１６行目までの後半部分の２つの分割データに分割したとする。
【００１３】
すると、例えば後半部分の分割データを処理しようとすると、５行目の文字の大きさを変える開始タグは読み込まれないので、文字の大きさを指定の大きさに変えることができなくなってしまう。すなわち、後半部分の分割データだけでは、分割を原因とする誤りが含まれていることになり、分割データ単体では分割データの意味する内容（電子データが本来意図していた内容）を損なわずに処理することができなくなってしまう。
【００１４】
（２）の問題に関しては、例えば、プレーンテキストデータが当てはまる。プレーンテキストデータは、タグなどの階層構造は無いので、ブロックデータを単体で処理しても、ブロックデータの意味する内容が損なわれないが、各ブロックデータの処理結果を並べた場合に、処理結果の繋がりが悪くなる、すなわち本来意図していない誤った繋がりが表れるという問題が出てくる。
【００１５】
これらの問題を説明するために、まず、図４の電子データ全体をある表示手段に表示させた例を図５に示す。表示手段の幅に応じて、行が折り返されている。
【００１６】
このような表示状態を意図した図４の電子データの一部を、９行目の「ｔｈｒｏｕｇｈ」から１２行目の「ｂａｓｅｄ  」までの部分のブロックデータと、１２行目の「ｏｎ」から１５行目の「＜／Ｐ＞」までの部分のブロックデータの２つに分割したとする。
【００１７】
この場合、前のブロックデータをある表示手段に表示させた例が図４１であり、後のブロックデータをある表示手段に表示させた例が図１７である（後の説明の為、他のデータが表示されていたり、表示枠が少しずらしてあるが、ここでは無視する）。どちらも、単体で見た場合、表示におかしな所はない。
【００１８】
ところが、図４１、図１７の表示レイアウトを続けて表示させてみると、図１９に示すように、本来意図していた表示状態が変質することがわかる（図１９では、後の説明の為、他のデータが表示されていたり、表示枠が少しずらしてあったり、はみ出てレイアウトしてある部分があるが、ここでは無視する）。つまり、図１９では、図４１、図１７の表示レイアウトの繋がり部分で、改行されているように表示されており、図５と比べて、明らかにブロックデータの意味する内容（電子データが本来意図していた内容）が損なわれた表示結果となっている。
【００１９】
（３）、（４）の問題に関しては、そもそもブロックデータは、電子データ全体を処理せずに済む所が利点なのに、分割の影響が出ないようにするためにブロックデータ自体が大きくなってしまっては、この利点が薄まってしまう。また、ブロックデータサイズが小さすぎても、ファイル読み込みなどの処理が細切れになってしまい、トータルの処理速度が遅くなったり（ファイル読み込みなどはまとめて一度に行った方が一般に速い）、ブロックデータの管理に必要なメモリなどが多くなってしまうので、同様に、利点が薄まってしまう。
【００２０】
そこで、できるだけ最適なサイズのブロックデータを処理するようにし、また、ブロックデータの処理結果が影響し合う、あるいは処理結果に分割の影響が表れる場合に、各ブロックデータの処理結果の繋がりが悪くならないようにブロックデータを処理する方法を取ることで、これらの問題を解決できるようになる。
【００２１】
本発明の目的は、上記の処理を行うのに必要なブロックデータや、上記の処理をやりやすくするような補助データを生成するデータ生成方法、およびデータ生成装置、およびデータ生成プログラム、およびデータ生成プログラムを記録した記録媒体を提供することである。
【課題を解決するための手段】
【００２２】
本発明に係るデータ生成方法は、上記の課題を解決するために、単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成する場合に、その部分データのデータサイズが、予め定めた標準データサイズ以下であるかを判断する部分データサイズ判断ステップと、その生成される部分データの処理結果に、上記分割境界における分割による所定の影響が表れるか否かを判断する影響判断ステップと、データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界を、標準内非依存分割境界として抽出する標準内非依存境界抽出ステップと、を有することを特徴とする。
【００２３】
また、本発明に係るデータ生成方法は、上記の課題を解決するために、上記標準内非依存分割境界が存在しない場合に、予め定めた最大データサイズ以下で、かつ、分割の影響が表れない分割境界を、標準外非依存分割境界として抽出する標準外非依存境界抽出ステップをさらに備えたことを特徴とする。
【００２４】
また、本発明に係るデータ生成方法は、上記の課題を解決するために、求まった標準内非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準内非依存分割境界を抽出する第１の分割境界抽出ステップをさらに備えたことを特徴とする。
【００２５】
また、本発明に係るデータ生成方法は、上記の課題を解決するために、求まった標準外非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準外非依存分割境界を抽出する第２の分割境界抽出ステップをさらに備えたことを特徴とする。
【００２６】
本発明に係るデータ生成方法は、上記の課題を解決するために、上記標準内非依存分割境界も上記標準外非依存分割境界も存在しない場合に、上記最大データサイズを超えないデータ位置の分割境界を抽出する第３の分割境界抽出ステップをさらに備えたことを特徴とする。
【００２７】
本発明に係るデータ生成方法は、上記の課題を解決するために、抽出された分割境界で上記電子データを分割して、分割データを生成する分割データ生成ステップと、分割データを部分データとするには足りない情報である処理補助データを、着目した分割データとそれ以外の分割データとから生成する処理補助データ生成ステップと、をさらに有することを特徴とする。
【００２８】
本発明に係るデータ生成方法は、上記の課題を解決するために、部分データの処理結果間に依存関係があることを示す情報である依存関係データを生成する依存関係データ生成ステップを有することを特徴とする。
【００２９】
本発明に係るデータ生成方法は、上記の課題を解決するために、依存関係データ生成ステップにおいて、依存関係データを生成する対象となる部分データを、各部分データの直前あるいは直後あるいは両方の部分データとすることを特徴とする。
【００３０】
本発明に係るデータ生成方法は、上記の課題を解決するために、依存関係データ生成ステップにおいて、依存関係の情報として、部分データの処理結果が依存する最前あるいは最後あるいは両方の部分データとすることを特徴とする。
【００３１】
本発明に係るデータ生成装置は、上記の課題を解決するために、単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成する場合に、その部分データのデータサイズが、予め定めた標準データサイズ以下であるかを判断する部分データサイズ判断手段と、その生成される部分データの処理結果に、上記分割境界における分割による所定の影響が表れるか否かを判断する影響判断手段と、データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界を、標準内非依存分割境界として優先的に抽出する標準内非依存境界抽出手段と、を備えたことを特徴とする。
【００３２】
本発明に係るデータ生成プログラムは、上記の課題を解決するために、上記データ生成方法が備える各ステップをコンピュータに実行させることを特徴とする。
【００３３】
本発明に係るデータ生成プログラムは、上記の課題を解決するために、上記データ生成装置が備える各手段として、コンピュータを機能させることを特徴とする。
【００３４】
本発明に係る記録媒体は、上記の課題を解決するために、上記データ生成プログラムを記録したことを特徴とする。
【発明の効果】
【００３５】
本発明に係るデータ生成方法は、単独で処理したときの処理結果自体には誤りが無い部分データのデータサイズが標準データサイズ以下であり、かつ、所定の影響が表れない分割境界を、標準内非依存分割境界として抽出する標準内非依存境界抽出ステップを備えたことを特徴とする。
【００３６】
以降、説明の為、電子データを「分割境界」で単に分割したデータを「分割データ」と呼ぶことにする。
【００３７】
分割データには順番があるとし、相対的に「前の分割データ」、「次の分割データ」という言い方をする。この順番は、各分割データを、分割の影響も考慮して順に処理した処理結果が、電子データ全体の処理結果に一致する時の分割データの処理順である。分割データの電子データ中の位置の順番に相当することが多い。
【００３８】
なお、電子データを分割したもの全てを分割データと呼ぶ訳ではない。ここで主に対象としている分割データは、処理結果を直接生成する素材となるデータであり、例えば、文書データの電子データの場合、テキストデータなどが対象となる。従って、電子データ中のそれ以外の部分、例えば、ヘッダ情報部分などは、処理結果を直接生成する素材とは言いがたいので、分割データの対象とならない場合もある。
【００３９】
「分割境界」とは、電子データを２組以上の分割データに分割する境界である。分割境界は、電子データ中の位置で表現でき、例えば、バイト単位で表現する場合、何バイト目の前、あるいは、何バイト目と何バイト目の間、あるいは何バイト目の後、という形となる。位置を表す単位系としては、他にも文字数、ビット数、タグ数やそれらの組み合わせなどがある。
【００４０】
「部分データ」とは、求めた「分割境界」を使って電子データから生成されるデータで、電子データの一部分のデータを含んでおり、部分データ単独で処理したときに、含まれる電子データ部分の処理結果自体には誤りが無いデータのことである。
【００４１】
部分データと分割データとの関係は、２通り有る。１つ目は、部分データが、分割境界を使って電子データから生成された分割データの中から選別された分割データに、等しい場合である。その選別は、分割データの処理結果自体に誤りの表れない適切な分割境界を選択することによってなされる。２つ目は、部分データと分割データとがイコールではない場合であり、分割データの処理結果自体に誤りが無い状態を作るための補助的な情報（後述の処理補助データ）が組み合わせられた分割データの場合である。
【００４２】
なお、上述した適切な分割境界を選択する処理が、本発明の影響判断ステップおよび標準内非依存境界抽出ステップにおける処理である。
【００４３】
部分データに含まれる電子データ部分は、電子データ中の連続した一塊のデータ部分を構成しているとは限らず、飛び飛びの場合も本発明に含まれるが、通常、連続した一塊のデータ部分の方が扱い易い。なお、部分データ中の分割データが飛び飛びでない場合、分割データ同様、順番を持ち、「前の部分データ」、「次の部分データ」という言い方をする。
【００４４】
なお、部分データは、必ずしも電子データと独立した形（例えば別ファイルなど）で存在する必要はない。電子データと分割境界の情報の組として保持していてもよい。部分データが必要な時に、電子データと分割境界の情報の組から動的に生成してもよい。例えば、分割境界データから分割境界の位置情報を得て、電子データから、その部分データの範囲に相当する部分のデータを読み込むなどの方法で、部分データを動的に生成することができる。
【００４５】
これにより、分割データを別途ファイルなどとして生成する必要がなく、電子データをそのままおいておけるという利点がある。
【００４６】
この利点が生かされる場合として、例えば、電子データは、暗号化や著作権などの問題で、ファイルを変更／追加したり、分割データに分けてファイル化したりといったことができない場合がある。また、電子データが例えばＣＤ−ＲＯＭなどの書き込み不可のメディア上に記録されている場合がある。そのような場合でも、電子データをそのままおいておき、補助ファイルとして、分割境界データのファイルなどを別途生成することで、対応できる。
【００４７】
「単独で処理したときの処理結果自体には誤りが無い」の定義は、電子データの種類によって異なる。基本的には、部分データを単独で処理した時の処理結果が、電子データが意味する内容（電子データが本来意図した内容）の処理結果になっているかどうかが判断基準となる。
【００４８】
例えば、ＨＴＭＬデータの場合、処理結果である表示結果は、ＷＷＷブラウザの表示設定などによって異なる。この場合、改行タグによって改行がなされているかどうか、フォントタグによる文字サイズや文字色などの指定が反映されているか、など、タグによる命令結果に沿った表示結果が生成されているかどうかが判断基準の一つとなる。
【００４９】
より具体的には、文字サイズの表示設定が変わって全体の行数が変わっても、改行タグ位置で改行がされていれば、この場合は「処理結果自体には誤りが無い」と判断される。また、フォントタグの開始タグと終了タグの間のデータだけを処理した場合、フォントタグの指定が反映されないので、この場合は「処理結果自体には誤りが有る」と判断される。
【００５０】
なお、プレーンテキストの場合は、改行コードの文字によって、改行が指示される。
【００５１】
「影響」とは、ここでは、ある部分データを処理する際に、他の部分データの処理結果を参照するかどうかで、部分データの処理結果が変わることを言う。前の部分データの処理結果に、次の部分データの処理結果を追加する場合などに変わりやすい。影響は、部分データの区切り方や部分データの内容などによって、発生したり、発生しなかったりする。また同じ部分データであっても、処理の仕方や処理設定などによっても、発生したり、発生しなかったりする。
【００５２】
処理結果が影響を受ける例としては、文書データの部分データを使って、文字を行に配置する処理を行う場合、前の部分データが最後に配置した文字（説明の為、「文字Ａ」と呼ぶ）の行に、次の部分データが最初に配置する文字（説明の為、「文字Ｂ」と呼ぶ）を追加して配置する場合などがある。追加して配置する場合、「文字Ａ」の隣に「文字Ｂ」を配置するので、前の部分データの処理結果によって、次の部分データの処理結果が変わってくる可能性がある。但し、参照しても、結果が変わらないこともある。例えば、「文字Ａ」が改行コードだとすると、「文字Ｂ」は次の行の行頭に必ず配置される。この場合、前の部分データの処理結果がどうであろうと、「文字Ｂ」の配置位置は常に変わらない。すなわち、この場合には、「文字Ｂ」を含む部分データの処理結果は、分割の影響を受けない。
【００５３】
処理結果が影響を受けるのは、隣接する前後の部分データの処理結果だけとは限らず、離れた部分データ間でも影響する場合もある。例えば、ＨＴＭＬデータの分割データを使って表示レイアウトを生成する処理を行う場合、画像に対し文字の回り込みがある場合に起こる場合がある。画像に回り込んで文字などをレイアウトする場合、画像の分、レイアウトできる範囲が限定される。このレイアウト範囲の限定が影響にあたる。この時、画像に回り込んでレイアウトされる文字などが、複数の部分データから構成されていれば、画像に回り込んでレイアウトされる文字を含む部分データが、回り込み画像が含まれる部分データとは離れた部分データになる場合も出てくるので、その場合、離れた部分データ間で影響が発生していることになる。
【００５４】
また、処理結果が影響を受ける例として、内部で使用する値（変数の値）が、各部分データの処理で変わる場合などもある。例えば、最初の部分データの処理で、変数Ｃの値を１と設定し、２番目と３番目の部分データで、変数Ｃの値を２倍に設定するとする。１、２、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は２で、処理後は４となるが、１、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は１で、処理後は２となる。
【００５５】
なお、影響が有ろうと無かろうと、各部分データの単独の処理結果は常に意味する内容が損なわれない。但し、各部分データの処理結果を合わせた場合は、全体として部分データの意味する内容が損なわれる（すなわち、影響が表れる）ことはありえる。例えば先の「文字Ａ」、「文字Ｂ」の例で言えば、次の部分データを単独で処理すれば、文字Ｂは最初の文字なので行頭に配置される。文字Ｂが行頭に配置された処理結果を単独で見る場合、処理結果として部分データの意味する内容が損なわれていない。
【００５６】
しかし、「文字Ａ」を含む前の部分データの処理結果と合わせて見る場合、すなわち、前の部分データの処理結果の行と、次の部分データの処理結果の行とを、単純に並べて表示させる場合、上記２つの部分データ同士のつながり部分において、部分データの意味する内容が損なわれている場合が出てくる。
【００５７】
例えば「文字Ａ」が改行コードで無い場合、「文字Ａ」の次の文字、すなわち「文字Ｂ」が、突然、次の行の行頭に配置されていることになり、改行がされているように見えてしまう。すなわち、文書データとしてそこに改行コードの文字は存在しないにもかかわらず、あたかも改行コードの文字が有るかのような処理結果が得られてしまう。
【００５８】
したがって、部分データの処理結果を合わせたときに、電子データを分割したことの影響が、実際には存在していない擬似データが有るかのような誤った処理結果として発現するのだから、合わせた処理結果は部分データの意味する内容が損なわれていることになる。
【００５９】
なお一般に、前の順番の部分データの処理結果から、後の順番の部分データの処理結果に影響が及ぶ場合ことが多い。
【００６０】
「標準データサイズ」は、予め決まっている値、あるいはユーザーなどに入力してもらうことで得られる。あるいは所定の計算方法で求めても良い。通常、標準データサイズは、部分データとして最も望ましいデータサイズにしておく。これは処理する装置の処理能力や処理の目的などから、ユーザーなどが決めることにするとよい。
【００６１】
本発明の作用の概要を説明すると、部分データサイズ判断ステップで、ある分割境界によって生成される部分データのデータサイズを取得し、そのデータサイズが予め定めた標準データサイズ以下であるかを判断する。
【００６２】
影響判断ステップでは、上記分割境界によって生成される部分データの処理結果に、上記分割境界における分割による各種影響の中でも、予め特定しておいた所定の影響が表れるか否かを判断する。所定の影響の種類は１通りとは限らず、複数通りでもよい。また、部分データサイズ判断ステップと影響判断ステップとの処理順序は、どちらが先でもよい。
【００６３】
標準内非依存境界抽出ステップでは、上記両ステップの結果を使って、データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界が見つかれば、その分割境界を標準内非依存分割境界として抽出する。
【００６４】
抽出した標準内非依存分割境界を用いて電子データを分割することにより、予め定めた標準データサイズ以下で、かつ、処理結果に所定の影響が表れることのない部分データを取得することができる。
【００６５】
以上の作用から導き出される効果について、部分データの利用例をあげて説明する。
【００６６】
電子データを利用する処理装置で、部分データを利用するようにする。電子データを利用する場合は、電子データ全体を読み込んで処理するが、部分データを利用する場合は、必要な部分データだけを読み込んで処理する。
【００６７】
部分データは、単独で処理しても処理結果に誤りが無いように生成してあるので、単独の処理結果自体は問題ない。
【００６８】
但し、処理結果の間に影響がある部分データについて、その処理結果を同時に利用する場合は、影響を考慮して処理を行う必要がある。なぜなら、それぞれの部分データを単独で処理して得られる処理結果を合わせただけでは、影響が考慮されていないので、合わせた処理結果は正しくないことがあるからである。
【００６９】
そこで、処理結果の間に影響がある複数の部分データについては、その複数の部分データを一続きに処理する。これにより、影響のある処理結果同士を同時に利用しても、正しい処理結果が得られるようになる。
【００７０】
上記のような利用を行うことにより導き出される効果として、まず、部分データは、電子データ全体を処理するよりも、処理するデータ量が一般に少なくて済むので、高速で処理でき、かつ、メモリなどのリソースをあまり使わない省リソースの処理が可能となる効果がある。
【００７１】
しかし、部分データのデータサイズ自体が大きければ、高速、省リソースの効果も、電子データ全体を処理するよりもましではあるが、薄れてきてしまう。
【００７２】
本発明では、求められた標準内非依存分割境界によって生成される部分データが、標準データサイズを超えないデータサイズになっているので、部分データのデータサイズを抑えることができ、高速、省リソースの効果が薄れることを防止する効果が出てくる。また、標準データサイズを理想的なデータサイズとするならば、部分データのデータサイズを理想的な値に抑えることができ、高速、省リソースの最も望ましい効果を得ることができる
なお、標準データサイズを、処理する装置の処理能力や処理の目的などから、ユーザーなどが決められるようにすることが好ましい。
【００７３】
また、電子データの処理結果の一部だけを得たい時、電子データの先頭から処理して、所望の部分の処理結果を得るには、処理時間がかかったり、リソースが大量に必要になったりすることがある。これに対し、部分データを使うことで、所望の部分がどの部分データに属するかさえ分かれば、その部分データだけを処理すればよいので、高速、省リソースで処理することができる効果が出てくる。
【００７４】
また、部分データのデータサイズを抑えることで、部分データの処理に必要な時間やリソースの最大値をある程度予想することができ、処理能力やリソースに限りのある機器でも、動作を保証し易くなることができる効果が出てくる。
【００７５】
また、影響がある部分データ同士を処理する際は、影響を考慮して処理する必要があり、時には既に得られている処理結果を処理しなおす必要もある。しかし、本発明のように、できるだけ処理結果に影響が表れないような分割境界を選ぶことで、影響を考慮して処理したり、再処理したりしないで済む部分データを増やすことができる効果が出てくる。
【００７６】
なお、分割境界の情報を、電子データとは別に記録しておくことによる利点として、先に説明した通り、電子データ自体を変更しないで済むという利点があるが、さらに、処理を柔軟にできるという利点も出てくる。すなわち、電子データ自体は変更せず、分割境界の情報を差し替えるだけで、分割の仕方を変更することができるので、部分データ全てを作成し直すより、情報の変更量を最小限にでき、目的に応じて分割の仕方を変更する、などといったことがやりやすくなる。
【００７７】
できるだけ標準データサイズ内で分割することにより、標準データサイズを超えないデータサイズの部分データが増えることになる。標準データサイズを、処理する装置の処理能力や処理の目的などから適当な値にしておけば、各部分データの処理時間や必要なリソースを、所望の範囲付近に揃えることができる効果が出てくる。
【００７８】
うまく標準データサイズ内で全て分割することができたならば、例えば、電子データの一部のデータを処理したい時、どの部分を選んでも、すなわちどの部分データを選んでも、処理結果が得られるまでの時間を保障することができるようになり、ユーザーの操作感が良くなる利点がある。
【００７９】
なお、電子データの処理結果の一部だけを利用するような用途が多いような電子データには、例えば、映画などの動画データや音楽などの音声データも含まれる。そして、動画データや音声データなどの例えば再生に関する設定（再生速度、音量、音質、色味、コントラスト、フィルタなど）を、部分部分で変化させるような用途を想定した場合、そのような設定に関するデータを部分データに含ませる、あるいは部分データと対応付ける形態では、ＨＴＭＬ文書のデータと同様に、部分データ間で分割の影響が起きる場合が出てくる。
【００８０】
このように、動画データや音声データのような電子データについても、本発明のデータ生成方法は、既に説明した効果を発揮する。
【００８１】
本発明に係るデータ生成方法は、上記の課題を解決するために、上記標準内非依存分割境界が存在しない場合に、予め定めた最大データサイズ以下で、かつ、分割の影響が表れない分割境界を、標準外非依存分割境界として抽出する標準外非依存境界抽出ステップをさらに備えたことを特徴とする。
【００８２】
上記の構成では、上記標準内非依存分割境界が存在しない場合に、部分データのデータサイズの条件を緩和する。すなわち、部分データのデータサイズに、標準データサイズより大きく最大データサイズ以下という条件を付ける。そのデータサイズの範囲内で、分割の影響が表れない分割境界を抽出する。
【００８３】
これにより、分割の影響が表れない適切な処理結果を得られる上に、部分データのデータサイズを許容範囲内に抑えることができ、高速、省リソースの効果が薄れることを防止できるという効果が出てくる。
【００８４】
なお、「最大データサイズ」は、標準データサイズ同様、予め決まっている値、あるいはユーザーなどに入力してもらう値、あるいは所定の計算方法によって得られる値などになる。通常、最大データサイズは、部分データとして最大限許容されるデータサイズにしておく。これは処理する装置の処理能力や処理の目的などから、ユーザーなどが決めるようにすることが好ましい。
【００８５】
部分データを生成する処理の概要は、先に標準内非依存境界抽出ステップを使う作用と同様、順に分割境界を求め、部分データを生成することを繰り返す。ただ、部分データを生成するのに使う分割境界を設定する処理が異なってくるので、その処理部分についてだけさらに説明する。
【００８６】
まず、標準内非依存境界抽出ステップで分割境界を求めてみる。
【００８７】
もし、標準内非依存境界抽出ステップで標準内非依存分割境界が求められた場合、その標準内非依存分割境界を部分データを生成するのに使う分割境界として設定する。もし複数の標準内非依存境界が求められたら、その中の一つを何らかの方法で選んで、次の分割境界として設定する。
【００８８】
もし、標準内非依存境界抽出ステップで分割境界を求められなかった場合、標準外非依存境界抽出ステップに移行し、部分データサイズ判断ステップと影響判断ステップの結果を使って、データサイズが最大データサイズ以下であり、かつ、上記所定の影響が表れない分割境界を求める。部分データサイズ判断ステップの処理は、「標準データサイズ」が「最大データサイズ」に変わる以外は、既に説明した処理と同様である。
【００８９】
もし標準外非依存境界抽出ステップで上記条件を満たす分割境界が見つかれば、その分割境界を標準外非依存分割境界として抽出し、部分データを生成するのに使う分割境界として設定する。
【００９０】
もし標準外非依存境界が一つも求められなかったら、新たな分割境界を求めるための他のステップへ移行すればよい。
【００９１】
以上の処理が、部分データを生成するのに使う分割境界を設定する処理である。
【００９２】
これにより、標準内非依存分割境界が抽出できない場合でも、標準外非依存分割境界があれば使うことで、各部分データの処理時間や必要なリソースを、可能ならば理想的な範囲内（標準データサイズ）に、それが無理なら、できるだけ許容できる範囲内（最大データサイズ）に抑えやすくなる効果が出てくる。部分データのデータサイズをできるだけ抑えることによる利点は、先に標準内非依存境界抽出ステップに関して説明した利点と同様である。
【００９３】
本発明に係るデータ生成方法は、上記の課題を解決するために、求まった標準内非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準内非依存分割境界を抽出する第１の分割境界抽出ステップをさらに備えたことを特徴とする。
【００９４】
本発明の作用の概要を説明すると、部分データを生成する処理の概要は、先に標準内非依存境界抽出ステップを使う作用で説明したのと同様、順に分割境界を求め、部分データを生成することを繰り返す。ただ、部分データを生成するのに使う分割境界を設定する処理が異なってくるので、その処理部分についてだけ説明する。
【００９５】
まず、標準内非依存境界抽出ステップで分割境界を求めてみる。これは既に説明した処理である。
【００９６】
もし、標準内非依存境界抽出ステップで標準内非依存分割境界が一つしか求められなかった場合、その標準内非依存分割境界を部分データを生成するのに使う分割境界として設定する。
【００９７】
もし複数の標準内非依存境界が求められたら、その中で標準データサイズに最も近くなるような標準内非依存境界を、第１の分割境界抽出ステップで抽出して、次の分割境界として設定する。
【００９８】
もし、標準内非依存境界抽出ステップで分割境界を求められなかった場合は、新たな分割境界を求めるための他のステップへ移行すればよい。
【００９９】
以上の処理が、部分データを生成するのに使う分割境界を設定する処理である。
【０１００】
これにより、標準内非依存分割境界で、できるだけ標準データサイズに近い部分データサイズで分割することができるので、標準データサイズ内で、小さなデータサイズの数が減る傾向になる。小さなデータサイズの数が減るということは、部分データの数が減るということである。電子データの一部のデータを部分データとして処理することで、省メモリ、高速に処理することはできるが、あまりに部分データの数が増えてしまうと、今度はそれを管理するのに必要なメモリや処理、補助情報などが増えてしまうので、利点を打ち消してしまう。部分データの数が増えすぎないように、電子データの中身や目的に応じて、標準データサイズを適当な値に設定してやることで、利点と欠点のバランスを利点が最大となるようにすることができる効果が出てくる。
【０１０１】
また、処理される部分データのサイズも標準データサイズ付近に揃えやすくなるので、例えば、電子データの一部のデータを処理したい時、どの部分を選んでも、すなわちどの部分データを選んでも、処理結果が得られるまでの時間が揃いやすくなる。部分データの処理時間にできるだけばらつきを持たせたくないような場合に効果が出てくる。
【０１０２】
本発明に係るデータ生成方法は、上記の課題を解決するために、求まった標準外非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準外非依存分割境界を抽出する第２の分割境界抽出ステップをさらに備えたことを特徴とする。
【０１０３】
上記の構成では、既に説明した第１の分割境界設定ステップにおける標準内非依存分割境界が標準外非依存分割境界に置き換わるだけのことなので、同様の作用効果を得ることができる。
【０１０４】
また、標準外非依存分割境界であっても、できるだけ標準データサイズに近い部分データサイズで分割することができるので、標準データサイズと最大データサイズの間のデータサイズで、大きなデータサイズの数が減る傾向になる。大きなデータサイズの数が減るということは、省メモリ、高速に処理する効果が増すということになる。
【０１０５】
本発明に係るデータ生成方法は、上記の課題を解決するために、上記標準内非依存分割境界も上記標準外非依存分割境界も存在しない場合に、上記最大データサイズを超えないデータ位置の分割境界を抽出する第３の分割境界抽出ステップをさらに備えたことを特徴とする。
【０１０６】
上記の構成によれば、元になる電子データには、標準内非依存分割境界も標準外非依存分割境界もどちらも存在しないということである。つまり、最大データサイズを超えないデータサイズを持ち、かつ、分割の影響も表れない部分データを生成できる分割境界は存在しないことになる。
【０１０７】
このような場合、データサイズの条件を最大データサイズをさらに大きくするように緩和するというのではなく、分割の影響が処理結果に表れることを許容する。
【０１０８】
その代わり、最大データサイズを超えないデータ位置の分割境界を抽出する。
【０１０９】
これにより、どのような場合でも、最大データサイズ内に部分データのデータサイズを抑えることができるようになる。部分データのデータサイズの上限が決まれば、部分データを処理するのに必要なメモリ、処理リソースの上限が決まるので、余分なメモリや処理リソースを用意する必要がないという利点が出てくる。
【０１１０】
同時に、処理時間の上限も決まるので、リアルタイム処理がしやすいという利点が出てくる。また、ユーザーの処理待ち時間を一定時間以内に抑えることができるという利点も出てくる。
【０１１１】
但し、第３の分割境界設定ステップにおいて、標準データサイズに最も近いデータ位置に、分割境界を設定するようにしてもよい。これにより、処理速度の高速化と省リソースの効果を最適化し、さらに各部分データの処理時間や必要なリソースの値を、所望の範囲付近に揃えることができるという効果を得ることができる。
【０１１２】
本発明に係るデータ生成方法は、上記の課題を解決するために、抽出された分割境界で上記電子データを分割して、分割データを生成する分割データ生成ステップと、分割データを部分データとするには足りない情報である処理補助データを、着目した分割データとそれ以外の分割データとから生成する処理補助データ生成ステップと、をさらに有することを特徴とする。
【０１１３】
「処理補助データ」とは、分割データを単独で処理して分割データの意味する内容が損なわれない処理結果を得るには、前記分割データに足りない情報である。
【０１１４】
例えば、前の分割データから効力を引き継ぐべき情報や、後の分割データで処理されるべき情報、あるいは複数の分割データの処理結果に共通して関係する特定データ（例えば、制御コード等）などである。
【０１１５】
一例として、電子データがＨＴＭＬデータの場合、前の分割データ中にある開始タグが存在し、その開始タグに対応する終了タグがその分割データ以降に存在する場合、その開始タグが処理補助データに当たる。
【０１１６】
つまり、前の分割データ中の開始タグの効力は、本来、後の分割データにも及ぶものであるが、分割の結果、後の分割データを単独で処理する際には、開始タグが読み込まれないため、その処理結果には開始タグの効力が表れないことになる。結局、分割によって、本来意図した処理結果にならない分割データが発生する。そこで、開始タグを後の分割データの処理補助データとして組み合わせることにより、後の分割データを単独で処理しても、本来の処理結果を得ることができる。
【０１１７】
処理補助データと分割データは、組として扱われるが、必ずしも一体のデータとして記録しておく必要はなく、分散して記録しておいても良い。例えば、処理補助データだけを集めたファイルなどという形で記録しておいても良いし、電子データの末尾などに処理補助データを追加しておいても良い。
【０１１８】
また、処理補助データと分割データは、予め作成しておくのが一般的だが、利用時に動的に生成することも可能である。
【０１１９】
但し、分割データと処理補助データの組それぞれが共通に必要とするデータが、電子データ中に存在する場合、必要とするデータを各分割データ（あるいは処理補助データ）に複製して分配してやれば、単独で分割データの意味する内容が損なわれない処理結果を得ることもできる。しかし、それでは各分割データ（あるいは処理補助データ）のデータサイズが大きくなってしまうので、分割データ（あるいは処理補助データ）以外の共有部分を使う場合も、「部分データで処理される」とみなすこととする。
【０１２０】
共通に必要とするデータとしては、例えば、電子データの種類やバージョン情報、著作権情報、暗号情報などの、いわゆるヘッダ情報などが例としてあげられる。
【０１２１】
本発明の作用の概要を説明すると、部分データを生成する処理の概要は、先に標準内非依存境界抽出ステップや標準外非依存境界抽出ステップを使う作用で説明したのと同様、順に分割境界を求め、部分データを生成することを繰り返す。部分データを分割データと処理補助データの組として生成するので、処理補助データ生成ステップでの処理補助データの生成処理部分についてだけ説明する。
【０１２２】
なお、分割データを一つ作る度に部分データを生成するのではなく、分割データを全て作ってから、部分データを生成する方法も可能である。どちらの方法が良いかは、電子データの種類や使う目的による。処理補助データを生成するのに、後の分割データも必要になる場合は、後者の方法の方が処理しやすい。
【０１２３】
ここでは、説明が分かりやすいように、ＨＴＭＬ形式の電子データの分割データに対して、処理補助データを生成するとする。ＨＴＭＬ形式のデータの場合、タグの適用範囲を開始タグと終了タグで示す。開始タグと終了タグは、一般に１対１対応である。
【０１２４】
ＨＴＭＬ形式のデータを分割境界で分割すると、開始タグと終了タグが別の分割データに分かれてしまう場合が考えられる。この場合、タグの適用範囲に含まれる分割データでありながら、開始タグあるいは終了タグあるいは両方が含まれない分割データが存在しえる。それらの分割データは、単独で処理した時の処理結果は、タグを正しく解釈できていないので、正しい処理結果ではなくなってしまう。従って、分割データ単独では、部分データとなりえない。
【０１２５】
そこで、処理補助データ生成ステップでは、部分データとして分割データに足りない開始タグや終了タグを、処理補助データとして生成する。
【０１２６】
部分データとして分割データに足りない開始タグや終了タグの抽出の方法としては、例えば、最初の分割データから順に分割データを見ていき、開始タグと終了タグの対応を取っていく。ある分割データ中で出てきた開始タグに対応する終了タグがその分割データ中に存在していなければ、その分割データには対応する終了タグが足りないことになる。そこで、対応する終了タグをその分割データの処理補助データに加える。
また、その次の分割データに関しては、開始タグが足りないことになるので、開始タグをその分割データの処理補助データに加える。
【０１２７】
開始タグを含む分割データと対応する終了タグを含む分割データの間に、一つ以上の分割データが存在する場合は、その間の分割データは、開始タグと終了タグの両方が足りないことになるので、両方のタグを処理補助データに加える。
【０１２８】
なお、前の分割データから得られる処理補助データ（この例では開始タグ）と、後の分割データから得られる処理補助データ（この例では終了タグ）は、分けて記録しておいた方が、後で部分データとして処理する場合に都合が良い。
【０１２９】
以上の処理によって、処理補助データを生成することができる。
【０１３０】
部分データを処理する場合は、分割データと処理補助データを使って処理する。例えば、ＨＴＭＬデータの例の場合、最初にその分割データに足りない開始タグの処理補助データ、次に分割データ、最後にその分割データに足りない終了タグの処理補助データ、の順で読み込めば、部分データとして扱えることになる。このように、処理補助データを生成する際、前の分割データから得られる処理補助データ（この例では開始タグ）と、後の分割データから得られる処理補助データ（この例では終了タグ）を分けておくと、処理しやすいことがある。
【０１３１】
これによって、部分データを直接作成せず、分割データと処理補助データの組として扱うことができるので、単純に分割した分割データだけでは部分データを生成できないような電子データであっても、処理補助データを利用することで、部分データとして扱うことができる利点がある。
【０１３２】
なお、処理補助データを電子データとは別に記録しておくことによる利点は、分割データを分割境界の情報として、電子データとは別に記録しておくことによる利点と同様である。
【０１３３】
本発明に係るデータ生成方法は、上記の課題を解決するために、部分データの処理結果間に依存関係があることを示す情報である依存関係データを生成する依存関係データ生成ステップを有することを特徴とする。
【０１３４】
「依存関係」とは、どの部分データ間で処理結果に影響があるかということを示す関係である。
【０１３５】
「依存関係データ」は、処理補助データ同様、電子データに付け加えた形にしても良いし、電子データとは独立したファイルなどの形式で記録しておいても良い。
【０１３６】
本発明の作用の概要を説明すると、まず、部分データの処理結果間で影響があるかどうかは、分割境界が標準内非依存分割境界または標準外非依存分割境界ならば、その分割境界の前後の分割境界には影響がないと判断し、標準内非依存分割境界でも標準外非依存分割境界でもないならば、その分割境界の前後の分割境界には影響があると判断する。
【０１３７】
分割境界が、標準内非依存分割境界でも標準外非依存分割境界でもない時、影響があるかどうかは、電子データの種類や分割境界の位置を見て、依存関係データ生成ステップで個々に判断するしかない。例えば、ＨＴＭＬデータの場合、ｂｒタグやｐタグなど、改行を意味するタグの前後を分割境界とする場合は、影響がないと判断できる。単語の途中などの位置を分割境界とする場合は、影響があると判断できる。
【０１３８】
この判断より、どの部分データと部分データの間に影響があるかどうかが求められるので、この情報を依存関係データとして依存関係データ生成ステップで生成すればよい。
【０１３９】
生成された依存関係データは、部分データを処理する時に利用される。各部分データの処理結果を単独で利用する場合は、特に依存関係データを利用しなくても良いが、各部分データの処理結果を複数まとめて利用する場合は、依存関係データを利用して、依存関係を考慮して処理する必要がある。
【０１４０】
具体的には、影響を与える方の部分データを先に処理し、その後に影響を受けるほうの部分データを影響を考慮して処理する。
【０１４１】
例えば、先のＨＴＭＬデータの例で言えば、単語の途中などが分割境界となっている場合、前の部分データを先に処理し、前の部分データのレイアウトデータが得られる。レイアウトデータは、単語の前半までとなる。次に、後の部分データを、前の部分データのレイアウトデータに追加する形で処理する。「影響を考慮した」状態とは、この場合、「追加する」ということであり、既存のレイアウトデータの最後の文字に続けて、レイアウトすることである。前の部分データの最後のレイアウトデータである単語の前半部分と、後の部分データの最初のレイアウトデータである単語の後半部分が繋がり、一つの単語として連続しているようなレイアウトデータとなる。
【０１４２】
もし、後の部分データを「影響を考慮しない」状態で生成したら、後の部分データの最初のレイアウトデータである単語の後半部分は、行の先頭にレイアウトしてしまう。後の部分データの処理結果だけを単独で見る分には問題ないが、前の部分データの処理結果と合わせてみると、単語の途中で改行が入っているかのように見える。元々の電子データでは、改行のタグなどは入っていないので、これは全体としては誤った処理結果となってしまう。
【０１４３】
このように、影響があるかどうかの情報を使って複数の部分データを処理することで、処理結果自体には誤りが無いようにすることができる効果が出てくる。見方を変えれば、依存関係データを用いることにより、複数の部分データを一つの大きな部分データとして扱うことができるとも言える。
【０１４４】
なお、影響があるかどうかの情報を、部分データの内容を見て判断することも不可能ではないが、依存関係データとしてまとまっていれば、影響があるかどうかの情報を事前に素早く得ることができる効果が出てくる。
【０１４５】
なお、本発明として記載した構成を、前記発明として記載した各構成と、必要に応じて組み合わせることができる。
【０１４６】
本発明に係るデータ生成方法は、上記の課題を解決するために、依存関係データ生成ステップにおいて、依存関係データを生成する対象となる部分データを、各部分データの直前あるいは直後あるいは両方の部分データとすることを特徴とする。
【０１４７】
上述したように、影響を考慮して部分データを処理する時は、影響を与える方の部分データを先に処理し、その後に影響を受けるほうの部分データを影響を考慮して処理する。
【０１４８】
その際、影響を与える方の部分データをどの範囲まで探すのかによって、処理が変わってくる。直前あるいは直後の部分データだけを探す対象とする場合は、着目している部分データとその直前あるいは直後あるいは両方の部分データとの間の影響から依存関係データを生成するようにすれば十分である。
【０１４９】
分割境界を求める際に直接得られる情報は、隣りあう２つの部分データ間で影響があるかどうかなので、直前あるいは直後あるいは両方の部分データに関する依存関係データは、分割境界を求める際に、生成しやすいという効果がある。
【０１５０】
なお、本発明に係るデータ生成方法は、依存関係データ生成ステップにおいて、部分データの処理結果が依存する最前あるいは最後あるいは両方の部分データを特定する情報を、上記依存関係データとすることを特徴としてもよい。
【０１５１】
上述したように、部分データを影響を考慮して処理する時は、影響を与える方の部分データを先に処理し、その後に影響を受けるほうの部分データを影響を考慮して処理する。
【０１５２】
その際、影響を与える方の部分データをどの範囲まで探すのかによって、処理が変わってくる。部分データの処理結果が依存する最前あるいは最後あるいは両方の部分データを探す対象とする場合は、多少の処理が必要となる。
【０１５３】
本発明の作用の概要を説明すると、分割境界を求める時に得られる情報は、隣りあう２つの部分データ間で影響があるかどうかなので、依存関係データ生成ステップは、ある部分データが影響を受ける最前あるいは最後のデータは、影響を受ける部分データを順方向あるいは逆方向に順に辿っていき、影響を受ける部分データが無くなるまで辿る処理を行う。最後にたどり着いた影響を受ける部分データが、ある部分データに対して最前あるいは最後の部分データである。最前か最後かは、辿る方向（順方向／逆方向）で決まる。
【０１５４】
求まった最前あるいは最後あるいは両方の部分データを特定する情報を、依存関係データ生成ステップが依存関係データとして生成する。
【０１５５】
着目した部分データの処理結果が依存する最前、最後または両方の部分データが判ると、その最前の部分データから着目した部分データまでをひとまとめに処理すること、あるいは着目した部分データから最後の部分データまでをひとまとめに処理すること、あるいは最前の部分データから最後の部分データまでをひとまとめに処理することが可能になる。この結果、電子データ全体を処理する場合と同じ処理結果が常に得られる効果が出てくる。
【０１５６】
これに対し、最前あるいは最後ではなく、その途中から処理結果を生成すると、処理結果自体は部分データの意味する内容が損なわれないが、最前あるいは最後からの影響を引き継がない分、電子データ全体を処理する場合と、処理結果が異なる。その場合、途中より上のデータの処理結果を、途中から下の処理結果とそのまま一緒にしてしまうと、途中部分の接続がおかしくなってしまう。それを防ぐためには、途中から下の処理結果を再度作り直さないといけないという欠点がある。
【０１５７】
本発明で生成される依存関係データを使えば、電子データ全体を処理する場合と同じ処理結果が常に得られるので、一度作った処理結果を作り直す必要がないという利点がある。
【０１５８】
なお、影響を受ける最前あるいは最後あるいは両方の部分データの情報を持つ依存関係データを用いなくても、影響を受ける最前あるいは最後あるいは両方の部分データを得ることは可能である。
【０１５９】
例えば、各部分データについて、直前あるいは直後あるいは両方の部分データから影響を受けるかどうかの情報があれば、本発明で影響を受ける最前あるいは最後の部分データの依存関係データを生成する処理と同様の処理を行うことにより、求めることはできる。
【０１６０】
しかしそれでは、処理する際に時間がかかってしまうので、予め影響を受ける最前あるいは最後あるいは両方の部分データを求めておくことで、この処理時間を省くことができる利点が出てくる。
【０１６１】
さらに、本発明に係るデータ生成方法において、前記電子データは、表示設定によって異なる表示レイアウトを生成できる文書データであり、部分データの処理は、部分データの表示レイアウトを生成する処理であることを特徴としてもよい。
【０１６２】
上述したように、部分データを使って処理する利点の一つに、「電子データの処理結果の一部だけを得たい時に、該当する部分データだけを処理すればよいので、高速、省リソースで処理できる」という利点がある。
【０１６３】
この利点を生かし易い電子データとしては、電子データの処理結果の一部だけを見るような用途が多いような電子データが考えられる。
【０１６４】
例えば書籍は、目次や索引を見て、所望のページを開いたり、しおりをはさんで次回にそこから読み始めたりするような使用形態が多い。書籍を電子化したものがいわば「文書データ」であり、文書データも紙の書籍同様の使い方がされる。
【０１６５】
従って、文書データは、本発明のように、部分データを使って、電子データの処理結果の一部だけを高速、省リソースで処理できるという利点が生かせる電子データである。
【０１６６】
しかも、文書データは、表示設定によって異なる表示レイアウトを生成できる上に、文書データを分割する境界の位置によって、表示レイアウトに分割の影響が出たり出なかったりするという特徴も持っている。
【０１６７】
すなわち、表示設定によって異なる表示レイアウトを生成できる文書データの場合、例えばＨＴＭＬデータをＷＷＷブラウザで表示する場合が典型的だが、その表示レイアウトが表示設定などによって変わっても、そのことによる不都合は無い。その為、分割境界の位置が必ずしも切りの良い所（例えば改行の前後など）ではなくても、その部分データ単体の表示レイアウトがおかしいとはユーザーに感じられないので、部分データ単体から誤りの無い処理結果を得ることができる。その代わり、切りの良くない所で文書データを分割すると、その前後の部分データ間で、処理結果に影響が生じることになる。
【０１６８】
これに対し、本発明では、非依存分割境界候補に関する処理など、部分データ間で処理結果に影響が生じにくいような工夫を盛り込んでいるので、表示設定によって異なる表示レイアウトを生成でき、処理が表示レイアウトの生成であるような文書データについて、本発明の効果が特に生きてくる。
【０１６９】
本発明に係るデータ生成装置は、上記の課題を解決するために、単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成する場合に、その部分データのデータサイズが、予め定めた標準データサイズ以下であるかを判断する部分データサイズ判断手段と、その生成される部分データの処理結果に、上記分割境界における分割による所定の影響が表れるか否かを判断する影響判断手段と、データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界を、標準内非依存分割境界として優先的に抽出する標準内非依存境界抽出手段と、を備えたことを特徴とする。
【０１７０】
本発明の作用の概要を説明する。
電子データは、主記憶や外部記憶、あるいはネットワーク先の機器などから、例えばファイルなどの形で得られるとする。まず、得られた電子データから、分割境界（の候補）を求める。例えば、電子データの先頭から何バイト目か、といった情報になるが、これは一時的な情報なので、メモリ上などに記録しておけばよい。分割境界の候補の求め方は、電子データの種類や目的によって異なるので、ここでは詳しくは説明しないが、例えば、ＨＴＭＬデータの場合、改行を行うタグの前後などになる。
【０１７１】
次に、部分データサイズ判断手段で、ある分割境界によって生成される部分データのデータサイズを取得し、そのデータサイズが予め定めた標準データサイズ以下であるかを判断する。
【０１７２】
影響判断手段では、上記分割境界によって生成される部分データの処理結果に、上記分割境界における分割による各種影響の中でも、予め特定しておいた所定の影響が表れるか否かを判断する。所定の影響の種類は１通りとは限らず、複数通りでもよい。また、部分データサイズ判断手段と影響判断手段との処理順序は、どちらが先でもよい。
【０１７３】
標準内非依存境界抽出手段では、上記両手段の結果を使って、データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れない分割境界が見つかれば、その分割境界を標準内非依存分割境界として抽出する。
【０１７４】
上記の処理を使って、分割データを生成し、生成した分割データの中で、処理結果自体に誤りが無く、適切なデータサイズの分割データを部分データとする処理例は、既に説明した処理例と同様である。生成した部分データは、例えばメモリ上に記録したり、ファイルとして記録媒体上に記録したりする。
【０１７５】
これによる種々の効果は、前述したとおりである。
【０１７６】
本発明に係るデータ生成プログラムは、上記の課題を解決するために、上記データ生成装置が備える各手段として、コンピュータを機能させることを特徴とする。
【０１７７】
また、本発明に係るデータ生成プログラムは、上記の課題を解決するために、上記データ生成方法が備える各ステップをコンピュータに実行させることを特徴とする。
【０１７８】
また、本発明に係る記録媒体は、上記の課題を解決するために、上記データ生成プログラムを記録したことを特徴とする。
【０１７９】
これにより、上記記録媒体、またはネットワークを介して、一般的なコンピュータにデータ生成プログラムをインストールすることによって、該コンピュータを用いて上記のデータ生成方法を実現する、言い換えれば、該コンピュータをデータ生成装置として機能させることができる。
【０１８０】
なお、上記で述べた発明については、ここで述べた組み合わせだけに限らず、あらゆる組み合わせが可能である。
【発明を実施するための最良の形態】
【０１８１】
以下、本発明の実施の形態を図面を参照して説明する。
【０１８２】
（用語の定義）
まず、言葉の定義について説明しておく。
【０１８３】
以降、説明の為、電子データを「分割境界」で単に分割したデータを「分割データ」と呼ぶことにする。例えば、図７は、電子データとしてのＨＴＭＬデータの全体を、６つの分割データに分割する場合の区切り方の一例を示している。図７からも判るように、分割されたデータ間で重なる部分もなく、また足りない部分もない。
【０１８４】
分割データには順番があるとし、相対的に「前の分割データ」、「次の分割データ」という言い方をする。この順番は、各分割データを影響も考慮して順に処理した処理結果が、電子データ全体の処理結果に一致する時の分割データの処理順である。因みに、その処理順は、分割データの電子データ中の位置の順番に相当することが多い。
【０１８５】
なお、電子データを分割したもの全てを分割データと呼ぶ訳ではない。ここで主に対象としている分割データは、処理結果を直接生成する素材となるデータであり、例えば、文書データの電子データの場合、テキストデータなどが対象となる。従って、電子データ中のそれ以外の部分、例えば、ヘッダ情報部分などは、処理結果を直接生成する素材とは言いがたいので、分割データの対象とならない場合もある。
【０１８６】
「分割境界」とは、図７に示すように、電子データを２組以上の分割データに分割する境界である。分割境界は、電子データ中の位置で表現でき、例えば、バイト単位で表現する場合、電子データの先頭から何バイト目の前、あるいは、何バイト目と何バイト目の間、あるいは何バイト目の後、という形となる。位置を表す単位系としては、他にも文字数、ビット数、タグ数やそれらの組み合わせなどがある。
【０１８７】
「部分データ」とは、「分割境界」を使って電子データから生成されるデータで、電子データの一部分のデータを含んでおり、部分データ単独で処理したときに、含まれる電子データ部分の処理結果自体には、後述するような誤りが無いデータのことである。
【０１８８】
部分データと分割データとの関係は、２通り有る。１つ目は、部分データが、分割境界を使って電子データから生成された分割データの中から、選別された分割データに等しい場合である。その選別は、分割データの処理結果自体に誤りの表れない適切な分割境界を選択することによってなされる。２つ目は、部分データと分割データとがイコールではない場合であり、分割データの処理結果自体に誤りが無い状態を作るための補助的な情報が組み合わせられた分割データの場合である。
【０１８９】
なお、上述した適切な分割境界を選択する処理が、本発明の影響判断ステップおよび標準内非依存境界抽出ステップにおける処理である。
【０１９０】
部分データに含まれる電子データ部分は、電子データ中の連続した一塊のデータ部分を構成しているとは限らず、飛び飛びの場合も本発明に含まれるが、通常、連続した一塊のデータ部分の方が扱い易い。なお、部分データが飛び飛びでない場合、分割データ同様、順番を持ち、「前の部分データ」、「次の部分データ」という言い方をする。
【０１９１】
なお、部分データは、必ずしも電子データと独立した形（例えば別ファイルなど）で存在する必要はない。電子データと分割境界の情報の組として保持していてもよい。部分データが必要な時に、電子データと分割境界の情報の組から動的に生成してもよい。例えば、分割境界データから分割境界の位置情報を得て、電子データから、その部分データの範囲に相当する部分のデータを読み込むなどの方法で、部分データを動的に生成することができる。
【０１９２】
これにより、分割データを別途ファイルなどとして生成する必要がなく、電子データをそのままおいておけるという利点がある。
【０１９３】
この利点が生かされる場合として、例えば、電子データは、暗号化や著作権などの問題で、ファイルを変更／追加したり、分割データに分けてファイル化したりといったことができない場合がある。また、電子データが例えばＣＤ−ＲＯＭなどの書き込み不可のメディア上に記録されている場合がある。そのような場合でも、電子データをそのままおいておき、補助ファイルとして、分割境界データのファイルなどを別途生成することで、対応できる。
【０１９４】
「単独で処理したときの処理結果自体には誤りが無い」の定義は、電子データの種類によって異なる。基本的には、元の電子データに含まれていないデータ（擬似データと呼ぶことにする）が、あたかも電子データに含まれていたかのような処理結果（例えば、意図しない改行、フォントサイズ等）が得られた場合、処理結果に、誤りが表れていると定義し、そのような擬似データに対応する処理結果を含まず、元の電子データが本来意図した処理結果が得られるとき、処理結果自体に誤りが無いと定義する。
【０１９５】
例えば、ＨＴＭＬデータの場合、処理結果である表示結果は、ＷＷＷブラウザの表示設定などによって異なる。この場合、改行タグによって改行がなされているかどうか、フォントタグによる文字サイズや文字色などの指定が反映されているか、など、タグによる命令結果に沿った表示結果が生成されているかどうかが、処理結果に誤りが表れていないかどうかの判断基準の一つとなる。例えば、文字サイズの表示設定が変わって全体の行数が変わっても、改行タグ位置で改行がされていれば、この場合は「処理結果自体には誤りが無い」と判断される。また、フォントタグの開始タグと終了タグの間のデータだけを処理した場合、フォントタグの指定が反映されないので、この場合は「処理結果自体には誤りが有る」と判断される。
【０１９６】
処理結果に、誤りが表れた具体例を図１９に示す。図１８に示す表示結果が、誤りの無い表示結果であるとすると、図１９には、「ｂａｓｅｄ」の後に改行が表れている。つまり、改行タグや改行コードが、元データには無いのにも拘らず、図１９には、改行タグや改行コードが擬似データとして、あたかも元データに含まれていたかのような表示結果になっている。
【０１９７】
なお、プレーンテキストの場合は、改行コードの文字によって、改行が指示される。
【０１９８】
「処理補助データ」とは、分割データを単独で処理して分割データの意味する内容が損なわれない処理結果を得るには、前記分割データに足りない情報（を補助するデータ）である。つまり、分割データと処理補助データを合わせて部分データとなる。例えば、前の分割データから効力を引き継ぐべき情報や、後の分割データで処理されるべき情報、あるいは複数の分割データの処理結果に共通して関係する特定データ（例えば、制御コード等）などである。
【０１９９】
より具体的には、後でさらに説明するが、ＨＴＭＬデータの場合、着目している分割データの前に存在する分割データ中の開始タグで、対応する終了タグがその分割データ以降に存在する場合、その開始タグが、前の分割データから引き継ぐべき情報になるので、着目している分割データのための処理補助データに当たる。
【０２００】
つまり、前の分割データ中の開始タグの効力は、本来、後の分割データにも及ぶものであるが、分割の結果、後の分割データを単独で処理する際には、開始タグが読み込まれないため、その処理結果には開始タグの効力が表れないことになる。結局、分割によって、本来意図した処理結果にならない分割データが発生する。そこで、開始タグを後の分割データの処理補助データとして組み合わせることにより、後の分割データを単独で処理しても、本来の処理結果を得ることができる。
【０２０１】
処理補助データと分割データは、組として扱われるが、必ずしも一体のデータとして記録しておく必要はなく、分散して記録しておいても良い。例えば、処理補助データだけを集めたファイルなどという形で記録しておいても良いし、電子データの末尾などに処理補助データを追加しておいても良い。
【０２０２】
また、処理補助データと分割データは、予め作成しておくのが一般的だが、利用時に動的に生成することも可能である。
【０２０３】
但し、分割データと処理補助データの組それぞれが共通に必要とするデータが、電子データ中に存在する場合、必要とするデータを各分割データ（あるいは処理補助データ）に複製して分配してやれば、単独で分割データの意味する内容が損なわれない処理結果を得ることもできる。しかし、それでは各分割データ（あるいは処理補助データ）のデータサイズが大きくなってしまうので、分割データ（あるいは処理補助データ）以外の共有部分を使う場合も、「部分データで処理される」とみなすこととする。
【０２０４】
共通に必要とするデータとしては、例えば、電子データの種類やバージョン情報、著作権情報、暗号情報などの、いわゆるヘッダ情報などが例としてあげられる。
【０２０５】
「影響」とは、ここでは、ある部分データを処理する際に、他の部分データの処理結果を参照するかどうかで、部分データの処理結果が変わることを言う。例えば、連続する部分データＸ，Ｙについて、部分データＹを部分データＸの処理結果を参照して処理した場合と、そうせずに、それぞれを独立して処理した場合とで、処理結果に違いが現れるとしたとき、「部分データＹは、部分データＸから影響を受ける」とか、「部分データＸは、部分データＹに影響を与える」とか、「部分データＹは、分割の影響を受ける」とかのように、本発明では表現することにする。前の部分データＸの処理結果に、次の部分データＹの処理結果を追加する場合などに、影響が現れやすい。
【０２０６】
影響は、部分データの区切り方や部分データの内容などによって、発生したり、発生しなかったりする。また同じ部分データであっても、処理の仕方や処理設定などによっても、発生したり、発生しなかったりする。
【０２０７】
処理結果が影響を受ける例としては、文書データの部分データを使って、文字を行に配置する処理を行う場合、前の部分データが最後に配置した文字（説明の為、「文字Ａ」と呼ぶ）の行に、次の部分データが最初に配置する文字（説明の為、「文字Ｂ」と呼ぶ）を追加して配置する場合などがある。追加して配置する場合、「文字Ａ」の隣に「文字Ｂ」を配置するので、前の部分データの処理結果によって、次の部分データの処理結果が変わってくる可能性がある。
【０２０８】
但し、前の部分データの処理結果を参照してもしなくても、結果が変わらないこともある。従って、他の部分データの処理結果を参照しなかった場合に、必ず誤りが表れるというわけではない。例えば、「文字Ａ」が改行コードだとすると、「文字Ｂ」は次の行の行頭に必ず配置される。この場合、前の部分データの処理結果がどうであろうと、「文字Ｂ」の配置位置は常に変わらない。
【０２０９】
なお、処理結果が影響を受けるのは、隣接する前後の部分データの処理結果だけとは限らず、離れた部分データ間でも影響する場合もある。例えば、ＨＴＭＬデータの部分データを使って表示レイアウトを生成する処理を行う場合、画像に対するテキストデータ等の回り込みがある場合に起こる場合がある。画像に回り込んで文字などをレイアウトする場合、画像の分、レイアウトできる範囲が限定される。このレイアウト範囲の限定が影響に関わってくる。
【０２１０】
この時、画像に回り込んでレイアウトされる文字などが、複数の部分データから構成されている場合、画像に回り込んで文字などをレイアウトする指示（以下、回り込み指示と呼ぶ）が含まれる部分データは、当該複数の部分データの中の最初の部分データである。従って、上記回り込み指示を含まない部分データには、部分データ中の文字列を画像に回り込ませるべきであることを知る手掛かりが無い。なお、上記回り込み指示を伴う画像のことを、以降、回り込み画像と呼ぶ。
【０２１１】
従って、回り込み画像を含む部分データと、回り込み画像を含まない部分データとを別々に処理して、単純に繋ぎ合わせると、まだ回り込ませる余地があるのに、回り込み画像を含まない部分データについては、回り込み画像のレイアウトが終了した次の行の行頭から文字列を表示させてしまう誤りが発生しうる。これは元データが意図するレイアウトとは異なる。このようにして、離れた部分データ間でも影響が発生することがありうる。
【０２１２】
また、処理順序が処理結果に影響を与える例として、内部で使用する値（変数の値）が、各部分データの処理で変わる場合などもある。例えば、最初の部分データの処理で、変数Ｃの値を１と設定し、２番目と３番目の部分データで、変数Ｃの値を２倍に設定するとする。１、２、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は２で、処理後は４となるが、１、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は１で、処理後は２となる。
【０２１３】
なお、影響が有ろうと無かろうと、各部分データの単独の処理結果は常に部分データの意味する内容が損なわれない。但し、各部分データの処理結果を合わせた場合は、全体として部分データの意味する内容が損なわれている（元の電子データが本来意図していない処理結果になる）ことはありえる。
【０２１４】
例えば先の「文字Ａ」、「文字Ｂ」の例で言えば、文字Ｂを含む「次の部分データ」を単独で処理すれば、文字Ｂは最初の文字なので行頭に配置される。文字Ｂが行頭に配置された処理結果を単独で見る場合、処理結果自体に誤りは無い。
【０２１５】
しかし、文字Ａを含む「前の部分データ」の処理結果と合わせて見る場合、すなわち、「前の部分データ」の処理結果の行と、「次の部分データ」の処理結果の行とを、単純に並べて表示させる場合、そのつながり部分において分割の影響が表れ、部分データの意味する内容が損なわれている場合が出てくる。
【０２１６】
例えば「文字Ａ」が改行コードで無い場合、「文字Ａ」の次の「文字Ｂ」が、突然、次の行の行頭に配置されていることになり、改行がされているように見えてしまう。しかし、文書データとしてそこに改行コードの文字は存在しないのだから、合わせた処理結果には各部分データを単独に処理した影響が表れていることになる。
【０２１７】
なお一般に、前の順番の部分データの処理結果から、後の順番の部分データの処理結果に影響が及ぶ場合がほとんどだが、逆の場合もありえる。
【０２１８】
「階層構造」は「木構造」とも呼ばれ、データの要素の関係を、分岐した木の形の構造として管理する状態をいう。分岐は細かくなるだけであり、分岐した先同士が関係を持ち合うことはない（持ち合う場合は「ネットワーク構造」と言う）。一般に、分岐して細かくなったデータが属する階層を「下の層」、分岐元のデータが属する階層を「上の層」と、上下関係で呼ぶことが多い。
【０２１９】
例えば、後述するＨＴＭＬデータのタグによる入れ子構造などが階層構造に相当する。
【０２２０】
「順序構造」は、データの要素間に上下関係は無いが、その順番に意味があるような場合の構造である。データ要素が同じでも、その順番などが変われば、別のデータとなる。例えば、ＨＴＭＬデータのＯＬタグ中でのＬＩタグは箇条書きの番号表示を行うが、その番号はＬＩタグの出現する順番によって決まる。
【０２２１】
なお、階層構造の各層で分岐先に順番を持たせているようなデータ構造も、階層構造に含まれるとしてもよい。また、階層構造や順序構造のデータ要素の区切りと、部分データの区切りとは必ずしも一致しなくてもよい。
【０２２２】
「開始位置の階層構造」とは、電子データの最初から部分データの開始位置までのデータで生成される階層構造を意味する。ＨＴＭＬデータの例で言えば、開始位置までに出てきたタグを繋げた文字列で表現できる。一般に、着目している部分データについて上の層の情報だけでよく、同じ層、あるいは下の層、タグに挟まれたテキストデータの情報などは省いても良いことが多い。上の層の情報だけとは、ＨＴＭＬデータの例で言えば、開始位置までに出てきたタグの内、対応する終了タグの存在しない開始タグだけということになる。
【０２２３】
例えば、図７のＨＴＭＬデータの最初のブロックデータ４００を例にすると、上の層の情報とは、ＨＴＭＬタグの開始タグ＜ＨＴＭＬ＞を指し、下の層の情報とは、ｆｏｎｔタグの開始タグ＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞および終了タグ＜／ｆｏｎｔ＞を指す。
【０２２４】
「終了位置の階層構造」とは、部分データの終了位置から電子データの最後までのデータで生成される階層構造を意味する。ＨＴＭＬデータの例で言えば、終了位置以降に出てくるタグを繋げた文字列で表現できる。一般に、着目している部分データについて上の層の情報だけでよく、同じ層、あるいは下の層、タグに挟まれたテキストデータの情報などは省いても良いことが多い。上の層の情報だけとは、ＨＴＭＬデータの例で言えば、終了位置以降に出てくるタグの内、対応する開始タグの存在しない終了タグだけということになる。
【０２２５】
「開始位置の順序構造」や「終了位置の順序構造」に関しても、対象とするデータ範囲は階層構造と同じである。階層構造と違って上下の層は存在しないが、データ範囲に出てくる情報となる。階層構造でも、同じ層や下の層の情報まで含めた情報にすれば、順序構造の情報を含んだ形にもできる。
【０２２６】
例えば、ＨＴＭＬデータの例で言えば、複数のＬＩタグの層は、ＯＬタグの層の下の層となるが、対応する終了タグが存在しても省かずに情報を生成すればよい。ＯＬタグの層で部分データの分割境界があったとしても、後の部分データの開始位置の順序構造の情報には、前の部分データのＬＩタグが含まれるので、ＬＩタグの出現する順序の情報を得ることができるようになる。
【０２２７】
「表示レイアウト」とは、文字や画像などの「表示レイアウト要素」の集まりからなるものであり、表示手段や印刷手段などの出力手段に出力して、ユーザーが視覚的に認知することができるようにした表示レイアウト要素の配置情報である。一般に、表示レイアウトは、各表示レイアウト要素の位置や大きさ、出力する時の形態などの情報を持っている。
【０２２８】
「表示設定」とは、例えば、表示する文字の種類や大きさ、表示レイアウトを生成する範囲（一般に表示手段の大きさに制約される）、などである。これらの設定を変えることで、生成される表示レイアウトは変わる。但し、表示レイアウトが変わっても、通常、各表示レイアウト要素の位置や大きさが変わるだけで、文書データの表現する中身（文字情報、画像情報など）が変わる訳ではない。
【０２２９】
「最大データサイズ」は、標準データサイズ同様、予め決まっている値、あるいはユーザーなどに入力してもらう値、あるいは所定の計算方法によって得られる値などになる。通常、最大データサイズは、省リソース性や処理速度の高速性等を考慮して、部分データとして最大限許容されるデータサイズにしておく。これは処理する装置の処理能力や処理の目的などから、ユーザーなどが決める。
【０２３０】
「依存関係」とは、どの部分データ間で処理結果に影響があるかということを示す関係である。
【０２３１】
「依存関係データ」は、処理補助データ同様、電子データに付け加えた形にしても良いし、電子データとは独立したファイルなどの形式で記録しておいても良い。
【０２３２】
「行」とは、ここでは、表示レイアウト要素の集まりであり、一般に、横一列あるいは縦一列に並んで配置されている表示レイアウト要素からなる。全ての表示レイアウト要素はいずれかの行に属するとするが、回り込み画像のように、複数の行に関わる表示レイアウト要素は、分割して各行に属するようにするか、行とは別に管理するようにする。
【０２３３】
「行頭」とは、表示レイアウト要素の行への通常の配置方法で、最初に配置する位置である。一般に、横一列に配置する横行の場合は左端、縦一列に配置する縦行の場合は上端となる。なお、所望の部分データの最初の表示レイアウト要素が、回り込み画像のような特殊な配置を行う表示レイアウト要素や、行とは別管理する表示レイアウト要素の場合は、行頭から表示されるかどうかの判断対象とはせず、行に配置する次の通常の表示レイアウト要素（文字など）を判断対象とする。
【０２３４】
（データ生成装置の構成）
図１は、本発明の実施の一形態に係るデータ生成方法を実施するデータ生成装置を示す構成図である。
【０２３５】
すなわち、データ生成装置の要部を、電子データ取得手段１、影響判断手段２、分割境界データ生成手段３、分割データ生成手段４、処理補助データ生成手段５、依存関係データ生成手段６、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、部分データサイズ判断手段９、第１分割境界抽出手段１０、第２分割境界抽出手段１１、第３分割境界抽出手段１２、の主要な機能ブロックに展開して示すことができる。
【０２３６】
図２は、図１の各手段１〜１２を具体的に実現する装置の構成例である。
【０２３７】
ＣＰＵ（ｃｅｎｔｒａｌ ｐｒｏｃｅｓｓｉｎｇ ｕｎｉｔ）７０は、影響判断手段２、分割境界データ生成手段３、分割データ生成手段４、処理補助データ生成手段５、依存関係データ生成手段６、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、部分データサイズ判断手段９、第１分割境界抽出手段１０、第２分割境界抽出手段１１、第３分割境界抽出手段１２として機能し、これら各手段２〜１２の処理手順が記述されたプログラムを主記憶７４、外部記憶７５、通信デバイス７７を介したネットワーク先などから得る。なお、ＣＰＵ７０は、必要なデータの読み出しや転送などのために、電子データ取得手段１としての機能も担っている。
【０２３８】
また、ＣＰＵ７０は、ＣＰＵ７０を含めてバス７９を通じ相互に接続されたディスプレイ７１、マウス７２、タブレット７３、主記憶７４、外部記憶７５、ボタン７６、通信デバイス７７、キーボード７８、スピーカ８０とデータのやりとりを行いながら、処理を行う。
【０２３９】
なお、データのやりとりは、バス７９を介して行う以外にも、通信ケーブルや無線通信装置などデータを送受信できるものを介して行ってもよい。また、各手段２〜１２の実現手段としては、ＣＰＵに限らず、ＤＳＰ(ｄｉｇｉｔａｌ ｓｉｇｎａｌ ｐｒｏｃｅｓｓｏｒ)や処理手順が回路として組み込まれているロジック回路などを用いることもできる。
【０２４０】
ディスプレイ７１は、通常はグラフィックカードなどと組み合わされて実現され、グラフィックカード上にＶＲＡＭ（ｖｉｄｅｏ ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ）を有し、ＶＲＡＭ上のデータを表示信号に変換して、モニターなどのディスプレイ（表示／出力媒体）に送り、ディスプレイは表示信号を画像として表示する。
【０２４１】
ユーザーの指示を入力する手段として、マウス７２、タブレット７３、ボタン７６、キーボード７８などがあり、ユーザーの指示はバス７９を介して各手段１〜１２に入力される。この他にもマイクによる音声入力など、様々な入力手段が使用可能である。マウス７２は、マウスの移動方向と移動距離を検出する検出機器とボタンなどからなる。タブレット７３は、ペンとペン位置を検出する検出機器からなる。ボタン７６は、メカニカルもしくは電子的なスイッチなどからなる。キーボード７８は、ボタン（キー）の集まりからなり、押下したキーに応じた信号を送出する。
【０２４２】
主記憶７４は、通常はＤＲＡＭ（ｄｙｎａｍｉｃ ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ）やフラッシュメモリなどのメモリデバイスで構成される。なお、ＣＰＵ内部に含まれるメモリやレジスタなども一種の主記憶として解釈してもよい。
【０２４３】
外部記憶７５は、ＨＤＤ（ｈａｒｄ ｄｉｓｋ ｄｒｉｖｅ）やＰＣ（ｐｅｒｓｏｎａｌ ｃｏｍｐｕｔｅｒ) カードなどの装脱着可能な記憶手段である。あるいはＣＰＵ７０とネットワークを介して有線または無線で接続された他のネットワーク機器に取り付けられた主記憶や外部記憶を外部記憶７５として用いることもできる。
【０２４４】
通信デバイス７７は、ネットワークインターフェースカードなどにより実現され、無線や有線などにより接続された他のネットワーク機器とデータをやりとりする。
【０２４５】
スピーカ８０は、バス７９などを介して送られて来る音声データを音声信号として解釈し、音声として出力する。出力される音声は、単波長の単純な音の場合もあるし、音楽や人間の音声など複雑な場合もある。出力する音声が予め決まっている場合、送られて来るデータは音声信号ではなく、単なるオン、オフの動作制御信号だけという場合もある。
【０２４６】
次に、図１の各手段１〜１２を各手段間のデータ授受の観点から説明する。
【０２４７】
なお、各手段間でのデータのやりとりは、特に注釈なく「＊＊手段から得る」、「＊＊手段へ送る（渡す）」という表現をしている時は、主にバス７９を介してデータをやりとりしているとする。その際、直接各手段間でデータのやりとりをする場合もあれば、主記憶７４や外部記憶７５、通信デバイス７７を介したネットワーク先などを間に挟んでデータをやりとりする場合もある。
【０２４８】
電子データ取得手段１は、例えばＣＰＵ７０と主記憶７４または外部記憶７５などとで構成され、電子データを、主記憶７４、外部記憶７５または通信デバイス７７を介したネットワーク先などから得る。この場合、予め用意してある電子データを読み出すことになる。
【０２４９】
なお、電子データ取得手段１は、例えば、電子データが暗号化されていて、暗号化された電子データを、主記憶７４または外部記憶７５などから読み出し、復号して読み込むこともある。
【０２５０】
得られた電子データは、影響判断手段２、分割データ生成手段４、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、および第３分割境界抽出手段１２に送られる。
【０２５１】
標準内非依存境界抽出手段７としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、電子データ取得手段１から得られる電子データの部分データの候補に関して、部分データサイズ判断手段９から得られるデータサイズに関する判断と、影響判断手段２から得られる分割の影響に関する判断とから総合的に判断して、データサイズが標準データサイズ以下の部分データに電子データを分割する１つ乃至複数の標準内非依存分割境界を求める。求められた標準内非依存分割境界は、分割境界データ生成手段３、分割データ生成手段４、第１分割境界抽出手段１０に送られる。
【０２５２】
部分データの候補の求め方は、プログラム上で固定的に決められている場合もあるし、一部の方法や判断基準として使われる値（パラメータ）などをユーザーに指示される場合もある。ユーザーからの指示は、例えばディスプレイ７１上に表示された指示画面を見て、マウス７２、キーボード７８、ボタン７６、またはタブレット７３などの入力機器を使って行われる。図３は、指定最大データサイズ、指定標準データサイズをユーザーが指定するウィンドウ表示の例である。
【０２５３】
標準外非依存境界抽出手段８としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、電子データ取得手段１から得られる電子データの部分データの候補に関して、部分データサイズ判断手段９から得られるデータサイズに関する判断と、影響判断手段２から得られる分割の影響に関する判断とから総合的に判断して、データサイズが予め定めた最大データサイズ以下の部分データに電子データを分割する1つ乃至複数の標準外非依存分割境界を求める。求められた標準外非依存分割境界は、分割境界データ生成手段３、分割データ生成手段４、および第１分割境界抽出手段１０に送られる。
【０２５４】
第１分割境界抽出手段１０としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、標準内非依存境界抽出手段７から得られる標準内非依存分割境界に関して、部分データサイズ判断手段９から得られる判断から、標準データサイズに最も近いデータサイズの部分データが得られる標準内非依存分割境界を求める。求められた標準内非依存分割境界は、分割境界データ生成手段３および分割データ生成手段４に送られる。
【０２５５】
第２分割境界抽出手段１１としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、標準外非依存境界抽出手段８から得られる標準外非依存分割境界に関して、部分データサイズ判断手段９から得られる判断から、標準データサイズに最も近いデータ位置の標準外非依存分割境界を求める。求められた分割境界は、分割境界データ生成手段３および分割データ生成手段４に送られる。
【０２５６】
第３分割境界抽出手段１２としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、電子データ取得手段１から得られる電子データの部分データの候補に関して、標準内非依存境界抽出手段７でも標準外非依存境界抽出手段８でも分割境界が抽出できない場合、部分データの処理結果に分割の影響が表れることを容認するが、データサイズが最大データサイズを超えない部分データが得られる分割境界を求める。求められた分割境界は、分割境界データ生成手段３および分割データ生成手段４に送られる。
【０２５７】
なお、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、第１分割境界抽出手段１０、第２分割境界抽出手段１１、および／または第３分割境界抽出手段１２で分割境界を得る際、各手段７、８、１０〜１２のうちの一方が、各手段７、８、１０〜１２のうちの他方の抽出結果を見て、分割境界を抽出するかどうか判断しても良いし、他の手段の抽出結果に関わらず、各手段７、８、１０〜１２がそれぞれ分割境界の抽出を試みてもよい。
【０２５８】
前者の場合、抽出された分割境界を利用する側である分割境界データ生成手段３または分割データ生成手段４では、各手段７、８、１０〜１２のいずれか１つから分割境界が抽出されるだけなので、それを使えばよい。後者の場合は、各手段７、８、１０〜１２のそれぞれから抽出される一つ以上の分割境界の内から最も優先度の高い分割境界を選べばよい。優先度は、抽出する手段によって予め決めておいてもよいし、何らかの評価関数などを使って優先度を数値化して求めてもよい。また、優先度をデータ処理速度の高速性および／または省リソース性の観点で設定することが、本発明の目的に照らして好ましい。
【０２５９】
分割境界データ生成手段３としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、第１分割境界抽出手段１０、第２分割境界抽出手段１１、および／または第３分割境界抽出手段１２から得られる分割境界データを、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などに、例えばファイルなどの形式で記録する。
【０２６０】
生成される分割境界データは、処理補助データ生成手段５、依存関係データ生成手段６などに送られる。
【０２６１】
なお、分割境界データ生成手段３は、分割境界データをファイルなどの形式で記録する場合、情報を取り出し易いようにヘッダ情報やデータ構造情報などを付加したり、暗号化したり、電子署名を付加したり、などの処理を行う場合もある。ヘッダ情報やデータ構造情報などについては、後で説明する。これらの処理は、分割境界データ生成手段３に限らず、分割データ生成手段４、処理補助データ生成手段５、および依存関係データ生成手段６などでも同様に行われる場合がある。
【０２６２】
分割データ生成手段４としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、第１分割境界抽出手段１０、第２分割境界抽出手段１１、および／または第３分割境界抽出手段１２から得られる分割境界で、電子データ取得手段１から得られる電子データを分割し、部分データを生成する前段階として、分割データを生成する。生成される分割データは、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などに、例えばファイルなどの形式で記録される。生成される分割データは、処理補助データ生成手段５および／または依存関係データ生成手段６などに送られる。
【０２６３】
なお、通常、分割境界データ生成手段３と分割データ生成手段４が両方とも処理されることは少なく、後で説明する分割データの生成の形態に応じてどちらか片方だけが処理されることが多い。
【０２６４】
処理補助データ生成手段５としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、分割データを部分データとするには足りない情報、すなわち分割データを単独で処理して分割データの意味する内容が損なわれない結果を得るのに足りない情報である処理補助データを、その着目している分割データとそれ以外の分割データとから生成する。生成される処理補助データは、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などに、例えばファイルなどの形式で記録される。
【０２６５】
分割データは、分割データ生成手段４から直接得る形態でもよいし、電子データ取得手段１から得られる電子データと、分割境界データ生成手段３から得られる分割境界データとから間接的に得る形態でもよい。間接的に得るとは、電子データを分割境界データに基づいて、部分的に切り出して読み込むなどして、処理補助データ生成手段５内で分割データを生成する処理などを指す。
【０２６６】
依存関係データ生成手段６としてのＣＰＵ７０は、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから読み取られるプログラムに基づき、部分データの処理結果間に依存関係のある部分データの情報である依存関係データを、部分データから生成する。部分データの取得方法に関しては、処理補助データ生成手段５が分割データを取得する方法と同様である。
【０２６７】
生成される依存関係データは、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などに、例えばファイルなどの形式で記録される。
【０２６８】
なお、分割境界データ生成手段３で生成される分割境界データ、分割データ生成手段４で生成される分割データ、処理補助データ生成手段５で生成される処理補助データ、依存関係データ生成手段６で生成される依存関係データの各種データは、それぞれ別個のファイルとして生成される場合もあるし、データ同士を一緒にしたファイルとして生成される場合もある。また、分割データ以外のデータは、電子データのファイルなどに追加する形で記録することもある。
【０２６９】
なお、ＣＰＵ７０は、制御手段８によって、プログラムまたはユーザー入力に従って指定される分割データおよびその表示範囲について、表示レイアウト（処理結果）を生成するレイアウト生成手段として機能することもできる。また、レイアウト生成時には、処理補助データ生成手段５から得た処理補助データを、分割データと共に使う場合もある。生成された表示レイアウトは、主記憶７４または外部記憶７５、あるいは通信デバイス７７を介したネットワーク先の機器などに送られて保存されたり、ディスプレイ７１に送られて表示されたりする。
【０２７０】
さらに、ＣＰＵ７０は、各手段１〜１２に必要な制御命令や指示を与え、また、必要なデータを各手段１〜１２と双方向でやりとりする統括的な制御手段８として機能することもある。
【０２７１】
さらに、ＣＰＵ７０は、作成した表示レイアウトをディスプレイ７１などに表示するレイアウト表示手段として機能することもできる。なお、ここではディスプレイ７１への表示として説明しているが、例えばプリンターへの印刷や、表示レイアウトを記録したファイルへのファイル出力などの場合もある。
【０２７２】
（データおよびデータ構造）
次に、データやデータ構造について説明する。
【０２７３】
図４は、元データとしての電子データの例を説明する説明図である。ここでは、表示設定によって表示レイアウトが変わる文書データの例として、ＨＴＭＬデータ（正確にはＸＨＴＭＬデータ）を使って説明する。枠線の中がＨＴＭＬデータであり、その左側の数字は、説明の為の行番号である。
【０２７４】
図５は、図４のＨＴＭＬデータをＷＷＷブラウザで、ある表示設定の時に表示させた例である。ここではＷＷＷブラウザのウィンドウの大きさは充分大きく、図４のＨＴＭＬデータを一度に表示しきれたとする。
【０２７５】
図６は、図５の表示設定を、基準となる文字の大きさを１．５倍、表示ウィンドウの横幅および縦幅は同じに設定して、図４のＨＴＭＬデータを表示させた例である。各文字が大きくなったので、各行の折り返し位置などが変わっているのが分かる。なお、図６では図４のＨＴＭＬデータ全てを表示しきれないので、先頭の部分だけ表示させている。スクロールバーやページめくりボタンなどを使って表示範囲を切り替えれば、表示しきれていない部分も表示させることは一般に可能である。
【０２７６】
説明の為、ＨＴＭＬデータ（正確にはＸＨＴＭＬデータ）の構造について簡単に説明しておく。前述した「タグ」とは、「＜」の文字に始まり、「＞」の文字で終わる部分の文字列のことであり、表示設定を指示する文字列である。例えば図５の表示設定は、図４のＨＴＭＬデータ中の各種タグによって指定されている。
【０２７７】
一般に、タグは開始タグと終了タグの組からなり、終了タグは「＜」の後に「／」の文字が続く。タグはそれぞれ「タグ名」を持ち、開始タグは「＜」＋「タグ名」＋「＞」、終了タグは「＜／」＋「タグ名」＋「＞」となる。
【０２７８】
例えば、図４の最初の行は開始タグ「＜ＨＴＭＬ＞」で始まり、最後の行は、終了タグ「＜／ＨＴＭＬ＞」で終了している。なお、本明細書では、＜ＨＴＭＬ＞と＜／ＨＴＭＬ＞の組から成るような各タグをタグ名を使って、「ＨＴＭＬタグ」などという形で呼ぶことにする。
【０２７９】
開始タグは、表示レイアウトを詳細に設定する情報として、「属性」も持つことができる。属性は、「属性名」と「属性値」からなり、
「＜タグ名  属性名１＝“属性値１”  属性名２＝“属性値２”  、、、、  ＞」
などという形式で、複数の属性を与えることができる。
【０２８０】
開始タグと終了タグの間に挟まれた部分が、タグの効力が及ぶ対象である。タグ以外の部分は「ＴＥＸＴ」である。例えば、図４の２，３行目の「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？＜／ｆｏｎｔ＞」の部分は、「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」のＴＥＸＴが、ｆｏｎｔタグの対象となる。
【０２８１】
具体的には、ｃｏｌｏｒ属性がｒｅｄなので、文字色が赤となり、ｓｉｚｅ属性が＋３なので、基準フォントサイズより３段階大きなフォントとなる。図５では、上記のＴＥＸＴが確かに大きな文字で表示されている。（なお、文字色は白黒印刷画面ではわかりにくいので、ここでは黒で示してあるが、フルカラーディスプレイ上では赤で表示されるとする）。
【０２８２】
なお、開始タグと終了タグの間に挟むべきＴＥＸＴが存在しない場合は、開始タグと終了タグを一緒にして、「＜タグ名／＞」としてもよい。例えば、図４の３行目の「＜ｂｒ／＞」（具体的な意味は後述）はこの例である。
【０２８３】
ＨＴＭＬデータのタグは、前述のように、入れ子構造を持つ、階層構造になっている。ここでは、ＨＴＭＬデータは、ＸＨＴＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｈｙｐｅｒ  ｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）形式あるいはＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）形式に従うとして、入れ子構造以外は持てないとしておく。
【０２８４】
例えば、ＡタグとＢタグが、「＜Ａ＞＜Ｂ＞＜／Ｂ＞＜／Ａ＞」となるのは入れ子構造なので、正しい階層構造になっているが、「＜Ａ＞＜Ｂ＞＜／Ａ＞＜／Ｂ＞」は入れ子構造ではないので、不可とする。なお、タグが入れ子になっている場合、内側のタグやそのＴＥＸＴに対しても、外側のタグの効力は及ぶが、同じタグ名のタグや、同じタグ名の同じ属性名の属性値に関しては、内側のタグの方が一般に優先される。
【０２８５】
図４の例では、最上位の階層のタグは１行目と２４行目のＨＴＭＬタグであり、その下の階層は、２，３行目のｆｏｎｔタグ、ｂｒタグなど、多数のタグが続く。また、５行目と１６行目のｆｏｎｔタグの下の階層には、６行目と１５行目のＰタグ（意味は後述）が存在する。
【０２８６】
次に、図４に出てくるｆｏｎｔタグ以外の各タグの機能について簡単に説明しておく。ＨＴＭＬタグは、ＨＴＭＬ文書であることを宣言しているだけで、表示設定に対する意味はない。ｂｒタグは、表示レイアウト上で改行を行うことを意味する。なお、ＨＴＭＬデータ中の改行コードは通常、無視される。Ｐタグは、パラグラフを意味し、開始タグで多少の垂直スペースと改行、終了タグで改行と多少の垂直スペースとして表現される。なお、ＷＷＷブラウザによってはインデント表示される場合もあるが、ここではインデントは無しとしている。
【０２８７】
本発明では、分割境界データ、分割データ、処理補助データ、依存関係データなどのデータを生成するが、これらのデータの生成方法の説明の前に、これらのデータの利用例について簡単に説明する。
【０２８８】
まず、利用例で使用するデータについて説明する。
【０２８９】
図７は、図４の文書データ４０６から、分割の影響を考慮する前に生成された分割データ４００〜４０５を模式的に説明する説明図である。各分割データ４００〜４０５に区切っている折れ線は、実際には、分割境界データとして生成されたり、分割データ４００〜４０５が個別のファイルなどとして生成されたりするのだが、ここでは分割の様子を分かりやすくする為、折れ線として示しておく。
【０２９０】
なお、各分割データ４００〜４０５を処理補助データを使って、それぞれ単独で処理して表示したときに、表示結果自体に誤りが無いので、各分割データ４００〜４０５は、処理補助データを使うことで、いずれも部分データになり得る。
【０２９１】
図８は、影響判断手段２が図７の分割データ４００〜４０５について分割の影響を判断し、その判断結果に基づき、依存関係データ生成手段６が生成した依存関係データ１４０〜１４５のデータ構造を説明する説明図である。分割データ４００〜４０５の各々と依存関係データ１４０〜１４５の各々とが対応する。依存関係データ１４０〜１４５は配列の形となっており、各依存関係データ１４０〜１４５にインデックス番号でアクセスできるとする。
【０２９２】
ここでは、依存関係データとして、各分割データの処理結果が、直前の分割データの処理結果から影響を受けるかどうかの情報を記録している。情報は、「０」か「１」で記録されており、影響を受ける（影響が有る）場合は「１」、影響を受けない（影響が無い）場合は「０」で記録されている。例えば、依存関係データ１４２を例にすると、その内容は「１」なので、着目している分割データ４０２の処理結果が、直前のブロックデータ４０１の処理結果から影響を受けることを表す。
【０２９３】
図９は、図７の分割データ４００〜４０５から別の方法で生成された依存関係データ１５０〜１５５のデータ構造を説明する説明図である。分割データ４００〜４０５の各々が、依存関係データ１５０〜１５５の各々に対応する。依存関係データ１５０〜１５５は配列の形となっており、各依存関係データにインデックス番号でアクセスできるとする。
【０２９４】
ここでは、依存関係データとして、各分割データの処理結果が、影響を受ける最前の分割データの情報を記録している。情報は、分割データを特定する情報として記録されており、ここでは分かり易いように、「分割データ４０１」（依存関係データ１５２、１５３）などと、影響を受ける分割データのデータ番号を記録している。分割データを特定する情報としては、その他にも配列のインデックス番号や、分割データのメモリ上の番地や、分割データのファイル名などが考えられる。
【０２９５】
なお、影響を受ける分割データが存在しない場合は、データは空でもいいし、自身の分割データを特定する情報を記録していてもよい。図９では、空で記録する場合もありえることを示す為に、自身の分割データのデータ番号を括弧書きで示してある（依存関係データ１５０、１５１、１５４、１５５）。
【０２９６】
図１０は、電子データ、分割境界データ、分割データ、処理補助データ、依存関係データなどを利用するデータ処理装置の外観例を示している。本体３００上に表示部兼タブレット３０１、ページめくりボタン３０２、３０３が設けられている。また、タブレットを操作するペン３０４も備えられている。
【０２９７】
ここでは、電子データとして、表示設定によって異なる表示レイアウトを生成できる文書データを使い、図１０のデータ処理装置は、上記文書データ、分割境界データ、分割データ、処理補助データおよび依存関係データなどから、必要なデータを用いて表示レイアウトを生成し、表示することができるとする。
【０２９８】
表示部兼タブレット３０１上には、生成された表示レイアウトが表示される。また、表示部兼タブレット３０１は、データ処理装置の各種設定メニューなどを表示して、タブレットを使って指やペンなどで設定を変更したりするのにも使われる。
【０２９９】
なお、各種設定などの操作手段として、表示部兼タブレット３０１だけでなく、操作ボタン類などがこの他にあってもよい。ページめくりボタン３０２、３０３は、表示部兼タブレット３０１上に表示されている表示レイアウトの表示範囲を切り替える際などに使う。ペン３０４は、リンクジャンプなどの操作や各種設定などのユーザー入力など様々に利用可能である。
【０３００】
また、この例では示していないが、この他に、外部記憶としてメモリーカードなどのスロットや、ネットワークと通信する通信デバイス７７、マウス７２やキーボード７８、マイクなどの入力装置、スピーカ８０などの出力装置、などが付属する場合もある。
【０３０１】
（データ生成方法の詳細）
（処理の流れ）
次に、分割データ、分割境界データ、処理補助データおよび依存関係データの生成方法について説明する。
【０３０２】
図２３は、本発明の実施の一形態に係るデータ生成方法の一例を示すフローチャート図である。
【０３０３】
まずステップＳ１（以下、「ステップＳ」を「Ｓ」と略記する）では、電子データ取得手段１が、例えば、予め主記憶７４、外部記憶７５、通信デバイス７７を介したネットワーク先などに用意してある電子データを読み込む。これにより、電子データ取得手段１は、電子データを取得し、連結点Ｐ１０（以下、「連結点Ｐ」を「Ｐ」と略記する）を経て、Ｓ２へ処理が進む。
【０３０４】
次にＳ２では、影響判断手段２、処理補助データ生成手段５、依存関係データ生成手段６、標準内非依存境界抽出手段７、標準外非依存境界抽出手段８、部分データサイズ判断手段９、第１分割境界抽出手段１０、第２分割境界抽出手段１１、および／または第３分割境界抽出手段１２が、電子データ取得手段１から電子データを受け取り、電子データを分割データに分割する分割境界を算出して、Ｐ２０を経て、Ｓ３へ処理が進む。ここでの処理の詳細は、後で図２４などを使って説明する。
【０３０５】
Ｓ３では、分割境界データ生成手段３が、依存境界抽出手段７、標準外非依存境界抽出手段８、第１分割境界抽出手段１０、第２分割境界抽出手段１１、および／または第３分割境界抽出手段１２から得られる分割境界を使って、分割境界データを生成し、Ｐ３０を経て、Ｓ４へ処理が進む。あるいは、分割データ生成手段４が、各手段７、８、１０〜１２から得られる分割境界を使って、分割データを生成し、Ｐ３０を経て、Ｓ４へ処理が進む。
【０３０６】
Ｓ４では、処理補助データ生成手段５が、分割データを使って、処理補助データを生成して、Ｐ４０を経て、Ｓ５へ処理が進む。ここでの処理の詳細は、後で図２７などを使って説明する。
【０３０７】
Ｓ５では、依存関係データ生成手段６が、分割データを使って、依存関係データを生成して、Ｐ５０を経て、処理を終える。ここでの処理の詳細は、後で図３０、図３１などを使って説明する。
【０３０８】
なお、Ｓ４およびＳ５で使われる分割データは、上述した通り、分割データ生成手段４（Ｓ３）から直接得る場合もあるし、電子データ取得手段１（Ｓ１）から得られる電子データと、分割境界データ生成手段３（Ｓ３）から得られる分割境界データとから間接的に得る場合もある。
【０３０９】
以上のＳ１からＳ５の処理により、分割境界データ、分割データ、処理補助データ、依存関係データなどが生成される。
【０３１０】
（分割境界算出処理）
図２４は、図２３のＳ２の処理、すなわち電子データを分割データに分割する分割境界を算出する処理の一方法を説明するフローチャート図である。
【０３１１】
Ｐ１０を経たＳ２−１では、部分データサイズ判断手段９が、下記の指定最大データサイズを取得して、Ｓ２−２へ処理が進む。
【０３１２】
Ｓ２−２では、部分データサイズ判断手段９が、下記の指定標準データサイズを取得して、Ｓ２−３へ処理が進む。
【０３１３】
上記指定最大データサイズや指定標準データサイズは、１つあたりの分割データのサイズに関するパラメータである。すなわち、指定最大データサイズは、処理する装置の処理速度の高速化および省リソースの実現を妨げない観点で、許容される分割データの最大サイズである。また、指定標準データサイズは、分割データのサイズとして最も望ましいサイズであり、処理する装置の処理能力や処理の目的に応じて決められる。
【０３１４】
なお、指定最大データサイズや指定標準データサイズは、プログラム上で固定的に決められている場合もあるし、一部の方法や判断基準として使われる値（パラメータ）などをユーザーに指示される場合もある。
【０３１５】
ユーザーからの指示は、例えばディスプレイ７１上に表示された指示画面を見て、マウス７２、キーボード７８、ボタン７６、タブレット７３などの入力機器を使って行われる。図３は、指定最大データサイズ、指定標準データサイズを指定するウィンドウ表示の例である。
【０３１６】
Ｓ２−３では、カレント位置が存在するのか、すなわち電子データを全て読み込んでしまったかどうか、あるいはその後、ユーザー等から表示開始位置としてカレント位置の指定があったかどうかを判断し、存在しないと判断される場合は分割境界の算出が全て終了しているので、Ｐ２０へ処理が抜け、存在すると判断される場合はＳ２−４へ処理が進む。なお、最初の分割境界を求める時は、カレント位置は電子データの先頭に初期化されているとする。なお、Ｓ２−３の処理は汎用的で、動作主体となる手段は特に限定されないが、ここでは関連の強い手段７〜１２のいずれかとしておく。
【０３１７】
Ｓ２−４では、初期設定処理を行い、Ｓ２−５へ処理が進む。初期設定処理として、カレント位置を新たな分割データの開始位置（新たな分割境界）に設定し、標準内非依存境界候補、標準外非依存境界候補、および標準内依存境界候補の設定のクリアが行われる。なお、分割境界位置についても、最初の分割境界位置が求まる前の段階では、電子データの先頭に初期化されるものとする。
【０３１８】
ここでは「標準内」という言葉は、分割データの開始位置から指定標準データサイズ内の範囲を意味し、「標準外」という言葉は、（（分割データの開始位置）＋（指定標準データサイズ））から、（（分割データの開始位置）＋（指定最大データサイズ））までの範囲を意味する。
【０３１９】
また、「非依存境界候補」は、これから求めようとする分割境界で元の電子データを分割した場合に、分割が処理結果に影響を与えない分割境界の候補を意味し、「依存境界候補」は、分割が処理結果に影響を与える分割境界の候補を意味する。
【０３２０】
ここでは、標準内依存境界候補、標準外非依存境界候補、標準内非依存境界候補の順で望ましさが増すという判断基準にしておく。つまり、標準内で非依存境界が最も望ましい。この判断基準は、ユーザーが好みの設定にできるようにしてもよい。
【０３２１】
カレント位置、分割境界位置、標準内非依存境界候補、標準外非依存境界候補および標準内依存境界候補は、主記憶７４上などに一時的に記録しておく値である。これらは電子データ中の位置を指す。単位は、バイト数や文字数、単語数などが考えられる。
【０３２２】
なお、分割データの開始位置は、最初は当然電子データの先頭である。また、Ｓ２−４の動作主体となる手段は、Ｓ２−３同様、ここでは関連の強い手段７〜１２のいずれかとしておく。
【０３２３】
Ｓ２−５では、部分データサイズ判断手段９が、分割データの開始位置（分割境界位置）からカレント位置までのデータサイズが、指定標準データサイズを超えるかどうか判断し、超えると判断される場合はＳ２−６へ処理が進み、超えないと判断される場合はＰ１１を経てＳ２−１１へ処理が進む。
【０３２４】
Ｓ２−６では、影響判断手段２、標準内非依存境界抽出手段７が、分割データの開始位置からカレント位置までの間に、標準内非依存境界候補は存在するかどうか判断し、存在すると判断される場合はＳ２−７へ処理が進み、存在しないと判断される場合はＳ２−８へ処理が進む。これは、標準内非依存境界候補に、その存在を示す値が設定されているかどうかで判断できる。
【０３２５】
Ｓ２−７では、標準内非依存境界抽出手段７が、標準内非依存境界候補を新たな分割境界に設定し、Ｓ２−３へ処理が戻る。これにより、標準内非依存境界候補が、他の境界候補より優先的に分割境界に設定される。
【０３２６】
カレント位置が指定標準データサイズを超えたとき（Ｓ２−５）、その時点で標準内非依存境界候補が既に存在する（Ｓ２−６）のだから、指定標準データサイズ内に収まる非依存境界候補を見つけたことになり、一番望ましい状態である。新たな分割境界は、分割境界の配列に加えておく。
【０３２７】
なお、図２４のフローチャート図で説明される一連の処理では、カレント位置を進ませて、最初に見つかる標準内非依存境界候補を分割境界として設定している。仮に、カレント位置以降の場所で他の標準内非依存境界候補が見つかるとして、どちらの標準内非依存境界候補を分割境界とした方が、分割データのデータサイズが指定標準データサイズに近くなるかと言えば、当然、最初に見つかった標準内非依存境界候補となる。
【０３２８】
すなわち、これら一連の処理全体が、第１分割境界抽出手段１０であるとも言える。複数の標準内非依存境界候補を求めて、その中から分割データのデータサイズが指定標準データサイズに最も近くなる標準内非依存境界候補を分割境界として抽出しても良いが、図２４の処理の方が効率が良いので、ここではそれに沿って説明している。
【０３２９】
Ｓ２−８では、部分データサイズ判断手段９が、分割データの開始位置からカレント位置までのデータサイズが、指定最大データサイズを超えるかどうか判断し、超えると判断される場合はＳ２−９へ処理が進み、超えないと判断される場合はＰ１６を経てＳ２−１２へ処理が進む。
【０３３０】
Ｓ２−９では、影響判断手段２、標準外非依存境界抽出手段８、第２分割境界抽出手段１１、第３分割境界抽出手段１２が、（（分割データの開始位置）＋（指定標準データサイズ））から、（（分割データの開始位置）＋（指定最大データサイズ））までの範囲に、標準外非依存境界候補は存在するかどうか判断し、存在すると判断される場合はＳ２−１０へ処理が進み、存在しないと判断される場合はＳ２−１５へ処理が進む。これは、標準外非依存境界候補に、その存在を示す値が設定されているかどうかで判断できる。
【０３３１】
Ｓ２−１０では、標準外非依存境界抽出手段８が、標準外非依存境界候補を新たな分割境界に設定し、Ｓ２−３へ処理が戻る。
【０３３２】
（Ｓ２−８より）カレント位置が指定最大データサイズを超えたとき、（Ｓ２−９より）その時点で標準外非依存境界候補が既に存在するのだから、指定標準データサイズは超えるが、指定最大データサイズ内に収まる非依存境界候補を見つけたことになる。（Ｓ２−６より）標準内非依存境界候補が存在しないのだから、次善の策として、標準外非依存境界候補を分割境界とする。新たな分割境界は、分割境界の配列に加えておく。
【０３３３】
なお、ここでは、最初に見つかる標準外非依存境界候補を分割境界として設定しているが、Ｓ２−７同様、仮に、カレント位置以降の場所で他の標準外非依存境界候補が見つかるとして、分割データのデータサイズが指定標準データサイズに近いのは、最初に見つかる標準外非依存境界候補となり、これら一連の処理全体が、第２分割境界抽出手段１１であるとも言える。複数の標準外非依存境界候補を求めて、その中から分割データのデータサイズが指定標準データサイズに最も近くなる標準外非依存境界候補を分割境界として抽出しても良いが、図２４の処理の方が効率が良いので、ここではそれに沿って説明している。
【０３３４】
（Ｓ２−９で標準外非依存境界候補は存在しないと判断された）Ｓ２−１５では、第３分割境界抽出手段１２が、標準内依存境界候補を新たな分割境界に設定し、Ｓ２−３へ処理が戻る。
【０３３５】
（Ｓ２−８より）カレント位置が指定最大データサイズを超え、（Ｓ２−９より）標準外非依存境界候補も存在しないのだから、最後の手段として、指定標準データサイズは超えるが、指定最大データサイズ内に収まる依存境界候補を新たな分割境界に設定せざるを得ない。標準内依存境界候補に基づいて設定された分割境界の位置は、通常、前の分割境界位置に指定標準データサイズを加えた位置となる。これは、この位置まで、依存境界候補しか存在していないからである。新たな分割境界は、分割境界の配列に加えておく。
【０３３６】
（Ｓ２−５で指定標準データサイズを超えないと判断された）Ｓ２−１１では、影響判断手段２、標準内非依存境界抽出手段７および第３分割境界抽出手段１２が、前回のカレント位置から今回のカレント位置までの範囲で、標準内依存境界候補あるいは標準内非依存境界候補を探して、存在すれば設定し、Ｐ１５を経てＳ２−１３へ処理が進む。指定標準データサイズに満たないので、分割境界を設定するには至らず、まだ分割境界候補を探していればよい。ここでの処理の詳細は、後で図２５を使って説明する。
【０３３７】
（Ｓ２−８で指定最大データサイズを超えないと判断された）Ｓ２−１２では、影響判断手段２、標準外非依存境界抽出手段８が、前回のカレント位置から今回のカレント位置までの範囲で、標準外非依存境界候補を探して、存在すれば設定し、Ｐ１７を経てＳ２−１３へ処理が進む。カレント位置は指定標準データサイズを超えたが（Ｓ２−５）、標準内非依存境界候補は存在せず（Ｓ２−６）、指定最大データサイズには満たない（Ｓ２−８）ので、分割境界を設定するには至らず、まだ標準外非依存境界候補を探していればよい。ここでの処理の詳細は、後で図２６を使って説明する。
【０３３８】
Ｓ２−１３では、カレント位置を次の文字／単語／タグなどに進めて、Ｓ２−１４へ処理が進む。カレント位置の進め方は、電子データの種類や分割境界候補の探し方により、様々な方法が考えられる。また、ここでの処理は、Ｓ２−１１やＳ２−１２などの分割境界候補を探す処理の効率にも関わる。
【０３３９】
ここでは、タグと単語を単位として進めることにする。例えば、図４の電子データ４０６の冒頭の部分では、その単位が「＜ＨＴＭＬ＞」、「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞」、「Ｈｏｗ  」、「ｄｏｅｓ  」、「ＬＣＤ  」、「ｗｏｒｋｓ？」、「＜／ｆｏｎｔ＞」、「＜ｂｒ／＞」などとなる。日本語など、単語がスペースなどで別れていない文書データの場合、タグと、単語の変わりに一定の文字数までの塊とを単位とするとよい。
【０３４０】
なお、Ｓ２−１３の動作主体となる手段は、Ｓ２−３同様、ここでは関連の強い手段７〜１２のいずれかとしておく。
【０３４１】
Ｓ２−１４では、カレント位置が存在するのか、すなわち分割境界を求めるために電子データを全て読み込んでしまったかどうかを判断し、カレント位置が存在すると判断される場合はＳ２−５へ処理が戻り、存在しないと判断される場合はＳ２−９へ処理が進む。判断の処理は、Ｓ２−３と同じである。
【０３４２】
以上のＳ２−１からＳ２−１５の処理で、図２３のＳ２の処理、すなわち電子データを分割データに分割する分割境界を算出する処理を行うことができる。
【０３４３】
図２５は、図２４のＳ２−１１の処理、すなわち前回のカレント位置から今回のカレント位置までの範囲で、標準内依存境界候補あるいは標準内非依存境界候補を探して、存在すれば設定する処理の一方法を説明するフローチャート図である。
【０３４４】
前回のカレント位置から今回のカレント位置までの範囲に対する処理だが、ここではＳ２−１３でタグと単語を単位としているので、カレント位置について、標準内依存境界候補になり得るか、あるいは標準内非依存境界候補になり得るかを判断すれば良い。それ以外の場合は、電子データの種類などにもよるが、例えば、上記範囲中を１文字ずつなどの単位で判断を繰り返すなどする必要がある。
【０３４５】
Ｐ１１を経たＳ２−１１−１では、影響判断手段２が、カレント位置（場合によっては、加えてその前の位置）を分割境界とする場合、その分割境界の前後の分割データの処理結果に分割の影響が生じるかどうかを判断し、影響が生じると判断されればＳ２−１１−２へ処理が進み、影響が生じないと判断されればＳ２−１１−３へ処理が進む。
【０３４６】
なおここでは、カレント位置がタグの直後ならば、そのタグの直前も「カレント位置の前の位置」として、影響が生じるかどうかの判断の対象とする。これは、Ｐタグのようにその前の位置で強制改行させるタグが存在するからである。カレント位置がタグの直後でないならば、カレント位置だけを判断の対象とすればよい。
【０３４７】
影響が生じるかどうかは、電子データの種類などによって、様々なので、統一した判断方法はない。例えば、図４のＨＴＭＬデータの場合、改行されるかどうかが一つの判断基準となる。ここでは、Ｐタグの開始タグの前、Ｐタグの終了タグの後、ｂｒタグの後は、強制改行されるとして、その場所を分割境界とする場合は、影響が生じない、つまり非依存境界候補であると判断し、それ以外の位置は依存境界候補であると判断する。
【０３４８】
例えば、「＜ＨＴＭＬ＞」、「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞」、「Ｈｏｗ  」、「ｄｏｅｓ  」、「ＬＣＤ  」、「ｗｏｒｋｓ？」、「＜／ｆｏｎｔ＞」、「＜ｂｒ／＞」、「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞」、「＜Ｐ＞」、「Ｌｉｑｕｉｄ」、「Ｃｒｙｓｔａｌ」の順でカレント位置が変わるとすると、影響が生じない位置は、「＜ｂｒ／＞」の後、「＜Ｐ＞」の前の２個所となる。それ以外の位置は、すべて影響が生じる。
【０３４９】
より具体的には、強制改行されない位置を分割境界に設定して、その分割境界での分割によって生成された前後の分割データから、この順に単独で表示レイアウトを生成する処理を行ったとする。この場合、後の分割データは、単独処理の結果として行頭からレイアウトされるため、前の分割データの末尾に不所望な改行という分割の影響が表れる。したがって、上記の例では、「＜ｂｒ／＞」の後、「＜Ｐ＞」の前の２個所以外の位置は、依存境界候補であると判断することになる。
【０３５０】
なお、ＨＴＭＬタグは、単なる宣言の意味しかないので、ここでは無視して、分割境界の候補とはしないことにする。
【０３５１】
（Ｓ２−１１−１で影響が生じると判断された）Ｓ２−１１−２では、第３分割境界抽出手段１２が、カレント位置（場合によっては、加えてその前の位置）を標準内依存境界候補に設定し、Ｐ１５を経て処理を抜ける。カレント位置は指定標準データサイズを超えていないので（Ｓ２−５）、標準内であり、影響を生じるので、依存境界候補となる。
【０３５２】
（Ｓ２−１１−１で影響が生じないと判断された）Ｓ２−１１−３では、標準内非依存境界抽出手段７が、カレント位置（場合によっては、加えてその前の位置）を標準内非依存境界候補に設定し、Ｐ１５を経て処理を抜ける。カレント位置は指定標準データサイズを超えていないので（Ｓ２−５）、標準内であり、影響を生じないので、非依存境界候補となる。
【０３５３】
以上のＳ２−１１−１からＳ２−１１−３の処理で、図２４のＳ２−１１の処理、すなわち前回のカレント位置から今回のカレント位置までの範囲で、標準内依存境界候補あるいは標準内非依存境界候補を探して、存在すれば設定する処理を行うことができる。
【０３５４】
なお、Ｓ２−１１−２、Ｓ２−１１−３では、標準内依存境界候補や標準内非依存境界候補が既に設定されていても、上書きして設定している。これにより、指定標準データサイズにできるだけ近い位置の標準内依存境界候補や標準内非依存境界候補を求めることができるという効果が出てくる。
【０３５５】
図２６は、図２４のＳ２−１２の処理、すなわち前回のカレント位置から今回のカレント位置までの範囲で、標準外非依存境界候補を探して、存在すれば設定する処理の一方法を説明するフローチャート図である。
【０３５６】
Ｐ１６を経たＳ２−１２−１では、影響判断手段２が、カレント位置（場合によっては、加えてその前の位置）を分割境界とする場合、その分割境界の前後の分割データの処理結果に分割の影響が生じるかどうかを判断し、影響が生じると判断されればＰ１７を経て処理を抜け、影響が生じないと判断されればＳ２−１２−２へ処理が進む。ここでの判断の処理は、Ｓ２−１１−１の判断の処理と同じである。
【０３５７】
なお、影響が生じると判断される時、「標準外依存境界候補」とすることもできるが、標準外依存境界候補を分割境界として使うのなら、標準内依存境界候補を使った方が、処理の高速化および省リソースの観点で良い場合が多いので、ここでは特に「標準外依存境界候補」の設定をしていない。
【０３５８】
Ｓ２−１２−２では、標準外非依存境界抽出手段８が、カレント位置（場合によっては、加えてその前の位置）を標準外非依存境界候補に設定し、Ｐ１７を経て処理を抜ける。カレント位置は指定標準データサイズを超えているので（Ｓ２−５）、標準外であり、影響を生じないので、非依存境界候補となる。
【０３５９】
以上のＳ２−１２−１からＳ２−１２−２の処理で、図２４のＳ２−１２の処理、すなわち前回のカレント位置から今回のカレント位置までの範囲で、標準外非依存境界候補を探して、存在すれば設定する処理を行うことができる。
【０３６０】
なお、Ｓ２−１２−２では、標準外非依存境界候補が既に設定されている場合、上書きして設定しても良いが、上書きしないようにする方が良い。その方が、指定標準データサイズにできるだけ近い位置の標準外非依存境界候補を求めることができるという効果が出てくる。
【０３６１】
なお、上述した処理で、カレント位置が指定標準データサイズや指定最大データサイズを超えるかどうかを判断しているが、例えば、指定標準データサイズに加えて所定量を超えない範囲という判断基準にしてもよい。これは、指定標準データサイズを所定量大きくして、それを超えないという判断基準と同じである。
【０３６２】
また、例えば、指定標準データサイズの前後の所定量の範囲に収まるかどうかなどの判断基準などにしてもよい。これにより、分割データの大きさを揃え易くなるという利点が出てくる。つまり、分割データを利用する際に、極端に大きな分割データや極端に小さな分割データが少なくなるので、処理量が平準化されるという利点が出てくる。
【０３６３】
（処理補助データ生成処理）
図２７は、図２３のＳ４の処理、すなわち分割データを使って、処理補助データを生成する処理の一方法を説明するフローチャート図である。各ステップでの動作主体は、全て、処理補助データ生成手段５なので、各ステップの説明では、動作主体の記述を省く。
【０３６４】
Ｐ３０を経たＳ４−１では、最初の分割データをカレント分割データに設定して、Ｓ４−２へ処理が進む。カレント分割データは、主記憶７４や外部記憶７５上などに記録しておく。
【０３６５】
Ｓ４−２では、以下で説明するカレント開始タグリストをカレント分割データの開始タグ文字列に設定し、Ｓ４−３へ処理が進む。
【０３６６】
図２８は、カレント開始タグリストおよびカレント終了タグリストのデータ構造を説明する説明図である。カレント開始タグリストは、カレント分割データの前に存在している分割データから効力を引き継ぐべき開始タグデータ（文字列）の配列である。また、カレント開始タグリストを生成するための開始タグデータの入出力は、ファースト・イン・ラスト・アウトの形態を取るため、そのデータ構造はスタック構造である。
【０３６７】
一方、終了タグリストは、カレント分割データにとって、効力が持続中の開始タグデータと対をなす終了タグデータ（文字列）の配列であり、カレント開始タグリストと同様に、データ構造はスタック構造である。
【０３６８】
なお、最初は、カレント開始タグリストおよび終了タグリストはどちらも空である。
【０３６９】
生成したカレント開始タグリストからカレント分割データの一連の開始タグデータを生成するには、カレント開始タグリストの最初の開始タグデータから最後の開始タグデータまで順番につなげて文字列を生成すればよい。カレント開始タグリストはスタック構造なので、例えば、図２８に示すカレント開始タグリストの場合、一番下の最初の開始タグデータ３１０から、開始タグデータ３１１、３１２の順に読み込む。
【０３７０】
例えば、カレント分割データが、図７に示す最初の分割データ４００の場合、その前に分割データは存在していないので、カレント開始タグリストは空である。従って、Ｓ４−２として、空のカレント開始タグリストを、分割データ４００の開始タグ文字列に設定するから、開始タグ文字列（図２９の処理補助データ１３１）は空文字列となる。
【０３７１】
図２８の開始タグデータ３１０〜３１２は、分割データ４０１をカレント分割データとしてＳ４−２を処理する時の、カレント開始タグリストの状態を示している。このときのカレント開始タグリストは、カレント分割データが分割データ４００であったときに作成されたものである。すなわち、分割データ４０１が分割データ４００から効力を引き継ぐべき開始タグデータとして、分割データ４００内に終了タグデータが存在していない開始タグデータを、処理補助データ生成手段５が選別した結果、分割データ４００に関する上記カレント開始タグリストが得られる。
【０３７２】
こうして、開始タグデータ３１０〜３１２を繋げた分割データ４００に関するカレント開始タグリストを、現在のカレント分割データである分割データ４０１の開始タグ文字列に設定するから、開始タグ文字列（図２９の処理補助データ１３３）は、「＜ＨＴＭＬ＞＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞＜Ｐ＞」となる。
【０３７３】
Ｓ４−３では、カレント分割データ中のタグで、カレント開始タグリストを更新して、Ｓ４−４へ処理が進む。そのときの更新処理は、開始タグデータの削除と追加である。追加処理としては、カレント分割データを最初から順に「パース」し、開始タグが現れたら、その開始タグから開始タグデータを生成し、生成した開始タグデータをカレント開始タグリストに追加する。なお、「パース」とは、ここではカレント分割データの文字列を読み込んで、開始タグや終了タグ、ＴＥＸＴを区別することを意味する。
【０３７４】
また、削除処理としては、上記の「パース」中に、終了タグが現れたら、カレント開始タグリスト中の最後の開始タグデータを削除する。
【０３７５】
ＸＨＴＭＬデータやＸＭＬデータは、前述のとおり階層構造を有しているので、開始タグと終了タグは必ず対応している。また、対応する開始タグと終了タグの区間が、他の対応する開始タグと終了タグの区間と部分的に重なることはなく、重なる場合は区間全体が重なる、すなわち包含関係（親子関係）しか取れないことになっている。
【０３７６】
ＸＨＴＭＬデータやＸＭＬデータは上記のような構造を持っており、また、カレント開始タグリストはスタック構造なので、パース中に現れた終了タグに対応する開始タグは、必ず最後に追加した開始タグデータとなっているはずである。
【０３７７】
上記の削除処理、追加処理は、パース処理を進めながら、同時に行われる。
【０３７８】
例えば、分割データ４００の場合、タグだけを抜き出してみると、「＜ＨＴＭＬ＞」、「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞」、「＜／ｆｏｎｔ＞」、「＜ｂｒ／＞」、「＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞」、「＜Ｐ＞」が取り出される。
【０３７９】
最初は、カレント開始タグリストは空である。
【０３８０】
その状態で、まず、ＨＴＭＬタグの開始タグが現れるので、「“＜ＨＴＭＬ＞”」の開始タグ文字列を持つ開始タグデータ３１０が生成され、カレント開始タグリストに追加される。この時点のカレント開始タグリストは、開始タグデータ３１０だけである。
【０３８１】
次に、ｆｏｎｔタグの開始タグが現れるので、「“＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞“」の開始タグ文字列を持つ開始タグデータ３１１が生成され、カレント開始タグリストに追加される。なお、図２８は分割データ４００を処理し終えた状態であり、削除処理が実行されているので、開始タグデータ３１１の内容は、ここでの説明とは変わっている。この時点のカレント開始タグリストは、開始タグデータ３１０、３１１の２つである。
【０３８２】
次に、上記ｆｏｎｔタグの終了タグが現れるので、カレント開始タグリストに最後に追加された開始タグデータ３１１が削除される。この時点のカレント開始タグリストは、開始タグデータ３１０だけに戻る。
【０３８３】
次に、ｂｒタグが現れるが、これは空タグで、開始タグと終了タグが一緒になっているので、ここでは何も処理しない。追加、削除の処理を行ってもよいが、結果は同じである。この時点のカレント開始タグリストは、開始タグデータ３１０だけである。
【０３８４】
次に、上記と別のｆｏｎｔタグの開始タグが現れるので、「“＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞”」の開始タグ文字列を持つ開始タグデータ３１１が生成され、カレント開始タグリストに追加される。この時点のカレント開始タグリストは、開始タグデータ３１０、３１１の２つである。
【０３８５】
最後に、Ｐタグの開始タグが現れるので、「“＜Ｐ＞”」の開始タグ文字列を持つ開始タグデータ３１２が生成され、カレント開始タグリストに追加される。この時点のカレント開始タグリストは、開始タグデータ３１０、３１１、３１２の３つである。
【０３８６】
これで、図２８の開始タグデータ３１０〜３１２が生成される。
【０３８７】
Ｓ４−４では、カレント分割データ中のタグで、カレント終了タグリストを更新して、Ｓ４−５へ処理が進む。
【０３８８】
ここでの処理は、Ｓ４−３の処理と似ており、終了タグデータの削除と追加である。
【０３８９】
Ｓ４−３では、終了タグが現れたら、カレント開始タグリスト中の最後の開始タグデータを削除していたが、Ｓ４−４でも同様に、終了タグが現れたら、カレント終了タグリスト中の最後の終了タグデータを削除する。
【０３９０】
また、Ｓ４−３では、開始タグが現れたら、その開始タグを持つ開始タグデータを生成して追加していたが、Ｓ４−４でも同様に、開始タグが現れたら、その開始タグに対応する終了タグ文字列を生成し、その終了タグ文字列を持つ終了タグデータを生成して追加する。開始タグに対応する終了タグ文字列を生成する所が少し異なる。
【０３９１】
例として、Ｓ４−３で使った分割データ４００のタグを使って、説明する。
【０３９２】
最初は、カレント終了タグリストは空である。
【０３９３】
この状態で、まず、ＨＴＭＬタグの開始タグが現れるので、対応する終了タグ文字列「“＜／ＨＴＭＬ＞”」を生成し、生成した終了タグ文字列を持つ終了タグデータ３２０が生成され、カレント終了タグリストに追加される。この時点のカレント終了タグリストは、終了タグデータ３２０だけである。
【０３９４】
次に、ｆｏｎｔタグの開始タグが現れるので、「“＜／ｆｏｎｔ＞”」の終了タグ文字列を持つ終了タグデータ３２１が生成され、カレント終了タグリストに追加される。この時点のカレント終了タグリストは、終了タグデータ３２０、３２１の２つである。
【０３９５】
次に、ｆｏｎｔタグの終了タグが現れるので、カレント終了タグリストに最後に追加された終了タグデータ３２１が削除される。この時点のカレント終了タグリストは、終了タグデータ３２０だけに戻る。
【０３９６】
次に、ｂｒタグが現れるが、これは空タグで、開始タグと終了タグが一緒になっているので、ここでは何も処理しない。追加、削除の処理を行ってもよいが、結果は同じである。この時点のカレント終了タグリストは、終了タグデータ３２０だけである。
【０３９７】
次に、上記と別のｆｏｎｔタグの開始タグが現れるので、「“＜／ｆｏｎｔ＞”」の終了タグ文字列を持つ終了タグデータ３２１が生成され、カレント終了タグリストに追加される。この時点のカレント終了タグリストは、終了タグデータ３２０、３２１の２つである。
【０３９８】
最後に、Ｐタグの開始タグが現れるので、「“＜／Ｐ＞”」の終了タグ文字列を持つ終了タグデータ３１２が生成され、カレント終了タグリストに追加される。この時点のカレント終了タグリストは、終了タグデータ３２０、３２１、３２２の３つである。
【０３９９】
これで、図２８の終了タグデータ３２０〜３２２が生成される。
【０４００】
なお、Ｓ４−３とＳ４−４の処理は、ここでは説明を分かりやすくする為に別々にパースするように説明したが、１回のパースで両方の処理を同時に行う方が処理効率が良い。
【０４０１】
Ｓ４−５では、カレント終了タグリストをカレント分割データの終了タグ文字列に設定し、Ｓ４−６へ処理が進む。
【０４０２】
カレント終了タグリストからカレント分割データの終了タグ文字列を生成するには、カレント終了タグリストの最後の終了タグデータから最初の終了タグデータまで順番につなげて文字列を生成すればよい。カレント終了タグリストはスタック構造なので、例えば、図２８の場合、一番上の最後の終了タグデータ３２２から、終了タグデータ３２１、３２０の順に読み込む。
【０４０３】
例えば、カレント分割データが最初の分割データ４００の場合、カレント終了タグリストは、図２８の終了タグデータ３２０〜３２２となっている。そこで、処理補助データ生成手段５が、終了タグデータ３２２、３２１、３２０の順に繋ぐことにより、終了タグ文字列（図２９の処理補助データ１３２）は、「＜／Ｐ＞＜／ｆｏｎｔ＞＜／ＨＴＭＬ＞」となる。
【０４０４】
Ｓ４−６では、カレント分割データの次の分割データが存在するかどうか判断し、存在すると判断されればＳ４−７へ処理が進み、存在しないと判断されれば、Ｐ４０（図２３）へ処理が抜ける。
【０４０５】
Ｓ４−７では、カレント分割データを次の分割データに設定し、Ｓ４−２へ処理が戻る。
【０４０６】
ここで、もう少し具体例を確認しておくと、例えば、分割データ４０１・４０２は、プレーンテキストデータのみから成るので、図２８に示すカレント開始タグリストに対し、分割データ４０１・４０２に基づいて追加または削除される開始タグは存在しない。従って、分割データ４０１・４０２の各処理補助データ１３３・１３５は、分割データ４００から読み込まれた開始タグのみで構成されている。
【０４０７】
分割データ４０１・４０２の各処理補助データ１３４・１３６についても、分割データ４００から生成された終了タグの処理補助データ１３２と同一内容になっている。
【０４０８】
一方、分割データ４０３の開始タグに関する処理補助データ１３７の場合、分割データ４０３からＰタグの終了タグが読み込まれるので、Ｐタグの開始タグデータ３１２が削除される。また、分割データ４０３の終了タグに関する処理補助データ１３８についても、Ｐタグの終了タグデータ３２２が削除される。
【０４０９】
以上のＳ４−１からＳ４−７の処理によって、図２３のＳ４の処理、すなわち分割データを使って、処理補助データを生成する処理を行うことができる。
【０４１０】
（依存関係データ生成処理〜その１）
図３０は、図２３のＳ５の処理、すなわち、各手段７、８、１０〜１２から得られる分割境界データを使って、依存関係データを生成する処理の一方法を説明するフローチャート図である。各ステップでの動作主体は、全て、依存関係データ生成手段６なので、各ステップの説明では、動作主体の記述を省く。
【０４１１】
ここでは、分割データの処理結果間の影響は、表示レイアウトを作成する方向が電子データの前から後ろに向かう方向であるため、前の分割データから後の分割データの方向に影響するとしている。この方向が最も一般的であるが、もし、後の分割データから前の分割データの方向に影響する電子データの場合は、ここでの説明を逆にすればよい。また、両方向ありえる場合は、両方向とも処理するようにすればよい。
【０４１２】
Ｐ４０を経たＳ５Ａ−１では、最初の分割データの依存関係を「非依存」に設定し、最初の分割データをカレント分割データに設定して、Ｓ５Ａ−２へ進む。影響の及ぶ方向は、前から後の方向なので、最初の分割データは、その前に分割データが存在していないため、当然、影響を受けない為である。
【０４１３】
「非依存」か「依存」かの情報は、例えば、図８のように、「０」、「１」という値で記録してもよい。
【０４１４】
Ｓ５Ａ−２では、カレント分割データの次の分割データが存在するかどうか判断し、存在すると判断されればＳ５Ａ−３へ処理が進み、存在しないと判断されれば、Ｐ５０を経て処理が抜け、本発明のデータ生成方法に関する全ての処理が終了する。
【０４１５】
Ｓ５Ａ−３では、カレント分割データの次の分割データを、新たなカレント分割データに設定し、Ｓ５Ａ−４へ処理が進む。
【０４１６】
Ｓ５Ａ−４では、カレント分割データとその前の分割データとの分割境界は、その属性が「非依存」かどうかを判断し、「非依存」と判断されれば、Ｓ５Ａ−５へ処理が進み、「非依存」ではない（すなわち「依存」）と判断されれば、Ｓ５Ａ−６へ処理が進む。
【０４１７】
「非依存」であるか、「依存」であるかの情報は、図２３のＳ２で、分割境界を作成する際に得ることができる。具体的には、図２４のＳ２−７で標準内非依存分割境界候補を分割境界とした場合、あるいはＳ２−１０で標準外非依存分割境界候補を分割境界とした場合は、その分割境界の属性は「非依存」である。その一方で、Ｓ２−１５で、標準内依存分割境界候補を分割境界とした場合、その分割境界の属性は「依存」である。
【０４１８】
なお、分割境界データ等、本発明の方法によって生成される各種データのファイル保存に関しては、後述する。
【０４１９】
Ｓ５Ａ−５では、カレント分割データの依存関係データを「非依存」に設定して、Ｓ５Ａ−２へ処理が戻る。
【０４２０】
Ｓ５Ａ−６では、カレント分割データの依存関係データを「依存」に設定して、Ｓ５Ａ−２へ処理が戻る。
【０４２１】
以上のＳ５Ａ−１からＳ５Ａ−６の処理で、図２３のＳ５の処理、すなわち、各手段７、８、１０〜１２から得られる分割境界データを使って、依存関係データを生成する処理を行うことができる。
【０４２２】
分割データ４００〜４０５の場合、分割データ４０１と分割データ４０２の分割境界、分割データ４０２と分割データ４０３の分割境界が、改行で分割されていないので、その属性「依存」となっており、図８の処理補助データ１４０〜１４５のような結果となる。
【０４２３】
（依存関係データ生成処理〜その２）
図３１は、図２３のＳ５の処理、すなわち、各手段７、８、１０〜１２から得られる分割境界データを使って、別形態の依存関係データを生成する処理の一方法を説明するフローチャート図である。上記別形態の依存関係データとは、図９に示すように、着目している分割データの処理結果が影響を受ける最前の分割データを示すデータのことである。
【０４２４】
各ステップでの動作主体は、全て、依存関係データ生成手段６なので、各ステップの説明では、動作主体の記述を省く。また、影響の方向に関して、図３０での説明同様、ここでは、前から後の分割データの方向について説明する。
【０４２５】
Ｐ４０を経たＳ５Ｂ−１では、最初の分割データの「最前依存分割データ」を分割データ自身に設定し、最初の分割データをカレント分割データに設定して、Ｓ５Ｂ−２へ処理が進む。最前依存分割データは、自分自身の場合は、空データとしてしまう仕様でもよいが、ここでは一応、自分自身を設定しておくとする。
【０４２６】
Ｓ５Ｂ−２では、最初の分割データを「ターゲット分割データ」に設定して、Ｓ５Ｂ−３へ処理が進む。「ターゲット分割データ」とは、現在の最前依存分割データを意味する。
【０４２７】
Ｓ５Ｂ−３では、カレント分割データの次の分割データが存在するかどうか判断し、存在すると判断されればＳ５Ｂ−４へ処理が進み、存在しないと判断されれば、Ｐ５０を経て処理が抜け、全ての処理が終了する。ここでの処理は、Ｓ５Ａ−２と同様である。
【０４２８】
Ｓ５Ｂ−４では、カレント分割データの次の分割データを、新たなカレント分割データに設定し、Ｓ５Ｂ−５へ処理が進む。ここでの処理は、Ｓ５Ａ−３と同様である。
【０４２９】
Ｓ５Ｂ−５では、カレント分割データとその前の分割データとの分割境界の属性は、「非依存」かどうかを判断し、「非依存」と判断されれば、Ｓ５Ｂ−６へ処理が進み、「非依存」ではない（すなわち「依存」）と判断されれば、Ｓ５Ｂ−７へ処理が進む。ここでの処理は、Ｓ５Ａ−４と同様である。
【０４３０】
Ｓ５Ｂ−６では、カレント分割データをターゲット分割データに設定し、Ｓ５Ｂ−７に処理が進む。すなわち、Ｓ５Ｂ−５で、カレント分割データとその前の分割データとの分割境界が「非依存」と判断されたということは、依存関係がこの分割境界の位置でリセットされたことを意味するので、カレント分割データの最前依存分割データは自分自身になる為である。
【０４３１】
なお、Ｓ５Ｂ−５からＳ５Ｂ−７へ処理が進む時、すなわち前記分割境界の属性が「依存」の時は、最前依存分割データは変わらず、カレント分割データに引き継がれることになる。
【０４３２】
従って、Ｓ５Ｂ−７では、カレント分割データの最前依存分割データを、その時点で最前依存分割データとして特定されているターゲット分割データに設定し、Ｓ５Ｂ−３へ処理が戻る。
【０４３３】
以上のＳ５Ｂ−１からＳ５Ｂ−７の処理で、図２３のＳ５の処理、すなわち、各手段７、８、１０〜１２から得られる分割境界データを使って、別形態の依存関係データを生成する処理を行うことができる。
【０４３４】
分割データ４００〜４０５の場合、分割データ４０１と分割データ４０２の分割境界、分割データ４０２と分割データ４０３の分割境界が、改行で分割されていないので、属性が「依存」となっている。このため、図９の処理補助データ１５０〜１５５のように、分割データ４０２、４０３に対応する処理補助データ１５２・１５３が、それより前の分割データ４０１を指し、それ以外の処理補助データは、自分自身の分割データを指すという意味の値となっている。
【０４３５】
（データ記録ファイルの形式）
次に、本発明のデータ生成方法によって生成したこれら分割データ、分割境界データ、処理補助データ、依存関係データなどを、実際にファイルなどの形式で主記憶７４上や外部記憶７５上などに記録する際の形式について説明する。
【０４３６】
まず、電子データと分割データ、分割境界データなどの関係について概略を説明する。なお、分割データ、分割境界データ、処理補助データ、依存関係データなどの細かいファイル構造については、後で図を使って説明する。
【０４３７】
既に説明したように、分割データを得るには、分割境界データを使って、電子データ（ファイル）中から必要な分割データを必要になったときに抜き出してくる方法と、算出した分割境界のデータ位置で電子データを分割して生成した分割データをファイルなどの単位で記録しておき、各ファイルから分割データを直接読み出す場合と、大きく２つの方法がある。
【０４３８】
図３２は、前者の方法で使われるファイルのデータ構造を説明する説明図である。ここでは、電子データファイル１００と分割境界データ配列ファイル１１０との２つのファイルが作成される。分割境界データ配列ファイル１１０には、分割境界データ１１１〜１１７が記録されている。電子データファイル１００の分割境界のデータ位置は、分割境界データ１１１〜１１７によって求められる。すなわち、分割境界データ１１１〜１１７を用いることにより、図３２に示すように、電子データファイル１００から、ヘッダデータ１０１、分割データ４００〜４０５を任意に抜き出すことができる。
【０４３９】
分割境界データ１１１は電子データファイル１００中のヘッダデータ１０１と分割データ４００との分割境界の位置を表している。分割境界データ１１２は電子データファイル１００中の分割データ４００と分割データ４０１との分割境界の位置を表している。同様に、分割境界データ１１３〜１１６は、それぞれ対応する分割境界の位置を表している。分割境界データ１１７は、分割データ４０５の最後の位置を表している。
【０４４０】
なお、図３２のファイル構造は、必ずこの構造でないといけないということではなく、典型的なファイル構造の一つを例としてあげているだけである。例えば、ヘッダデータ１０１を分割データ４００の前に配置しているが、ヘッダデータが必要かどうかは、電子データの種類やその利用目的によって異なる。ヘッダデータには、電子データの種類（フォーマット）やバージョン情報、内部の各種データへのアクセス方法、著作権情報、暗号化されている場合は暗号情報などが含まれることが多い。また、分割データや分割境界データも図３２のように並んで配置しないといけないという訳ではなく、間隔が空いていても、それを知る情報がヘッダデータや分割境界データなどから得られれば問題ない。
【０４４１】
以上のようにして、分割境界データを使って、電子データファイル中から必要な分割データを得ることができる。この分割データ取得方法の場合、分割境界データさえファイルなどで作成しておけば、電子データファイルをそのまま使うことができる利点がある。例えば、図３に示すようなウィンドウを呼び出して、分割データのサイズを変更する場合でも、分割境界データを算出し直すだけでよいので、処理の高速化に都合が良い。
【０４４２】
図３３は、分割データを得る後者の方法、すなわち、各ファイルから分割データを直接読み出す方法で使われる分割データのファイルの構造を説明する説明図である。
【０４４３】
ヘッダデータ１０１、分割データ４００〜４０５は、ファイル１２０〜１２６として、それぞれファイルとして記録されている。後は、どの分割データがどのファイルに対応しているかの情報さえ得られればよい。
【０４４４】
一般に、ファイルはファイル名で区別されることが多いので、例えば、各分割データのファイル名が得られれば良い。その場合、例えば、各分割データのファイル名は、ヘッダデータ１０１のファイル１２０などに別途記録しておくとか、ファイル名の命名規則を決めておくなどの方法が考えられる。
【０４４５】
図３４は、分割データの各ファイルのファイル名をＸＭＬ形式で記録している例である。図３４の「分割データリスト」部分、すなわちＤｉｖｉｄｅｄＦｉｌｅＬｉｓｔタグ以下の階層で、これらのファイル名を記録している。ＤｉｖｉｄｅｄＦｉｌｅＬｉｓｔタグの下のｆｉｌｅタグのｎａｍｅ属性で、ファイル名を記録している。ｆｉｌｅタグの順番が分割データの順である。
【０４４６】
また、図３４では、各分割データのファイルのデータを、同じファイル中に「各ファイルのデータ」として記録しているが、同じファイル中に記録せず、後で説明する図４０のように、独立したファイルとして記録してもよい。
【０４４７】
以上のようにして、各ファイルから分割データを直接読み出すことができる。分割境界データを使って、一部のファイルを読むなどという処理が必要なく、処理を単純化することができる利点がある。また、分割データのサイズを変更する頻度が少ない形態では、既に記録済みの分割データを読み出すだけでよく、表示レイアウト等の処理結果を得ようとする毎に、分割データを生成する必要がないので、処理の高速化に都合が良い。
【０４４８】
次に、分割データ、分割境界データ、処理補助データ、依存関係データなどの細かいファイル構造について説明する。
【０４４９】
ファイルへの記録の仕方や構造は色々考えられるが、例えば、テキストデータで記述するか、バイナリデータで記述するか、という観点もある。データを８ビットからなる１バイト単位の文字コードで表現する場合、テキストデータは、一般に英数字や一部の記号などの１００個前後の文字コードだけからなり、バイナリデータはそれ以外の残りの文字（表現／印刷できない制御コードなど）も含めた全２５６個の文字コードからなる。
【０４５０】
テキストデータは、人間が見て理解することができ、エディタアプリケーションなどで編集することができるので、扱い易いという利点がある。但し、使える文字コードが制限されている為、同じ情報量を記述するのに、バイナリデータと比べて、データサイズが大きくなりやすいという欠点もある。逆にバイナリデータは、扱いにくいが、データサイズを小さくしやすい利点がある。
【０４５１】
以降の説明では、同じ情報を、テキストデータとバイナリデータの両方の形式で示すことにする。
【０４５２】
図３６は、電子データをファイルに記録する際のバイナリ形式のファイル構造例を説明する説明図である。
【０４５３】
図中の各矩形は、数字あるいは文字列のデータである。ここでは説明の為、数字だけからなる矩形は固定長の数字データ、「“」「”」で囲まれている文字列は可変長の文字列データ、「“」「”」で囲まれていない文字列は固定長の文字列データ、括弧で囲まれたデータは可変長のバイナリデータとする。
【０４５４】
ここでは、バイナリデータのファイル構造として、「チャンク構造」を使っている。「チャンク」とは、データの塊であり、通常、そのチャンクのデータサイズや、データの種類を示す識別文字列などが先頭に記録されている。チャンクの集まりからなる構造が「チャンク構造」である。なお、以降の説明では、「Ａのチャンク構造データ」を省略して、「Ａチャンクデータ」あるいは「Ａチャンク」と呼ぶことがある。
【０４５５】
チャンク構造の利点として、データアクセスの高速化、データ構造の柔軟性があげられる。例えば、ある種類のデータだけを得たい場合、先頭から順にチャンクデータを調べていく。各チャンクデータの先頭部分に記載されている識別文字列を見て、目的の種類のデータならば、そのデータサイズ分を読み込めばよく、目的の種類のデータでないならば、そのデータサイズ分をスキップして読み飛ばし、次のチャンクデータを調べればよい。これにより、目的のチャンクデータへのデータアクセスが高速化される。
【０４５６】
また、読み飛ばすチャンクデータに関しては、チャンクデータの内部構造を知っている必要はないので、ファイル構造、すなわち全てのチャンクデータの構造を全て知らないと全く処理ができないということはなく、知っているチャンクデータだけは処理できる。従って、ファイル構造の変化に対して強く、柔軟に処理することができる利点がある。
【０４５７】
図３６の電子データファイルでは、まず先頭にファイル識別文字列１８０がある。ここでは、「ＭＡＩＮＤＡＴＡ＿Ｖ1．００」としている。ここでは、「ＭＡＩＮＤＡＴＡ」の部分は、このファイルの種類が「電子データ」であることを示し、「Ｖ1．００」は、ファイル構造のバージョンを意味するとする。なお、ここではバージョンを識別文字列に含めてしまっているが、数字データとして記録してもよい。
【０４５８】
ファイル構造は後で変える必要が出てくることがある為、このように、ファイルの種類だけでなく、バージョン情報も入れることで、柔軟な処理がし易くなる。例えば、処理系がファイル構造を知っているバージョン番号と比較して、新しいバージョン番号を持つ電子データの時は、処理を中止したり、ユーザーに処理を続けるかどうか問い合わせたりといった処理が可能となる。
【０４５９】
ファイル識別文字列１８０の後、チャンク識別文字列１８１から暗号情報１８３までが「暗号情報チャンク」（暗号情報のチャンクデータ）となっている。ここでは、チャンクデータは、最初に３文字の固定文字列からなるチャンク識別文字列１８１があり、次に４バイトの数字データからなるチャンクデータサイズ１８２、その後に各チャンクの内部データが続く。チャンクデータサイズは、ここでは、内部データのサイズを表すとする。
【０４６０】
暗号情報チャンクの場合、チャンク識別文字列１８１が「ＥＣＰ」、チャンクデータサイズ１８２が「４」、内部データである暗号情報１８３が固定長文字列「ＮＯＮＥ」である。暗号情報１８３は固定長文字列で、文字列長は４文字なので、チャンクデータサイズ１８２は「４」となっている。なお、ここではデータサイズの単位として、「バイト」を使っている。
【０４６１】
暗号情報チャンクは、ここでは以降のデータの暗号化方法などの情報を示すとする。ここでは、説明を簡単にする為、「ＮＯＮＥ」、すなわち暗号化されないとしておく。
【０４６２】
暗号情報チャンクの次は、ファイルリストチャンクが続く。ここでは、電子データとしてＨＴＭＬデータを使う例だが、本文のＨＴＭＬデータだけでなく、画像データや音声データなどのデータも別途必要だとする。これらのデータの場所を示す為にファイルリストチャンクを使っている。
【０４６３】
ファイルリストチャンクの内部データでは、リスト数１８６がファイルリストの個数を表し、その後、各ファイルリストのデータが３つ続く。ファイルリストは、「ファイル位置データ」と「ファイル名」からなる。「ファイル名」は、各データのファイル名を指し、「ファイル位置データ」は、そのファイル名のデータの存在するデータチャンクの位置を表す。なお、ここでいう「ファイル名」は、電子データ内部で使われるいわば「内部ファイル名」である。
【０４６４】
ここでは、３つの内部ファイル、「ＭＡＩＮ．ＨＴＭＬ」、「ＩＭＡＧＥ１．ＰＮＧ」、「ＳＯＵＮＤ１．ＷＡＶ」があり、それぞれ８０バイト目、８７５バイト目、１０３４バイト目から始まるファイルデータチャンクに各内部ファイルのデータが記録されていることになる。
【０４６５】
ファイルリストチャンクの後は、各内部ファイルのデータチャンクが続く。ファイルデータチャンクの内部データは、上記３つの内部ファイルのデータそのものである。
【０４６６】
図３６の電子データを処理する際は、まずファイルの種類やバージョンをファイル識別文字列１８０で確認し、暗号情報チャンクで、以降のデータの暗号方法などの情報を得る。そして、その暗号方法に従い、後のデータを解釈する。
【０４６７】
次に、ファイルリストチャンクを読み込んで解釈する。例えば、ファイルリストの先頭のファイルが、主となるＨＴＭＬファイルだと決めておくとする。そして、主となるＨＴＭＬファイルのデータチャンクの位置を得て、読み込む。
【０４６８】
読み込まれたＨＴＭＬファイルを解釈／処理して、その他の内部ファイルが必要になったら、ファイルリストから内部ファイル名が一致するファイルリストを選び、そのデータチャンクの位置を得て、読み込む。
【０４６９】
このようにして、電子データが記述されているとする。
【０４７０】
本発明では、電子データは既に生成されているとしているので、ここでは詳しくは説明しない。
【０４７１】
図３５は、図３６の電子データをテキスト形式で表現した例である。図３４とほぼ同等の構造であるが、IMAGE1.PNGやSOUND1.WAVといったバイナリ形式のデータも、MIME64方式でテキスト形式に変換している。バイナリ形式のデータをテキスト形式に変換する方法は、MIME64以外の方法でも構わない。
【０４７２】
図３７は、分割境界データ、処理補助データ、依存関係データを一つのファイルに記録する際のバイナリ形式のファイル構造例を説明する説明図である。説明の為、このファイルを「補助ファイル」と呼ぶことにする。
【０４７３】
補助ファイルであることを示す「ＳＵＢＤＡＴＡ＿＿Ｖ１．００」がファイル識別文字列１６０となっている。
【０４７４】
その後、分割境界データチャンク、処理補助データチャンク、依存関係データチャンクが記録されている。
【０４７５】
分割境界データチャンクでは、数字データとして、分割境界データ１１１〜１１７と、分割データサイズ１６３〜１６８が内部データとして記録される。ここでは、図７の分割データ４００〜４０５の分割境界データの例を示している。分割データは６個だが、分割境界は、最初と最後の境界も含めているので７個になっている。
【０４７６】
処理補助データチャンクでは、可変長文字列の処理補助データ１３１〜１４２が記録されている。
【０４７７】
依存関係データチャンクでは、数字データとして、依存関係データ１４０〜１４５が記録されている。
【０４７８】
この補助ファイルを読み込んで解釈する処理系は、これらのデータチャンク構造は事前に知っているとする。
【０４７９】
この補助ファイルのファイル構造のデータを作成する方法について、簡単に説明する。
【０４８０】
まず、ファイル識別文字列１６０は、固定長文字列なので、計算や変換などの処理を必要とせず、そのまま記録すればよい。
【０４８１】
次に分割境界データチャンクだが、最初のチャンク識別文字列１６１は、これも固定長文字列なので、そのまま記録すればよい。
【０４８２】
次のチャンクデータサイズ１６２は、計算して求める必要がある。分割境界データ１１１〜１１７と分割データサイズ１６３〜１６８は、それぞれ４バイトの数字データで記録されるとし、４×（７＋６）＝５２より、チャンクデータサイズ１６２は「５２」となる。
【０４８３】
その後の内部データである分割境界データ１１１〜１１７と分割データサイズ１６３〜１６８は、それぞれ４バイトの数字データとして記録する。
【０４８４】
これにより、分割境界データチャンク部分が記録される。
【０４８５】
次に、処理補助データチャンクを記録する。最初のチャンク識別文字列１６９は、これも固定長文字列なので、そのまま記録すればよい。
【０４８６】
次のチャンクデータサイズ１６２は、計算して求める必要がある。処理補助データ１３１〜１４２は既に決定しているので、そのデータサイズの和を求める。可変長文字列は、最後に値「０」の文字コードを付加するとする。例えば、処理補助データ１３１のように、文字列が空でも最低１バイトは必要となる。ここでの各可変長文字列のデータサイズの和は、「１７５」となるので、チャンクデータサイズ１６２は「１７５」として記録される。
【０４８７】
その後の内部データである処理補助データ１３１〜１４２は、それぞれ可変長文字列として記録する。
【０４８８】
次に、依存関係データチャンクを記録する。最初のチャンク識別文字列１７１は、これも固定長文字列なので、そのまま記録すればよい。
【０４８９】
次のチャンクデータサイズ１７２は、計算して求める必要がある。依存関係データ１４０〜１４５は、それぞれ１バイトの数字データで記録されるとし、１×６＝１より、チャンクデータサイズ１７２は「６」となる。
【０４９０】
その後の内部データである依存関係データ１４０〜１４５は、それぞれ１バイトの数字データとして記録する。
【０４９１】
以上の処理で、図３７のファイル構造の補助ファイルを記録することができる。
【０４９２】
図３８は、図３７とほぼ同じ情報を、テキスト形式で記述したファイルのファイル構造例を説明する説明図である。説明の為、このファイルも「補助ファイル」と呼ぶことにする。
【０４９３】
ここでは、テキスト形式として、ＸＭＬ形式を使って記述している。１行目は、主にＸＭＬ形式であることを宣言しているだけなので、ここでは詳しくは説明しない。
【０４９４】
全体は、２行目と最後の行のＳｕｂＤａｔａタグで囲われ、補助ファイルであることを示している。バージョン情報は、ｖｅｒｓｉｏｎ属性で示している。
【０４９５】
分割境界データ、処理補助データ、依存関係データは、それぞれＳｕｂＤａｔａタグの下のｂｏｕｎｄａｒｉｅｓタグ、ａｓｓｉｓｔ＿ｄａｔａタグ、ｄｅｐｅｎｄｅｎｃｙ＿ｄａｔａタグで記述されている。これらのタグは、情報をまとめているという意味で、上述したデータチャンクに相当すると考えればよい。
【０４９６】
分割境界データのｂｏｕｎｄａｒｉｅｓタグの下には、各分割境界データを表すｂｏｕｎｄａｒｙタグが存在する。ｂｏｕｎｄａｒｙタグのｐｏｓ属性によって、電子データ中の境界位置が示されている。なお、ここでは各分割データのデータサイズの情報は省略した。
【０４９７】
処理補助データのａｓｓｉｓｔ＿ｄａｔａタグの下には、各分割データの処理補助データを表すｄａｔａタグが存在する。ｄａｔａタグの下に、開始タグ文字列を表すｓｔａｒｔ＿ｔａｇタグと、終了文字列を表すｅｎｄ＿ｔａｇタグが存在する。ｓｔａｒｔ＿ｔａｇタグとｅｎｄ＿ｔａｇタグのＴＥＸＴが、開始タグ文字列、終了タグ文字列そのものとなる。
【０４９８】
依存関係データのｄｅｐｅｎｄｅｎｃｙ＿ｄａｔａタグの下には、各分割データの依存関係データを表すｄａｔａタグが存在する。ｄａｔａタグは、ｆｌａｇ属性で、依存関係データの値（ここでは０か１）を保持している。
【０４９９】
図３８の形式の補助ファイルの作成の仕方については、上記のようなタグの階層のデータを順に記録していけばよいだけなので、ここでは詳しい説明は省略する。
【０５００】
図３７のチャンクデータ構造の補助ファイルを作成する際、チャンクデータの内部データのデータサイズを計算する必要がある。しかし、図３８のＸＭＬ形式の補助ファイルを作成する際は、各タグの階層のデータサイズを計算する必要がないという利点がある。これは、データの切れ目は、開始タグと終了タグで識別できるからである。
【０５０１】
チャンクデータ構造でも、ＸＭＬ形式でも、どちらも同じように知らないデータ構造、すなわち知らないチャンク識別文字列を持つチャンクデータや知らないタグ名のタグ、のデータについては、無視したり、処理を中断したりすることができる。但し、ＸＭＬ形式の方が、人間が直接理解しやすい為、知らないタグであっても、ある程度、データの内容を推測することができ、知らないデータを無視するか処理を中断するかの判断にその推測を利用したり、あるいは、推測に基づいて処理装置内部の処理方法を追加／変更したりということがしやすい利点がある。
【０５０２】
次に、図３３のように各分割データをそれぞれファイルとして記録する場合の、ファイル構造例を説明する。
【０５０３】
まず、各分割データを、図７の分割データ４００〜４０５のまま、それぞれファイルとして記録し、処理補助データを別ファイルから読み出して利用するのか、分割データ４００〜４０５の各々に処理補助データも含めた形でファイルとして記録するのか、の２通り考えられる。
【０５０４】
分割データ４００〜４０５のまま、それぞれファイルとして記録する方法に関しては、特に説明することはない。
【０５０５】
図３９は、分割データ４００〜４０５を処理補助データも含めた形でファイルとして記録した場合の、各ファイルの内容を示した説明図である。分割データ４００〜４０５が、それぞれ、ファイル４１０〜４１５に対応する。
【０５０６】
各ファイルの作成は、各分割データが効力を引き継ぐべき開始タグ文字列を記録し、次に各分割データを記録し、最後に、記録した開始タグ文字列に対応する終了タグ文字列を記録する、という手順で行われる。
【０５０７】
例えば、分割データ４０１に対応するファイル４１１の場合、開始タグ文字列として、図２９の処理補助データ１３３の「＜ＨＴＭＬ＞＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞＜Ｐ＞」がまず記録され、次に分割データ４０１の「Ｌｉｑｕｉｄ」から「ｐａｓｓｅｄ  」までが記録され、最後に、処理補助データ１３４の「＜／Ｐ＞＜／ｆｏｎｔ＞＜／ＨＴＭＬ＞」が記録されている。
【０５０８】
なお、ここでは処理補助データと分割データをそのまま記録しているが、他の情報を付加して、別の形式、例えば、先に説明した図３６のような形式で記録したり、あるいはＸＭＬ形式で記録したりしてもよい。
【０５０９】
図４０は、１つの分割データのファイルを、ＸＭＬ形式で記録したファイルのファイル構造を説明する説明図である。分割データであることを示すＤｉｖｉｄｅｄＤａｔａタグの下に、付加情報である暗号情報のｅｎｃｒｙｐｔｉｏｎタグと、分割データの中身であるｃｏｎｔｅｎｔｓタグが存在する。ｃｏｎｔｅｎｔｓタグのＴＥＸＴ部分に、図７の分割データ４００〜４０５のいずれかや、図３９のファイル４１０〜４１５のいずれかのテキストを記述すればよい。
【０５１０】
なお、ＸＭＬ形式では、ＴＥＸＴ部分にタグに使われる記号（例えば「＜」など）を直接記述することはできないので、ＸＭＬ形式で決められた所定の変換（例えば、「＜」から「＆ｌｔ；」）を行っており、読み出す時は逆の変換を行う。
【０５１１】
また、同様の内容を、図４０のようなテキスト形式でなく、図３６のようなバイナリ形式で記録することも可能である。
（データの利用例）
以上のように生成された分割データ、処理補助データおよび依存関係データを用いて、所望の分割データに対応する部分の表示レイアウトを生成する処理を具体的に説明する。
【０５１２】
図１１は、分割境界データ、分割データ、処理補助データ、依存関係データなどのデータを利用する例として、表示レイアウトを生成し表示する処理の一例を示すフローチャート図である。なお、以下の各ステップにおける処理の主体は、全て表示レイアウト生成手段（図示せず）としてのＣＰＵ７０なので、以下の説明においては、動作主体の記述を省略する。
【０５１３】
まずステップＳＬ１（以下、「ステップＳＬ」を「ＳＬ」と略記する）では、処理補助データおよび依存関係データなどを取得して、ＳＬ２へ処理が進む。分割境界データを使用する場合は、分割境界データも取得する。なお、処理補助データ、依存関係データおよび分割境界データは、例えば、外部記憶７５などにファイルなどとして記録されているとする。したがって、ＣＰＵ７０は必要なときに外部記憶７５などから、必要なデータを読み出すことができる。
【０５１４】
ＳＬ２で、プログラムまたはユーザー入力に従って指定される表示範囲、すなわち表示範囲の位置と大きさを得て、ＳＬ３へ処理が進む。ここでの処理については、後で具体例で説明する。
【０５１５】
ＳＬ３で、表示範囲の位置が含まれる分割データを求めて、カレント分割データに設定して、ＳＬ４へ処理が進む。ここでの処理については、後で具体例で説明する。
【０５１６】
ＳＬ４で、カレント分割データの表示レイアウトは、必要かどうかを判断し、必要と判断されれば連結点ＰＬ１０（以降、「連結点ＰＬ」を「ＰＬ」と略記する）を経て、ＳＬ５へ処理が進み、必要ではないと判断されれば、そのときには後述のようにＳＬ５以降の処理によって、表示範囲に対応する表示レイアウトが取得されているので、ＳＬ８へ処理が進む。
【０５１７】
分割データの表示レイアウトが必要かどうかは、その分割データの表示レイアウトが、表示範囲に含まれるかどうかで判断される。各表示レイアウト要素は、位置と大きさの情報を持っているので、その位置と大きさを表示範囲の位置と大きさと比較することで、判断できる。後で説明する具体例では、図面を使って含まれるかどうかを説明するが、実際の処理では、位置や大きさの値を使って、計算して判断することになる。
【０５１８】
ＳＬ５で、カレント分割データの表示レイアウトを、他の分割データの影響を考慮して取得して、ＰＬ２０を経て、ＳＬ６へ処理が進む。ここでの処理の詳細は、後で図１２、図１３を使って説明する。
【０５１９】
ＳＬ６では、カレント分割データの前の分割データは存在するかどうかを判断し、存在すればＳＬ７へ処理が進み、存在しなければＳＬ８へ処理が進む。
【０５２０】
ＳＬ７では、カレント分割データを前の分割データに設定し、ＳＬ４へ処理が戻る。
【０５２１】
なお、ＳＬ６、ＳＬ７で、「前の分割データ」でなく、どちらも「次の分割データ」とする場合もある。これは、前方向にページめくりしているのか、次方向へページめくりしているのか、など、処理の目的によってどちらにするか決めればよい。どちらにするかは、処理の具体例で説明する。
【０５２２】
ＳＬ８では、得られた各分割データの表示レイアウト中から、表示範囲に含まれる表示レイアウトを抜き出し、表示部兼タブレット３０１に表示し、処理を終える。
【０５２３】
以上のＳＬ１からＳＬ８の処理によって、表示範囲の表示レイアウトを生成、表示することができる。
【０５２４】
図１２は、図１１のＳＬ５の処理方法、すなわち、カレント分割データの表示レイアウトを他の分割データの影響を考慮して取得する処理方法の一例を示すフローチャート図である。
【０５２５】
ＰＬ１０を経たＳＬ５Ａ−１では、カレント分割データの表示レイアウトを取得して、ＳＬ５Ａ−２へ処理が進む。
【０５２６】
カレント分割データは、図３３に基づいて説明したように、ファイル化された分割データファイルから得られる。あるいは、図３２に基づいて説明したように、分割境界データを使って、電子データファイルから分割データ部分を抜き出して読み込むことでも得られる。
【０５２７】
分割データの表示レイアウトは、既に生成したものが存在すればそれを使い、存在しなければ分割データから生成する。生成した表示レイアウトを分割データと対応付けて主記憶７４上や外部記憶７５上などに記録しておけばよい。
【０５２８】
分割データから表示レイアウトを生成する際、処理補助データを利用する。例えば、図７の分割データ４０１に対して、タグによって指定された元の電子データ（図４）の表示結果（図５）と同じ表示結果を得るには足りない情報として、図２９に示すように、分割データ４０１の開始タグ文字列および終了タグ文字列が、それぞれ処理補助データ１３３・１３４として用意されているとする。この場合、分割データ４０１を解釈する際、まず、処理補助データ１３３の開始タグ文字列を解釈し、次に分割データ４０１を解釈し、最後に処理補助データ１３４の終了タグ文字列を解釈する。これによって、不完全なＨＴＭＬデータである分割データ４０１を、分割データの意味する内容が損なわれないＨＴＭＬデータとして解釈することができるようになる。
【０５２９】
なお、分割データから表示レイアウトを生成する方法については、本発明とは直接関係無いので、詳しい説明は省略する。
【０５３０】
ＳＬ５Ａ−２では、カレント分割データの直前の分割データの表示レイアウトが、指定された表示範囲にとって必要かどうかを判断し、必要と判断されればＳＬ５Ａ−３へ処理が進み、必要でないと判断されればＰＬ２０へ処理が抜ける。ここでの処理は、ＳＬ４の処理と同様である。
【０５３１】
ＳＬ５Ａ−３では、カレント分割データが、直前の分割データから影響を受けるかどうかを判断し、影響を受けると判断される場合は、ＳＬ５Ａ−４へ処理が進み、影響を受けないと判断される場合は、ＰＬ２０へ処理が抜ける。影響を受けるかどうかの判断は、図８の依存関係データ１４０〜１４５を参照すればよい。
【０５３２】
なお、生成済みのカレント分割データが、直前の分割データの影響を受けて生成されたものである場合、ＰＬ２０へ処理を抜けてもよい。直前の分割データの影響を受けて生成されたものであるかどうかを、別途記録しておくようにしておけば、このような判断ができる。この判断を行うことで、無駄な再生成を避けることができる。
【０５３３】
ＳＬ５Ａ−４では、カレント分割データの直前の分割データの表示レイアウトを、他の分割データの影響を考慮して取得し、ＳＬ５Ａ−５へ処理を進める。
【０５３４】
「カレント分割データの表示レイアウトを他の分割データの影響を考慮して取得」する処理は、ＳＬ５全体の処理に相当する。従ってここでは、カレント分割データを直前の分割データに仮に設定し、ＳＬ５の処理を再帰的に行い、ＳＬ５の再帰処理後、カレント分割データを仮設定から元の設定に設定し直せばよい。「再帰的」とは、ある処理の中で、自分自身の処理を呼び出す（行う）ことである。いわば、入れ子のような処理形態となる。
【０５３５】
ＳＬ５Ａ−５では、カレント分割データの表示レイアウトを、直前の分割データの表示レイアウトに続けて生成し、ＰＬ２０へ処理が抜ける。
【０５３６】
表示レイアウトに続けて生成する、とは、例えば、前の分割データの表示レイアウトが、行の途中で終わっている時に、次の分割データの最初の表示レイアウトを、途中で終わっている行に追加する形でレイアウトしていくこと、言い換えれば分割の影響を受ける複数の分割データを一続きのデータとして扱い、処理結果としての表示レイアウトを生成することである。これについては、後で具体例で説明する。
【０５３７】
以上のＳＬ５Ａ−１からＳＬ５Ａ−５の処理で、図１１のＳＬ５の処理を行うことができるようになる。
【０５３８】
以上のＳＬ１からＳＬ８の処理について、分割データ４００〜４０５（図７）、依存関係データ１４０〜１４５（図８）を使って、以降、具体的に説明する。
【０５３９】
図１３は、図１０の表示部兼タブレット３０１上に、文書データの先頭から１ページ分の表示レイアウトを求めた状態を説明する説明図である。図１３中の枠線が表示部兼タブレット３０１の表示範囲を示している。この表示範囲の大きさを、以降では、「１ページ分」と表現することにする。図１３では、枠線からはみ出ている表示レイアウトは、実際には表示されない。これは生成された表示レイアウトと表示されている表示レイアウト（表示範囲中の表示レイアウト）との関係を説明する為に、このような表現の仕方をしている。また、枠線の左の数字は、説明に使う行番号である。
【０５４０】
まず、図１１のＳＬ１で、全ての分割データ４００〜４０５について、図８の依存関係データおよび図２９の処理補助データなどを取得する。
【０５４１】
次に、ＳＬ２で、表示範囲の位置と大きさを得る。文書データの先頭から表示するので、表示範囲の位置は、電子データの最初の表示レイアウトとなる。表示範囲の大きさは１ページ分とする。
【０５４２】
ＳＬ３で、最初の表示レイアウトが含まれる分割データは、最初の分割データなので、分割データ４００をカレント分割データに設定する。
【０５４３】
ＳＬ４で、まだ表示レイアウトは何も存在せず、分割データ４００の表示レイアウトは表示範囲に含まれることは分かっているので、ここでは分割データ４００は必要と判断され、ＳＬ５へ処理が進む。
【０５４４】
ＳＬ５で、分割データ４００の表示レイアウトを、影響を考慮して取得する。
【０５４５】
そのために、まず、図１２のＳＬ５Ａ−１で、分割データ４００の表示レイアウトを取得する。表示レイアウトがまだ生成されていないので、ここで生成することになる。生成された表示レイアウトは、図１３の最初の「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」の行と次の空行となる。
【０５４６】
ＳＬ５Ａ−２で、分割データ４００の直前の分割データは存在しないので、ＰＬ２０へ処理が抜け、ＳＬ６へ処理が進む。
【０５４７】
ＳＬ６で、分割データ４００の「次」の分割データとして、分割データ４０１が存在するので、ＳＬ７へ処理が進む。
【０５４８】
ここでは、ＳＬ６とＳＬ７の処理で、「前」の分割データではなく、「次」の分割データに関して処理することにする。これは表示範囲が「先頭から１ページ分」となっている為である。つまり、表示範囲の上端部分に文書データの最初の表示レイアウトが位置し、そこから下に１ページ分の表示レイアウトが必要になるという事なので、最初の分割データから順方向（次方向）に表示レイアウトを取得していく処理とする必要があるからである。
【０５４９】
ＳＬ７では、「次」の分割データ、分割データ４０１をカレント分割データに設定し、ＳＬ４へ処理が戻る。
【０５５０】
ＳＬ４では、分割データ４０１の表示レイアウトが必要かどうかを判断する。表示範囲の大きさと表示レイアウトなどから計算して判断するのだが、図１３を見ても分かるとおり、上記２行では１ページ分に満たない。そこで、ここでは、生成済みの表示レイアウトは表示範囲に満たないので、分割データ４０１の表示レイアウトが必要と判断される。
【０５５１】
ＳＬ５で、分割データ４０１の表示レイアウトを、影響を考慮して取得する。
【０５５２】
そのために、まず、図１２のＳＬ５Ａ−１で、分割データ４０１の表示レイアウトを取得する。表示レイアウトがまだ生成されていないので、ここで生成することになる。生成された表示レイアウトは、図１３の３行目の「Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ」で始まる行から６行目の「ｐａｓｓｅｄ  」で終わる行までとなる。
【０５５３】
ＳＬ５Ａ−２で、分割データ４０１の直前の分割データ４００は必要なので、ＳＬ５Ａ−３へ処理が進む。
【０５５４】
ＳＬ５Ａ−３で、分割データ４０１が直前の分割データ４００から影響を受けないことは、処理補助データ１４１が０であることから分かるので、ＰＬ２０へ処理が抜け、ＳＬ６へ処理が進む。
【０５５５】
ＳＬ６で、分割データ４０１の次の分割データは、分割データ４０２が存在するので、ＳＬ７へ処理が進む。
【０５５６】
ＳＬ７では、次の分割データである分割データ４０２をカレント分割データに設定し、ＳＬ４へ処理が戻る。
【０５５７】
ＳＬ４では、分割データ４０２の表示レイアウトが必要かどうかを判断する。図１３を見ても分かるとおり、分割データ４０１に含まれている「ｐａｓｓｅｄ  」で始まる行が、既に表示範囲をはみ出ているので、ここでは分割データ４０２は不要と判断され、ＳＬ８へ処理が進む。
【０５５８】
ＳＬ８で図１３の表示範囲の表示レイアウトが表示され、処理が終了する。
【０５５９】
表示結果は、図１３の通り、表示レイアウト結果として全く問題無い。表示範囲を表示するのに必要な分割データだけを処理することで、電子データ４００全体を処理し、表示レイアウトを作成するのと比べて、図１３の場合、およそ１／３程度のデータ処理量で済んでいる。また、この結果、処理に必要なメモリ量も少なくて済む。このように、分割データを使って処理することで、高速、省リソースで処理できるという利点が出てくる。
【０５６０】
図１４は、図１３の状態に続いて、下に１ページ分の表示範囲の表示レイアウトを求めた状態を説明する説明図である。図１４の表示レイアウトを求める処理について簡単に説明する。
【０５６１】
図１３の状態に続いて処理されるので、図１３で生成された表示レイアウト、すなわち分割データ４００、４０１の表示レイアウトは保持したままだとする。
【０５６２】
ＳＬ２で、図１３では５行目まで表示されているので、「ｐａｓｓｅｄ  」で始まる最後の行である６行目の表示レイアウトが、表示範囲の位置となる。
【０５６３】
依存関係データの存在が効いてくるのは、前の分割データに影響を受ける分割データを作成する際に、前の分割データのレイアウトが未作成の場合である。図１４の処理では、影響を受ける前の分割データのレイアウトが作成済なので、以降の処理については、簡単に説明する。
【０５６４】
まず、分割データ４０１の表示レイアウトを取得し、分割データ４０２の表示レイアウトを生成する。これは、分割データ４０１の表示レイアウトに続けて生成するので、図１４の６行目の「ｐａｓｓｅｄ  」の後に続けて、分割データ４０２の最初の「ｔｈｒｏｕｇｈ  ｔｈｅ」がレイアウトされている。同様に、分割データ４０３の表示レイアウトが分割データ４０２の表示レイアウトに続けて生成される。
【０５６５】
そして、分割データ４０４、４０５の順に表示レイアウトを生成する。生成されたレイアウトが図１４の状態である。図１４の６行目から１４行目までが表示範囲として表示される。
【０５６６】
以上は、順方向（下方向、次方向）にページめくりする処理についての説明だが、逆方向（上方向、前方向）に行スクロールする処理について、以降、説明する。
【０５６７】
図１５は、分割データ４０５の先頭から下に１ページ分の表示範囲の表示レイアウトを求めた状態を説明する説明図である。分割データの生成済みの表示レイアウトが全く無い状態で、分割データ４０５に対して単独の処理を行ったので、図１５の状態では、分割データ４０５の表示レイアウトしか存在していない。図１５のレイアウトを求める処理は、表示範囲の位置は異なるが、図１３と同様なので、ここでは省略する。
【０５６８】
図１６は、図１５の状態から、上に１行分だけ行スクロールした状態を説明する説明図である。分割データ４０５に加えて、分割データ４０４の表示レイアウト（空行１行だけ）が追加されている。
【０５６９】
図１７は、図１６の状態から、さらに上に１行分だけ行スクロールした状態を説明する説明図である。分割データ４０４、４０５に加えて、分割データ４０３の表示レイアウト（「ｏｎ」から始まる１行目から「ｅｍｐｌｏｙｅｄ．」で終わる４行目まで）が追加されている。
【０５７０】
分割データ４０３は、「ｏｎ」という文の途中の単語から始まっているが、表示範囲における分割データ４０３の表示レイアウト自体（すなわち、ｅｍｐｌｏｙｅｄ．および改行）は特に問題はなく、誤りは表れていない。すなわち、分割データ４０３の表示レイアウトは、表示設定を変更して、たまたま１つの文中の「ｏｎ」の前で行の折り返しが行われている場合と同じであり、改行などのＨＴＭＬのタグには従っている。
【０５７１】
図１８は、図１７の状態から、さらに上に５行分ほど行スクロールした状態を説明する説明図である。ここでの処理は、分割データ間の影響が関係するので、図１１、図１２のフローチャートに沿って少し詳しく説明する。
【０５７２】
まず、図１７の状態から、前のページへページめくりする指示が入力されることにより、図１１のフローが再スタートする。ここでは、処理補助データおよび依存関係データを既に取得済みなので、ＳＬ１はスキップされ、ＳＬ２に処理が進む。
【０５７３】
ＳＬ２で、図１８の場合、表示範囲としては、分割データ４０５の最後の行から上に１ページ分となる。
【０５７４】
ＳＬ３で、分割データ４０５をカレント分割データに設定し、ＳＬ４へ処理が進む。
【０５７５】
その後、ＳＬ４、ＳＬ５と処理が行われ、分割データ４０５の生成済みの表示レイアウトが取得され、ＳＬ６へ処理が進む。
【０５７６】
ＳＬ６で、分割データ４０５の「前」の分割データとして、分割データ４０４が存在するので、ＳＬ７で「前」の分割データ４０４をカレント分割データに設定し、ＳＬ４へ処理が戻る。
【０５７７】
ここでは、ＳＬ６とＳＬ７の処理で、「次」の分割データではなく、「前」の分割データに関して処理することにする。これは表示範囲が「ある行から上に１ページ分」となっている為である。つまり、表示範囲の下端部分に、ある行の表示レイアウトが位置し、そこから上に１ページ分の表示レイアウトが必要になるという事なので、ある分割データ（分割データ４０５）から逆方向（前方向）に表示レイアウトを取得していく処理とする必要がある。
【０５７８】
このようにして、カレント分割データを１つずつ前の分割データにしながら、ＳＬ４からＳＬ７の繰り返し処理が行われ、分割データ４０４の生成済みの表示レイアウトが取得される。
【０５７９】
そして、分割データ４０３がカレント分割データとして、ＳＬ５で処理されようとしているとする。
【０５８０】
ＳＬ５Ａ−１（分割データ４０３）で、分割データ４０３の生成済みの表示レイアウトが取得され、ＳＬ５Ａ−２（分割データ４０３）へ処理が進む。なお、各ステップ記号の後の括弧書きは、カレント分割データを意味する。後で再帰的処理を説明する際に、カレント分割データが何であるかを区別しやすくする為に付記しておく。
【０５８１】
ＳＬ５Ａ−２（分割データ４０３）で、直前の分割データ４０２が必要であると判断され、ＳＬ５Ａ−３（分割データ４０３）へ処理が進む。図１７の状態から５行ほど上に行スクロールするのだから、分割データ４０３の表示レイアウトだけでは表示範囲に足りないのは、図１７から目でも確認できる。
【０５８２】
ＳＬ５Ａ−３（分割データ４０３）で、分割データ４０３が、分割データ４０２の影響を受けることが、依存関係データ１４３の値が１であることから分かるので、ＳＬ５Ａ−４（分割データ４０３）へ進む。
【０５８３】
ＳＬ５Ａ−４（分割データ４０３）では、分割データ４０２を仮にカレント分割データとして、他の分割データの影響を考慮して、分割データ４０２の表示レイアウトを取得する。
【０５８４】
以降は、ＳＬ５Ａ−４（分割データ４０３）から再帰的に呼び出されるＳＬ５（分割データ４０２）の処理である。
【０５８５】
ＳＬ５Ａ−１（分割データ４０２）で、分割データ４０２の表示レイアウトが取得され、ＳＬ５Ａ−２（分割データ４０２）へ処理が進む。分割データ４０２の表示レイアウトはまだ存在しないので、ここでは、分割データ４０２の表示レイアウトが単独で生成される。
【０５８６】
生成された表示レイアウトは、「ｔｈｒｏｕｇｈ」で始まる１行目から４行目の「ｂａｓｅｄ  」までとなる。図１８では処理が全て終わった後の状態となっているので、分割データ４０３の最初の「ｏｎ  ｔｈｅ  ｂｒｏａｄｃａｓｔ」が４行目で繋がっているが、この時点では生成された４行分のレイアウトは、図１７の１行目の上に挿入された形として存在するとする。つまり、４行目の「ｂａｓｅｄ  」の後は、何も存在せず、あたかも改行されているかのような状態になっているとする。
【０５８７】
ＳＬ５Ａ−２（分割データ４０２）で、直前の分割データ４０１は、表示範囲に対して必要でないと判断され、ＰＬ２０を経てＳＬ５（分割データ４０２）の処理を抜け、ＳＬ５Ａ−５（分割データ４０３）へ処理が進む（後の再帰処理の説明を参照）。分割データ４０２の表示レイアウトまでで表示範囲が足りるのは、図１８から目でも確認できる。なお、分割データ４０１が不要と判断されたため、分割データ４０２の表示レイアウトの取得については、分割データ４０１からの影響の有無を考慮する必要が無い。従って、単独で生成された分割データ４０２の表示レイアウトが、あとでそのまま利用される
また、ＳＬ５Ａ−１（分割データ４０２）で説明した通り、「ｂａｓｅｄ  」と「ｏｎ  ｔｈｅ  ｂｒｏａｄｃａｓｔ」は、別々の行に分かれてしまっているが、後でこの行は一緒になるはずなので、現在の表示レイアウトの大きさより１行ほど小さくなる可能性はある。従って、ここでは、表示範囲に足りるかどうかは、少し余裕を見て判断した方がよい。
【０５８８】
ＳＬ５Ａ−５（分割データ４０３）で、分割データ４０３の表示レイアウトが破棄された後、分割データ４０２の表示レイアウトに続けて、分割データ４０３の表示レイアウトが再生成され、ＰＬ２０を経て、ＳＬ６（分割データ４０３）へ処理が進む。ここでは、「ｏｎ  ｔｈｅ  ｂｒｏａｄｃａｓｔ」で始まる行から「ｅｍｐｌｏｙｅｄ．」で終わる行に相当する部分の図１７に示す表示レイアウトが破棄され、図１８の４行目の「ｂａｓｅｄ  」に続けて、「ｏｎ  ｔｈｅ  ｂｒｏａｄｃａｓｔ」以降の文字が、再レイアウトされる。その結果、図１８の表示レイアウトとなる。
【０５８９】
ＳＬ６（分割データ４０３）で、前の分割データ４０２は存在するので、ＳＬ７、ＳＬ４（分割データ４０２）と処理が進むものの、この時点で表示範囲は既に満たされているため、分割データ４０２が必要ないとＳＬ４（分割データ４０２）で判断される。この結果、ＳＬ８へ処理が進み、ＳＬ８で図１８の表示範囲が表示され、表示処理が終了する。
【０５９０】
以上の処理について、特にＳＬ５での再帰処理を分かりやすくする為、処理手順をまとめると以下のようになる。
【０５９１】
ＳＬ５Ａ−１（分割データ４０３）
↓
ＳＬ５Ａ−２（分割データ４０３）
↓
ＳＬ５Ａ−３（分割データ４０３）
↓
ＳＬ５Ａ−４（分割データ４０３）
↓（再帰処理開始）
ＳＬ５Ａ−１（分割データ４０２）
↓
ＳＬ５Ａ−２（分割データ４０２）
↓（再帰処理終了）
ＳＬ５Ａ−５（分割データ４０３）
図１８では、分割データ４０２は、「ｔｈｒｏｕｇｈ」という文の途中の単語から始まっているが、分割データ４０２の表示レイアウト自体に特に問題はないのは、図１７と同様である。分割データ４０２と分割データ４０３の間で分割されてしまっている文も、図１８では、分割の影響が考慮された結果として、一続きの文として誤り無くレイアウトされている。
【０５９２】
図１７と図１８を比べると、例えば図１７の４行目と図１８の７行目の「ｅｍｐｌｏｙｅｄ．」の行は、行末の位置が異なる。しかしどちらも、ＨＴＭＬの表示結果としては問題ない。
【０５９３】
比較として、本発明のように分割データ４０３のレイアウトを再度生成しなおさず、分割データ４０２のレイアウトを単純に、分割データ４０３のレイアウトの前に挿入するだけの処理を行った状態が、図１９である。分割データ４０２の最後のレイアウトである４行目の「ｂａｓｅｄ  」と、分割データ４０３の最初のレイアウトである５行目の「ｏｎ」が、本来、図１８のようにつながるはずが、つながっておらず、別の行となってしまっている。図１９を見ただけでは、４行目の「ｂａｓｅｄ  」の後に改行が入っているように見えてしまう。改行を指示するｂｒタグやＰタグが、この場所に存在する訳ではないので、これは誤った処理結果である。
【０５９４】
このように、分割データ間の影響を考慮して、必要最小限の分割データを処理することで、高速、省リソースで処理できるという分割データの処理の利点をできるだけ損なわずに済む。さらに、分割データの処理結果が影響し合っていても、各分割データの処理結果の繋がりが悪くならないように処理することができるという種々の効果が出てくる。
【０５９５】
図２０は、図１８の状態から、さらに上に３行分ほど行スクロールした状態を説明する説明図である。
【０５９６】
ＳＬ３で、カレント分割データを、分割データ４０４に設定する以外は、図１８での処理の説明と途中までほぼ同様である。前述のＳＬ５Ａ−２（分割データ４０２）の後の処理が異なるので、それ以降の処理について説明する。
【０５９７】
ＳＬ５Ａ−２（分割データ４０２）で、直前の分割データ４０１が今回の表示範囲には必要であると判断され、ＳＬ５Ａ−３（分割データ４０２）へ処理が進む。図１８の状態から３行ほど上に行スクロールするのだから、分割データ４０２の表示レイアウトだけでは表示範囲に足りないのは、図１８から目でも確認できる。
【０５９８】
ＳＬ５Ａ−３（分割データ４０２）で、分割データ４０２が、分割データ４０１の影響を受けることが、依存関係データ１４２の値が１であることから分かるので、ＳＬ５Ａ−４（分割データ４０２）へ進む。
【０５９９】
ＳＬ５Ａ−４（分割データ４０２）では、分割データ４０１を仮にカレント分割データとして、他の分割データの影響を考慮して、表示レイアウトを取得する。
【０６００】
以降は、ＳＬ５Ａ−４（分割データ４０２）から再帰的に呼び出されるＳＬ５（分割データ４０１）の処理である。
【０６０１】
ＳＬ５Ａ−１（分割データ４０１）で、分割データ４０１の表示レイアウトが取得され、ＳＬ５Ａ−２（分割データ４０１）へ処理が進む。分割データ４０１の表示レイアウトはまだ存在しないので、ここで生成される。
【０６０２】
生成された表示レイアウトは、図２０中の「Ｌｉｑｕｉｄ」で始まる１行目から４行目の「ｐａｓｓｅｄ  」までとなる。図２０で、「ｐａｓｓｅｄ  」の行が、図１８の１行目の「ｔｈｒｏｕｇｈ」の行と別の行であるのは、先に説明した図１８での処理と同様である。
【０６０３】
ＳＬ５Ａ−２（分割データ４０１）で、直前の分割データ４００は必要でないと判断されるので、ＰＬ２０を経てＳＬ５（分割データ４０１）の処理を抜け、ＳＬ５Ａ−５（分割データ４０２）へ処理が進む。分割データ４０１の表示レイアウトまでを取得すれば表示範囲が足りるのは、図２０から目でも確認できる。
【０６０４】
ＳＬ５Ａ−５（分割データ４０２）で、分割データ４０２の表示レイアウトが破棄された後、生成され、ＰＬ２０を経てＳＬ５（分割データ４０２）の処理を抜け、ＳＬ５Ａ−５（分割データ４０３）へ進む。ここでは、「ｔｈｒｏｕｇｈ」で始まる行から「ｂａｓｅｄ  」までに相当する部分の図１８に示す分割データ４０２の表示レイアウトが破棄され、図２０の４行目の「ｐａｓｓｅｄ  」に続けて、「ｔｈｒｏｕｇｈ」以降の分割データ４０２が、再レイアウトされる。その結果、図２０の表示レイアウトとなる。
【０６０５】
この後、分割データ４０２、分割データ４０１をカレント分割データとしてＳＬ４〜ＳＬ７の繰り返し処理を行い、ＳＬ８へ処理が進む。なお、分割データ４０２の生成済み表示レイアウトは、分割データ４０１の影響を受けて生成されているので、ＳＬ５Ａ−３（分割データ４０２）で、ＰＬ２０へ処理が抜ける。この為、分割データ４０２が、無駄に再生成することは避けられる。
【０６０６】
図２０の表示レイアウト自体に特に問題はないのは、図１７、図１８と同様である。分割データ４０１と分割データ４０２の間、分割データ４０２と分割データ４０３の間で分割されてしまっている文も、図２０では繋がってレイアウトされている。
【０６０７】
このように、分割データ間の影響を考慮して遡りながら処理することで、複数の分割データが連続して影響されていても、各分割データの処理結果の繋がりが悪くならないように処理することができる効果が出てくる。
【０６０８】
次に、図２１は、図１１のＳＬ５の処理方法、すなわち、カレント分割データの表示レイアウトを他の分割データの影響を考慮して取得する処理方法の別の一例を示すフローチャート図である。
【０６０９】
ＰＬ１０を経たＳＬ５Ｂ−１では、カレント分割データに影響を与える最前の分割データを求めて、ＳＬ５Ｂ−２へ処理が進む。最前の分割データは、図９の依存関係データ１５０〜１５５を参照すればよい。
【０６１０】
ＳＬ５Ｂ−２では、最前の分割データから、カレント分割データまでを、一続きのデータとみなして、表示レイアウトを生成し、ＰＬ２０へ処理が抜ける。なお、既に生成済みの表示レイアウトがあるのならば、生成する必要は無い。
【０６１１】
以上のＳＬ５Ｂ−１からＳＬ５Ｂ−２の処理で、図１１のＳＬ５の処理を行うことができるようになる。
【０６１２】
図２１のフローチャートの処理を使って、分割データ４００〜４０５および依存関係データ１５０〜１５５を利用した具体例を説明する。
【０６１３】
図１７と同じ状態と表示範囲、すなわち、図１６の状態から、さらに上に１行分だけ行スクロールした状態の表示範囲を求めるとする。この時、最終的に求められる表示レイアウトの状態を説明するのが、図２２である。
【０６１４】
ＳＬ５Ｂ−１（分割データ４０３）で、分割データ４０３に影響を与える最前の分割データは、依存関係データ１５３より、分割データ４０１であることが分かる。
【０６１５】
なお、図８の形式の依存関係データでも、影響を与える最前の分割データを求めることは可能である。対応する依存関係データから前方向に遡り、最初に０になる依存関係データを発見したら、その依存関係データに対応する分割データが、影響を与える最前の分割データとなる。
【０６１６】
ＳＬ５Ｂ−２（分割データ４０３）で、分割データ４０１、４０２、４０３の順で表示レイアウトを生成する。但し、分割データ４０２、４０３は、前の分割データの表示レイアウトに続ける形で生成する。
【０６１７】
以上のＳＬ５Ｂ−１からＳＬ５Ｂ−２の処理で、図２２の表示レイアウトが得られる。図２２の表示レイアウト自体に特に問題はない。
【０６１８】
ここで、図１２のフローチャートの手法と図２１のフローチャートの手法との違いについて説明する。
【０６１９】
図１２のフローチャートの手法を使った図１７、図１８、図２０には、表示範囲の位置を上に変化させた時に表示レイアウトの変化が発生してしまっている。例えば、図１７の１行目の最初の「ｏｎ」は、図１８では４行目の３単語目になっている。また、図１８の１行目の最初の「ｔｈｒｏｕｇｈ」は、図２０では４行目の２単語目になっている。このような変化は、読む者にとって、今まで読んでいた行中の個所が少し変わってしまう結果になるので、文章が追いにくく、使いづらい。
【０６２０】
一方、図２１のフローチャートの手法を使うと、図２２の状態から表示範囲の位置を上に変化させても、表示レイアウトは変化しない。常に図５と同じ表示レイアウトのままである。
【０６２１】
二つの手法の差は、表示範囲内の分割データに影響を与える分割データのチェック対象を、表示範囲に一部でも含まれる分割データに限るか、表示範囲に関係なく、着目している分割データから影響が及ぶ最前の分割データまでの全ての分割データとするか、の違いである。
【０６２２】
前者の手法は、表示範囲外の分割データの表示レイアウトを生成しないので、表示範囲の表示レイアウトを初めて生成する際のデータ処理量を抑えることができる利点がある。但し、表示範囲を変えると、表示レイアウトが変わってしまう場合がある点と、表示範囲を変えると、生成済みの表示レイアウトを破棄して再度生成し直すという無駄な処理が発生する場合がある点の２つの欠点もある。
【０６２３】
逆に、後者の手法は、表示範囲外であっても表示レイアウトを生成するので、表示範囲の表示レイアウトを初めて生成する際のデータ処理量が増えてしまう場合がある欠点がある。但し、表示範囲を変えても、表示レイアウトが変わらない点と、表示範囲を変えても、生成済みの表示レイアウトを破棄して再度生成し直すという無駄な処理が発生しない点の２つの利点もある。
【０６２４】
どちらの手法を使うかは、高速性や省リソース性を重視するか、表示が変わらないことを重視するか、など、動作環境や目的を考慮して、選択すればよい。
【０６２５】
以上、分割データ、分割境界データ、処理補助データ、依存関係データの利用例について説明した。
【０６２６】
最後に、上記で述べた方法については、ここで述べた組み合わせだけに限らず、あらゆる組み合わせが可能である。
【０６２７】
なお、本発明で生成するデータと、例えばＭＰＥＧ形式のデータなどとの処理方法の違いについて、説明しておく。
【０６２８】
本発明では、「単独で処理しても、それ自体の処理結果には誤りが無い分割データ」を対象としている。説明の為、上記のように定義した分割データを、以降、「ブロックデータ」と呼ぶことにする。
【０６２９】
既に説明したＭＰＥＧのＧＯＰは、電子データが複数に分割されたデータであり、単体で処理可能なデータなので、本発明で言う「ブロックデータ」に相当する。しかし、ＭＰＥＧのＧＯＰの処理結果である復元された画像フレームは、常に同じ結果となる。
【０６３０】
また、前のＧＯＰの復元結果によって、後のＧＯＰの復元結果が影響されることはない。このため、複数のＧＯＰの復元結果を得るには、単純に前のＧＯＰの復元結果と、次のＧＯＰの復元結果をつなぎ合わせればよい。
【０６３１】
これに対し、本発明で例として挙げているＨＴＭＬデータは、ＷＷＷブラウザの表示設定によって、表示結果が変わることを前提に設計された言語仕様であり、表示設定が変わっても、表示結果の与える論理的意味（例えば、強制改行や画像に対する文字の回り込みなど）が変わらなければ、どのような表示を行っても分割データの意味する内容が損なわれないとされる。
【０６３２】
また、ＨＴＭＬデータのブロックデータの場合、前のブロックデータの処理結果が、次のブロックデータの処理結果に論理的な意味で影響を与えることがある。例えば、改行タグ以外の所で、元の電子データをブロックデータに分割した場合などである。従って、単純に前のブロックデータの処理結果に、次のブロックデータの処理結果をつなぎ合わせるだけでは、全体として論理的意味が変わってしまうことがあり、分割データの意味する内容が損なわれていることがある（図１９参照）。
【０６３３】
つまり、ブロックデータを扱う際、データのもつ特質に合わせて、本発明で説明した利用例のように処理方法を変えてやる必要がある。本発明では、特にブロックデータ間の処理結果の影響に着目し、分割データの意味する内容が損なわれない処理結果を得やすいデータを生成するようにしている。
【０６３４】
また、ＭＰＥＧのＧＯＰは、ＨＴＭＬデータのタグによる階層構造のような構造は持っておらず、それらの構造に関する補助情報などを使わなくても処理できるというのも異なる点である。
【０６３５】
なお、ＧＯＰでなく、ＧＯＰ中の差分画像をブロックデータとして考えれば、前後のブロックデータに影響を受けるように見えるが、差分画像だけでは画像フレームを復元できず、「単独で処理可能」ではないので、ブロックデータではない。基準画像や関連する差分画像を補助情報として付加すれば、ブロックデータとみなすことは不可能ではないが、それらの補助情報をつけたものは、結局、ＧＯＰと同じになってしまう。常に同じ結果であるなど、ＧＯＰとの違いに関して説明した理由がそのままあてはまるので、やはり、本発明が対象するブロックデータとは異なる。
【０６３６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
【０６３７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０６３８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，磁気テープ，不揮発性のメモリカード，等を用いることができる。
【０６３９】
また、上記プログラムコードは、通信ネットワークのような伝送媒体を介して、他のコンピュータシステムから端末の記憶部へダウンロードされるものであってもよい。
【０６４０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０６４１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０６４２】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになる。
【０６４３】
なお、本発明に係るデータ生成方法を、電子データを複数の分割データに分割する分割境界に関して、分割データを単独で処理して正しい処理結果を得るには、前記分割データに足りない情報である処理補助データを、前記分割データと他の分割データとから生成する処理補助データ生成ステップと、分割データと処理補助データの組を単独で処理しても正しい処理結果が得られ、かつ、分割データのデータサイズが指定最大データサイズを超えない、という条件を満たす分割境界を求め、また前記条件を満たしつつ、分割境界の前の分割データの処理結果が、分割境界の後の分割データの処理結果に影響を与えない分割境界が存在するのならばその分割境界を優先して求める分割境界算出ステップと、分割境界算出ステップから得られる分割境界で電子データを分割して、分割データを生成する分割データ生成ステップと、を有するように構成してもよい。
【産業上の利用可能性】
【０６４４】
元の電子データ（文書データ、音楽データ、静止画データ、動画データなど）から、その一部を部分データとして切り出して利用（閲覧、再生など）することを可能にする機器（コンピュータ、電子書籍、携帯端末など）全般において、上記部分データの生成に本発明を適用することができる。
【０６４５】
特に、処理リソース（ＣＰＵの処理速度やメモリ量など）が限られるような機器向けの部分データ作成に効果的である。
【図面の簡単な説明】
【０６４６】
【図１】本発明のデータ生成装置の機能的な構成を示すブロック図である。
【図２】図１に示す各手段を具体的に実現する装置の構成例を説明する図である。
【図３】指定最大データサイズ、指定標準データサイズを指定するウィンドウ表示の例である。
【図４】ＨＴＭＬデータ形式の文書データの例を説明する説明図である。
【図５】図４の電子データ全体をある表示手段に表示させた例を説明する説明図である
【図６】図５の表示設定を、基準となる文字の大きさを１．５倍、表示ウィンドウのサイズは同じに設定変更して、図４のＨＴＭＬデータを表示させた例を示す説明図である。
【図７】図４の文書データから生成された分割データを模式的に説明する説明図である。
【図８】前の分割データに影響を受けるかどうかを表す処理補助データの例を説明する説明図である。
【図９】影響を受ける最前の分割データを表す処理補助データの例を説明する説明図である。
【図１０】電子データ、分割境界データ、分割データ、処理補助データ、依存関係データなどを利用するデータ処理装置の外観例を示す模式的な斜視図である。
【図１１】部分データの表示レイアウトを生成して表示する処理の一例を示すフローチャート図である。
【図１２】カレント分割データの表示レイアウトを他の分割データの影響を考慮して取得する処理方法の一例を示すフローチャート図である。
【図１３】図１０の表示部兼タブレット上に、文書データの先頭から１ページ分の表示レイアウトを求めた状態を説明する説明図である。
【図１４】図１３の状態に続いて、下に１ページ分の表示範囲の表示レイアウトを求めた状態を説明する説明図である。
【図１５】分割データの先頭から下に１ページ分の表示範囲の表示レイアウトを求めた状態を説明する説明図である。
【図１６】図１５の状態から、上に１行分だけ行スクロールした状態を説明する説明図である。
【図１７】図１６の状態から、さらに上に１行分だけ行スクロールした状態を説明する説明図である。
【図１８】図１７の状態から、さらに上に５行分ほど行スクロールした状態を説明する説明図である。
【図１９】個別に生成された分割データの表示レイアウトを単純に並べた状態を説明する説明図である。
【図２０】図１８の状態から、さらに上に３行分ほど行スクロールした状態を説明する説明図である。
【図２１】カレント分割データの表示レイアウトを他の分割データの影響を考慮して取得する処理方法の別の一例を示すフローチャート図である。
【図２２】図２１に示す処理手順に従って、図１６の状態から、さらに上に１行分だけ行スクロールした状態を説明する説明図である。
【図２３】本発明の実施の一形態に係るデータ生成方法の一例を示すフローチャート図である。
【図２４】電子データを分割データに分割する分割境界を算出する処理の一方法を説明するフローチャート図である。
【図２５】前回のカレント位置から今回のカレント位置までの範囲で、標準内依存境界候補あるいは標準内非依存境界候補を探して、存在すれば設定する処理の一方法を説明するフローチャート図である。
【図２６】前回のカレント位置から今回のカレント位置までの範囲で、標準外非依存境界候補を探して、存在すれば設定する処理の一方法を説明するフローチャート図である。
【図２７】分割データを使って、処理補助データを生成する処理の一方法を説明するフローチャート図である。
【図２８】カレント開始タグリスト、カレント終了タグリストのデータ構造を説明する説明図である。
【図２９】処理補助データの例を説明する説明図である。
【図３０】求めた分割境界を使って、分割境界データを生成する処理の一方法を説明するフローチャート図である。
【図３１】求めた分割境界を使って、分割境界データを生成する処理の別の一方法を説明するフローチャート図である。
【図３２】分割境界データを使って、電子データ中から必要な分割データを抜き出してくる方法で使われるファイルのデータ構造を説明する説明図である。
【図３３】各ファイルから分割データを直接読み出す方法で使われる分割データのファイルの構造を説明する説明図である。
【図３４】分割データの各ファイルのファイル名をＸＭＬ形式で記録した例を示す説明図である。
【図３５】電子データをファイルに記録する際のテキスト形式のファイル構造例を説明する説明図である。
【図３６】電子データをファイルに記録する際のバイナリ形式のファイル構造例を説明する説明図である。
【図３７】分割境界データ、処理補助データおよび依存関係データを一つのファイルに記録する際のバイナリ形式のファイル構造例を説明する説明図である。
【図３８】図３７とほぼ同じ情報を、テキスト形式で記述したファイルのファイル構造例を説明する説明図である。
【図３９】分割データを処理補助データも含めた形でファイルとして記録した場合の、各ファイルの内容を示した説明図である。
【図４０】分割データのファイルを、ＸＭＬ形式で記録したファイルのファイル構造を説明する説明図である。
【図４１】分割データの表示レイアウトを説明する説明図である。
【符号の説明】
【０６４７】
１  電子データ取得手段
２  分割境界算出手段
３  分割境界データ生成手段
４  分割データ生成手段
５  処理補助データ生成手段
６  依存関係データ生成手段
【図１】
2005182517.tif 000003
【図２】
2005182517.tif 000004
【図３】
2005182517.tif 000005
【図４】
2005182517.tif 000006
【図５】
2005182517.tif 000007
【図６】
2005182517.tif 000008
【図７】
2005182517.tif 000009
【図８】
2005182517.tif 000010
【図９】
2005182517.tif 000011
【図１０】
2005182517.tif 000012
【図１１】
2005182517.tif 000013
【図１２】
2005182517.tif 000014
【図１３】
2005182517.tif 000015
【図１４】
2005182517.tif 000016
【図１５】
2005182517.tif 000017
【図１６】
2005182517.tif 000018
【図１７】
2005182517.tif 000019
【図１８】
2005182517.tif 000020
【図１９】
2005182517.tif 000021
【図２０】
2005182517.tif 000022
【図２１】
2005182517.tif 000023
【図２２】
2005182517.tif 000024
【図２３】
2005182517.tif 000025
【図２４】
2005182517.tif 000026
【図２５】
2005182517.tif 000027
【図２６】
2005182517.tif 000028
【図２７】
2005182517.tif 000029
【図２８】
2005182517.tif 000030
【図２９】
2005182517.tif 000031
【図３０】
2005182517.tif 000032
【図３１】
2005182517.tif 000033
【図３２】
2005182517.tif 000034
【図３３】
2005182517.tif 000035
【図３４】
2005182517.tif 000036
【図３５】
2005182517.tif 000037
【図３６】
2005182517.tif 000038
【図３７】
2005182517.tif 000039
【図３８】
2005182517.tif 000040
【図３９】
2005182517.tif 000041
【図４０】
2005182517.tif 000042
【図４１】
2005182517.tif 000043
【手続補正書】
【提出日】平成17年1月17日(2005.1.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成するデータ生成方法として、電子データ取得手段、部分データサイズ判断手段、影響判断手段、標準内非依存境界抽出手段および依存関係データ生成手段を含むデータ生成装置が行うデータ生成方法であって、
上記電子データ取得手段が、電子データを取得する電子データ取得ステップと、
上記部分データサイズ判断手段が、上記電子データ取得ステップで取得された電子データにおいて、部分データの開始位置を指定するとともに、該開始位置から、上記分割境界になるかどうかの判断対象となる着目位置までのデータサイズが、予め定めた標準データサイズ以下であるかを判断する第１の部分データサイズ判断ステップと、
上記電子データ上で着目位置を進める単位の１単位毎に、その生成される部分データの処理結果に、上記着目位置における分割による所定の影響が表れるか否かを、所定の判断基準に基づいて上記影響判断手段が判断する第１の影響判断ステップと、
データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れないと上記影響判断手段が判断した着目位置を、上記標準内非依存境界抽出手段が標準内非依存分割境界として抽出する標準内非依存境界抽出ステップと、
上記影響判断手段が、分割による所定の影響が表れると判断した上記着目位置について、上記依存関係データ生成手段が、その着目位置における分割境界の属性について、依存を表すデータに設定する一方、上記影響判断手段が、分割による所定の影響が表れないと判断した上記着目位置について、上記依存関係データ生成手段が、その着目位置における分割境界の属性について、非依存を表すデータに設定することによって、部分データの処理結果間に依存関係があることを示す情報である依存関係データを生成する依存関係データ生成ステップと、
を備えたことを特徴とするデータ生成方法。
【請求項２】
上記標準内非依存分割境界が存在しない場合に、上記部分データサイズ判断手段が、前記開始位置から、前記着目位置までのデータサイズが、予め定めた最大データサイズを超えるかどうかを判断する第２の部分データサイズ判断ステップと、
上記データサイズが予め定めた最大データサイズを超えない場合に、上記電子データ上で着目位置を進める単位の１単位毎に、その生成される部分データの処理結果に、上記着目位置における分割による所定の影響が表れるか否かを、所定の判断基準に基づいて上記影響判断手段が判断する第２の影響判断ステップと、
上記データサイズが予め定めた最大データサイズ以下で、かつ、上記所定の影響が表れない着目位置を、上記データ生成装置にさらに備えられた標準外非依存境界抽出手段が標準外非依存分割境界として抽出する標準外非依存境界抽出ステップと、
をさらに備え、
上記第２の部分データサイズ判断ステップおよび標準外非依存境界抽出ステップを実行した後、上記依存関係データ生成ステップを実行することを特徴とする請求項１に記載のデータ生成方法。
【請求項３】
上記データ生成装置にさらに備えられた第１分割境界抽出手段が、上記標準内非依存境界抽出ステップにて求まった標準内非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準内非依存分割境界を抽出する第１の分割境界抽出ステップをさらに備えたことを特徴とする請求項１に記載のデータ生成方法。
【請求項４】
上記データ生成装置にさらに備えられた第２分割境界抽出手段が、上記標準外非依存境界抽出ステップにて求まった標準外非依存分割境界の内、上記標準データサイズに最も近いデータ位置における標準外非依存分割境界を抽出する第２の分割境界抽出ステップをさらに備えたことを特徴とする請求項２に記載のデータ生成方法。
【請求項５】
上記データ生成装置にさらに備えられた第３分割境界抽出手段が、上記標準内非依存分割境界も上記標準外非依存分割境界も存在しない場合に、上記最大データサイズを超えないデータ位置にある上記着目位置を分割境界として抽出する第３の分割境界抽出ステップをさらに備えたことを特徴とする請求項２に記載のデータ生成方法。
【請求項６】
上記第１の影響判断ステップにおいて、上記電子データ上で着目位置を進める方向を、電子データの前から後ろに向かう方向、または後ろから前に向かう方向、またはその両方向として、上記依存関係データ生成ステップを実行することを特徴とする請求項１に記載のデータ生成方法。
【請求項７】
上記第１の部分データサイズ判断ステップにて、データサイズが標準データサイズ以下であると判断され、上記第１の影響判断ステップにて、上記着目位置における分割による所定の影響が表れると判断された場合に、上記データ生成装置にさらに備えられた第３分割境界抽出手段が、その着目位置を標準内依存境界候補に設定する
あるいは、上記第１の部分データサイズ判断ステップにて、データサイズが標準データサイズ以下であると判断され、上記第１の影響判断ステップにて、上記着目位置における分割による所定の影響が表れないと判断された場合に、上記第３分割境界抽出手段が、その着目位置を標準内非依存境界候補に設定する標準内境界候補設定ステップをさらに備え、
当該標準内境界候補設定ステップの実行の後で、上記標準内非依存境界抽出ステップを実行する
ことを特徴とする請求項１に記載のデータ生成方法。
【請求項８】
単独で処理したときの処理結果自体には誤りが無い部分データを、ある分割境界における電子データの分割によって生成する場合に、上記電子データを取得する電子データ取得手段と、
上記電子データ取得手段が取得した電子データにおいて、部分データの開始位置を指定するとともに、該開始位置から、上記分割境界になるかどうかの判断対象となる着目位置までのデータサイズが、予め定めた標準データサイズ以下であるかを判断する部分データサイズ判断手段と、
上記電子データ上で着目位置を進める単位の１単位毎に、その生成される部分データの処理結果に、上記着目位置における分割による所定の影響が表れるか否かを、所定の判断基準に基づいて判断する影響判断手段と、
データサイズが標準データサイズ以下であり、かつ、上記所定の影響が表れないと上記影響判断手段が判断した着目位置を、標準内非依存分割境界として優先的に抽出する標準内非依存境界抽出手段と、
上記影響判断手段が、分割による所定の影響が表れると判断した上記着目位置について、その着目位置における分割境界の属性について、依存を表すデータに設定する一方、上記影響判断手段が、分割による所定の影響が表れないと判断した上記着目位置について、その着目位置における分割境界の属性について、非依存を表すデータに設定することによって、部分データの処理結果間に依存関係があることを示す情報である依存関係データを生成する依存関係データ生成手段と、
を備えたことを特徴とするデータ生成装置。
【請求項９】
請求項１から請求項７のいずれか１項に記載のデータ生成方法が備える各ステップを、コンピュータに実行させるためのデータ生成プログラム。
【請求項１０】
請求項８に記載のデータ生成装置が備える各手段として、コンピュータを機能させるためのデータ生成プログラム。
【請求項１１】
請求項９または請求項１０に記載のデータ生成プログラムを記録した記録媒体。