遅延読み込みによる大きなフォームのパフォーマンスの向上 improve-performance-of-large-forms-with-lazy-loading
遅延読み込みの概要 introduction-to-lazy-loading
フォームが数百以上のフィールドを持ち、大きく複雑になると、エンドユーザーはフォームがレンダリングされる際に長時間待たされることになります。応答時間を最小限に抑えるために、アダプティブフォームではフォームを論理フラグメントに分割し、フラグメントを表示する必要が生じるまでフラグメントの初期化または読み込みを遅らせるように設定できます。 これを遅延読み込みと呼びます。さらに、遅延読み込みが設定されたフラグメントは、ユーザーがフォーム内の他のセクションに移動するとアンロードされ、フラグメントは表示されなくなります。
まず最初に、遅延読み込みを設定する前に、要件と準備手順を説明します。
遅延読み込みを設定するための準備 preparing-to-configure-lazy-loading
アダプティブフォームでフラグメントの遅延読み込みを設定する前に、フラグメントの作成、スクリプトで使用される値や他のフラグメントで参照される値の特定、遅延読み込みされるフラグメント内のフィールドの表示を制御するルールの定義を定義することが重要です。
-
フラグメントの特定と作成
遅延読み込みを設定できるのは、アダプティブフォームのフラグメントのみです。フラグメントとは、アダプティブフォームの外側にある独立したセグメントであり、フォーム間で再利用できるものです。したがって、遅延読み込みを実装するための最初の手順は、フォーム内の論理的なセクションを特定し、それらをフラグメントに変換することです。フラグメントは、最初から作成することも、または既存のフォームパネルをフラグメントとして保存することもできます。フラグメントの作成について詳しくは、アダプティブフォームフラグメントを参照してください。
-
グローバルな値の特定とマーク付け
フォームベースのトランザクションには、ユーザーからの適切なデータを取得し、それを処理してフォーム入力エクスペリエンスを簡素化するための動的な要素が含まれます。例えば、フォームのフラグメント X 内にフィールド A があり、その値が別のフラグメント内のフィールド B の有効性を決定するとします。この場合、フラグメント X が遅延読み込みに対してマーク付けされた場合、フィールド A の値は、フラグメント X が読み込まれていないときでも、フィールド B を検証するために利用できる必要があります。これを実現するには、フィールド A をグローバルとしてマーク付けします。これにより、その値が、フラグメント X が読み込まれていないときでもフィールド B の検証のために使用できるようになります。フィールド値をグローバルにする方法については、遅延読み込みの設定を参照してください。
-
フィールドの表示をコントロールするルールの記述
フォームには、必ずしもすべてのユーザーや条件に適用されないフィールドやセクションがいくつか含まれます。フォームの作成者や開発者は、ユーザーの入力に基づいてその表示をコントロールするために表示/非表示ルールを使用します。例えば、会社住所フィールドは、フォームの職業ステータスで無職を選択したユーザーには表示されません。ルールの作成について詳しくは、ルールエディターの使用を参照してください。遅延読み込みされたフラグメント内で表示ルールを活用して、必要な場合にのみ条件付きフィールドを表示させることができます。また、条件付きフィールドをグローバルとしてマーク付けして、遅延読み込みフラグメントの表示式内でそれを参照することもできます。
遅延読み込みの設定 configuring-lazy-loading
アダプティブフォームフラグメントで遅延読み込みを有効にするには、次の手順を実行します。
-
遅延読み込みを有効にするフラグメントを含むアダプティブフォームをオーサリングモードで開きます。
-
アダプティブフォームフラグメントを選択して、 をタップします。
-
サイドバーで、「フラグメントを緩慢に読み込む」を有効にして、「完了」をタップします。
フラグメントの遅延読み込みが有効になりました。
遅延読み込みフラグメント内のオブジェクトの値をグローバルとしてマーク付けすることで、これらの値は、そのフラグメントが読み込まれていなくてもスクリプトで使用できるようになります。以下の操作を実行します。
-
アダプティブフォームフラグメントをオーサリングモードで開きます。
-
グローバルとしてマークしたい値のフィールドをタップしてから、 をタップします。
-
サイドバーで、遅延読み込み中に値を使用 を有効にします。
この値は、グローバルとしてマーク付けされ、そのフラグメントが読み込まれていないときでもスクリプト内で使用できるようになります。
遅延読み込みを設定するための注意点とベストプラクティス considerations-and-best-practices-for-configuring-lazy-loading
遅延読み込みを使用する際に留意しておかなければならない制限事項、推奨事項および重要な点を以下に示します。
- 大きなフォームの遅延読み込みを設定するには、XFA ベースのアダプティブフォームよりも XSD スキーマベースのアダプティブフォームを使用することをお勧めします。 XFA ベースのアダプティブフォームでの遅延読み込みの実装によるパフォーマンスの向上は、XSD ベースのアダプティブフォームでの利得に比べて比較的少なくなります。
- レスポンシブグリッドレイアウトのフラグメントに対して遅延読み込みを設定しないでください。 パフォーマンスが低下する可能性があります。
- アダプティブフォームの読み込み時にレンダリングされる最初のパネルのフラグメントに対して遅延読み込みを設定しないことをお勧めします。
- 遅延読み込みは、フラグメント階層の最大 2 レベルまでサポートされます。
- グローバルとしてマークされたフィールドがアダプティブフォーム内で一意であることを確認します。
- 条件に基づいて表示または非表示する必要があるフラグメントに対して、フラグメントの表示ルールを記述することを検討します。例えば、配偶者情報フラグメントは、ユーザーによって指定された婚姻ステータスに基づいて表示または非表示にできます。
- ファイル添付および利用条件コンポーネントは、遅延読み込みフラグメントではサポートされません。
遅延読み込みを設定するためのスクリプトに関するベストプラクティス scripting-best-practices-for-configuring-lazy-loading
遅延読み込みパネル用のスクリプトの作成時に留意しておく必要のある重要な点を以下に示します。
-
遅延読み込みが設定されたフラグメントで使用される初期化および計算スクリプトは、べき等になるようにしてください。べき等のスクリプトとは、何度実行しても同じ結果になるスクリプトです。
-
フィールドのグローバルに使用できるプロパティを使用して、遅延読み込みパネル内にあるフィールドの値をフォームのその他のすべてのパネルで使用できるようにしてください。
-
フィールドがフラグメント間でグローバルとしてマークされているかどうかにかかわらず、遅延パネル内部のフィールドの参照値を転送しないでください。
-
パネルリセット機能を使用して、パネル上で表示されているすべてのものを、以下のクリック式を使用してリセットしてください。
guideBridge.resolveNode(guideBridge.getFocus({"focusOption": "navigablePanel"})).resetData()