AEMは、大規模なオープンソースプロジェクトで一般的に実践されている実証済みの方法論に従って開発されています。 AEMテクノロジースタックの多くのコア要素は、Apache Software Foundation に貢献した Sling や Jackrabbit など、アクティブなオープンソースプロジェクトとして実際に維持されています。 AEMに存在するこの精神の主な側面は、開発チームとの直接のやり取りに利用可能なメーリングリストやオンラインフォーラムを使用することをお勧めすることです。
AEMのコンポーネントにコントリビューションする場合は、オープンソースプロジェクトにコントリビューションする際と同じようにAEMに慣れ、既存のコアチームとのコミュニケーションを取ります。
HyperText 転送プロトコル (HTTP) は、アドビが実行するすべての処理の中心となります。 したがって、AEMに貢献する前に、HTTP について深く理解する必要があります。理想的には、スレッドプーリングを備えたマルチスレッド HTTP サーバーの独自の Java™実装を記述できる範囲です。 また、HTTP/1.1 キープアライブ動作に関する知識が必要です。また、JavaScript とのサーバー/クライアント側のやり取り、特にAJAXで表される非同期的なやり取りスタイルに関する深い知識が必要です。
ページの動的性とインタラクティブコンテンツは WM エクスペリエンスの鍵となるので、ドキュメントオブジェクトモデルと、イベントに応じてプログラム的に操作する可能性について、かなり深く理解しておく必要があります。 例えば、リアルタイム DOM 操作や、複数のブラウザードキュメント(iframe の使用など)でのドラッグ&ドロップ動作に関する知識が必要です。
最も高いレベルでは、次の点について確実に理解する必要があります。
Adobe Experience Managerのテクノロジースタックは、 Apache Felix OSGi コンテナと Apache Sling web フレームワークと Java™コンテンツリポジトリ (JCRに基づく ) Apache Jackrabbit. これらの個々のプロジェクトと、貢献する予定の領域で使用されるその他のオープンソースコンポーネント(Apache Lucene など)について理解します。
特定の概念や指針は、前日の文化に深く根付いています。 この節では、お知らせする必要のある「深く DNA が埋め込まれた」問題の一部を示します。
コンテンツには、Web アプリケーションが保持するすべてのデータが含まれるだけではありません。 あらゆる種類、HTML、CSS、画像、アーティファクトのプログラムコード、ライブラリ、スクリプト、テンプレート、画像およびアーティファクトは、コンテンツリポジトリに保持され、パッケージマネージャーとパッケージ共有を介して読み込み/書き出します。
Java™ Content Repository でのコンテンツのモデル化方法は、リレーショナル世界でのデータモデリングにソフトウェア業界で一般的に行われる考え方とは全く異なる考え方を必要とします。JCR の方法は、コンテンツ管理に新規参加するユーザーにとって不可欠な読み取りです デイビッドのモデル:コンテンツモデリングのガイド.
REST のアプローチは、アドビの行動に深く根付いています。 つまり、特に、ステートフルなインタラクションを避け、URI はコンテンツやサービスの確定的なアドレスであることに留意します。
REST(REpresentational State Transfer)は、World Wide Web の基礎となっているソフトウェアアーキテクチャスタイルを示します。Web を機能させるための重要な要素について説明するものであり、web ベースのソフトウェアの設計方法について一連の原則を提供します。したがって、web 経由で使用する API を設計するときは、これらの「ベストプラクティス」を順守することが合理的です。
REST は、私たちが行うことの多くの背後に指針となる哲学を提供するので、RESTful 設計の指針を熟知することが不可欠であると考える必要があります。 まずは、 ロイ・フィーディングの論説.
AEMに関して理解すべき重要な側面は、受信リクエストがコンテンツとアプリケーションの動作にどのように関連しているか、コンテンツリポジトリでのコンテンツの構造と、AEMがリクエストを処理するアプリケーションロジックを探す場所です。 Apache の詳細 Sling URL の分解 REST アーキテクチャスタイルと、そのステートレス、キャッシュ可能、およびレイヤー化されたシステムコンストレインを適用する方法。
Apache Sling の要求解決に関する重要な側面は、要求を主にコンテンツリポジトリ内の特定のリソースにマッピングする方法、要求の追加のプロパティとこれらのコンテンツオブジェクトのプロパティによって、呼び出されるコンテンツをレンダリングするアプリケーションコード、/apps のコードが/libs 内のコードを上書きする方法です。
ステップ 3 はありません。インストールして実行するには、クイックスタート JAR ファイルをダウンロードしてダブルクリックするだけです。 ステップ 3 はありません。 追加のオプション機能を使用する場合は、パッケージ共有から適切なパッケージをインストールする以外に必要なことはありません。
クイックスタートのサイズが小さい:クイックスタート JAR ファイルのサイズは最小限に抑えてください。ライブラリの使用を最適化し、オプション機能をパッケージ共有に移行して、スマートで最適化。
起動時間の短縮:起動時間に影響を与える可能性のある変更を行う場合は、設定が長くなるのではなく、短くなるようにしてください。
軽く、小さく、速く、エレガントなコードやプロジェクトをお勧めします。 「十分に良い」では不十分です。
コードの再利用:OSGi ベースの製品アーキテクチャと「すべてがコンテンツ」の哲学は、コードやアーティファクトの再利用に異常なほど良い機会があることを意味します。 我々は、機能を控えめに保つために、可能な限りその事実を活用しようとしています。
緩い結合:我々は、緊密な依存関係と「不要な親密性」よりも疎結合インタラクションを支持する。 緩い結合は、より多くのコードの再利用を可能にします。
デモで最も頻繁に表示されるデモスクリプトや製品機能について理解します。 「デモスクリプト」機能を壊す必要がないことを理解します。 開発中でも、コア製品は常にデモに対応している必要があります。
単一の DOM 要素に関する問題がページ全体をレンダリングしないように、(例えば)フェイルソフトな方法で機能のデザインとコード化を図っています。 つまり、命に関わるもの、命に関わるものを作りなさい。 他の全てを生き残らせる。 製品を「許す」ようにします。
シャットダウンフックに依存せず、起動時に必ずクリーンアップします。異常な終了は正常な終了です。
shutdown == kill -9 == power outage
常に弾性のクラスタリングに対応している。常にクラスタリングが存在すると仮定します。 一般に、コンテンツリポジトリ内のすべての要素に従うことは、組み込みのクラスタリングサポートを意味します。
お客様の古いコードを壊すようなことはありません。 アップグレード時に更新可能なプロダクトコードを含むのは、/libs
のみとお考えください。この /apps
リポジトリのセクションはプロジェクトコードで、 /etc
「 」セクションには、保存する必要があるカスタム設定が含まれています。 通常、 /apps
, /content
、および /home
. アップグレード後も、古いプロジェクトコード、設定、コンテンツは、アップグレード前と同様に引き続き機能します。
後方互換性を保つための設計では、アップグレードエクスペリエンスが初期インストールのシンプルさと一致するようになります。 AEMを停止し、Quickstart JAR ファイルを置き換えて、AEMを再起動すれば十分です。 急速に増え続けるインストールベースにより、アップグレードの効率性はますます大きなメリットとなります。
より新しく、より高度な機能に置き換えられると、既存の API は廃止とマークを付けることができ、またそうする必要がありますが、以前の 5.x リリースで公開された API はすべて、カスタムアプリケーションコードで使用される可能性があるので、引き続き機能する必要があります。そのような API は削除しないでください。
また、コンテンツ構造の一般的な一貫性とユーザーエクスペリエンスに関しても、後方互換性を念頭に置く必要があります。
オーサーインスタンス — 通常、セキュリティやガバナンスなどの理由で、実稼動サイトではAEMのインスタンスがオーサーインスタンスとパブリッシュインスタンスに分割されます。 デプロイメントアーキテクチャ(オーサー/パブリッシュインスタンスを含む)について詳しくは、AEM インスタンスに関するドキュメントを参照してください。
キャッシュ、フライング、ベーキング - 従来、ベーキングとフライングの概念は、異なる web コンテンツ管理システムを区別する上で重要です。CMS の用語では、「ベイク処理」とは、公開時にデータを静的ファイルにコミットする概念を指し、「フライ」とは、要求時(即時)に最終的なプレゼンテーション用のデータを処理する概念を指します。
クラスタリングとロードバランシング — 可用性を高め、実稼動環境のパフォーマンスを向上させるには、複数のオーサーインスタンスとパブリッシュインスタンスを(クラスターに)組み合わせるか、異なるユーザーのグループで使用可能にするか、Dispatcher 設定の背後でロードバランシングをおこないます。
また、コンテンツリポジトリの複数のインスタンスを組み合わせて、高可用性の JCR ソリューションを作成することができます。さらに、このソリューションを AEM ソリューションに統合することで、ハードウェアおよびソフトウェアの障害に対して最大限の保護を実現できます。詳しくは、推奨されるデプロイメントを参照してください。
コンポーネント - AEMでは、コンポーネントはオブジェクトタイプで、そのインスタンスは通常、サイドキックなどからドラッグ&ドロップすることで作成できます。例えば、AEM に同梱されている標準のコンポーネントには、テキスト、タイトル、タグクラウド、カルーセル、画像、リストの各コンポーネントが含まれ、これらのすべては実行時に Sidekick からで使用できます。
コンテンツファインダー - オーサリングモードでは、コンテンツファインダーはページの左側にある特殊なパネル(フレーム)であり、上部で選択するタブによって、画像、ドキュメント、Flash アセット、ページ、段落、リポジトリリソースのいずれかのリストが表示されます。これらを、コンテンツファインダーから作業中のページ(右側)にドラッグ&ドロップできます。
デジタルアセット - AEM では、デジタルアセットは(通常)画像とリッチメディアファイルです。詳しくは、「DAM でのデジタルアセットの操作」を参照してください。
Dispatcher - Dispatcher は、キャッシュとロードバランシングの両方のツールで、特定のセキュリティ保護を提供します。
ExtJS ウィジェット - AEM のほとんどのユーザーインターフェイス要素は、ExtJS を使用しています。ExtJS は、JavaScript で書かれたサードパーティのウィジェットライブラリです。ExtJS は、高パフォーマンスでカスタマイズ可能な UI ウィジェットと、適切にデザインされた拡張可能なコンポーネントモデルを備えています。
JCR、Java™コンテンツリポジトリ - Java™ Content Repository の仕様 (JSR-283) は、抽象データモデルとアプリケーションプログラミングインターフェイスの両方を提供し、ファイルシステムとオブジェクトデータベースの機能を組み合わせた大規模な NoSQL データリポジトリを実現します。 JSR-283 を詳細に理解する必要はありませんが、JCR は AEM の「すべてがコンテンツ」という理念を可能にするものなので、JCR の基本機能とその基礎となるデータモデルについて時間をかけて理解する必要があります。
基本的に、JCR はノードとプロパティのシステムで、ノードは他のノードから継承でき、すべてのコンテンツはプロパティとして保存されます 値. 通常の継承に加えて、JCR では「mixin」ノードの概念を使用でき、複数の継承をモデリングできます。
JCR には、事前に定義されたノードタイプとプロパティタイプがいくつかありますが、通常、タイピングシステムは柔軟です。JCR の強みの 1 つは、構造化されたコンテンツと非構造化コンテンツを簡単に保存/管理できる点です。 つまり、JCR は高度に構造化されたデータに対応できますが、スキーマの制約を受けずに、任意の動的データ構造に対応することもできます。
JCR の Java™ API の JavaDoc は、 ここ.
JavaDoc または JCR の仕様自体を読む前に、Adobe Experience Services によって実装された JCR の概要にも目を通しておくことをお勧めします。
マルチサイトマネージャー(MSM) - AEM のMSM 機能は、多言語、多国籍のコンテンツを処理する際に役立ち、一元管理されたブランディングとローカライズされたコンテンツのバランスを取ることができます。
OSGi - OSGi は、AEMでモジュール化された Java™開発の基盤を提供する、サービスベースのランタイムテクノロジーです。 これは、コードリソース(バンドルと呼ばれる)の非常に動的(かつ安全な)クラスの読み込みと実行環境を提供するだけでなく、バンドルによって公開される様々なサービスの可視性とライフサイクルを完全に制御するフレームワークです。 サービスレジストリは、ライフサイクルダイナミクス(およびバージョン要件)を考慮に入れたバンドルの協調モデルを提供します。 OSGi は、アプリケーションサーバーが解決しようとした問題の多くを解決しますが、軽量で非常に動的な方法で解決し、例えば、サービスのホットデプロイ(サーバーを再起動せずに新しいコードをすぐに使用可能にする)を可能にします。
Parsys、 段落システム - 段落システム(parsys)は、作成者が様々なタイプのコンポーネントをページに追加することができ、他の段落コンポーネントを含む複合コンポーネントです。各段落タイプは、コンポーネントとして表されます。段落システム自体も、他の段落コンポーネントを含むコンポーネントです。
マイクロカーネル - リポジトリ内の各ワークスペースは、特定のマイクロカーネル(データの読み取りと書き込みを管理するクラス)を通してデータを保存するように、個別に設定できます。同様に、リポジトリ全体のバージョンストアも、特定のマイクロカーネルを使用するように、個別に設定できます。 様々なファイル形式やリレーショナルデータベースにデータを保存できる、複数の異なるマイクロカーネルを使用できます。 ( 例えば、MongoDB、DB2®、またはOracle用の永続性マネージャーが存在します )AEMのデフォルトのマイクロカーネルは TarMK です(後述の説明を参照)。
パブリッシュインスタンス - セキュリティやガバナンスなどの理由で、実稼動サイトでは通常、AEM のインスタンスをオーサーインスタンスとパブリッシュインスタンスに分割します。デプロイメントアーキテクチャ(オーサー/パブリッシュインスタンスを含む)について詳しくは、AEM インスタンスに関するドキュメントを参照してください。
クイックスタート - 他の多くのプログラムとは異なり、AEM をインストールするには、1 つの「クイックスタート」自己解凍 JAR ファイルを使用します。JAR ファイルを初めてダブルクリックすると、必要なものがすべて自動的にインストールされます。クイックスタート JAR には、CRX リポジトリ(管理施設を含む)、仮想リポジトリサービス、インデックスと検索サービス、ワークフローサービス、セキュリティ、Web サーバー、および CQ サーブレットエンジン (CQSE) とすべての AEM サービスに必要なすべてのファイルが含まれます。 他にインストールするファイルはありません。クイックスタートは自己完結型です。
クイックスタートを初めて起動すると、JCR 準拠のリポジトリ全体がバックグラウンドに作成されます。この作成には数分かかる場合があります。 この初回起動後は、リポジトリインフラストラクチャが既に配置されているので、以降の起動は非常に高速です。
多くの起動オプション ( アクティブなポート番号や、問題となっているAEMインスタンスをパブリッシュインスタンスとオーサーインスタンスのどちらにするかなど )。など ) は、クイックスタートファイルの名前を適切に変更することで制御できます。 この点に関するオプションのリストを確認するには、コマンドラインで"-help"を付けて JAR を実行します。
java -jar <quickstartfilename>.jar -help
レプリケーションエージェント — レプリケーションエージェントは、オーサー環境からパブリッシュ環境にコンテンツを公開(アクティベート)するメカニズムとしてAEMの中心となるものです。Dispatcher キャッシュからコンテンツをフラッシュする。パブリッシュ環境からオーサー環境にユーザー生成コンテンツ(フォーム入力など)を返します。
基礎モード - 基礎モードを使用すると、ページに必要な構造を反映したフィールドを使用したフォーム(基礎)を作成し、このフォームを使用して必要な構造に基づいたページを簡単に作成できます。
セグメント化 - サイトにアクセスする訪問者は、様々な関心と目的を持っています。訪問者の目的を理解し、期待に応えることが、オンラインマーケティングを成功させるための重要な要因となります。セグメント化によって訪問者の詳細を分析し、特徴付けることが成功の実現に役立ちます。
サイドキック - サイドキックは、編集可能なページに表示される、パレット状のフローティングウィンドウです。ここから、新しいコンポーネントをドラッグしたり、ページに適用するアクションを実行したりできます。
Site Catalyst - SiteCatalyst は、複数のマーケティングチャネルにわたるすべてのオンライン施策の統合データを測定、分析、最適化するための場所をマーケターに提供します。Adobe SiteCatalyst を使用して、AEM web サイトのデータを分析できます。
Tar ストレージ (TarMK) - TarMK は AEM のデフォルトの永続性システムです。 AEMは異なる永続性システム(MongoDB など)を使用するように設定できますが、TarMK には、一般的な JCR の使用例(したがって、高速)に対してパフォーマンスが最適化され、業界標準のデータ形式を使用し、迅速かつ容易にバックアップできるという利点があります。
テンプレート - AEM では、テンプレートはページの特殊なタイプを指定するものです。ページの構造を定義します(一方で、通常はサムネール画像や様々なプロパティも指定します)。 例えば、製品ページ、サイトマップおよび問い合わせ先に、それぞれ別のテンプレートを使用することができます。
ワークフロー - AEM のワークフローシステムを使用すると、ページやアセットを扱う自動化プロセスを作成できます。