概要

Adobe Experience Manager(AEM)Forms を使用すると、複雑なトランザクションを単純で使いやすいデジタルエクスペリエンスに変えることができます。ただし、効率よく生産的な AEM Forms エコシステムを実装、ビルド、実行、維持するためには、多くの取り組みが必要となります。

ここでは、フォーム管理者、フォーム作成者、開発者たちが AEM Forms、特にアダプティブフォームコンポーネントを扱う際に知っておくべきガイドラインや推奨事項を紹介します。フォーム開発プロジェクトのセットアップから、AEM Forms の設定、カスタマイズ、オーサリング、最適化まで、ベストプラクティスを説明します。これらのベストプラクティスをそれぞれ実行すると、AEM Forms の全体的なパフォーマンスが向上します。 

また、AEM の一般的なベストプラクティスについて、以下をお読みになることもお勧めします。

AEM Forms のセットアップおよび設定

フォーム開発プロジェクトのセットアップ

プロジェクトの構造を簡素化し標準化することで、開発と維持にかかる労力を大幅に削減することができます。AEM プロジェクトのビルドには、オープンソースツールの Apache Maven をお勧めします。 

  • AEM プロジェクトの構造を作成し管理するために、Apache Maven multimodule-content-package-archetype を使用できます。AEM プロジェクトに合わせて、推奨される構造およびテンプレートを作成します。さらに、ビルドを自動化し、変更制御システムを提供するので、プロジェクト管理が容易になります。詳しくは、「Apache Maven を使用して AEM プロジェクトをビルドする方法」を参照してください。
  • FileVault ツール(VLT)は、CRX または AEM インスタンスをファイルシステムにマッピングするのに役立ちます。AEM プロジェクトコンテンツのチェックインやチェックアウトなどの変更制御を管理する操作を提供します。「VLT ツールの使用方法」を参照してください。
  • Eclipse 統合開発環境を使用している場合、AEM 開発者ツールを使用して Eclipse IDE を AEM インスタンスにシームレスに統合したり、AEM アプリケーションを作成したりできます。詳しくは、「Eclipse 用 AEM 開発者ツール」を参照してください。

オーサリング環境の計画

AEM プロジェクトのセットアップを完了したら、アダプティブフォームのテンプレートおよびコンポーネントを作成してカスタマイズするための計画を策定します。

  • アダプティブフォームテンプレートとは、アダプティブフォームの構造およびヘッダーとフッターの情報を定義する特別な AEM ページです。テンプレートのアダプティブフォーム用レイアウト、スタイル、基本構造は事前に設定されています。AEM Forms はアダプティブフォームの作成時にすぐに使用できるテンプレートおよびコンポーネントを提供します。ただし、必要に応じてカスタムのテンプレートやコンポーネントを作成できます。アダプティブフォームで今後必要となる追加のテンプレートやコンポーネントの要件を収集しておくことをお勧めします。詳しくは、「アダプティブフォームおよびコンポーネントのカスタマイズ」を参照してください。
  • AEM Forms では、以下のデータモデルに基づいてアダプティブフォームを作成することができます。データモデルは、フォームと AEM システム間のデータ交換のためのインターフェイスとして機能し、アダプティブフォーム内外のデータフローの XML ベースの構造を提供します。また、データモデルはスキーマおよび XFA 制約の形式で、アダプティブフォームにルールや制約を課します。 
    • なし:このオプションを使用して作成されたアダプティブフォームは、データモデルを使用しません。このようなフォームで生成されるデータ XML は、フィールドと対応する値を持つフラットな構造です。
    • XSD または XML スキーマ:XML スキーマは、組織のバックエンドシステムによってデータが生成、消費される構造を表します。デザインをデータから切り離し、フィールドとその値を XPATH を使用して結びつけます。アダプティブフォームに XML スキーマを関連付け、その要素を使用することで、アダプティブフォームに動的なコンテンツを追加することができます。生成されるデータ XML には、XML スキーマで定義される XPATH に基づくデータが含まれます。これが、アダプティブフォームを作成する上で推奨のフォームデータモデルです。詳しくは、「XML スキーマを使ったアダプティブフォームの作成」を参照してください。
    • XFA フォームテンプレート:これまで XFA ベースの HTML5 フォームに投資してきた場合、これが最適なフォームデータモデルです。XFA ベースのフォームをアダプティブフォームに直接変換する方法を提供します。すべての既存の XFA ルールは、関連付けられたアダプティブフォームに保持されます。このアダプティブフォームは、検証、イベント、プロパティ、パターンなどの XFA 構成をサポートします。

データモデルを選択する際には、要件に適合するかどうかだけでなく、すでに XFA および XSD アセットに投資をしている場合、それらの既存の投資を拡張できるかどうかを考慮することが重要です。

  • 複数のフォーム間に共通するセクションが存在します。そのようなセクションを特定して、コンテンツの再利用を促進する計画を策定してください。アダプティブフォームでは、スタンドアロンのフラグメントを作成して、フォーム間で再利用することができます。パネルをアダプティブフォーム内にフラグメントとして保存することもできます。フラグメントに対するすべての変更は関連付けられたフォームに反映されます。オーサリングにかかる時間を短縮し、フォーム間で一貫性を保つことに役立ちます。さらに、フラグメントを使用するとアダプティブフォームが軽量になるため、特に大規模なフォームではオーサリング体験が改善します。詳しくは、「アダプティブフォームフラグメント」を参照してください。

アダプティブフォームおよびコンポーネントのカスタマイズ

  • AEM Forms のインストールには、アダプティブフォームの作成に使用できる内蔵のアダプティブフォームテンプレートが用意されています。必要に応じて、カスタムテンプレートを一から作成することも、デフォルトテンプレートを元にカスタムテンプレートを作成することもできます。アダプティブフォームを含む AEM ページのヘッダー、フッター、スタイルを変更するには、新規アダプティブフォームを作成するか、既存のテンプレートを変更してアダプティブフォームを作成することをお勧めします。詳しくは、「カスタムアダプティブフォームのテンプレートの作成」を参照してください。
  • AEM クライアントライブラリは、アダプティブフォームの外観とスタイルを定義します。テーマを作成してアダプティブフォームテンプレートに適用することで、フォームのスタイルやブランディングを統一することができます。少ない変数で CSS の機能を拡張し、アダプティブフォームをカスタマイズすることができます。詳しくは、「カスタムアダプティブフォームテーマの作成」を参照してください。
  • アダプティブフォームにはレスポンシブ、タブ形式、アコーディオン、ウィザードなどのパネルレイアウトが用意されており、フォームコンポーネントをパネル上に並べる方法を制御できます。カスタマイズパネルレイアウトを作成し、フォーム作成者が使用できるようにすることができます。詳しくは、「アダプティブフォームのカスタムレイアウトコンポーネントの作成」を参照してください。
  • コンポーネントにクライアントライブラリを含めることで、アダプティブフォームやそのコンポーネントを使用するフラグメントに一貫したスタイルを適用します。詳しくは、「アダプティブフォームのページコンポーネントの作成」を参照してください。
  • アダプティブフォームコンテナ Edit ダイアログの Styling タブで、CSS ファイルパスフィールド内のクライアントライブラリへのパスを指定することで、選択したアダプティブフォームに、クライアントライブラリで定義したスタイルを適用します。 
  • インラインスタイリングを使用して、アダプティブフォームの特定のコンポーネントにスタイルを適用します。
  • フィールドやパネルレイアウトなど、アダプティブフォームの特定のコンポーネントをカスタマイズすることもできます。
    • AEM のオーバーレイ機能を使用してコンポーネントのコピーを変更します。デフォルトコンポーネントは変更しないことをお勧めします。
    • /libs のすぐに使用できるアダプティブフォームコンポーネントのレイアウトをカスタマイズするには、デフォルトレイアウトに加えて、カスタマイズレイアウトコンポーネントを作成します。
    • カスタムウィジェットまたはカスタム外観を作成することで、カスタムのインタラクティブ機能を導入できます。デフォルトコンポーネントは変更しないことをお勧めします。詳しくは、「外観フレームワーク」を参照してください。
  • PII データを取り扱う上での推奨事項については、「個人が特定できる情報の処理」を参照してください。

アダプティブフォームのオーサリング

アダプティブフォームにおけるルールの使用

AEM Forms が提供するルールエディターを使用すると、アダプティブフォームコンポーネントに動的な動きを付加するルールを作成できます。これらのルールを使用すると、条件を評価し、フィールドの表示または非表示、値の計算、ドロップダウンリストの動的な変更など、コンポーネントへのアクションをトリガーすることができます。

ルールエディターには、ルールを記述するために、視覚的なエディターとコードエディターが用意されています。コードエディターモードを使用してルールを記述する際には、以下を考慮してください。

  • ルールの記述時には、フォームフィールドおよびコンポーネントには意味のある固有の名前を使用し、名前の競合を回避します。
  • ルールの式で、コンポーネント自身を参照するには、コンポーネントの this 演算子を使用します。これにより、コンポーネント名が変更されても、ルールが有効なままになります。例えば、field1.valueCommit script: this.value > 10 のように記述します。
  • 他のフォームコンポーネントを参照する場合には、コンポーネント名を使用します。フィールドまたはコンポーネントの値を取得するには、value プロパティを使用します。例えば、field1.value とします。
  • 競合を回避するために、コンポーネントは固有の相対階層で参照します。例えば、parentName.fieldName とします。
  • 複雑なルールや共通に使用するルールを扱う場合には、指定してアダプティブフォーム間で再利用できる別のクライアントライブラリの機能としてビジネスロジックを書くことを検討します。クライアントライブラリは独立のライブラリとし、jQuery および Underscore.js 以外の外部依存性はなくしてください。クライアントライブラリは、送信されたフォームデータのサーバー側の再検証を実行するために使用することもできます。
  • アダプティブフォームが提供する一連の API を使用して、アダプティブフォームと通信したり、アダプティブフォーム上でアクションを実行したりできます。主要な API には次の項目が挙げられます。詳しくは、「アダプティブフォームの JavaScript ライブラリ API リファレンス」を参照してください。
    • guideBridge.reset():フォームをリセットします。
    • guideBridge.submit():フォームを送信します。
    • guideBridge.setFocus(somExp, focusOption, runCompletionExp):フィールドにフォーカスを設定します。
    • guideBridge.validate(errorList, somExpression, focus):フォームを検証します。
    • guideBridge.getDataXML(options):フォームデータを XML として取得します。
    • guideBridge.resolveNode(somExpression):フォームオブジェクトを取得します。
    • guideBridge.setProperty(somList, propertyName, valueList):フォームオブジェクトのプロパティを設定します。
    • 上記に加えて、以下のフィールドプロパティを使用できます。
      • field.value フィールドの値を変更します。
      • field.enabled フィールドを有効化/無効化します。
      • field.visible フィールドの表示/非表示を変更します。

大規模フォームおよび複雑なフォームのパフォーマンスの最適化

通常、パフォーマンスに関する問題が発生するのは、フォーム作成者およびエンドユーザーが、オーサリングモードで、または実行時に大規模なフォームを読み込む場合です。フォーム内のオブジェクト(フィールドおよびパネル)が増えるにしたがって、オーサリングや実行の快適さは低下します。また、複数の作成者が共同作業したり、同時にフォームをオーサリングしたりする妨げにもなります。

大規模フォームに関するパフォーマンスの問題を解決するには、以下のベストプラクティスを検討してください。

  • 可能な場合には、XFA をアダプティブフォームに変換する場合でも、XSD フォームデータモデルを使用してアダプティブフォームを作成することをお勧めします。
  • アダプティブフォームには、ユーザーから情報を取得するフィールドおよびパネルのみを含めます。静的コンテンツを最小限にするか、それらのコンテンツを別のウィンドウで開く URL を使用することを検討します。
  • すべてのフォームは特定の目的のためにデザインされますが、ほとんどのフォームにはいくつかの共通するセグメントがあります。例えば、個人の詳細、住所、雇用の詳細などです。フォームの共通の要素およびセクションに対してアダプティブフォームフラグメントを作成し、それらを複数のフォーム間で使用します。既存のフォーム内にパネルをフラグメントとして保存することもできます。フラグメントに対する変更はすべて、関連付けられたアダプティブフォームに反映されます。これにより、複数の作成者が同時に、1 つのフォームを構成する別のフラグメントの作業を行えるため、オーサリングの共同作業が促進されます。フォームにフラグメントを埋め込むこともできます。

    アダプティブフォームと同様に、フラグメント固有のすべてのスタイルおよびカスタムスクリプトは、フラグメントコンテナダイアログを使用して定義することをお勧めします。外部のオブジェクトに依存しない自己完結型のフラグメントを作成するようにしてください。

    また、フラグメントをまたぐスクリプトは使用しないでください。フラグメントの外部に参照する必要があるオブジェクトが存在する場合、そのオブジェクトを親フォームの一部とするようにしてください。それでもオブジェクトが別のフラグメントに存在しなくてはならない場合、スクリプト中でその名前を参照します。

  • フラグメントの遅延読み込みを設定します。遅延読み込みをマークされたフラグメントは、実行時に必要な場合にのみレンダリングされます。大規模なフォームでは、読み込み時間が大幅に減少します。詳しくは、「遅延読み込みの設定」を参照してください。

レコードのドキュメントの生成

レコードのドキュメント(DoR)はアダプティブフォームのフラットな PDF 版で、印刷、署名、アーカイブが行えます。アダプティブフォームが基づくフォームデータモデルによって、DoR のテンプレートを以下のように設定できます

  • XFA フォームテンプレート:関連付けられた XDP ファイルを DoR テンプレートとして使用します。
  • XSD スキーマ:アダプティブフォームが使用するのと同じ XML スキーマを使用する、関連付けられた XFA テンプレートを使用します。

    また、XSD ベースのフォームの DoR を自動的に生成することもできます。自動生成される DoR は、基本的にはアダプティブフォーム構造に基づく XDP テンプレートです。自動生成 DoR を使用する利点は、フォームへのすべての変更が DoR に反映されるということです。また、Forms Designer で自動生成 DoR をダウンロードおよび変更し、変更後の XDP テンプレートをフォームに DoR として関連付けることができます。オプションで、メタテンプレートを関連付けて、自動生成 DoR のヘッダー、フッター、構造を制御することもできます。

  • なし:自動生成 DoR を使用します。

AEM サーバー上でのアダプティブフォームの検証

クライアント側で検証をすり抜ける試みを阻止するためにも、データ送信の漏洩やビジネスルール違反の可能性を阻止するためにも、サーバー側の検証が必要です。サーバー側の検証は、必要なクライアントライブラリを読み込むことにより、サーバー上で実行されます。

  • クライアントライブラリに、アダプティブフォームの検証式の機能を含めて、アダプティブフォームコンテナダイアログでクライアントライブラリを指定します。詳しくは、「サーバー側の再検証」を参照してください。
  • サーバー側の検証により、フォームモデルが検証されます。検証のために別個のクライアントライブラリを作成し、1 つのクライアントライブラリに HTML のスタイルや DOM 操作を混在させないことをお勧めします。

フォームプロジェクトを実稼働で使用するための準備

フォーム処理サーバーの追加

ファイアウォール内側の非武装地域に、追加の AEM Forms サーバーを構成することもできます。このインスタンスは次の目的に使用できます。

  • バッチ処理:反復的なジョブや、負荷の大きいバッチとしてスケジュールされるジョブ。例えば、印刷明細、通信の生成や、PDF Generator、Output、アセンブラなどのドキュメントサービスの使用が例として挙げられます。
  • PII データの保存 PII データを処理サーバーに保存します。PII データの保存用にカスタムのストレージプロバイダーを使用している場合には必要ありません。

プロジェクトの別の環境への移動

AEM プロジェクトを別の環境に移動させたいという場合は、よくあります。移動時の主な留意事項は、次のとおりです。

  • 既存のクライアントライブラリ、カスタムコード、設定のバックアップを作成します。 
  • 製品パッケージおよびパッチを、手動で、新しい環境で指定された順序でデプロイします。
  • プロジェクト固有のコードパッケージおよびバンドルを、手動で、新しい AEM サーバー上の別個のパッケージまたはバンドルとしてデプロイします。 
  • JEE 上の AEM Forms のみ)LCA および DSC を手動で forms ワークフローサーバー上にデプロイします。
  • エクスポート-インポート機能を使用して、アセットを新しい環境に移動します。複製エージェントを構成し、アセットを発行することもできます。

AEM の設定

AEM 全体のパフォーマンスを改善するために設定するベストプラクティスのいくつかは、次のとおりです。

  • Felix Console からの JavaScript および CSS の HTML クライアントライブラリ圧縮を有効にします。「例で説明するクライアントライブラリ」を参照してください。
  • AEM ディスパッチャーの以下のクライアントライブラリをキャッシュして、発行されるフォームの応答性と安全性を高めます。 
    • guideRuntime 
    • guideRuntimeWithXFA
    • guides.I18N.de
    • guides.I18N.en
    • guides.I18N.es
    • guides.I18N.fr
    • guides.I18N.it
    • guides.I18N.js
    • guides.I18N.ko_KR
    • guides.I18N.pt_BR
    • guides.I18N.zh_CN
    • guides.I18N.zh_TW

詳しくは、「ディスパッチャー」を参照してください。

個人が特定できる情報の処理

組織にとって大きな課題の 1 つは、個人が特定できる情報(PII)の取り扱い方法です。このようなデータを取り扱うためのベストプラクティスのいくつかは、次のとおりです。

  • 組織の PII 準拠ガイドラインにより、PII データを AEM サーバーに保存することが制限されている場合があります。そのような場合には、データを AEM の外の安全なデータストレージに直接保存するカスタム送信アクションの作成を行うことができます。ただし、この場合でも、保存して再開機能または自動保存機能のデフォルト設定を使用すると JCR にデータを保存してしまうため、これらは使用しないことをお勧めします。
  • フォームポータルは、デフォルトでデータを発行 JCR ストレージに保存し、リバースレプリケーションします。ただし、慎重に取り扱う必要のあるデータの場合、これは問題となるかもしれません。そこで、ファイアウォール内側の非武装地域の別の AEM 処理インスタンスにデータを保存するように設定することもできます。詳しくは、「ドラフト&送信コンポーネントとデータベースの統合」を参照してください。
  • 自動保存を有効にする前に、利用規約フォームを使用してユーザーからの明示的な同意を得ます。この場合、ユーザーが利用規約コンポーネントの条件に合意した場合にのみ自動保存を有効にします。
  • フォームデータの保存のために、外部のストレージシステムを統合する場合、フォームポータル送信アクションオプションを使用するか、フォームの送信アクションダイアログボックスの「ポータル送信の有効化」を有効にします。JCR にデータを保存する送信アクションは使用しないでください。保存して再開機能および自動保存機能は、デフォルトでポータルストレージを使用します。特別な設定は不要です。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー