AEM テクノロジースタック

AEM がベースとして使用する Granite プラットフォームには、特に Java™ コンテンツリポジトリが含まれます。

chlimage_1-80

Granite

Granite は、アドビのオープン web スタックで、次のような様々なコンポーネントを提供します。

  • アプリケーションランチャー
  • すべてがデプロイされる OSGi フレームワーク
  • アプリケーションの構築をサポートする複数の OSGi 簡易サービス
  • 様々なログ API を提供する包括的なログフレームワーク
  • JCR API 仕様の CRX リポジトリ実装
  • Apache Sling web フレームワーク
  • 現在の CRX 製品の追加要素
メモ
Granite は、アドビ内でオープンな開発プロジェクトとして進められています。コード、ディスカッションおよび問題に会社全体が関与しています。
ただし、Granite はオープンソースプロジェクトでは​ ありません。いくつかのオープンソースプロジェクト(特に Apache Sling、Felix、Jackrabbit および Lucene)を重要なベースとしていますが、アドビは公開部分と非公開部分を明確に区別しています。

Granite UI

Granite エンジニアリングプラットフォームには、基盤 UI フレームワークも用意されています。主な目的は次のとおりです。

  • 詳細な UI ウィジェットの提供
  • UI の概念を実装し、ベストプラクティス(長いリストのレンダリング、リストのフィルタリング、オブジェクト CRUD、CUD ウィザードなど)を説明します。
  • 拡張可能なプラグインベースの管理 UI の提供

これらは次の要件に準拠しています。

  • 「モバイル優先」を重視
  • 拡張可能
  • 上書きが簡単

chlimage_1-81
GraniteUI.pdf

ファイルを取得
Granite UI は次のようになります。

  • Sling の RESTful アーキテクチャを使用
  • コンテンツ中心の web アプリケーションの構築を目的としたコンポーネントライブラリを実装
  • 詳細な UI ウィジェットの提供
  • デフォルトの標準化された UI を提供
  • 拡張可能
  • モバイルデバイスとデスクトップデバイスの両方に対応(モバイル優先)
  • Granite ベースのすべてのプラットフォーム/製品/プロジェクト(AEM など)で使用

chlimage_1-82

クライアントサイドとサーバーサイド

Granite UI でのクライアントとサーバーの通信は、オブジェクトではなく、ハイパーテキストで行われるので、クライアントでビジネスロジックを認識する必要はありません。

  • サーバーは HTML をセマンティックデータで強化
  • クライアントはハイパーテキストをハイパーメディア(インタラクション)で強化

chlimage_1-83

クライアント側

HTML ボキャブラリの拡張が使用され、作成者はインタラクティブな web アプリケーションを構築するという意向を表明できるようになります。これは、WAI-ARIA および microformats と同様のアプローチです。

主に、クライアントサイドで実行される JS および CSS コードによって解釈されるインタラクションパターンのコレクション(例えば、フォームの非同期送信)で構成されます。クライアントサイドの役割は、(サーバーによってハイパーメディアアフォーダンスとして指定された)マークアップを拡張してインタラクティブ機能を持たせることです。

クライアントサイドは、どのサーバーテクノロジーとも無関係です。サーバーが適切なマークアップを提供している限り、クライアントサイドはその役割を果たすことができます。

現在、JS および CSS コードは、Granite clientlibs として、次のカテゴリで提供されています。

granite.ui.foundation and granite.ui.foundation.admin

これらはコンテンツパッケージの一部として提供されています。

granite.ui.content

サーバーサイド

sling コンポーネントのコレクションによって形成され、作成者は Web アプリケーションを迅速に構成できるようになります​ ​開発者はコンポーネントを開発し、作成者はコンポーネントを組み立てて web アプリを作成します。サーバーサイドの役割は、ハイパーメディアアフォーダンス(マークアップ)をクライアントに提供することです。

現在、コンポーネントは Granite リポジトリの次の場所にあります。

/libs/granite/ui/components/foundation

これはコンテンツパッケージの一部として提供されています。

granite.ui.content

クラシック UI との違い

Granite UI と ExtJS(クラシック UI に使用)の違いも重要です。

ExtJS
Granite UI
リモート手続き呼び出し
ステートのトランジション
データ移行オブジェクト
ハイパーメディア
クライアントはサーバの内部を把握しています
クライアントは内部を把握していません
「ファットクライアント」
「シンクライアント」
専用クライアントライブラリ
ユニバーサルクライアントライブラリ

Granite UI 基盤コンポーネント

Granite UI 基盤コンポーネントは、UI の構築に必要な基本的な構築ブロックを提供します。次に例を示します。

  • ボタン
  • ハイパーリンク
  • ユーザーアバター

基盤コンポーネントは次の場所にあります。

/libs/granite/ui/components/foundation

このライブラリには、各 Coral 要素の Granite UI コンポーネントが含まれます。コンポーネントはコンテンツ主導で、その設定はリポジトリに保持されます。これにより、HTML マークアップを手動で記述しなくても、Granite UI アプリケーションを構成できます。

目的:

  • HTML 要素のコンポーネントモデル
  • コンポーネントの構成
  • 自動単体および機能テスト

実装:

  • リポジトリベースの構成と設定
  • Granite プラットフォームが提供するテスト機能の使用
  • JSP テンプレート

この基盤コンポーネントライブラリは他のライブラリで使用または拡張できます。