Skip to main content
グループ は、複数の要素 (サブ要素と呼ばれます) から成るコレクションです。サブ要素は、さらに グループ 要素にすることもできます。 グループ 要素は、FlexiLayout ツリー内で グループ要素アイコン で示されます。
グループ 要素には、HeaderFooterFirst Found、および Repeating Group も含まれます。ドキュメントの先頭と末尾を検出するには、Header 要素と Footer 要素を使用します。それぞれ、ドキュメント内に 1 回しか出現できません。Repeating Group は繰り返し出現する グループ 要素です。Labeled Field 要素も複合要素として表すことができます。

グループ要素の検出方法

必要に応じて、検出するサブ要素の最小数を指定できます。FlexiLayout の適用時に検出されたサブ要素の数がこれより少ない場合、その複合要素は未検出と見なされます。 単純要素と同様に、グループ 要素は必須、任意、または禁止に設定できます。任意の グループ 要素に必須要素が含まれている場合、その要素をオブジェクトにマッチングできないと、グループ 要素はヌル仮説となり、プログラムは引き続き FlexiLayout のマッチングを試みます。 空の複合要素 (つまり、サブ要素を 1 つも含まない複合要素) は残さないでください。FlexiLayout のコンパイル時にプログラムが空の複合要素を検出すると、警告メッセージが表示されます。 Header 要素と Footer 要素はデフォルトで追加されます。FlexiLayout でこれらを使用しない場合は、不要な要素を削除してください。

グループ要素を使用する場合

グループ要素は、次のような場合に役立ちます。
  • FlexiLayout の独立した部分をテストしやすくするため。 たとえば、100 個の要素で構成される FlexiLayout でも、グループ要素はタイトル、本文、文書の下部を表す 3 つだけという場合があります。これら 3 つの グループ要素にはそれぞれ、文書のさらに小さな部分を記述するグループ要素が含まれます。 この方法を使うと、検討すべき候補の数を抑えられるだけでなく、各グループを個別に編集してテストできるため、FlexiLayout のデバッグも容易になります。
  • FlexiLayout ツリーでの移動を容易にするため。
  • 可能な要素仮説の数を減らし、最終的な仮説の生成を高速化するため。 要素をグループ化すると、プログラムは一連の要素を 1 つのまとまりとして扱えるようになります。このまとまりに対しては、1 つの仮説 (ただし、サブ要素の仮説で構成されます) が生成され、その品質を計算できます。 サブ要素の仮説のさまざまな組み合わせはグループ内で検討され、ツリーを下って検索する際には、最良のグループ仮説のうち一定数だけが使用されます。グループ要素の最良仮説のデフォルト数は 1 です。
    仮説の最大数を増やすことは推奨されません。ツリーが制御不能なほど肥大化し、画像に対して FlexiLayout をマッチングできなくなるおそれがあるためです。
  • すべてのサブ要素に共通する検索制約を指定するため。特定の要素の検索領域は、サブ要素で指定した検索領域とグループ全体の検索領域との交差領域として計算されます。
    場合によっては、グループ要素の検索領域とそのサブ要素の 1 つの検索領域との交差領域が空になり、プログラムがそのサブ要素を見つけられないことがあります。グループ要素には、たとえば Above: PageRect.Top + PageRect.Height/2; (つまり「画像の上半分で要素を探す」) のような単純なリレーションだけを指定するか、あるいはリレーションをまったく指定しないようにしてください。