AEM プロジェクトアーキタイプを使用したフロントエンド開発 front-end

AEM プロジェクトのアーキタイプには、Webpack ベースの専用フロントエンドビルドメカニズム(オプション)が含まれています。このように、ui.frontend モジュールは、JavaScript や CSS ファイルを含む、プロジェクトのすべてのフロントエンドリソースの中心となります。この便利で柔軟な機能を最大限に活用するには、AEM プロジェクトにフロントエンド開発がどのように適合するかを理解することが重要です。

このドキュメントでは、フロントエンドビルドモジュールの一般的な使用パターンおよびユーザーに与える影響について説明します。ビルドオプションと技術的な手順について詳しくは、アーキタイプの GitHub リポジトリにあるドキュメントを参照してください。

TIP
最新の AEM プロジェクトのアーキタイプおよび技術的なドキュメントは、GitHub を参照してください。

AEM フロントエンドおよびバックエンド開発 front-end-back-end

簡単に言えば、AEM プロジェクトは、2 つの異なる関連部分から成ると考えることができます。

  • AEM のロジックを駆動し、Java ライブラリ、OSGi サービスなどを生成するバックエンドの開発
  • 結果として作成される Web サイトの表示と動作を促し、JavaScript ライブラリと CSS ライブラリを生成するフロントエンド開発

これらの 2 つの開発プロセスはプロジェクトの異なる部分に焦点を当てているので、バックエンドとフロントエンドの開発が並行して行われる可能性があります。

フロントエンドワークフロー図

ただし、作成されるプロジェクトでは、バックエンドとフロントエンドの両方の開発作業の出力を使用する必要があります。

マークアップの決定 determining-markup

プロジェクトに実装するフロントエンド開発ワークフローに関しては、まずバックエンド開発者とフロントエンド開発者がマークアップに同意する必要があります。通常、AEM はマークアップを定義し、これがコアコンポーネントで提供されます。ただし、必要に応じてカスタマイズできます。

可能なフロントエンド開発ワークフロー possible-workflows

フロントエンドビルドモジュールは、便利で柔軟なツールですが、どのように使用されるすべきかについてはユーザーに任されています。以下の 2 つは​ 可能な ​使用例ですが、個々のプロジェクトでは他の使用モデルが必要になる場合があります。

Webpack 静的開発サーバーの使用 using-webpack

Webpack を使用すると、ui.frontend モジュール内の AEM Web ページの静的出力に基づいてスタイルを設定し、開発することができます。

  1. ページプレビューモードを使用するか、URL に wcmmode=disabled を渡すことによって、AEM でページをプレビューする
  2. ui.frontend モジュール内でページソースを表示し、静的 HTML として保存する
  3. Webpack を起動して、必要な JavaScript と CSS のスタイル設定と生成を開始する
  4. npm run dev を実行して clientlib を生成する

このフローでは、AEM 開発者が手順 1 と 2 を実行して、静的 HTML をフロントエンド開発者に渡し、フロントエンド開発者が AEM HTML 出力に基づいて開発をおこなうことができます。

TIP
また、コンポーネントライブラリを利用して、各コンポーネントのマークアップ出力のサンプルを取り込み、ページレベルではなくコンポーネントレベルで作業することもできます。

Storybook の使用 using-storybook

Storybookを使用すると、よりアトミックなフロントエンド開発を実行できます。Storybook は AEM プロジェクトのアーキタイプには含まれていませんが、Storybook をインストールすると、ui.frontend モジュール内に Storybook アーティファクトを保存することができます。AEM 内でテストをおこなう準備が整ったら、npm run dev を実行して Storybook を clientlib としてデプロイできます。

NOTE
Storybook は AEM プロジェクトのアーキタイプには含まれていません。使用する場合は、個別にインストールする必要があります。

ClientLibs の概要 clientlibs

フロントエンドモジュールは、AEM ClientLib を使用して利用可能になります。。NPM ビルドスクリプトを実行する場合、アプリケーションがビルドされ、aem-clientlib-generator パッケージがビルド出力結果を取得して、そのような ClientLib に変換します。

ClientLib は、次のファイルとディレクトリで構成されます。

  • css/:HTML で要求できる CSS ファイル
  • css.txt:ファイルを結合できるように、css/ 内のファイルの順序と名前を AEM に指示します。
  • js/:HTML で要求できる JavaScript ファイル
  • js.txt:ファイルを結合できるように、js/ 内のファイルの順序と名前を AEM に指示します。
  • resources/:ソースマップ、非エントリポイントコードチャンク(コード分割による)、静的アセット(アイコンなど)など。
TIP
AEM での ClientLib の処理方法について詳しくは、AEM 開発ドキュメントを、それらをどのように含めるかについて詳しくは、コアコンポーネントのドキュメントを参照してください。
recommendation-more-help
d2be9096-a81e-404b-9952-d8925af7219c