Show Menu
トピック×

遅延読み込みによる大きなフォームのパフォーマンスの向上

遅延読み込みの概要

フォームが数百以上のフィールドを持ち大きく複雑になると、エンドユーザーはフォームが表示されるときに長い時間を待たされることになります。この応答時間を最小にするために、アダプティブフォームでは、フォームを複数の論理的なフラグメントに分解し、これらのフラグメントが表示される必要な時が来るまでそれらの初期化や読み込みを遅延するように設定できます。これを遅延読み込みと呼びます。さらに、遅延読み込みが設定されたフラグメントは、ユーザーがフォーム内の他のセクションに移動し、そのフラグメントが表示されなくなると、アンロードされます。
まず最初に、遅延読み込みを設定する前に、要件と準備手順を説明します。

遅延読み込みを設定するための準備

アダプティブフォーム内のフラグメントの遅延読み込みを設定する前に、フラグメントを作成し、スクリプトで使用されたり他のフラグメントで参照されたりする値を特定し、遅延読み込みされたフラグメントの表示をコントロールするためのルールを定義するといった、戦略を定義することが重要です。
  • フラグメントの識別と作成 ​遅延読み込みを設定できるのは、アダプティブフォームのフラグメントのみです。 フラグメントは、アダプティブフォームの外部に存在し、フォーム間で再利用できるスタンドアロンセグメントです。 遅延読み込みを実装する最初の手順は、フォーム内の論理セクションを識別してフラグメントに変換することです。 フラグメントは、最初から作成することも、既存のフォームパネルをフラグメントとして保存することもできます。
    フラグメントの作成について詳しくは、 アダプティブフォームフラグメント を参照してください。
  • グローバルな値を特定しマークを付ける フォームベースのトランザクションでは、ユーザーからの適切なデータを取得しそれを処理してフォーム記入体験を簡素化するための動的な要素が関与します。例えば、フォームのフラグメント X 内にフィールド A があり、その値が別のフラグメント内のフィールド B の有効性を決定するとします。この場合、フラグメント X が遅延読み込みに対してマーク付けされた場合、フィールド A の値は、フラグメント X が読み込まれていないときでも、フィールド B を検証するために必要となります。これを実現するには、フィールド A をグローバルとしてマーク付けし、これによりその値が、フラグメント X が読み込まれていないときでもフィールド B の検証のために使用できるようになります。
    フィールド値をグローバルにする方法については、 遅延読み込みの設定 を参照してください。
  • フィールドの表示をコントロールするルールを作成する フォームには、必ずしもすべてのユーザーや条件に適用されないフィールドやセクションがいくつか含まれます。フォームの作成者や開発者は、ユーザーの入力に基づいでその表示をコントロールするために表示/非表示ルールを使用します。例えば会社住所フィールドは、フォームの職業ステータスで無職を選択したユーザーには表示されません。ルールの作成について詳しくは、 ルールエディターの使用 を参照してください。
    遅延読み込みされたフラグメント内で表示ルールを活用して、条件付きフィールドを必要なときのみ表示させることができます。また、条件付きフィールドをグローバルとしてマーク付けして、遅延読み込みフラグメントの表示式内でそれを参照することもできます。

遅延読み込みの設定

次の手順を実行して、アダプティブフォームフラグメントに対して遅延読み込みを有効にします。
  1. 遅延読み込みを有効にしたいフラグメントを含むアダプティブフォームをオーサリングモードで開きます。
  2. Select the adaptive form fragment and tap .
  3. In the sidebar, enable Load fragment lazily and tap Done .
    フラグメントは遅延読み込みが有効になりました。
遅延読み込みフラグメント内のオブジェクトの値をグローバルとしてマーク付けすることで、これらの値は、そのフラグメントが読み込まれていなくてもスクリプトで使用できるようになります。以下の操作を実行してください。
  1. アダプティブフォームフラグメントをオーサリングモードで開きます。
  2. Tap the field whose value you want to mark as global, and then tap .
  3. サイドバーで、 遅延読み込み中に値を使用 ​を有効にします。
    この値はグローバルとして設定され、そのフラグメントが読み込まれていないときでもスクリプト内で使用できるようになります。

遅延読み込みの注意点とベストプラクティス

遅延読み込みを使用する際に留意しておかなければならない制限事項、推奨事項、および重要な点を以下に示します。
  • 大きなフォームに対して遅延読み込みを設定する場合は、XFA ベースのアダプティブフォームより XSD スキーマベースのアダプティブフォームを使用することが推奨されます。XFA ベースのアダプティブフォームにおける遅延読み込みの導入によるパフォーマンスの向上は、XSD ベースのアダプティブフォームと比べ比較的小さいです。
  • レスポンシブを使用するアダプティブフォームのフラグメントに対しては遅延読み込みを設定しないでください。ルートパネルのナビゲーション ​レイアウトを使用しないで、1ページ上のすべてに遅延読み込みを適用します。 レスポンシブレイアウト設定の結果、すべてのフラグメントがアダプティブフォームに同時に読み込まれます。 また、パフォーマンスが低下する場合もあります。
  • アダプティブフォームの読み込み時に表示する最初のパネル内のフラグメントに対しては遅延読み込みを設定しないことが推奨されます。
  • 遅延読み込みは、フラグメント階層の最大 2 つのレベルまでサポートされます。
  • グローバルとして設定されたフィールドがアダプティブフォーム内で一意であることを確認してください。
  • フラグメントの表示ルールは、条件に基づいて表示または非表示するべきフラグメントに対して作成するようにしてください。例えば、配偶者情報フラグメントは、ユーザーによって指定された婚姻ステータスに基づいて表示または非表示にすることができます。
  • ファイル添付および利用条件コンポーネントは、遅延読み込みフラグメントではサポートされません。

遅延読み込みを設定するためのスクリプトに関するベストプラクティス

遅延読み込みパネル用のスクリプト作成時に留意しておかなければならない重要な点は次のとおりです。
  • 遅延読み込みが設定されたフラグメントで使用される初期化および計算スクリプトは、べき等になるようにしてください。べき等のスクリプトとは、何度実行しても同じ結果になるスクリプトです。
  • フィールドのグローバルに使用できるプロパティを使用して、遅延読み込みパネル内にあるフィールドの値をフォームのその他のすべてのパネルで使用できるようにしてください。
  • フィールドがフラグメント間でグローバルとしてマークされているかどうかにかかわらず、遅延パネル内部のフィールドの参照値を転送しないでください。
  • パネルリセット機能を使用して、パネル上で表示されているすべてのものを、次のクリック式を使ってリセットしてください。 guideBridge.resolveNode(guideBridge.getFocus({"focusOption": "navigablePanel"})).resetData()