AEM ヘッドレスデベロッパージャーニーのこの部分では、コンテンツ構造をモデル化する方法について説明します。次に、チャネル間での再利用のために、コンテンツフラグメントモデルとコンテンツフラグメントを使用した Adobe Experience Manager(AEM)の構造を実現します。
冒頭の「CMS ヘッドレス開発について学ぶ」では、ヘッドレスコンテンツ配信と、それを使用すべき理由について説明しました。「AEM ヘッドレスの概要」では、独自のプロジェクトのコンテキストで AEM ヘッドレスについて説明しました。
以前の AEM ヘッドレスジャーニードキュメント(「AEM ヘッドレスを使用した初めてのエクスペリエンスへのパス」)では、初めてのプロジェクトの実装に必要な手順について説明しました。読み終えた後は、以下ができるようになるはずです。
この記事は、これらの基本事項に基づいて構築されており、独自の AEM ヘッドレスプロジェクトを準備する方法を理解できます。
データモデリングは、リレーショナルデータベースを開発する際に使用される非常に大きなフィールドです。本やオンライン情報源は多くあります。
ここでは、AEM ヘッドレスで使用するデータをモデリングする際に関心のある側面のみを考慮します。
世界は大きくて、悪です。
多分そうでないかもしれませんが、世界は確かに大きくて複雑です。データモデリングは、ある目的に必要な特定の情報を使用して、非常に(非常に)小さなサブセクションのシンプルな表現を定義するために使用されます。
AEM ではコンテンツを扱うので、データモデリングをコンテンツモデリングと呼びます。
次に例を示します。
学校は多数ありますが、いろいろな共通点があります。
このような小さな例でも、リストは無限に見えるかもしれません。ただし、アプリケーションで単純なタスクを実行するだけの場合は、情報を必要事項に制限する必要があります。
例えば、地域内のすべての学校向けに特別なイベントを広告します。
説明したい内容は、エンティティと呼ばれ、基本的には情報を保存したい「物」です。
これらに関して保存する情報は、名前、教師の資格などの属性(プロパティ)です。
次に、エンティティ間に様々な関係があります。例えば、通常、学校には教頭が 1 人しかいませんが、多くの教師(教頭も教師)がいます。
この情報を分析し定義するプロセスは、コンテンツモデリングと呼ばれます。
エンティティとその関係を説明する概念スキーマを作成することから始める必要が生じる場合が多いです。通常、これは概要レベル(概念的)のものです。
これが安定したら、エンティティを記述する論理スキーマに、属性と関係と共にモデルを変換できます。このレベルでは、重複を排除し、デザインを最適化するために、定義を詳細に調べる必要があります。
シナリオの複雑さに応じて、これら 2 つの手順が結合される場合があります。
例えば、Head Teacher
と Teacher
に別々のエンティティが必要ですか。それとも、Teacher
モデルの追加属性だけが必要ですか。
ライフサイクル全体にわたってコンテンツの正確性と一貫性を保証するには、データの整合性が必要です。これには、コンテンツ作成者が何を保存するかを容易に理解できるようにすることが含まれます。そのため、次のことが重要です。
データの冗長性は、同じ情報がコンテンツ構造内に 2 回格納される場合に発生します。コンテンツの作成時に混乱が生じ、クエリ時にエラーが生じる可能性があるので、この方法は避けてください。記憶領域の誤用は言うまでもありません。
構造を最適化することで、コンテンツの作成とクエリの両方でパフォーマンスを向上できます。
すべてがバランスを取る行為ですが、複雑すぎる構造を作成したり、レベルが多すぎる構造を作成したりすると、次が生じる場合があります。
作成者がコンテンツを生成する際に混乱を招く。
必要なコンテンツを取得するために、クエリがネストされた(参照された)コンテンツフラグメントにアクセスする必要がある場合、パフォーマンスに大きく影響する。
データモデリングは確立された一連のテクニックで、関係データベースを開発する際によく使用されます。そのため、コンテンツモデリングは AEM ヘッドレスに対して何を意味するのでしょうか。
アプリケーションが AEM から必要なコンテンツを一貫して効率的に要求し、受け取れるようにするには、このコンテンツが構造化されている必要があります。
つまり、アプリケーションは、事前に応答の形式を把握し、その処理方法を把握しています。これは、自由形式のコンテンツを受け取るよりもはるかに簡単です。自由形式のコンテンツを受け取る場合は、そのコンテンツの内容と使用方法を判断するために解析する必要があります。
AEM は、コンテンツフラグメントを使用して、コンテンツをアプリケーションにヘッドレスに配信するために必要な構造を提供します。
コンテンツモデルの構造には次が当てはまります。
コンテンツフラグメントモデルは、AEM GraphQL スキーマの基礎としても使用され、コンテンツを取得するために使用されます。これについては後のセッションでさらに説明します。
コンテンツのリクエストは、標準の GraphQL API のカスタマイズされた実装である AEM GraphQL API を使用して行われます。AEM GraphQL API を使用すると、コンテンツフラグメントで(複雑な)クエリを実行できます。各クエリは、特定のモデルタイプに従っています。
返されたコンテンツは、アプリケーションで使用できます。
コンテンツフラグメントモデルは、コンテンツの構造を定義するための様々なメカニズムを提供します。
コンテンツフラグメントモデルは、エンティティを記述します。
新しいモデルを作成するには、設定ブラウザーでコンテンツフラグメント機能を有効にする必要があります。
コンテンツフラグメントの作成時に選択するモデルをコンテンツ作成者が把握できるように、モデルに名前を付ける必要があります。
モデル内:
例:
AEM では、コンテンツをモデル化するための次のデータタイプが提供されます。
2 つのデータタイプは、特定のフラグメント外のコンテンツへの参照を提供します。
コンテ
ンツの参照任意のタイプの他のコンテンツへの簡単な参照を提供します。例えば、指定した場所で画像を参照できます。
フラグメ
ントの参照他のコンテンツフラグメントへの参照を提供します。このタイプの参照は、ネストされたコンテンツを作成するために使用され、コンテンツのモデル化に必要な関係を導き出します。このデータタイプは、フラグメント作成者が次の操作を行えるように設定可能です。
サイトのコンテンツフラグメントモデルを最初に有効にする必要がある場合は、設定ブラウザー(ツール/一般/設定ブラウザー)で、次の操作を行います。グローバルエントリを設定するか、新しい設定を作成することができます。次に例を示します。
「その他のリソース - 設定ブラウザーのコンテンツフラグメント」を参照してください。
その後、コンテンツフラグメントモデルを作成し、構造を定義できます。これは、ツール/アセット/コンテンツフラグメントモデルで実行できます。次に例を示します。
「その他のリソース - コンテンツフラグメントモデル」を参照してください。
コンテンツフラグメントは、常にコンテンツフラグメントモデルに基づいています。モデルが構造を提供し、フラグメントがコンテンツを保持します。
コンテンツを実際に作成する最初の手順は、コンテンツフラグメントを作成することです。これは、アセット/ファイルの下の必要なフォルダーに作成/コンテンツフラグメントを使用して行います。ウィザードの指示に従って手順を進めます。
コンテンツフラグメントは、作成プロセスの最初の手順として選択する特定のコンテンツフラグメントモデルに基づいています。
フラグメントを作成したら、コンテンツフラグメントエディターで開くことができます。ここでは、以下のことができます。
適切なモデルを選択すると、コンテンツフラグメントが開いてコンテンツフラグメントエディターで編集できます。
「その他のリソース」 - 「コンテンツフラグメントの使用方法」を参照してください。
基本的な構造のサンプルについては、「サンプルコンテンツフラグメント構造」を参照してください。
これで、構造をモデル化する方法とそれに応じてコンテンツを作成する方法を学びました。次の手順は、GraphQL クエリを使用してコンテンツフラグメントのコンテンツにアクセスして取得する方法を学ぶことです。GraphQL について紹介し、その後、クエリ例を見て、実際の動作を確認します。