(57)【要約】【課題】      全データに関するレコードに関してレイアウト結果を効率的に確認する情報処理技術を提供する。【解決手段】  割り当てられたデータを収め、そのデータを可視化して表示する部分表示領域をページ上にレイアウトする情報処理方法は、部分表示領域をページ内の規範位置に配置する指定データと、部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出し、その抽出されたデータを部分表示領域に割り当てて、部分表示領域のページ内における第1レイアウトを、指定データに基づく第２レイアウトと共に組み合せて表示させ、第１レイアウトに対する修正を反映させて、規範位置に基づく第２レイアウトを修正して表示する。【選択図】  図１２
2005216183.tif 000002
【特許請求の範囲】
【請求項１】
割り当てられたデータを収め、当該データを流し込むべき部分表示領域をページ上にレイアウトする情報処理方法であって、
前記部分表示領域をページ内の規範位置に配置する指定データと、当該部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出する抽出工程と、
前記抽出工程により抽出されたデータを前記部分表示領域に割り当てて、当該部分表示領域のページ内における第1レイアウトを、前記指定データに基づく第２レイアウトと共に組み合せて表示する表示制御工程と、
前記第１レイアウトに対する修正を反映させて、前記規範位置に基づく前記第２レイアウトを修正して表示するレイアウト制御工程とを備えることを特徴とする情報処理方法。
【請求項２】
前記抽出工程は、前記複数の保存データのうち、前記指定データと一定の差異を有するデータのみを抽出する第１検索工程を有することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記抽出工程は、前記第１検索工程の結果、または、保存されたデータと、前記抽出条件とに従って、前記第１レイアウトを生成するための前記データを抽出する第２検索工程を有することを特徴とする請求項１または２に記載の情報処理方法。
【請求項４】
前記抽出工程は、前記指定データに基づくレイアウトと、前記部分表示領域に割り当てられる複数の保存データに基づくレイアウトの差異を定量化して、前記データを抽出することを特徴とする請求項１または３に記載の情報処理方法。
【請求項５】
前記定量化には、前記データのレコードに基づくサイズの差、前記部分表示領域の位置情報に基づく中心点の距離、当該部分表示領域の面積比率が含まれることを特徴とする請求項４に記載の情報処理方法。
【請求項６】
前記抽出条件には、前記定量化の指定、前記第１レイアウトを生成するために抽出する前記データの数、割り当てられるデータが空のデータである場合は、当該データを当該定量化の計算に含めるか否かの指定が含まれることを特徴とする請求項１または５に記載の情報処理方法。
【請求項７】
前記抽出工程は、前記面積比率による定量化を行う場合において、前記割り当てられるデータが空のデータについては、当該定量化から除外することができることを特徴とする請求項１または６に記載の情報処理方法。
【請求項８】
割り当てられたデータを収め、当該データを流し込むべき部分表示領域をページ上にレイアウトする情報処理装置であって、
前記部分表示領域をページ内の規範位置に配置する指定データと、当該部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出する抽出手段と、
前記抽出手段により抽出されたデータを前記部分表示領域に割り当てて、当該部分表示領域のページ内における第1レイアウトを、前記指定データに基づく第２レイアウトと共に組み合せて表示する表示制御手段と、
前記第１レイアウトに対する修正を反映させて、前記規範位置に基づく前記第２レイアウトを修正して表示するレイアウト制御手段とを備えることを特徴とする情報処理装置。
【請求項９】
前記抽出手段は、前記複数の保存データのうち、前記指定データと一定の差異を有するデータのみを抽出する第１検索手段を有することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記抽出手段は、前記第１検索手段の結果、または、保存されたデータと、前記抽出条件とに従って、前記第１レイアウトを生成するための前記データを抽出する第２検索手段を有することを特徴とする請求項８または９に記載の情報処理装置。
【請求項１１】
前記抽出手段は、前記指定データに基づくレイアウトと、前記部分表示領域に割り当てられる複数の保存データに基づくレイアウトの差異を定量化して、前記データを抽出することを特徴とする請求項８または１０に記載の情報処理装置。
【請求項１２】
前記定量化には、前記データのレコードに基づくサイズの差、前記部分表示領域の位置情報に基づく中心点の距離、当該部分表示領域の面積比率が含まれることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記抽出条件には、前記定量化の指定、前記第１レイアウトを生成するために抽出する前記データの数、割り当てられるデータが空のデータである場合は、当該データを前記定量化の計算に含めるか否かの指定が含まれることを特徴とする請求項８または１２に記載の情報処理装置。
【請求項１４】
前記抽出手段は、前記面積比率による定量化を行う場合において、前記割り当てられるデータが空のデータについては、当該定量化から除外することができることを特徴とする請求項８または１３に記載の情報処理装置。
【請求項１５】
割り当てられたデータを収め、当該データを流し込むべき部分表示領域をページ上にレイアウトする情報処理をコンピュータに実行させるコンピュータ読み取り可能なプログラムであって、当該プログラムが、コンピュータを、
前記部分表示領域をページ内の規範位置に配置する指定データと、当該部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出する抽出手段と、
前記抽出手段により抽出されたデータを前記部分表示領域に割り当てて、当該部分表示領域のページ内における第1レイアウトを、前記指定データに基づく第２レイアウトと共に組み合せて表示する表示制御手段と、
前記第１レイアウトに対する修正を反映させて、前記規範位置に基づく前記第２レイアウトを修正して表示するレイアウト制御手段として機能させることを特徴とするプログラム。
【請求項１６】
前記抽出手段は、前記複数の保存データのうち、前記指定データと一定の差異を有するデータのみを抽出する第１検索処理を前記コンピュータに実行させることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記抽出手段は、前記第１検索処理の結果、または、保存されたデータと、前記抽出条件とに従って、前記第１レイアウトを生成するための前記データを抽出する第２検索処理を前記コンピュータに実行させることを特徴とする請求項１５または１６に記載のプログラム。
【請求項１８】
前記抽出手段は、前記指定データに基づくレイアウトと、前記部分表示領域に割り当てられる複数の保存データに基づくレイアウトの差異を定量化して、前記データを抽出する処理を前記コンピュータに実行させることを特徴とする請求項１５または１７に記載のプログラム。
【請求項１９】
前記定量化には、前記データのレコードに基づくサイズの差、前記部分表示領域の位置情報に基づく中心点の距離、当該部分表示領域の面積比率が含まれることを特徴とする請求項１８に記載のプログラム。
【請求項２０】
前記抽出条件には、前記定量化の指定、前記第１レイアウトを生成するために抽出する前記データの数、割り当てられるデータが空のデータである場合は、当該データを前記定量化の計算に含めるか否かの指定が含まれることを特徴とする請求項１５または１９に記載のプログラム。
【請求項２１】
前記抽出手段は、前記面積比率による定量化を行う場合において、前記割り当てられるデータが空のデータについては、当該定量化から除外する処理を前記コンピュータに実行させることを特徴とする請求項１５または２０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のための情報処理技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフサイクルが短くなっていること、インターネットの普及により、これを利用した消費者のカスタマイズサービス指向が強くなっていることなどの要因からＣＲＭ（Customer Relationship Management）、One-to-Oneマーケティングの必要性が注目されている。これらの手法は顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【０００３】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる情報量のコンテンツを最適にレイアウトして表示することが求められるようになった。
【０００４】
従来、このシステムにおいてカスタマイズ文書を作成するには、ドキュメント上にコンテナ（帳票フォームではフィールド領域とも呼ばれる）等によりレイアウトを作成し、データベースとレイアウトを関連付けることにより達成していた。この場合、レイアウトされたコンテナのサイズは固定であるため、顧客によって違った大きなサイズのデータが差し込まれた時にはテキストの場合は全てのテキストをそのコンテナ内に表示出来ない、またイメージの場合は本来の画像の大きさよりも縮小されて表示される、あるいは元サイズのまま表示する場合はコンテナ内に全て表示出来ないなどの問題があった。
【０００５】
この問題を解決するための、更なる自動レイアウトの技術としては、あるコンテナのサイズが大きくなった場合、隣接したコンテナのサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。また、特許文献２の「帳票認識方法および装置」のように、帳票認識の技術としてイメージを入力としてイメージと帳票の一致を調べるものがある。
【特許文献１】特開平７−１２９６５８号公報（段落［００４９］、図８）
【特許文献２】特開２０００−１５５７９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の特許文献１及び２においては、自動レイアウトシステムにおけるレイアウトチェックに関しては記載されていない。また、上述した従来の技術では、全てのレコードに最適なテンプレートのデザインをするために、フィールド中のコンテナのレイアウトを動的に制御するバリアブル印刷において、あるレコードを選択してテンプレートのレイアウトを行うが、そのレイアウトが他のレコードにおいて適切かどうかは、実際のレコードの切り替えを行い、テンプレートをデザインするオペレータが目視でチェックするしか方法がない。そしてその場合、全てのレコードでレイアウトの結果が適切であることを確認するためには、全てのレコードで目視により確認作業をしなければならず、レコード数が例えば１万レコードなど大きな数の場合、その作業に膨大な時間がかかってしまうという問題がある。
【０００７】
本発明は、上記の課題を鑑みてなされたものであり、全データに関するレコードに関して、作成した基本レイアウトとレイアウトバランスが相対的に大きく異なるレイアウト結果を効率的に確認する情報処理技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するための本発明にかかる、割り当てられたデータを収め、当該データを流し込むべき部分表示領域をページ上にレイアウトする情報処理方法は、
前記部分表示領域をページ内の規範位置に配置する指定データと、当該部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出する抽出工程と、
前記抽出工程により抽出されたデータを前記部分表示領域に割り当てて、当該部分表示領域のページ内における第1レイアウトを、前記指定データに基づく第２レイアウトと共に組み合せて表示する表示制御工程と、
前記第１レイアウトに対する修正を反映させて、前記規範位置に基づく前記第２レイアウトを修正して表示するレイアウト制御工程とを備えることを特徴とする。
【０００９】
あるいは、上記の課題を解決するための本発明にかかる、割り当てられたデータを収め、当該データを流し込むべき部分表示領域をページ上にレイアウトする情報処理装置は、
前記部分表示領域をページ内の規範位置に配置する指定データと、当該部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出する抽出手段と、
前記抽出手段により抽出されたデータを前記部分表示領域に割り当てて、当該部分表示領域のページ内における第1レイアウトを、前記指定データに基づく第２レイアウトと共に組み合せて表示する表示制御手段と、
前記第１レイアウトに対する修正を反映させて、前記規範位置に基づく前記第２レイアウトを修正して表示するレイアウト制御手段とを備えることを特徴とする。
【００１０】
あるいは、割り当てられたデータを収め、当該データを流し込むべき部分表示領域をページ上にレイアウトする情報処理をコンピュータに実行させるコンピュータ読み取り可能なプログラムであって、当該プログラムが、コンピュータを、
前記部分表示領域をページ内の規範位置に配置する指定データと、当該部分表示領域に割り当てられる複数の保存データとを比較して、指定された抽出条件に一致するデータを抽出する抽出手段と、
前記抽出手段により抽出されたデータを前記部分表示領域に割り当てて、当該部分表示領域のページ内における第1レイアウトを、前記指定データに基づく第２レイアウトと共に組み合せて表示する表示制御手段と、
前記第１レイアウトに対する修正を反映させて、前記規範位置に基づく前記第２レイアウトを修正して表示するレイアウト制御手段として機能させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、全データに関するレコードに関してレイアウト結果を効率的に確認することが可能になる。
【発明を実施するための最良の形態】
【００１２】
本発明の好適な実施形態を図面を参照しつつ説明する。
【００１３】
＜実施形態１＞
＜システム構成図＞
図１Ａはコンテナサイズを可変に設定してドキュメントを印刷するシステム１００を図示している。このシステムにおいて実行するコンテナサイズの制御、コンテナ間のリンク設定は図１Ｂで詳しく説明されるホストコンピュータ１０１の制御の下に実行される。図１６で記述されるプロセスは、レイアウト制御装置であるホストコンピュータ１０１内で実行され、システム１００上で実行可能となるレイアウト編集アプリケーションプログラム１２１（本発明のプログラム）のようにソフトウェアの全体、あるいはその一部分で実行される。特にレイアウト編集や印刷のステップはホストコンピュータ１０１によるソフトウェアによって実行される。
【００１４】
ソフトウェアは、例えば、以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からホストコンピュータにロードされ、実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラム、あるいはそのプログラムを格納するコンピュータの可読媒体は、コンピュータと協働したドキュメントのレイアウト編集やバリアブルデータ印刷に必要な演算処理や表示制御、コンテンツに関する情報処理を実行する手段としてコンピュータの機能を特定する。
【００１５】
ホストコンピュータ１０１はキーボード１３２やマウス１３３のようなポインティングデバイスなどの入力装置、ディスプレイ装置１４４や状況に応じてはローカルプリンタ１４５を含む出力装置と接続する。入力／出力（Ｉ／Ｏ）インターフェース１３８はホストコンピュータ１０１をネットワーク１０７に接続してシステム１００を他のコンピュータ装置（例えば、データベースサーバ１１７）に接続することができる。そのネットワーク１０７の典型はローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）である。
【００１６】
ホストコンピュータ１０１は典型的に少なくとも１つのプロセッサーユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６、ビデオインタフェース１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インターフェース、キーボード１３２やマウス１３３のためのＩ／Ｏインターフェース１４３を含んでいる。記憶装置１３９はハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含んでいる。ここでは図示されていないが磁気テープドライブもまた記憶装置として使用することができる。
【００１７】
ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される。ホストコンピュータ１０１はＧＮＵ／ＬＩＮＵＸやマイクロソフトウィンドウズ（登録商標）のようなオペレーションシステムや、典型的にはオペレーションシステムに従い形成されたコンピュータシステムのオペレーションによって、相互接続バス１３４を介して通信を行うホストコンピュータ１０１のプロセッサユニット１３５からＩ／Ｏインターフェース１４３を利用することができる。図１Ａに示したホストコンピュータ１０１を含んだシステムの例としては、ＩＢＭ互換ＰＣやＳＵＮ のＳｐａｒｃｓｔａｔｉｏｎ、あるいはそれらを含んだコンピュータシステムが考えられる。
【００１８】
レイアウトアプリケーションプログラム１２１は典型的にはハードディスクドライブ１４０に常駐し、プロセッサユニット１３５により読み出され、実行される。プログラム１２１を記憶する記憶装置１３９とネットワーク１０７からフェッチされるデータはハードディスクドライブ１４０、またはこれに呼応してメモリユニット１３６が使用され、アプリケーションプログラム１２１がＣＤ−ＲＯＭやフロッピー（登録商標）ディスク上でエンコードされ、対応するＣＤ−ＲＯＭドライブ１４２やＦＤＤ１４１を通じて読み込まれユーザに提供される。
【００１９】
あるいはもう一つの方法としてアプリケーションプログラム１２１はネットワーク１０７からユーザによってインストールするようにしてもよい。さらにソフトウェアは磁気テープまたはＲＯＭまたは集積回路、光磁気ディスクまたは無線またはホストコンピュータ１０１とその他のデバイス間の赤外線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からホストコンピュータ１０１内にロードすることもできる。但し、これらのコンピュータ可読媒体は、単に関連するコンピュータ可読媒体の規範であり、媒体の種類がこれらに限定される趣旨ではなく、他のコンピュータ可読媒体も使用することも可能である。
【００２０】
また、レイアウト編集と名づけられたアプリケーション１２１はバリアブルデータ印刷（ＶＤＰ）を行うためのプログラムモジュールであり、２つのソフトウェアコンポーネントを含んでいる。これらのうち１つめのモジュールは、レイアウトエンジンモジュール１０５であり、これはデータが流し込まれる部分表示領域であるコンテナ（矩形の範囲）のサイズや位置の制限に従ってデータベース１１９に格納されているバリアブルデータから１レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するためのソフトウェアモジュールである。レイアウトエンジン１０５は各部分表示領域（コンテナ）のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成する。
【００２１】
２つめのモジュールであるユーザインターフェースモジュール１０３はユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースとコンテナとを関連付けるメカニズムを提供するモジュールである。ユーザインターフェースモジュール１０３とレイアウトエンジンモジュール１０５はコミュニケーションチャネル１２３を介して通信することが可能である。ドキュメント作成のためのデータソースはデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上にあるデータベース１１９に格納されている。ホストコンピュータ１０１はネットワーク１０７との接続を介してデータベースサーバ１１７と通信することができる。バリアブルデータ印刷を実行する場合、レイアウト編集アプリケーション１２１はホストコンピュータ１０１か、若しくは他のコンピュータで構成されるファイルサーバ１１５に保存されるドキュメントテンプレートを生成する。またレイアウト編集アプリケーション１２１はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ１０１の記憶装置１３９に保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に直接印刷される。
【００２２】
プリントサーバ１０９は直接ネットワークに接続していないプリンタ１１３にネットワーク機能を提供するコンピュータである。プリントサーバ１０９とプリンタ１１３は典型的な通信チャネル１１１を介して接続する。
【００２３】
図２はレイアウトエンジンモジュール１０５をホストコンピュータ１０１の他にエンジンサーバ２２７にもレイアウトエンジン２２５を設けた構成を示す図である。エンジンサーバ２２７は典型的なコンピュータにより構成され、ファイルサーバ１１５に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン２２５によってドキュメントを生成するためにデータベース１１９に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェースモジュール１０３の制御の下、ユーザーインターフェース（ＵＩ）画面を介して入力され、特定のレコードのみ印刷するように設定することができる。
【００２４】
＜アプリケーションの構成図＞
＜メインウインドウ＞
図３で示されるアプリケーションウインドウ３０１は、ユーザインターフェースモジュール１０３（図１）によって、操作時にディスプレイ装置１４４に表示される。アプリケーションウインドウ３０１は、非表示にすることや、スクリーン上の色々な場所に移動することが可能なメニューバー３０２とツールバー３０３、そしてマウス１３３の位置・動作によって場所を移動可能なワークエリア３０６とオプションのパレット３１１とカーソル/ポインタデバイス３１３を有しており、これらにより特徴付けされる。
【００２５】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を有し、ツールバー３０３は、アプリケーションの特別なモードによって非表示にしたり、または表示することが可能な多くのツールボタン３０５を有する。オプションのルーラー３０８はワークエリア内のポインター、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール機能を提供するボタン３１２を有する。パレット３１１の表示はオプションで、ワークエリアの前面に表示することもでき、あるいは背面に隠すこともできる。また、このパレット３１１に対する表示制御は、アプリケーションウインドウ３０１の範囲内のみに制限したり、あるいはアプリケーションウインドウ３０１の外側に部分的、あるいはその全体を表示するようにすることもできる。
【００２６】
ツールバーエリア３０３には少なくとも、ユーザによる選択が可能な「ボタン」（４０３〜４０６）を備える（例えば、図４を参照）。以下、ボタン４０３〜４０６を説明する。
【００２７】
選択ツールボタン４０３は、コンテナの辺を選択、移動、サイズ変更、そしてコンテナのロック（固定）、あるいはロック解除をするために使われる。コンテナは、複数のコンテナの周りをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数のコンテナの選択を可能にする。
【００２８】
イメージコンテナツールボタン４０４は、スタティック或いはバリアブルイメージを持つコンテナを作成するために使われる。
【００２９】
テキストコンテナツールボタン４０５は、スタティック或いはバリアブルテキストを持つコンテナを作成するために使われる。
【００３０】
リンクツールボタン４０６は、コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンとして実装される。レイアウト編集アプリケーション１２１の図３に示したアプリケーションウインドウ３０１は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション１２１で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【００３１】
＜ドキュメントテンプレート＞
図３に示したワークエリア３０６はドキュメントテンプレートのデザインを表示・編集するために使用される。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量やサイズに基づいてどのように変化するかを理解することを可能にするものである。外部のデータベースがテンプレートにリンクされている場合には、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージをそれらのコンテナに表示することができる。ドキュメントの構造とバリアブルデータコンテナの表示は、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示するようにすることができる。
【００３２】
ワークエリア３０６はスクロールバー３０７とオプションのルーラー３０８とドキュメントテンプレート３０９に特徴付けられる。ドキュメントテンプレート３０９はページが複数あることを示すことができる。与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントにおける実際のページ数は、バリアブルデータによって変化する可能性があり、もし１ページ内にバリアブルデータを収めることができず、所定の用紙サイズのページに各コンテナを収めるような制約が基本レイアウトになかった場合には、追加のページは自動的に作成される。所定の用紙サイズのページに各コンテナを収めるように制約（後述するアンカーアイコン等により設定可能である）が基本レイアウトに設定されている場合は、ページ内で各コンテナがお互いに押したり押されたりしながら、各コンテナサイズと位置が決定され、必要に応じて流し込まれるバリアブルデータが縮小され、レコード毎に動的にレイアウトが決定される。
【００３３】
図３において破線で示されるページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示すものであり、任意に設定することが可能なページマージン３１０である。また、図４は１ページのドキュメントテンプレート３０９上に表示することが可能なオブジェクトの例を示す図であり、図４では複数のコンテナ４０７及び４０８が示されており、コンテナの辺４１４の位置を固定するアンカーアイコン４０９と固定されていない辺４１０、リンク４１２そしてスライダー４１３によりコンテナ間の相互の関係が規定されている。アンカーアイコン４０９は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン４０９が設定されると、設定された個所の位置が固定となる。つまり、図４の例では、アンカーアイコン４０９は、コンテナ４０７の左上の角に設定されているため、コンテナ４０７はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン４０９が辺に設定されている場合は、その辺が固定となり、その他の３辺の各方向に拡大可能である。また、アンカーアイコン４０９がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、４方向に拡大可能である。リンク４１２は詳細は後述するが、コンテナ４０７とコンテナ４０８が関連付けられていることを示しており、このリンクに設定されている長さ（範囲指定可能）を保ちつつ、コンテナ４０８が右方向に移動可能であることを示している。スライダー４１３は、設定されている辺と水平方向に移動可能であることを示している。
【００３４】
＜コンテナ＞
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト／イメージがレコード単位に流し込まれ、描画されるスペース（これを部分表示領域と呼ぶ）であり、図４に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス１３３の操作により移動、サイズ調整、再作成される。
【００３５】
コンテナは、アンカーアイコン４０９、リンク４１２、スライダー４１３によりコンテナの変形に関する拘束条件が規定されている。テキストやイメージデータの情報量に応じてその変形が許容されている方向にコンテナスペースの変形が制御されて、テキストデータやイメージデータがそのコンテナ内にレイアウトされる。２つのコンテナに関して相互に変形が必要となる場合、各コンテナに収納するべきテキストデータやイメージデータの量に応じて、相互のコンテナの変形がバランスするように（各コンテナにストレスの無い状態）に各コンテナの形状が制御される。
【００３６】
コンテナはポインティングデバイスとしてのマウス１３３の動作によりワークエリア３０６内の位置が特定され（図３の３１３）、ユーザインターフェースとしての画面内（図３）で移動、サイズ調整が施され、新たなコンテナを追加することも可能である。コンテナは、アンカーアイコンや、リンクそしてスライダーによりコンテナ間の相互の関係等の変形に関する種々の条件が設定され、コンテンツを表示する視覚的表現、そしてコンテナ間のインタラクションとコンテナ内の情報の編集機能を有している。ここで、コンテナを定義すると以下のようになる。
【００３７】
（１）コンテナは固定あるいは可変のコンテンツが入力され、可変コンテンツは、データソースからデータをとってきて、異なるドキュメントでは異なるデータに応じてコンテナサイズを可変するという意味でダイナミック（動的）である。可変コンテンツはアニメーション化されたもの、あるいは他の方法で時間を変更するコンテンツを含むことは印刷に適合していないため意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。けれども、可変コンテンツとリンクが設定されている場合、可変コンテナの動作によって、固定コンテンツはそれぞれのドキュメントで表示位置が異なるように表示制御される。
【００３８】
（２）コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定のような装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【００３９】
（３）コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、典型的に印刷された出力物に対して反映され、装飾が反映された結果は可視化される。可変コンテンツはデータソースから特定のデータの表示をもたらす。すなわち、その特定のデータに対して、コンテナに設定されている条件に従い、コンテナのサイズが可変に設定される。可変に設定されたコンテナのレイアウト、およびコンテナ内の特定のデータ表現は、例えば、プリンタ１１３を介して印刷されるか、ディスプレイ装置１４４上で表示されるか、その両方により処理することが可能である。
【００４０】
（４）コンテナの設定に関し、システムはユーザインターフェースモジュール１０３を備え、例えば、コンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース（ＧＵＩ）を有する。そして、ユーザインターフェースの要素はディスプレイ装置１４４上に表示される。しかしドキュメントは印刷されない。ユーザインターフェースモジュール１０３は、背景色やフォントのようなコンテナに関する装飾機能のいくつかをインタフェース画面上に表示させ、これらの装飾機能をコンテナの設定、編集、コンテナ表示に追加することができる。
【００４１】
（５）更に、ユーザインターフェースモジュール１０３による設定の例としては、コンテナ間のボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するためにコンテナに設定さするコーナー部のアイコンや、あるいはデータソースからデータをマージしたとき、コンテナの動作（例えば、上塗りした数、線、アイコンの設定、テキストの編集）を設定する。
＜コンテナに対する制約＞
コンテナはそれぞれのドキュメントにおけるコンテンツの内容を表示するために、コンテナをコンテンツと結びつけて表示制御するための制約がある。これらの制約（固定・可変コンテンツをコンテナと結びつけること）は、ユーザが一つのドキュメントテンプレートから多数のドキュメントをコントロールする主要な方法である。制約の例は、たとえば、コンテナのコンテンツの高さは、最大値４インチとするような制約が挙げられる。もうひとつの制約としては、コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならないとするような制約である。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集のために設定することが可能である。
【００４２】
イメージがページ上に定義された位置を持っているように、コンテンツの配置もその位置が特定される。コンテナは位置とサイズを持ち、それらはバリアブルデータ印刷において、コンテナ内に挿入されるコンテンツの内容に応じてコンテナのレイアウトを設定された条件の下、コンテンツの内容を表示・編集することを可能にする。コンテナは、ユーザにドキュメントのコンテンツのサイズ・位置を指定することを可能にする。いくつかのドキュメントは一つのドキュメントテンプレートから生成されるので、コンテナはユーザインターフェースモジュール１０３により与えられるコンテナに対する制約を指定することができる。
【００４３】
１つのコンテナを構成する辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。たとえば、矩形のコンテナの左辺は、関連付けられたコンテンツが配置される左側の位置を与え、同様に、コンテナの高さは生成されたドキュメントに関連付けられたコンテンツの高さの制約を与える。
【００４４】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【００４５】
（１）コンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【００４６】
（２）コンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【００４７】
（３）距離の制約が固定なら、指定された距離は全てのドキュメントの制約となる。
【００４８】
（４）コンテナの左右辺が固定の場合、コンテナの高さあるいは垂直方向の位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている高さ方向あるいは垂直方向に変えることが可能である。
【００４９】
（５）コンテナの上下辺が固定の場合、コンテナの幅あるいは水平位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている幅方向あるいは水平方向に変えることが可能である。
【００５０】
（６）コンテナの垂直軸はコンテナの右と左辺の平行で、そして中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、すべてのドキュメントで同じである。この制約で、コンテナの幅は変化するかもしれない、左右辺両方が異なったドキュメントで、垂直軸にもっとも遠いかもっとも近いかもしれない、しかし軸は全てのドキュメントで同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
【００５１】
（７）同様に、もし水平軸が固定なら、コンテナの上そして下辺が垂直に位置されることを制約する、けれども高さは、この制約によって影響されない。
【００５２】
（８）水平、垂直軸両方が固定なら、コンテナの中心位置が固定されていることを意味する、しかし、幅・高さはこの制約によって影響されない。
【００５３】
（９）コンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、すべてのドキュメントで同じ場所で、そしてコンテナに関連付けられた同じ場所で表示される。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【００５４】
（１０）垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【００５５】
「固定」の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間（レコード間）で変化するかもしれないことを意味する「可変」である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション１２１では、各コンテナ（部分表示領域）について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート１８０の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【００５６】
＜コンテナ表示・編集＞
＜新規コンテナの作成方法＞
コンテナは、テキストコンテナとイメージコンテナの2種類ある。テキストコンテナはテキスト、そして埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。図４で参照されるように、新規テキストコンテナとイメージコンテナは、テキストコンテナツール４０４、あるいはイメージコンテナツール４０５をマウス１３３でクリックし、テンプレート３０９に四角形をドラッグすることによって、ドキュメントテンプレート３０９上に作成される。コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上でマウス１３３をクリックすることによって作成される。デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが提供される。コンテナは自動的に前もって定義され、計算されたスキーマによって作成され、ドキュメントテンプレート３０９上に配置される。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログＵＩ（部分表示領域設定手段に相当する）では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ（幅、高さ）や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン（基本サイズと基準位置）を設定し、更に、最大コンテナサイズ（幅、高さ）と最小コンテナサイズ（幅、高さ）を設定することが可能となっている。
【００５７】
＜コンテナの表示方法＞
図５Ａ〜５Ｄはコンテナを構成する辺に対するルールを例示的に説明する図である。レイアウト編集アプリケーション１２１は、辺の状態を表現するために、塗りつぶし線（５０３）あるいは点線（５０４）で辺を描き、アンカー（辺の近くに描画された５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために辺、形の近くに描画されたコントロール点、５０２）、スライダー（辺の両サイドに描画された短い並行線、図４の４１３）、拡縮アイコン（５０５）、そして色を特徴として持っている。
【００５８】
図５Ａ〜５Ｄに示すコンテナの表示方法のルールは、つぎの通りである。
【００５９】
１. それぞれの辺を固定するために、塗りつぶし線で描画する。
【００６０】
２. もし幅が固定なら、左と右の辺を塗りつぶし線で描画する。
【００６１】
３. もし高さが固定なら、上と下の辺を塗りつぶし線で描画する。
【００６２】
４. 軸は描画しない。
【００６３】
５. まだ描画されていない全ての辺は、それぞれの辺の近くに拡縮アイコンが描画され、点線になる。
【００６４】
６. 垂直辺あるいは軸のそれぞれのペアで、もし両者が固定なら、交差点にアンカーが描画される。
【００６５】
７. それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
【００６６】
８. 垂直辺あるいは軸のそれぞれのペアで、もしアンカーやスライダーが描画されていなければ、交差点にハンドルが描画される。
【００６７】
上述のルール１、２、３で定義された線は、前述したように固定あるいは制限されているため、実線で描画される。ルール５のように可変の辺は、点線で描画される。ルール６、７、８で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【００６８】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【００６９】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後で記述されるように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行手段としては、すべてのドキュメントで平均化されるコンテナのコンテンツエリア、あるいは可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。レイアウト編集アプリケーション１２１は以上のルールに従って、コンテナの表示制御を実行することができる。
【００７０】
コンテンツの表現は、コンテナの辺に設定されたアンカーアイコン、スライダーアイコン等の設定に従い、サイズを可変にすることが可能なコンテナに挿入されることにより可視化される。コンテナに設定される具体的なアイコン及びコンテナを構成する辺は、以下に説明するように機能する。
【００７１】
図４の辺４１０のように、点線はコンテナに挿入されるコンテンツに依存して、ドキュメント内の辺の位置が移動可能であることを意味する。そして、実線４１４は位置が制限された辺を意味する。
【００７２】
アンカーは辺または軸が交差した場所が固定されていることを意味する。図４のアイコン４０９は、交差する辺４１４が固定されていることを示すアンカーアイコンの例である。
【００７３】
スライダーは関係付けられた辺が、その辺の垂直方向に固定されているが、並行移動する可能性があることを意味する。幅・高さのサイズは、レイアウト編集アプリケーション１２１の制御の下、副次的なダイアログウインドウに表示され、コンテナサイズとして許容される基本値・最小値・最大値の基本パターンを設定することが可能である。
【００７４】
図５Ａにおいて、コンテナ５０１を構成する実線で示される辺５０３は固定であり、点線で示される辺５０４は幅・高さ両方が可変である。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示す。また、図５Ｂにおいて、コンテナ５０１を構成する実線で示される辺５０３は固定であり、同図において、アンカーアイコン５０６は、辺５０３が交差する高さ方向および幅方向に変位が拘束されることを示す。
【００７５】
図５Ｃでは、コンテナ５０１は、コンテナの拡大あるいは縮小が任意のアンカーアイコン５０７で示されるような中心点の周りに幅方向及び高さ方向に均等に広がるという状態に設定されており、幅・高さ両方が各辺において可変である。また、図５Ｄにおいて、コンテナ５０１は、上辺５０８に対してスライダ−アイコン５０９が設定されており、固定されているが、点線で示される辺５０２は幅及び高さの両方が可変である。この場合、アンカーアイコン５０９を通る中心軸（垂直軸）を基準として、辺５０２の左右方向、及び上下方向に変位をすることが可能であり、これによりコンテナのサイズを変えることが可能である。ここでの拡大／縮小は、アンカーアイコン５０７の位置が常にコンテナ５０１の中心点となるようにレイアウト調整される。
【００７６】
＜リンクの設定方法＞
図１６はレイアウト編集アプリケーション１２１によるリンクの設定方法を示するフローチャートであり、図６の（Ａ）〜（Ｃ）はユーザーインターフェースの画面表示例を示す図である。以下、図１６、図６を用いてコンテナにリンクを設定する操作方法について説明をする。まず、リンクをコンテナに設定するためには、リンク設定の対象となるコンテナ（最低２つ）を作成する（Ｓ１６０１）。図６の（Ａ）は、２つのコンテナ６０１、６０２が作成された状態を示している。
【００７７】
次に、前述したリンクツールボタン（図４を参照）を選択した状態にする（Ｓ１６０２）。ここで、図６の（Ａ）のコンテナ６０１と６０２は、前述した図４のコンテナ４０７と４０８と同じ内容のものを示しており、固定されている辺（実線で示される）によりコンテナが構成されることを示している。また、アイコン６０３と６０４は、図４におけるアイコン４０９と同じアンカーアイコンであることを示し、６０５はマウスポインタを意味している。
【００７８】
ステップＳ１６０２において、リンクツールボタン４０６の選択が完了すると、次に、コンテナを選択する（Ｓ１６０３）。この選択は、リンクを設定する対象となるコンテナの片方（たとえば、６０１）をマウス１３３によりクリックすることでコンテナは選択される。次に、リンクを設定する他方のコンテナ（たとえば、６０２）をマウス１３３によりクリックすることで、リンクを設定する他方のコンテナの選択が完了する（Ｓ１６０４）。
【００７９】
図６の（Ｂ）の６０６はステップＳ１６０３でマウス１３３をクリックした位置（Ｐ１）とステップＳ１６０４でマウスをクリックした位置（Ｐ２）とを結ぶ、マウスポインタ１３３の概略的な軌跡を示す線分であり（図１６のＳ１６０５）、この線分が交わるコンテナの辺６１１及び辺６１２の間にリンク６０７が設定され、最終的にリンク６０７がコンテナ間に設定された状態のインターフェース画面が更新される（Ｓ１６０６）。リンク７０７が設定されたことにより、コンテナを表示するための画面表示も自動的に切り替えられる。切り替えられた画面（図６の（Ｃ））において、辺６０８は点線で示されている辺であり、前述したとおり可変の辺を示している。固定の辺（リンク設定前の６１１、６１２が対応）から可変の辺に６０８が切り替えられたのは、リンク６０７を設定したことにより、コンテナ６０１、６０２の辺を可変にする必要があるためであり、リンク６０７を設定したにもかかわらず、全ての辺が固定とすると、コンテナ間の相対的な関係をリンクにより特定するという矛盾を防ぐためであり、レイアウト編集アプリケーション１２１の制御の下、自動的に行われる処理である。
【００８０】
また、６０９は図５の５０５と同様に機能し、リンク６０７を設定したことにより、コンテナ６０１、６０２が変位できる方向をユーザに視覚的に示す識別用の表示である。図６の（Ｃ）の例では、左のコンテナ６０１の右辺と右のコンテナ６０２の左辺が可変に変化したが、これは一例であり、右コンテナ６０１が、図４の４１３で示したスライダーを持つ設定により辺６０８が可変であることを表示するようにすることもできる。以上の処理はレイアウト編集アプリケーションの制御のもとに実行することができる。
【００８１】
＜レイアウト計算方法（全体フロー）＞
本実施形態のレイアウト編集アプリケーションは、ユーザインターフェース１０３を用いてコンテナを作成し、そのコンテナ間に関連付け（リンク設定）を行ってレイアウトを作成するレイアウトモードと、レイアウトエンジン１０５により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン１０５が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。図１０はレイアウト計算の流れを説明するフローチャートである。まず、プレビューモードを選択する（Ｓ１００１）。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行い、レイアウトを作成するレイアウトモードと、作成したレイアウトに表示するデータレコード（以下、「レコード」）を挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。
【００８２】
このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。プレビューモードになったら、プレビューするレコードを選択して挿入する（Ｓ１００２）。レコードの挿入を行うと、そのレコードをレイアウトするためにレイアウト計算を行う（Ｓ１００３）。そして、処理ステップＳ１００３で計算されたレイアウトを表示し（Ｓ１００４）、他のレコードについてもプレビューを行うかどうかを判断する（Ｓ１００５）。処理ステップＳ１００５で、他のレコードについてプレビューを行う必要がないと判断した場合は（Ｓ１００５-Ｎｏ）、処理をステップＳ１００７に進め、プレビューモードを終了する。一方、ステップＳ１００５の判断で、他のレコードについてプレビューを行うのであれば、他のレコードを選択（Ｓ１００６）して再度レイアウト計算を行い（Ｓ１００３）、プレビューを行う（Ｓ１００4）。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、処理Ｓ１００４は印刷時の処理においては必要がないステップである。ステップＳ１００５は印刷するレコードを全て処理したかの判断を行う。ステップＳ１００３でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード（印刷すべく指定された全レコード）について印刷データの出力が終了した時点で本処理を終了することになる。以上の処理は、プロセッサユニット１３５の制御のもとに実行することができる。
【００８３】
＜レイアウト計算方法＞
図１１はレイアウト計算の詳細な処理の流れを説明するフローチャートであり、図１７はそのときのユーザーインターフェース画面の表示例を示した図である。本図はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの１レコードの印刷／プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【００８４】
まず、レイアウト編集アプリケーション１２１は、レイアウトを計算するコンテナの集合を求める（Ｓ１１０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば、図１５を参照すると、ページ上に４つのコンテナＡ，Ｂ、Ｃ、Ｄがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ・Ｂが集合１、コンテナＣ・Ｄが集合２となる。そして、１５０１はアンカー、１５０２は固定された辺、１５０３はコントロール点、１５０４は可変の辺の変化方向を示している矢印、１５０５は可変の辺、１５０６はリンク、そして１５０７はスライダーを示している。
【００８５】
次に、レイアウト編集アプリケーション１２１は、ステップＳ１１０１で求めたコンテナの集合から、レイアウトを計算するために一つの集合を選択する（Ｓ１１０２）。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である２つのコンテナ（Ａ，Ｂ）について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション１２１は、コンテナＡが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション１２１は、コンテナＡに流し込まれるデータを読み込み、コンテナＡが画像データ用コンテナである場合は、その画像データのサイズ（幅、高さのピクセル数、および解像度）がコンテナＡの制約を受けない場合の大きさになる。また、コンテナＡがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナＡのコンテナ属性で指定されているフォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどの文字属性に基づいて、コンテナＡに流し込まれるべきデータ量が計算できる。ここで、テキスト用コンテナの場合は、コンテナＡの縦横比が制約を考えないと決定できないため、制約を当てはめる。図１５の例では、コンテナＡは、左上および左下の角にアンカーが設定されているため、高さ（縦方向）が固定となる。よって、レイアウト編集アプリケーション１２１は、コンテナＡの基本パターンとして設定されている幅（横方向）のコンテナＡに、計算したデータ量（テキスト量）の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナＡは、基本パターンで設定されているサイズ（幅、高さ）に変更はない。
【００８６】
また、すべて流し込めないと判断された場合は、コンテナＡは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション１２１は、コンテナＡの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナＡのサイズを算出する。
【００８７】
次に、レイアウト編集アプリケーション１２１は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（Ｓ１１０３）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション１２１は、ステップＳ１１０２で算出したコンテナの集合のサイズ、つまりコンテナＡとコンテナＢとリンク１５０６（ここでは固定リンク）の合計サイズを求め、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ（図１５の例ではコンテナＡとコンテナＢのそれぞれのアンカーアイコンの距離に相当する）との差を求める。コンテナＡやコンテナＢの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション１２１は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【００８８】
レイアウト編集アプリケーション１２１は、レイアウトの最適化を行い、最適化の計算のおいて、ルール（コンテナに課せられる制限）に違反する場合は、再度ルールを違反しないようにコンテナサイズの計算をする（Ｓ１１０４）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、可変リンクの場合はリンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、ステップＳ１１０２で選択した集合のレイアウトは完成する。そして、ステップＳ１１０２〜Ｓ１１０４のステップをページ上のすべてのコンテナの集合について施し、ページ全体のレイアウトを計算し（Ｓ１１０５）、レイアウト計算の処理を終了する。
【００８９】
図１７の（Ａ）〜（Ｃ）はレイアウト計算時に示されるユーザーインタフェース画面を例示する図である。図１７の（Ａ）は、あるレコードが挿入されレイアウトが決定されている状態を表している。１７０１と１７０２はアンカー、１７０３と１７０４は固定された辺、１７０５は可変の辺、１７０６は可変の辺の変化方向を示している矢印、１７０８はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入すると、図１７の（Ｂ）の状態になる。図１７の（Ａ）の状態から可変の辺がどのように変位したかを２点鎖線で示している。そして、ルールを加味したレイアウト計算が行われる。図１７の（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナ１７１２、１７１３のサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ、前述したルールに違反しないように計算される。図１７の（Ｃ）で示されるように、図１７の（Ｂ）で示した挿入するコンテンツサイズ（ａ１ｂ１ｃ１ｄ１，ｅ１ｆ１ｇ１ｈ１）と計算後のコンテンツサイズ（ａ２ｂ２ｃ２ｄ２，ｅ２ｆ２ｇ２ｈ２）は、左右双方のコンテナにおいて同等な差異をもってコンテナサイズが計算される。以上の処理は、プロセッサユニット１３５の制御のもとに実行することができる。
【００９０】
＜データチェック処理＞
図７はコンテナを使用して作成された一般的なレイアウトの状態を示す図である。まずアプリケーションウインドウ３０１とツールバー３０３があり、ドキュメントテンプレート３０９上にコンテナＡ（７１１）、コンテナＢ（７１２）、コンテナＣ（７１３）、コンテナＤ（７１４）、コンテナＥ（７１５）が存在する。各コンテナにおいて、固定された辺は実線、可変長に動く辺は点線で示している。それぞれのコンテナは典型的なアンカーアイコン７３０、アンカーアイコン７３１、アンカーアイコン７３４と、固定された辺７２０、辺７２２、辺７２５、辺７２７、辺７２８、また可変長に動く辺７２１、辺７２３、辺７２４、辺７２６、辺７２９から成り立つ。
【００９１】
アンカーはコンテナのコーナー部に配置され、そのコーナーはドキュメントの固定位置を指定し、その位置からは移動することがないことを示す機能がある。そして各コンテナには可変長に動く辺があることから、その可変に動く方向を示すインジケーター７３５、インジケーター７３６、インジケーター７３７、インジケーター７３８、インジケーター７３９がそれぞれのコンテナ内に表示されている。インジケーターは、それが示す方向（及び逆方方向）に各コンテナの辺が可変に動くことが可能であることを示す機能を有する。
【００９２】
またコンテナのサイズが上下に可変に拡大縮小をすることを示すスライダー７３２、スライダー７３３が表示されている。このスライダーは典型的に固定の辺に付帯して表示され、この場合、例えば固定の辺７２７にスライダー７３３が付帯している。これは、辺７２７は左右に位置を変えることはないが、可変長に動く辺７２６が上下に存在するため、このコンテナＤは上下に可変長に伸び縮みをすることことができることを示している。コンテナＡ内には＜商品名コンセプト＞（７０１）、コンテナＢ内には＜特徴１＞（７０２）、コンテナＣ内には＜商品イメージ＞（７０３）、コンテナＤ内には＜特徴２＞（７０４）、コンテナＥ内には＜説明＞（７０５）の表示があるが、これはデータベースのＤＢフィールド名（列名）との関連性を示している一例であり、例えばコンテナＡには「商品名とコンセプト」のテキスト、コンテナＢとコンテナＤにはコンテナＡに入る」商品の特徴」のテキスト、コンテナＣにはコンテナＡに入る「商品のイメージ画像」、コンテナＥにはコンテナＡに入る「商品の説明文」のテキストがデータとして挿入されることを意味している。
【００９３】
また、ツールバー３０３には前述の＜アプリケーションの構成図＞で説明したように、典型的に選択ツールボタン４０３、イメージコンテナツールボタン４０４、テキストコンテナツールボタン４０５、リンクツールボタン４０６を備えている。ここでは、更に、レイアウトチェックボタン７００が置かれており、このボタンの押下によりレイアウトチェックを行う作業を始めることができる。レイアウトチェックとは、レイアウト編集アプリケーション１２１で作成した基本レイアウトのテンプレートドキュメントに対して、関連付けられているバリアブルデータを読み込み、各コンテナに入れることで、実際に印刷される場合のプレビューをレイアウト編集アプリケーション１２１のユーザインタフェース画面上に表示するための機能である。
【００９４】
図１４はキーボード１３２やマウス１３３により上記のレイアウトチェックボタン７００を押下、あるいは一般的なメニューコマンドを選択して表示されるプロパティダイアログウィンドウを示している。本実施形態ではレイアウトチェック時の様々な条件等を設定する項目をこのプロパティダイアログウィンドウ内に表示している。このプロパティダイアログウィンドウ１４０１はタイトルバー１４０２、ツールボタン１４０３、プロパティダイアログウィンドウのオープン、クローズを行うボタン１４０４、各種の情報をセットするエリア１４０５で構成されている。この各種の情報をセットするエリア１４０５には、レイアウトチェック時の条件の設定方法を選択するブロック１４１１と、次に説明する本検索の前段階として、まずデータベースのレコード数を絞り込む簡易検索（１次検索とも呼ぶ）をする際に、その条件等を設定するブロック１４１２と、実際のレイアウト計算をした結果により、差異の大きいレコードを抽出する本検索（２次検索とも呼ぶ）をする際に、その条件等を設定するブロック１４１３が存在する。
【００９５】
ブロック１４１１内にはレイアウトチェックをする条件として、現在の設定を使用するボタン１４２１か、それとも以前設定した条件を読み込むボタン１４２２かを選択できるようになっている。デフォルトでは現在の設定を使用するボタン１４２１がチェックされており、レジストリあるいはメモリ１３６に格納されている設定条件によりそれぞれのブロックにデータを表示する。ここで、保存した設定を使用する１４２２が選択された場合、その右側に配置されている参照ボタン１４４１を使用することが可能な状態にする。この参照ボタン１４４１が押下された時にはＨＤＤ１４０などに保存した以前の検索条件設定をメモリ１３６に読み込み、それぞれのブロックに対応した値を表示する。この例では現在の設定を使用する１４２１がチェックされている。
【００９６】
ブロック１４１２では簡易検索の条件を設定し、まず簡易検索をする際、どのデータベースを使用するのかを選択する。簡易検索はデータベースの中にデータを比較することによって差異の大きいレコードを抽出する検索であるため、本来は全てレイアウト結果の差異からレコードを抽出する本検索の方がはるかに正確となる。しかし非常に大きいデータベース（レコード数の多いデータベース）に接続している場合、レイアウト計算の結果によりレコードを抽出する算出方法を使用すると非常に時間がかかってしまうケースが考えられるため、本検索の前にデータベースのデータ量によって、ほぼ同じようなデータのレコードはフィルタリングを行い、ある程度レコード数を減らして本検索を行ったほうがはるかに効率的である。そのためまず簡易検索をしてある程度データベースのレコード数をフィルタリングした後、本検索を行うフローが有効であると考えられる。
【００９７】
まず、レイアウト編集アプリケーション１２１が現在接続しているデータベース（ＤＢ）を使用して簡易検索する場合は、現在接続しているＤＢを使用する１４２３を選択する。すでに検索した結果があり、それを再び新しい条件で検索すると仮定し、保存した検索結果を使用する場合は１４２４を選択する。この場合は、検索結果のデータベースを選択する必要があるため、参照ボタン１４４２を押下し、ＨＤＤ１４０などに保存されている検索結果リストから選択する。
【００９８】
図１８は検索結果ファイルをリスト表示しているダイアログウィンドウの例を示す図である。このダイアログウィンドウ１８０１は典型的にタイトル１８０２とスクロールバー１８０４を持ち、リスト１８０３に検索結果のファイル情報を表示している。ここではファイル名、検索データベース名、抽出レコード数が表示される。また、ここで選択したファイルを図１４のデータベースの検索結果ボタン１４２５が押下された場合に新しいウィンドウで表示する。
【００９９】
簡易条件の設定は条件を設定するチェックボックス１４２６の設定により行うことができる。ここでは、文字の差による比較を行う「文字の差１４２７」と画像サイズの差による比較を行う「画像サイズ１４２８」とその単位を指定する一般的なリストボックス１４２９が設けられている。文字数の差１４２７と画像サイズ１４２８による抽出の計算フローとアルゴリズムは図２０Ａ〜Ｄで詳細に説明する。簡易検索を開始するには簡易検索ボタン１４４３を押下する。そして、この検索結果は図１８の検索結果ファイル一覧に追加され、そのリストが表示される。保存したい場合には保存ボタン１８０５（図１８）を押下することで可能になる。また検索した結果の詳細情報を知りたい場合には、リストからファイルを選択し、マウスの右クリックなどの方法で図１９のような検索結果に関するレコード一覧のダイアログウィンドウを表示することで確認することができる。
【０１００】
このダイアログウィンドウ１９０１はタイトル１９０２、スクロールバー１９０３を持ち、検索結果ファイル名を表示しているファイル名ボックス１９０４、そして検索されたレコードのリスト１９０５が表示される。ここでレコードが選択されると、そのレコードに移動し、レイアウト計算を行いユーザインターフェース（ＵＩ）画面に結果をプレビューする。その結果は、例えば、図８の右ウィンドウ（８５３）のようにプレビューされる。この説明は後ほど詳細に行う。
【０１０１】
説明を図１４に戻し、２次検索である本検索の設定について説明をする。本検索の設定は図１４のブロック１４１３で行うことができる。まず、本検索において抽出するレコード数を指定する。ユーザが指定したレコードと最も差異のあるレコード、つまり、抽出数が１つだけのものを検索する場合は、最も差のあるレコードを探す１４３０を選択する。ただし最も差のあるレコードが本当にユーザの意図した差により抽出されるかどうかは正確には難しい場合がある。もし、抽出されたレコードが意図していない差のレイアウト結果であった場合、ユーザはもう一度検索をかける必要性が出てくる。
【０１０２】
しかし、これは本検索の場合、レイアウト計算を行うため思った以上に時間がかかってしまう可能性がある。その状況を回避するための1つの手段として、本検索において最も差のあるレイアウトと思われるレコードを複数抽出しておくことが考えられる。そのようにすることでもし、１つのレイアウト結果がユーザの意図するほどレイアウトの差がなかった場合でも、他のレコードでレイアウト差がある可能性を直ちに確認することが可能となり、レイアウトのチェック時間を大幅に短縮できる。よって指定レコードから最も差のあるレコードを複数抽出したい場合には、差のあるレコード数を複数抽出する１４３１を選択する。
【０１０３】
ここでは選択されていないためグレーアウトされているが、抽出レコードを計算の結果、最も差のあるレイアウトの上位５つを抽出するように、１４３２で抽出レコード数（上位）ボックスに設定をすることができる典型的な例を示している。そして本検索１４１３では簡易検索１４１２と同様に、検索するデータベースを指定することができる。現在接続しているＤＢを使用する１４３３は、現在アプリケーションが接続しているデータベース全てのレコードをレイアウト計算し、最も差のあるレコードを抽出する選択ボタンである。ただし前述した通り、データベースのレコード数が非常に多い場合、全レコードのレイアウト計算を行い、条件に従って各レコードの差を計算し、最も差のあるレイアウトになるレコードを検索するためには、時間がかかってしまうケースがあるため、簡易検索である程度レコードをフィルタリングしている場合が発生する。簡易検索で抽出されたレコードのみを本検索で計算することで、時間を短縮できるため、簡易検索で保存した検索結果をここで利用することも可能である。その場合は保存した検索結果を使用する１４３４を選択し、参照ボタン１４４５を押下して表示される図１８のような検索結果ファイルリストから、これから検索するファイルを指定する。そして選択したデータベースのファイル名を１４３５に表示する。
【０１０４】
チェックボックス１４３６は本検索でコンテナのレイアウト計算時、そのコンテナに挿入されるデータが空であった場合にもレイアウト計算を行い、その結果をレコードの差として加えるかどうかを決定する項目である。このチェックボックス１４３６がチェックされている場合は、コンテナに挿入されるデータが空の時、レイアウト計算を行わない。つまり、このコンテナに関しては値０がレコードの差に加わることと同じとなる。逆にチェックされている場合は、データが空であってもレイアウト計算の対象となる。具体的なレイアウト計算フローとアルゴリズムは図２２Ａ〜Ｅのフローチャートに従う（この処理は後に詳細に説明する。）。
【０１０５】
本検索を開始するには本検索ボタン１４４４を押下する。検索結果は簡易検索と同様に図１８のような検索結果ファイル一覧に追加され、それを選択すると図１９のようなレコードのリストが表示され、レコードを選択することでＵＩにプレビュー表示することができる（図８）。保存ボタン１４４６はレイアウトチェックのプロパティ１４０５で設定された条件等をＨＤＤ１４０などに保存するためのボタンである。ここで保存した設定ファイルは参照ボタン１４４１から参照され、１４２２において選択し再び読み込むことが可能となる。
【０１０６】
図９はユーザが図１４のプロパティダイアログにおいて設定する際の処理の流れを説明するフローチャートである。まず、ステップＳ９０１において、レイアウト編集アプリケーション１２１は、ユーザからの操作指示の入力に基づき、検索条件の設定方法を選択する。この選択では、現在、新たに設定を行うのか、あるいは保存してある設定を使用するのかを選択する。既存の検索ファイルの使用が選択されていると判断した場合、ステップＳ９０２に進み、レイアウト編集アプリケーション１２１は、保存されている検索ファイルを読み込む。そしてステップＳ９０３において、レイアウト編集アプリケーション１２１は、読み込んだファイルの条件の設定を修正するかどうかを判断する。条件を修正せず検索を開始する場合は、簡易検索をするのか、本検索をするのかを判断し（Ｓ９０４）、その判断に従い、それぞれの検索を開始する（Ｓ９１５、Ｓ９２７）。
【０１０７】
ステップＳ９０１で、現在の設定により検索を行う場合も、同様にステップＳ９０３に進み、レイアウト編集アプリケーション１２１は、条件の修正を行わないで検索を開始するか、それとも条件を修正するかを判断する。ステップＳ９０３において条件を修正する場合（Ｓ９０３−ＹＥＳ）、レイアウト編集アプリケーション１２１は、次にデータベースのフィルタリングをする簡易検索をするのか、あるいはレイアウト計算による本検索をするかを判断し（Ｓ９０５）、簡易検索する場合、処理をステップＳ９１１に進め、現在のアプリケーションに接続しているデータベースで検索するのか、それとも以前の検索結果のデータベースで検索するのかを選択する。保存されている以前の検索結果を使用する場合、レイアウト編集アプリケーション１２１保存されている検索結果のファイルを読み込む（Ｓ９１２）。次にデータを抽出するための条件を修正するか否か判断し（Ｓ９１３）、条件を修正する場合は修正を行う（Ｓ９１４）。そして簡易検索を開始する（Ｓ９１５）。
【０１０８】
一方、ステップＳ９０５において本検索する場合はまず、レイアウト編集アプリケーション１２１は、抽出するレコードはいくつにするのかを判断する（Ｓ９２１）。最もレイアウトに差のあるレコードを１つ抽出する場合には、ステップＳ９２３へ進む。複数のレコードを抽出する場合には、抽出数を設定し（Ｓ９２２）、ステップＳ９２３へ進む。
【０１０９】
ステップＳ９２３においては、レイアウト編集アプリケーション１２１は、ユーザからの操作指示の入力に応じて、現在アプリケーションに接続しているデータベースで検索するのか、それとも以前の検索結果のデータベースで検索するのかを判断する。保存されている以前の検索結果が使用されると判断された場合、ステップＳ９２４に進み、レイアウト編集アプリケーション１２１保存されている検索結果ファイルを読み込む。次にステップＳ９２５でレイアウト編集アプリケーション１２１は、データを抽出するための条件を修正するか否かを判断し、条件を修正する場合は、ステップＳ９２６に進み、条件を修正する。そして本検索を開始する（Ｓ９２７）。
【０１１０】
図１２はユーザがレイアウトチェックをする際の、作業フローを示す図である。まず、ステップＳ１２０１において、アプリケーションのメニューやツールバーなどからレイアウトチェックの項目が選択されたかを判断し、ステップＳ１２０２において、表示されたレイアウトのチェックプロパティダイアログで簡易検索の条件を設定する。ここで、前述の通り、データベースが非常に大きいケースが考えられるので、レイアウト編集アプリケーション１２１は、まずは簡易検索を行い、指定レコードと似通ったレコードはフィルタリングする（Ｓ１２０３）。
【０１１１】
そしてレイアウト編集アプリケーション１２１は、検索結果をチェックし（Ｓ１２０４）、検索結果がユーザの意図するものであるか否かを判断し（Ｓ１２０５）、意図するものであった場合は、ＨＤＤ１４０などに保存する（Ｓ１２０６）。そしてステップ１２０５の判断結果のどちらにおいても、もう一度簡易検索を行うか判断する（Ｓ１２０７）。再度簡易検索を行う場合（Ｓ１２０７−ＹＥＳ）、処理をステップＳ１２０２に戻し、同様の処理を順次繰返す。ここでは、ユーザが期待する結果になるまで、データベースのフィルタリングを繰り返し行うことができる。その際、保存した検索結果を使用し、さらにフィルタリングを行い、その検索結果をまた次の簡易検索でフィルタリングするということも考えられる（Ｓ１２０３〜Ｓ１２０７）。
【０１１２】
簡易検索が終わったら（Ｓ１２０７−ＮＯ）、処理をステップＳ１２０８に進め、レイアウト編集アプリケーション１２１は、次に本検索の条件設定を行う。そしてレイアウト編集アプリケーション１２１は、簡易検索である程度フィルタリングされたデータベースを使用し（Ｓ１２０６）、本検索を開始し（Ｓ１２０９）、抽出したレコードのレイアウトをＵＩ画面のプレビュー表示でチェックする（Ｓ１２１０）。チェックした結果、レイアウト編集アプリケーション１２１は、ユーザからの操作指示に応じて、レイアウトを修正するかどうか判断し（Ｓ１２１０）、修正する場合にはＵＩ画面のプレビュー表示上でレイアウトを修正する（Ｓ１２１２）。レイアウトを修正した場合、指定したレコードのレイアウト（比較元のレコードのレイアウト）も変化することになるため、その変化が分かるように、レイアウト編集アプリケーション１２１は、ＵＩ画面のプレビュー表示では指定レコード（比較元のレコード）と抽出レコードの両方のレイアウトを表示し、抽出レコードのレイアウトや指定レコードのレイアウトを変化させた場合に、それぞれ再びレイアウト計算を行い、その修正がどのくらい影響を与えるかを瞬時に分かるようにする。これを示しているのが図８である。これについては後ほど説明する。レイアウトを修正した場合、最も差異のあるレコードは他のレコードに変わる可能性がある。これを検索するため、レイアウト編集アプリケーション１２１は、もう一度本検索を行うか判断し（Ｓ１２１３）、再度本検索を行う場合（Ｓ１２１３−ＹＥＳ）、処理をステップＳ１２０８に進めて、本検索を再び行う。これを繰り返すことによって最適なレイアウトを決定することが可能になる。
【０１１３】
図１３は検索の条件設定から、検索の実行、検索結果の保存と検索結果によるプレビューの表示までのフローを概略的に示すフローチャートである。まず、ステップＳ１３２１において、レイアウト編集アプリケーション１２１は、メニューからレイアウトチェックの項目が選択されたかを判断し、ステップＳ１３２２において、レイアウトチェックのプロパティダイアログを表示する。そして、ステップＳ１３２３において、レイアウト編集アプリケーション１２１は、プロパティの設定に従って検索を行い、検索結果を表示する（Ｓ１３２４）。ステップＳ１３２５において、レイアウト編集アプリケーション１２１は、検索結果を保存するか否かを判断し、保存する場合はＨＤＤ１４０などに保存処理を行う（Ｓ１３２６）。そしてレイアウト編集アプリケーション１２１は、抽出レコードのデータをデータベースからフェッチし、指定レコードのレイアウトにデータを挿入し（Ｓ１３２７）、レイアウト計算を行い（Ｓ１３２８）、その結果をプレビュー表示する（Ｓ１３２９）。
【０１１４】
＜レイアウト表示の例＞
図８は図７のレイアウトに指定レコードと抽出レコードのデータが挿入されたときの例を示す図である。アプリケーションウィンドウ３０９にレイアウトビューウィンドウ８０１とレイアウトビューウィンドウ８５１が表示されている。それぞれのレイアウトビューウィンドウはタイトルバー８０２とタイトルバー８５２、ウィンドウの最大化、最小化、クローズを行うツールボタン群８０３とツールボタン群８５３、そしてウィンドウのスクロールバー８０４とスクロールバー８５４を持っている。レイアウトビューウィンドウ８０１は指定レコードのデータ、つまり最も差異のあるレコードを求める際に、比較元となるレコードのデータを、図７のレイアウトに挿入してレイアウトされたものを示している。そしてレイアウトビューウィンドウ８５１がレイアウトのチェックにおいて抽出されたレコードのデータを、図７のレイアウトに挿入してレイアウトされたものを示している例である。
【０１１５】
指定レコードはレイアウト作成時に使用していたレコードであったり、ユーザが好むレイアウト状態（このレイアウト状態にあるコンテナを「規範位置」にある状態とする。）になるレコードである。コンテナＡ、コンテナＢ、コンテナＤ、コンテナＥにはそれぞれテキストが挿入され、コンテナＣにはイメージが挿入されている。レイアウトビューウィンドウ８０１のレイアウト結果においては、図７のレイアウトと同様にバランスが取れ、ユーザに意図しているものになっていると仮定する。このレコードでレイアウト結果をプレビューしている状態で、典型的なツールボタンである、レイアウトチェックのボタンあるいはメニューコマンド等により、レイアウトチェックを開始する。そこで抽出されたレコードのレイアウト結果を、もう１つのレイアウトビューウィンドウ８５１に表示している。レイアウトビューウィンドウ８５１ではコンテナＣの画像サイズが大きくなり、コンテナＡの文字サイズがやや小さくなってしまっているのが分かる。またコンテナＥの高さがやや小さくなりすぎているなど、全体的なバランスが悪いのが確認できる。このようにレイアウトチェック機能を使用し、ＵＩ画面におけるプレビュー表示において比較でき、さらにレイアウトビューウィンドウ上でレイアウト修正すると、他のウィンドウのレイアウトが変化することで、その影響を瞬時に理解することができる。この処理は、プロセッサユニット１３５、レイアウト編集アプリケーション１２１の制御の下に実行することができる。
【０１１６】
＜簡易検索処理＞
次に、簡易検索処理の流れを具体的に説明する。図２０Ａ〜図２０Ｄは簡易検索時の典型的な処理の流れを説明するフローチャートである。まず図２０Ａは簡易検索の全体の処理の流れを示すフローチャートである。まず、ステップＳ２００１において、簡易検索を開始が指示されると、ステップＳ２００２において、レイアウト編集アプリケーション１２１は、指定レコードとの差異が大きいレコードをデータベースより抽出する。検索結果リスト（Ｓ２０５１）から抽出レコード数を計算し（Ｓ２００３）、データベースのレコード数を検索結果リストに表示する（Ｓ２００４）。そして、ステップＳ２００５において、レイアウト編集アプリケーション１２１は、検索結果リストの保存が選択されると、検索結果リストをＨＤＤ１４０などに保存する（Ｓ２００６、Ｓ２０５２）。
【０１１７】
図２０Ｂはステップ２００２の「指定レコードとの差異が大きいレコードをデータベースより抽出する」処理の具体的な流れを説明するフローチャートである。まず、ステップＳ２０１１において、ドキュメントに関連付けられたレコード数ｍをユーザによって指定されたデータベース（２０５３）から取得する。ステップＳ２０１２において、レイアウト編集アプリケーション１２１は、カウンタiを設定し、ステップＳ２０１４〜ステップＳ２０１８のステップをレコード数（ｍ）分繰り返す。
【０１１８】
ステップＳ２０１４−Ｓ２０１９のループ内では、まず、ステップＳ２０１４で、カウンタの示すi番目のレコードへ移動する。そして、ステップＳ２０１５において、レイアウト編集アプリケーション１２１は、レコード毎にレイアウトの差を計算し、その結果（２０５４）からカウンタが示すi番目のレコードにおいて差があるとされる条件（ｙ＝１）に合致したかどうかをチェックし（Ｓ２０１６）、合致した場合（Ｓ２０１６−ＹＥＳ）は検索結果リスト（２０５１）にレコード番号を追加格納する（Ｓ２０１７）。そして次のレコードに移動するためにカウンタ（ｉ）を１つ増やす（Ｓ２０１８）。レイアウト編集アプリケーション１２１は、これらのステップＳ２０１４〜Ｓ２０１８を繰り返し行い、検索レコードがなくなった時点（Ｓ２０１９−ＮＯ）でループから抜け出し、検索結果リスト（２０５１）から格納されているレコードを抽出する（Ｓ２０２０）。
【０１１９】
図２０Ｃは図２０ＢのステップＳ２０１５における「レコード毎の差の計算」処理の具体的な内容を説明するフローチャートである。ここでは現在のカウンタ（ｉ）が示している検索レコードが検索条件に合致したか否かをチェックしている。まず、ステップＳ２０２１において、レイアウト編集アプリケーション１２１は、ドキュメントのコンテナ数ｎをファイルあるいはレジストリ等に保存されているコンテナリスト（２０５５）から取得する。カウンタｊとチェック変数ｘを設定し（Ｓ２０２２）、ステップＳ２０２４〜Ｓ２０２８の処理をコンテナ数（ｎ）分繰り返す。
【０１２０】
ただし、ステップ２０２５でチェック変数ｘに値が入ってくる場合は、繰り返すコンテナが残っていたとしてもループから抜け出す（Ｓ２０２９）。これはステップＳ２０２５で差の計算をして比較したコンテナが１つでも検索の条件に合致する場合は、そのレコードをフィルタリングしないようにするためである。そうすることで次の本検索のステップ時に、レイアウトがおかしくなりそうなレコードを、簡易検索でフィルタリングしてしまうことを防ぎ、より精度の高いレイアウトチェックをすることを可能にする。従って、比較する全てのコンテナにおいて、検索条件に引っかからない場合のみにおいて、そのレコードをフィルタリングすることができる。
【０１２１】
ステップＳ２０２４〜Ｓ２０２９のループ内では、まず、ステップＳ２０２４において、カウンタの示すｊ番目のコンテナへ移動する。そしてレイアウト編集アプリケーション１２１は、現在のレコード番号iに関して、コンテナ毎にレイアウトの差を計算し（Ｓ２０２５）、その結果から、どれかのコンテナにおいて条件（ｘ＝１）に合致したか否かをチェックし（Ｓ２０２６）、合致した場合は処理をステップＳ２０２７に進め、ｉ番目のレコードにおける検索結果ｙを格納し（２０５４）、ループから抜け出す（Ｓ２０２９）。
【０１２２】
ステップＳ２０２６の判断で、条件に合致しない場合は、処理をステップＳ２０２８に進め、次のコンテナに移動するためカウンタ（ｉ）を１つ増やす（Ｓ２０２８）。レイアウト編集アプリケーション１２１は、これらのステップＳ２０２４〜Ｓ２０２８を繰り返し行い、検索するコンテナがなくなった時点で、あるいは条件（ｘ＝１）に合致した時点でループ（Ｓ２０２３〜Ｓ２０２９）から抜け出す。
【０１２３】
図２０Ｄは図２０Ｃのステップ２０２５における「コンテナ毎の差の計算」処理の流れを説明するフローチャートである。ここでは指定レコード、ｊ番目のコンテナと検索レコードのｊ番目のコンテナに挿入されるデータを元に差を計算し、現在カウンタｊ番目のコンテナが条件（ｘ＝１）に合致したかどうかをチェックする処理を実行する。
【０１２４】
まず、ステップＳ２０３１において、レイアウト編集アプリケーション１２１は、現在の検索対象となっているコンテナに挿入されるデータが空かどうかをデータベース（２０５３）より判断する。データが空の場合は、条件に引っかかると判断し（Ｓ２０３１−ＹＥＳ）、ｘ＝１として（Ｓ２０３６）処理を終了する。データが空でない場合は（Ｓ２０３１−ＮＯ）、次にそのデータがテキストか画像データかを判断し（Ｓ２０３２）、テキストの場合はi番目のレコードの、j番目のコンテナに入る文字数と、指定レコードのj番目のコンテナに入る文字数の差の絶対値を計算する（Ｓ２０３３）。
【０１２５】
ここで、図２６はデータベース２０５３の構成例を示す図である。データベーステーブル２６０１はデータベース名２６０２とデータベースフィールド名の定義２６０３、そしてレコード番号２６０４を持つ。ここではデータベースフィールドとして商品コンセプト２６１１、商品イメージ２６１２、特徴２６１３、特徴２６１４、説明２６１５が定義されている。そして、図２７はコンテナリスト２０５５の例を示す図である。コンテナリスト２７０１はリストタイトル２７０２、コンテナ番号２７０３を持ち、コンテナ番号に対応したコンテナ名２７０４を定義している。例えばステップＳ２０３３（図２０Ｄ）の計算においてi＝３、j＝４の場合、図２６においてレコード番号３のレコードの、コンテナ番号４（コンテナＥ）に入る文字数を計算し「７７」となる。
【０１２６】
また指定レコードは、ここではレコード番号０であるため、このレコードのコンテナ（コンテナＥ）に入る文字数を計算し「１５６」である。よって「１５６」から「７７」を減算し、「７９」となる。ここでレイアウト編集アプリケーション１２１は、この値がレイアウトチェックのプロパティ１４０１で設定された条件（２０５６）に引っかかるかを判断する（Ｓ２０３５）。ここでは設定された条件により判断するが、アプリケーションにこれらの判断結果を蓄積していき、後々にはそれを経験値（２０５７）としてユーザが指定をしなくてもアプリケーションが自動で判断するような仕組みも考えられる。レイアウトチェックのプロパティ１４０１では簡易検索の文字数の差（１４２７：図１４を参照）が「１０」以上であれば条件に合致するため、この場合は条件に引っかかり（Ｓ２０３５−ＹＥＳ）、チェック変数ｘに１を設定する（Ｓ２０３６）。チェック変数に１が設定されることでステップＳ２０２６（図２０Ｃ）においてステップＳ２０２７に処理が進められ、i番目のレコードにおける検索結果ｙ（２０５４）が検索結果リスト２０５１に格納されることとなる。画像の場合も同様にレイアウト編集アプリケーション１２１は、i番目のレコードの、j番目のコンテナに入るイメージサイズと、指定レコードのj番目のコンテナに入るイメージの、サイズの差の絶対値を計算し（Ｓ２０３４）、条件に合致するか否かを判断し（Ｓ２０３５）、同様の処理を順次を進める。以上の処理は、プロセッサユニット１３５の制御の下に実行することができる。
【０１２７】
＜本検索の処理＞
次に本検索の処理の具体的な処理の流れを説明する。図２２Ａ〜図２２Ｅは本検索時の典型的なアルゴリズムを説明するフローチャートである。ここで、図２２Ａは本検索の全体の概略的な処理の流れを説明するフローチャートである。まず、本検索の開始が指定されると（Ｓ２２０１）、ステップＳ２２０２において、レイアウト編集アプリケーション１２１は、指定レコードとの差異が大きいレコードをレイアウト計算結果より抽出する。検索結果リスト（２２５７）から抽出されたレコードに移動し（２２０３）、レイアウト編集アプリケーション１２１は、データベース２２５１から抽出したレコードのデータをコンテナに挿入する（Ｓ２２０４）。そしてレイアウト編集アプリケーション１２１は、抽出されたレコードにおいてレイアウト計算を行い（Ｓ２２０５）、抽出されたレコードのレイアウト計算結果をレイアウトビューウィンドウにプレビュー表示する（Ｓ２２０６）。
【０１２８】
ここでは指定レコードのレイアウトも別のレイアウトビューウィンドウにプレビュー表示し、レイアウト結果の比較が出来るようにする（Ｓ２２０６、図８）。レイアウトビューウィンドウにおいてレイアウトの修正が行われた場合（Ｓ２２０ＹＥＳ）、レイアウト編集アプリケーション１２１は、レイアウトの修正指示に従って修正されたレイアウトビューウィンドウにプレビュー表示しているレコードのデータでレイアウト計算を行い（Ｓ２２０８）、再びレイアウト計算結果をプレビュー表示する（Ｓ２２０６）。更に、先ほどの修正指示に従って別のレイアウトビューウィンドウのプレビューも変更する必要があるため、別ウィンドウにプレビュー表示しているレコードに関しても再度修正に従ってレイアウト計算を行い（Ｓ２２０８）、レイアウト計算結果をプレビュー表示する（Ｓ２２０６）。
【０１２９】
一方、ステップＳ２２０７においてレイアウト修正がなければ終了となる（Ｓ２２０７−ＮＯ）。
【０１３０】
図２２Ｂは図２２Ａのステップ２２０２における「指定レコードとの差異が大きいレコードをレイアウト結果より抽出する」処理の具体的な内容を説明するフローチャートである。まず、ステップＳ２２１１において、レイアウト編集アプリケーション１２１は、ドキュメントに関連付けられたレコード数ｍをユーザーによって指定されたデータベース（２２５１）から取得する。ステップＳ２２１において、カウンタiを設定し、ステップＳ２２１４〜Ｓ２２１７をレコード数（ｍ）分繰り返す。ここで、ステップＳ２２１３〜Ｓ２０１８のループ内では、まず、レイアウト編集アプリケーション１２１は、カウンタの示すi番目のレコードへ移動し（Ｓ２２１４）、そのレコード（ｉ）毎にレイアウトされるコンテナサイズとの差を計算し（Ｓ２２１５）、i番目のレコードにおける差の計算結果（２２５２）をリスト２２５３に順次追加し、ステップＳ２２１６において、レコード毎の差の和算結果をリスト（２２５３）化し、順次格納していく。
【０１３１】
そして、処理をステップＳ２２１７に進め、次のレコードに移動するためカウンタを１つ増やす。これらのステップＳ２２１４〜Ｓ２０１７を繰り返し行い、検索レコードがなくなった時点でループから抜け出し（Ｓ２２１８−ＮＯ）、レコード毎の差の和算結果リスト（２２５３）から最も差の大きいレコードを抽出し（Ｓ２２１９）、抽出レコード番号を検索結果リスト２２５７に格納する（２２５７）。
【０１３２】
図２２Ｃは図２２ＢのステップＳ２２１５における「レコード毎の差の計算」処理の全体フローを説明する図である。まずステップＳ２２２１において、レイアウト編集アプリケーション１２１は、現在のカウンタが示すi番目のレコードのデータをデータベース２２５１から取得し、レイアウトされているコンテナに挿入する。そして、レイアウト計算を行い（Ｓ２２２２）、そのレイアウト結果２２５４をメモリ１３６等に格納する（Ｓ２２２３）。カウンタi番目が示すレコード番号のデータに関するレイアウト計算結果と、指定レコードのレイアウト計算結果とから差を計算し、レイアウトされている全てのコンテナにおいて、その差の合計（和算）２２５２を計算する（Ｓ２２２４）。
【０１３３】
図２２Ｄは図２２ＣのステップＳ２２２４における「レコードごとに全てのコンテナの差に関する計算処理」の内容を説明するフローチャートである。まず、ステップＳ２２３１において、レイアウト編集アプリケーション１２１は、ドキュメントのコンテナ数ｎをファイルあるいはレジストリ等に保存されているコンテナリスト（２２５５）から取得する。そして、ステップＳ２２３２において、カウンタｊを設定し、ステップＳ２２３４〜Ｓ２２３６をコンテナ数（ｎ）分繰り返す。本検索では各レコードのレイアウトの差を検索レコード分全て計算する必要がある。ステップＳ２２３４〜Ｓ２２３７のループ内では、まず、レイアウト編集アプリケーション１２１は、カウンタの示すｊ番目のコンテナへ移動する（Ｓ２２３４）。そして現在のレコード番号iに関して、コンテナ毎にデータをレイアウトした場合、レイアウト編集アプリケーション１２１は、指定レコードと検索レコードの差を計算し、その計算結果（２２５２）をメモリ１３６などに格納する（Ｓ２２３５）。
【０１３４】
そして次のコンテナに移動するためカウンタ（ｊ）を１つ増やし（Ｓ２２３６）、これらのステップＳ２２３４〜Ｓ２２３６を繰り返し行い、検索するコンテナがなくなった時点（Ｓ２２３７-ＮＯ）でループから抜け出す。
【０１３５】
図２２Ｅは図２２ＤのステップＳ２２３５における「コンテナ毎の差の計算」処理の具体的な内容を説明するフローチャートである。ここでの処理は指定レコードに関するｊ番目のコンテナと、ｉ番目の検索レコードに関するｊ番目コンテナに挿入されるデータとを元にレイアウト計算を行った結果の差を計算し、i番目のレコードに関する差として、その結果を全てのレコードに関して和算していく処理を行う。
【０１３６】
まず、ステップＳ２２４１において、レイアウト編集アプリケーション１２１は、現在の検索対象コンテナ（ｊ番目のコンテナ）に挿入されるデータが空かどうかをデータベース２２５１より読み出しを行い判断する。データが空の場合は、処理をステップＳ２２４２に進め、コンテナに入るデータが空の場合もコンテナサイズの差をi番目のレコードとしての差の総和に加えるかどうかを、レイアウトプロパティ１４０１のチェックボックス１４３６（図１４）より判断する。総和に加えない場合はこのフローを終了する。この判断の効果については前述の図１４の説明において既に説明しているので、ここでは省略する。
【０１３７】
空の場合でも、総和に加える場合は（Ｓ２２４２-ＹＥＳ）、レイアウト編集アプリケーション１２１は、図２２ＣのステップＳ２２２２で計算したi番目のレコードのレイアウト計算結果（コンテナサイズ）２２５４と、指定レコードのレイアウト計算結果２２５６より、i番目のレコードに関する、j番目のコンテナサイズと、指定レコードのj番目のコンテナサイズの幅方向の差の絶対値を計算する（Ｓ２２４３）。
【０１３８】
次に、処理をステップＳ２２４４に進め、レイアウト編集アプリケーション１２１は、i番目のレコードの、j番目のコンテナサイズと、指定レコードのj番目のコンテナサイズの高さ方向の差の絶対値を計算する（２２４４）。ここで、ステップＳ２２４３とステップＳ２２４４の計算結果はステップ２２４３とステップ２２４４において、それぞれメモリ１３６等に格納され、それらの合計を計算する。その結果をi番目のレコードにおける和算結果２２５２に加算する（Ｓ２２４５）。
【０１３９】
例えばループＳ２２３４〜Ｓ２２３７内における、ステップＳ２２３５の計算においてi＝３、j＝０の場合、レイアウト編集アプリケーション１２１は、レコード番号３のレコードのデータが、コンテナ番号０（コンテナＡ）に挿入したときのレイアウトを計算すると、図８のレイアウトビューウィンドウ８５１の、コンテナＡのコンテナサイズのように、例えばコンテナの高さが２０、幅が５０となる。また指定レコードはここではレコード番号０であるため、このレコードのコンテナ（コンテナＡ）に入るデータによりレイアウトを計算すると、図８のレイアウトビューウィンドウ８０１の、コンテナＡのコンテナサイズのように、例えばコンテナの高さが「３５」、幅が「５０」となる。
【０１４０】
よってコンテナＡにおける高さの差の絶対値は「１５」（＝３５-２０）、幅の差の絶対値は「０」（＝５０−５０）となる。従って、指定レコードと０番目のレコードの、差の絶対値は「１５」と「０」を和算して「１５」となる。そしてこの値１５を３番目のレコードにおける差の和算結果に加える。この時点で、まだ０番目のコンテナの、差の計算しか行っていないため、和算の総計結果は１５である。
【０１４１】
次にステップ２２３６でコンテナ番号（ｉ）を１つインクリメントし、１番目のコンテナについて同様に計算を行う。レイアウト編集アプリケーション１２１は、レコード番号３のレコードのデータが、コンテナ番号１（コンテナＢ）に挿入されたときのレイアウトを計算すると、上述と同様に、図８のレイアウトビューウィンドウ８５１の、コンテナＢのコンテナサイズのように、例えば、コンテナの高さが５０、幅が５０となる。また、指定レコードでのコンテナのサイズは、図８のレイアウトビューウィンドウ８０１の、コンテナＢのコンテナサイズのように、例えばコンテナの高さが３５、幅が５０となる。よってコンテナＢにおける高さの差の絶対値は１５、幅の差の絶対値は０となり、指定レコードと０番目のレコードの、差の絶対値は１５と０を和算して１５となる。そしてこの値１５を３番目のレコードにおける差の和算結果に加え、コンテナ番号０に関する総計１５に、今回のコンテナ番号１に関する結果１５加え、和算の総計結果は３０となる。
【０１４２】
同様にコンテナ番号２の（コンテナＣ）のサイズの差を、例えば、高さが３０、幅が０とすると、コンテナ番号２に関する高さと幅の合計は３０となり、これを和算の総計結果加えると６０となる。同様にコンテナ番号３の（コンテナＤ）のサイズの差を、例えば、高さが０、幅が０とすると合計は０となり、和算の総計結果は変わらず６０となる。同様にコンテナ番号４の（コンテナＥ）のサイズの差を、例えば、高さが１５、幅が０とすると、コンテナ番号４に関する高さと幅の合計は１５となり、和算の総計結果は６０に１５を加え７５となる。このようにレコード毎に全コンテナの差の合計を求め、それがリスト（２２５３）化された中から最も大きい数（和算の総計結果）のレコードを抽出する（２２１９）。以上の処理は、プロセッサユニット１３５、レイアウト編集アプリケーション１２１の制御の下に実行することができる。
【０１４３】
以上説明した本発明の実施形態によれば、全データに関するレコードに関してレイアウト結果を効率的に確認することが可能になる。
【０１４４】
＜第２実施形態＞
次に、本発明の第２実施形態の内容を図２１Ａ，Ｂを参照しつつ説明する。図２１Ａは、簡易検索において、図２０ＣのステップＳ２０２５の処理の内容と異なるアルゴリズムにより実行する内容を示すフローチャートである。ここでは指定レコードに関するｊ番目のコンテナと、検索レコードのｊ番目のコンテナに挿入されるデータを元に差を計算し、現在のカウンタであるｊ番目のコンテナが条件に合致するか否かをチェックする。この内容は第１実施形態と同様であるが、差を求めるための計算方法が第１実施形態の場合と相違する。
【０１４５】
図２１Ａにおいては、まず、ステップＳ２１０１において、レイアウト編集アプリケーション１２１は、現在の検索対象コンテナに挿入されるデータが空かどうかをデータベース（２０５３）より読み出し、判断する。
【０１４６】
データが空の場合は（Ｓ２１０１−ＹＥＳ）、レイアウト編集アプリケーション１２１は、条件に合致すると判断し、チェック変数ｘを１として（Ｓ２１０７）処理を終了する。データが空でない場合は（Ｓ２１０１−ＮＯ）、ステップＳ２１０２に処理を進め、レイアウト編集アプリケーション１２１は、そのデータがテキストか画像データかを判断し、テキストの場合は、i番目のレコードの、j番目のコンテナに入る文字列長と指定レコードのj番目のコンテナに入る文字列長とを、j番目のコンテナに設定されたフォント情報から、横１列に並べたときの文字列長を計算する（Ｓ２１０３）。
【０１４７】
ここで、図２１Ｂは、図２１ＡのステップＳ２１０３における「文字列長の計算」処理の具体的な内容を説明するフローチャートである。ステップＳ２１１１において、レイアウト編集アプリケーション１２１は、i番目のレコードの、j番目のコンテナに入る文字列と、指定レコードのj番目のコンテナに入る文字列と、それぞれのフォントの属性をデータベース２０５３及びコンテナリスト２０５５から取得し、取得したフォントの属性に従って文字列を横一直線に並べた時の長さをそれぞれ計算する（Ｓ２１１２）。
【０１４８】
例えば、図２０ＤのステップＳ２０３３の計算においてi＝３、j＝４の場合を想定すると、レコード番号３のレコードに関し、コンテナ番号４（コンテナＥ）に入る文字列を、コンテナ番号４に設定されたフォントサイズ１０ポイントで１列に並べたときの長さを計算すると、例えば、２５０ｍｍになるとする。一方、レコード番号０のレコードの、コンテナ番号４（コンテナＥ）に入る文字列を、コンテナ番号４に設定されたフォントサイズ１０ポイントで１列に並べたときの長さを計算すると、例えば６５０ｍｍになるとする。よってレコード番号３のコンテナＥとレコード番号０のコンテナＥの、差の絶対値は４００（＝６５０−２５０）となり、この値がレイアウトプロパティで設定された条件の値に合致するとすれば、そのレコードは検索結果リストに載ることとなる。以上の処理は、プロセッサユニット１３５の制御の下に実行することができる。この方法は英文フォントにおいて特に有効である。英文フォントは文字によって文字の横幅が違ってくるため、単純な文字数の比較では実際のサイズとかなり違ってくる可能性があり、これを緩和するために実際に設定されているフォントを使用してサイズを計算することで、より正確な検索を行うことが可能となる。
【０１４９】
＜第３実施形態＞
次に、本発明の第３実施形態の内容を図２３を参照しつつ説明する。図２３は、本検索において、図２２ＤのステップＳ２２３５の処理と異なるアルゴリズムにより実行する内容を示すフローチャートである。ここでは指定レコードのｊ番目のコンテナと、検索レコードのｊ番目のコンテナに挿入されるデータとを元にレイアウト結果の差を計算し、現在のカウンタで示されるｊ番目のコンテナに関するレイアウト結果の差をi番目のレコードに関する差として求め、これを順次、各コンテナについての差を和算する内容は第１実施形態と同様であるが、レイアウトの差を求めるための計算方法が相違する。
【０１５０】
まず、ステップＳ２３０１において、レイアウト編集アプリケーション１２１は、現在、検索の対象となっているコンテナ（ｊ番目のコンテナ）に挿入されるデータが空かどうかをデータベース２２５１よりデータを読み出し、判断する。データが空の場合は（Ｓ２３０１−ＹＥＳ）、レイアウト編集アプリケーション１２１は、コンテナに挿入されるデータが空の場合もコンテナサイズの比率の差を計算し、i番目のレコードとして差の総和計算に加えるかどうかを、レイアウトプロパティ１４０１（図１４）のチェックボックス１４３６より判断する（Ｓ２３０２）。
【０１５１】
総和に加えない場合はこのフローを終了する。尚、空のデータを総和計算に加えるか否かの効果については前述した第１実施形態の図１４において、既に説明しているのでここでは説明を省略する。一方、空のデータを総和に加える場合は（Ｓ２３０２-ＹＥＳ）、レイアウト編集アプリケーション１２１は、図２２Ｃのステップ２２２２で計算したi番目のレコードのレイアウト結果のコンテナサイズ２２５４と指定レコードのレイアウト計算結果２２５６より、i番目のレコードに関するj番目のコンテナサイズと、指定レコードのj番目のコンテナサイズの幅の比率の絶対値を計算する（Ｓ２３０３）。
【０１５２】
また、ステップＳ２３０４において、レイアウト編集アプリケーション１２１は、i番目のレコードに関するj番目のコンテナサイズと、指定レコードのj番目のコンテナサイズの高さの比率の絶対値を計算する。そして、ステップＳ２３０３とステップＳ２３０４の計算結果はそれぞれメモリに格納され、ステップＳ２３０５において、幅の比率及び高さの比率の合計が計算され、レイアウト編集アプリケーション１２１は、その結果をi番目のレコードにおけるレイアウトの差として加算し、格納する（Ｓ２３０５）。以上の処理は、プロセッサユニット１３５の制御の下に実行することができる。幅及び高さに関する情報を比率（無次元化量）により評価することで、計算の精度をより高めることが可能になる。
【０１５３】
＜第４実施形態＞
次に、本発明の第４実施形態の内容を図２４Ａ，Ｂを参照しつつ説明する。図２４Ａは、本検索において、図２２ＣのステップＳ２２４２の処理と異なるアルゴリズムにより実行する内容を説明するフローチャートである。ここでは指定レコードに関するｊ番目のコンテナと、検索レコードのｊ番目のコンテナに挿入されるデータを元に差を計算し、現在のカウンタであるｊ番目のコンテナのレイアウトの差をi番目のレコードにおける差の和算結果２２５２に加算する内容は第１実施形態と同様であるが、差を求めるための計算方法が第１実施形態の場合と相違する。
【０１５４】
まず、ステップＳ２４０１において、レイアウト編集アプリケーション１２１は、ドキュメントのコンテナ数ｎをファイルあるいはレジストリ等に保存されているコンテナリスト（２２５５）から取得する。
【０１５５】
ステップＳ２４０２において、レイアウト編集アプリケーション１２１は、カウンタｊを設定し、ステップＳ２４０４〜Ｓ２４０９をコンテナ数（ｎ）分繰り返す。
【０１５６】
ステップＳ２４０３〜Ｓ２４１０のループ内では、まず、ステップＳ２４０４で、レイアウト編集アプリケーション１２１は、カウンタの示すｊ番目のコンテナへ移動し、現在の検索対象となっているコンテナ（ｊ番目のコンテナ）に挿入されるデータが空かどうかをデータベース２２５１よりデータを読み出し判断する（Ｓ２４０５）。
【０１５７】
データが空の場合は（Ｓ２４０５−ＹＥＳ）、処理をステップＳ２４０６に進め、レイアウト編集アプリケーション１２１は、コンテナに入るデータが空の場合でも中心点を計算するかどうかを、レイアウトプロパティ１４０１（図１４）のチェックボックス１４３６より判断する。空のデータは計算しない場合（Ｓ２４０６−ＮＯ）、処理をステップＳ２４０９に移し、検索の対象となるコンテナを変えるためにカウンタ（ｊ）を１つ増やす。この判断の効果については前述した第１実施形態の図１４において既に説明をしているので、ここでは説明を省略する。
【０１５８】
一方、ステップＳ２４０６の判断で、空のデータの場合も、計算の対象として考慮する場合は（Ｓ２４０６−ＹＥＳ）、処理をステップＳ２４０７に進め、レイアウト編集アプリケーション１２１は、指定レコードにおけるレイアウト結果のコンテナサイズ２２５６から、指定レコードに関するj番目のコンテナの中心点の位置情報を計算し、その位置情報をメモリ１３６等の指定レコードに関するコンテナ中心点の位置情報リスト（２４５１）に格納する（２４０７）。
【０１５９】
さらに、処理をステップＳ２４０８に進め、レイアウト編集アプリケーション１２１は、i番目のレコードのレイアウト結果のコンテナサイズ２２５４からi番目のレコードに関するj番目のコンテナの中心点の位置情報を計算し、その位置情報をメモリ１３６等のi番目のレコードに関するコンテナ中心点の位置情報リスト（２４５２）に格納する。
【０１６０】
そして、処理をステップＳ２４０９に進め、レイアウト編集アプリケーション１２１は、検索の対象を次のコンテナ変えるためカウンタ（ｊ）を１つ増やす。これらのステップＳ２４０４〜Ｓ２４０９を繰り返し行い、検索するコンテナがなくなった時点（Ｓ２４１０−ＮＯ）でループから抜け出す。そして、ループを抜けた後、ステップＳ２４１１において、i番目のレコードと指定レコードの、コンテナの中心点の距離の差を求め、その結果をi番目のレコードにおける差の結果（２４５３）としてメモリ１３６等に格納する（Ｓ２４１１）。
【０１６１】
図２４Ｂは図２４Ａのステップ２４１１における「差の計算」処理の具体的な内容を説明するフローチャートである。まず、ステップＳ２４２１において、レイアウト編集アプリケーション１２１は、指定レコードのコンテナ中心点の位置情報リスト（２４５１）から全てのコンテナの中心点の位置情報を距離として和算し、その和算結果（２４５４）をメモリ１３６等に格納する。図２８は、位置情報リストの例を示す図であり、ｉ番目のレコードに対するＸ座標と、Ｙ座標、及び各座標値の和として求められる距離（Ｘ＋Ｙ）のデータがリスト化され、各データの総和が計算され、格納されている状態を示す。
【０１６２】
次に処理をステップＳ２４２２に進め、レイアウト編集アプリケーション１２１は、i番目のレコードのコンテナ中心点の位置情報リスト（２４５２）からi番目のレコードについて、全てのコンテナに関する中心点の位置情報を距離として和算し、その和算結果（２４５５）をメモリ１３６などに格納する。そして、ステップＳ２４３４において、レイアウト編集アプリケーション１２１は、指定レコードの和算結果２４５４とi番目のレコードの和算結果２４５５とから、両者の差を計算し、この計算結果をi番目のレコードにおけるレイアウトの差の結果（２４５３）として、メモリ１３６等に格納する（２４２３）。以上の処理は、プロセッサユニット１３５の制御の下に実行することができる。
【０１６３】
本実施形態によれば、例えば、コンテナに挿入されるデータのレイアウトに対称性が要求されるような場合であっても、効率よくレイアウトされるコンテナと、割り当てられるデータとの適合性を効率よく評価することが可能になる。
【０１６４】
＜第５実施形態＞
次に、本発明の第５実施形態の内容を図２５を参照しつつ説明する。図２５は、本検索において、図２２ＤのステップＳ２２３５における「コンテナ毎の差の計算」処理と異なるアルゴリズムにより実行する内容を説明するフローチャートである。ここでは指定レコードに関するｊ番目のコンテナと、ｉ番目の検索レコードに関するｊ番目のコンテナとに挿入されるデータを元にレイアウトの差を計算し、現在、検索の対象となっているカウンタｊ番目のコンテナのレイアウトの差に関する計算結果をi番目のレコードにおける差の和算結果２２５２に加算する内容は第１実施形態と同様であるが、レイアウトの差の計算方法が相違する。
【０１６５】
まず、ステップＳ２５０１において、レイアウト編集アプリケーション１２１は、現在の検索対象であるコンテナ（ｊ番目のコンテナ）に挿入されるデータが空かどうかをデータベース２２５１よりデータを読み出し、判断する。データが空の場合は（Ｓ２５０１-ＹＥＳ）、コンテナに挿入されるデータが空の場合も、コンテナ面積の比率の差を求める計算において、i番目のレコードとしての差の総和に加えるか否か、レイアウト編集アプリケーション１２１は、レイアウトプロパティ１４０１のチェックボックス１４３６（図１４）より判断する（Ｓ２５０２）。
【０１６６】
空のデータを総和に加えない場合は（Ｓ２５０２-ＮＯ）、このフローを終了する。尚、空のデータを総和計算に加えることに関しては、前述した第１実施形態の図１４において、既に説明しているので、ここでは説明を省略する。ステップＳ２５０２の判断において、空のデータを総和計算に加える場合は（Ｓ２５０２-ＹＥＳ）、処理をステップＳ２５０３に進め、レイアウト編集アプリケーション１２１は、図２２Ｃのステップ２２２２で計算したi番目のレコードのレイアウト結果によるコンテナサイズ２２５４と、指定レコードのレイアウト計算結果２２５６より、i番目のレコードにおけるj番目のコンテナの面積と、指定レコードにおけるj番目のコンテナの面積の比率の絶対値を計算し（Ｓ２５０３）、その結果はメモリ１３６等に格納される（２２５１）。そして、ステップＳ２５０４において、ステップ２５０３における計算結果をi番目のレコードにおける差の和算結果（２２５２）としてメモリ１３６等に格納する。以上の処理は、プロセッサユニット１３５の制御の下に実行することができる。
【０１６７】
本実施形態によれば、例えば、コンテナに挿入されるデータが、画像データであるような場合、コンテナ内に挿入された状態でデータがコンテナ内に占める占有の割合によりレイアウト結果を定量的に評価することができ、効率よくレイアウトされるコンテナと、割り当てられるデータとの適合性を効率よく評価することが可能になる。
【０１６８】
＜他の実施形態＞
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１６９】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１７０】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１７１】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１７２】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１７３】
【図１Ａ】本発明の実施形態にかかるコンピュータシステムの構成を示す図である。
【図１Ｂ】ホストコンピュータの具体的な構成を説明する図である。
【図２】レイアウトエンジンモジュールをホストコンピュータ１０１の他にエンジンサーバ２２７にもレイアウトエンジン２２５を設けた構成を示す図である。
【図３】メニューバー、ツールバー、ワークエリア、フローティングパレットを含むユーザインターフェース画面を示す図である。
【図４】コンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナを示す図である。
【図５Ａ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図５Ｂ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図５Ｃ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図５Ｄ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図６】リンク作成時のユーザーインターフェースの画面表示例を示す図である。
【図７】コンテナを使用して作成された一般的なレイアウトの状態を示す図である。
【図８】図７のレイアウトに指定レコードと抽出レコードのデータが挿入されたときの例を示す図である。
【図９】ユーザが図１４のプロパティダイアログにおいて設定する際の処理の流れを説明するフローチャートである。
【図１０】レイアウト計算の流れを説明するフローチャートである。
【図１１】レイアウト計算の詳細な処理の流れを説明するフローチャートである。
【図１２】ユーザがレイアウトチェックをする際の、典型的な作業フローを説明するフローチャートである。
【図１３】検索の条件設定から、検索の実行、検索結果の保存と検索結果によるプレビューの表示までのフローを概略的に示すフローチャートである。
【図１４】プロパティダイアログウィンドウを示す図である。
【図１５】レイアウト計算時におけるコンテナの集合について説明した図である。
【図１６】リンクの設定方法の具体的な内容を説明するフローチャートである。
【図１７】図１１のフローに対応するユーザーインターフェース画面の表示例を示した図である。
【図１８】検索結果ファイルをリスト表示しているダイアログウィンドウの例を示す図である。
【図１９】検索結果に関するダイアログウィンドウを示す図である。
【図２０Ａ】簡易検索の全体の処理の流れを示すフローチャートである。
【図２０Ｂ】図２０Ａのステップ２００２の処理の具体的な内容を説明するフローチャートである。
【図２０Ｃ】図２０ＢのステップＳ２０１５における処理の具体的な内容を説明するフローチャートである。
【図２０Ｄ】図２０Ｃのステップ２０２５における処理の流れを説明するフローチャートである。
【図２１Ａ】簡易検索において、図２ＣのステップＳ２０２５の処理の内容を説明するフローチャートである。
【図２１Ｂ】図２１ＡのステップＳ２１０３における「文字列長の計算」処理の内容を説明するフローチャートである。
【図２２Ａ】本検索の全体の概略的な処理の流れを説明するフローチャートである。
【図２２Ｂ】図２２Ａのステップ２２０２における処理の内容を説明するフローチャートである。
【図２２Ｃ】図２２Ｂのステップ２２１５における処理の全体フローを示す図である。
【図２２Ｄ】図２２ＣのステップＳ２２２４における処理の内容を説明するフローチャートである。
【図２２Ｅ】図２２ＤのステップＳ２２３５における「コンテナ毎の差の計算」処理の内容を説明するフローチャートである。
【図２３】本検索において、図２２ＤのステップＳ２２３５の処理の内容を説明するフローチャートである。
【図２４Ａ】図２２ＣのステップＳ２２４２の処理と異なるアルゴリズムにより実行する内容を説明するフローチャートである。
【図２４Ｂ】図２４Ａのステップ２４１１における「差の計算」処理の内容を説明するフローチャートである。
【図２５】図２２ＤのステップＳ２２３５における「コンテナ毎の差の計算」処理の内容を説明するフローチャートである。
【図２６】データベース２０５３（図２０Ｄ）の構成例を示す図である。
【図２７】コンテナリスト２０５５（図２０Ｃ）の例を示す図である。
【図２８】位置情報リストの例を示す図である。
【図１Ａ】
2005216183.tif 000003
【図１Ｂ】
2005216183.tif 000004
【図２】
2005216183.tif 000005
【図３】
2005216183.tif 000006
【図４】
2005216183.tif 000007
【図５Ａ】
2005216183.tif 000008
【図５Ｂ】
2005216183.tif 000009
【図５Ｃ】
2005216183.tif 000010
【図５Ｄ】
2005216183.tif 000011
【図６】
2005216183.tif 000012
【図７】
2005216183.tif 000013
【図８】
2005216183.tif 000014
【図９】
2005216183.tif 000015
【図１０】
2005216183.tif 000016
【図１１】
2005216183.tif 000017
【図１２】
2005216183.tif 000018
【図１３】
2005216183.tif 000019
【図１４】
2005216183.tif 000020
【図１５】
2005216183.tif 000021
【図１６】
2005216183.tif 000022
【図１７】
2005216183.tif 000023
【図１８】
2005216183.tif 000024
【図１９】
2005216183.tif 000025
【図２０Ａ】
2005216183.tif 000026
【図２０Ｂ】
2005216183.tif 000027
【図２０Ｃ】
2005216183.tif 000028
【図２０Ｄ】
2005216183.tif 000029
【図２１Ａ】
2005216183.tif 000030
【図２１Ｂ】
2005216183.tif 000031
【図２２Ａ】
2005216183.tif 000032
【図２２Ｂ】
2005216183.tif 000033
【図２２Ｃ】
2005216183.tif 000034
【図２２Ｄ】
2005216183.tif 000035
【図２２Ｅ】
2005216183.tif 000036
【図２３】
2005216183.tif 000037
【図２４Ａ】
2005216183.tif 000038
【図２４Ｂ】
2005216183.tif 000039
【図２５】
2005216183.tif 000040
【図２６】
2005216183.tif 000041
【図２７】
2005216183.tif 000042
【図２８】
2005216183.tif 000043