コードのアップグレードとカスタマイズ upgrading-code-and-customizations

アップグレードを計画するときは、実装の次の領域を調査して対処する必要があります。

概要 overview

  1. パターン検出 - アップグレード計画やこのページで詳しく説明しているように、パターン検出を実行します。対処する必要がある領域や、AEM のターゲットバージョンで利用できない API やバンドルについての詳細を含むパターン検出レポートを取得します。パターン検出レポートには、コードで互換性のない箇所が示されます。互換性のない箇所がない場合、デプロイされているコードは既に 6.5 と互換性があります。互換性を維持するためだけの開発作業は必要なく、6.5 の機能を利用するための新規開発を行うことができます。互換性のない箇所が見つかった場合は、互換モードで実行して新規の 6.5 機能または互換性維持のための開発を先送りにすることができます。または、アップグレード後に開発作業を行って手順 2 に進むこともできます。詳しくは、AEM 6.5 における後方互換性のページを参照してください。

  2. 6.5 のコードベースの開発 - Target バージョンのコードベース専用のブランチまたはリポジトリを作成します。アップグレード前の互換性の情報を使用して、更新するコードの領域を計画します。

  3. 6.5 Uber Jar でのコンパイル - 6.5 Uber Jar を指すようにコードベース POM を更新し、これに対してコードをコンパイルします。

  4. AEM カスタマイズの更新* - *AEM のカスタマイズまたは拡張を更新して、6.5 で機能することを検証し、6.5 コードベースに追加する必要があります。UI 検索フォーム、Assets のカスタマイズ、/mnt/overlay を使用するすべてのものを含みます。

  5. 6.5 環境へのデプロイ - AEM 6.5 のクリーンなインスタンス(オーサー + パブリッシュ)を開発環境と QA 環境で立ち上げる必要があります。更新したコードベースと、現在の実稼動環境にある代表的なコンテンツのサンプルをデプロイする必要があります。

  6. QA 検証とバグ修正 - QA では、6.5 のオーサーインスタンスとパブリッシュインスタンスの両方でアプリケーションを検証する必要があります。検出されたすべてのバグを修正して、6.5 コードベースにコミットする必要があります。すべてのバグが修正されるまで、必要に応じて開発サイクルを繰り返します。

アップグレードに進む前に、アプリケーションコードベースを AEM のターゲットバージョンに対して十分テストし、安定したものにしておく必要があります。テストで得られた見解に基づいて、様々な方法でカスタムコードを最適化できます。例えば、リポジトリの走査を回避するためのコードのリファクタリング、検索を最適化するカスタムインデックス作成、JCR での順序なしノードの使用などが含まれます。

コードベースのアップグレードや、新しい AEM バージョンに合わせたカスタマイズを行うオプションに加えて、6.5 ではこのページで説明する後方互換性機能を使用して、より効率的にカスタマイズの管理を行えます。

上記の説明および下の図に示したように、最初の手順でパターン検出を実行することで、アップグレードの全体的な複雑性を評価できます。また、互換モードで実行するか、すべての新しい AEM 6.5 の機能を使用するようにカスタマイズを更新するかを決定することもできます。詳しくは、AEM 6.5 における後方互換性のページを参照してください。
opt_cropped

コードベースのアップグレード upgrade-code-base

バージョン管理での 6.5 コード専用のブランチの作成 create-a-dedicated-branch-for-6.5-code-in-version-control

AEM 実装に必要なすべてのコードおよび設定は、何らかの形式のバージョン管理を使用して管理する必要があります。AEM のターゲットバージョンのコードベースに必要な変更を管理するために、バージョン管理に専用ブランチを作成する必要があります。AEM のターゲットバージョンに対するコードベースの繰り返しテストとその後のバグ修正は、このブランチで管理されます。

AEM Uber Jar バージョンの更新 update-the-aem-uber-jar-version

AEM Uber Jar では、すべての AEM API を単一の依存関係として Maven プロジェクトの pom.xml に含めます。個々の AEM API の依存関係を含めるのではなく、Uber Jar を単一の依存関係として含めることが常にベストプラクティスです。コードベースをアップグレードするときは、AEM のターゲットバージョンを指すように Uber Jar のバージョンを変更します。Uber Jar が存在する以前の AEM のバージョンで開発されたプロジェクトについては、個々の AEM API のすべての依存関係を削除します。AEM のターゲットバージョン用の単一の Uber Jar を含めることで置き換えます。Uber Jar の新しいバージョンに対してコードベースを再コンパイルします。AEM のターゲットバージョンとの互換性を確保するために、廃止された API またはメソッドを更新します。

<dependency>
    <groupId>com.adobe.aem</groupId>
    <artifactId>uber-jar</artifactId>
    <version>6.5.0</version>
    <classifier>apis</classifier>
    <scope>provided</scope>
</dependency>

管理リソースリゾルバーの使用の段階的廃止 phase-out-use-of-administrative-resource-resolver

SlingRepository.loginAdministrative()ResourceResolverFactory.getAdministrativeResourceResolver() を介して管理セッションを使用することは、AEM 6.0 より前のコードベースでは一般的でした。これらのメソッドは過度に幅広いレベルのアクセスを提供するので、セキュリティ上の理由から廃止されました。Sling の今後のバージョンで、これらのメソッドは削除されます。代わりにサービスユーザーを使用するようにコードをリファクタリングすることを強くお勧めします。サービスユーザー、および管理セッションを段階的に廃止する方法について詳しくは、こちらを参照してください

クエリと Oak インデックス queries-and-oak-indexes

コードベースでクエリを使用する場合は、コードベースのアップグレードの一環として詳細にテストする必要があります。Jackrabbit 2(6.0 より前のバージョンの AEM)からアップグレードするお客様の場合、Oak ではコンテンツのインデックスが自動的に作成されず、カスタムインデックスを作成する必要があるので、このテストは特に重要です。AEM 6.x バージョンからアップグレードすると、デフォルトの Oak インデックス定義が変更され、既存のクエリに影響を与える可能性があります。

クエリのパフォーマンスを分析および検査するには、次のツールを使用できます。

クラシック UI オーサリング classic-ui-authoring

クラシック UI オーサリングは、AEM 6.5 で引き続き利用できますが、廃止される予定です。詳しくは、こちらを参照してください。アプリケーションがクラシック UI オーサー環境で実行されている場合は、AEM 6.5 にアップグレードして、引き続きクラシック UI を使用することをお勧めします。タッチ UI への移行は、複数の開発サイクルを行う個別プロジェクトとして計画できます。AEM 6.5 でクラシック UI を使用するには、複数の OSGi 設定をコードベースにコミットする必要があります。この設定方法について詳しくは、こちらを参照してください。

6.5 のリポジトリ構造との整合 align-repository-structure

アップグレードを容易にし、アップグレード中に設定が上書きされることを防ぐため、6.4 ではリポジトリの構造が見直され、コンテンツと設定が分離されました。

そのため、これまでのように /etc に存在しないように、いくつかの設定を移動する必要があります。AEM 6.4 に更新する際に確認および対応が必要になる、リポジトリの再構築に関する一連の注意事項については、AEM 6.4 におけるリポジトリの再構築を参照してください。

AEM のカスタマイズ aem-customizations

AEM のソースバージョンでの AEM オーサリング環境に対するすべてのカスタマイズを特定する必要があります。特定した後は、各カスタマイズをバージョン管理に保存するか、少なくともコンテンツパッケージの一部としてバックアップすることをお勧めします。すべてのカスタマイズは、実稼動環境のアップグレード前に AEM のターゲットバージョンを実行する QA 環境またはステージング環境にデプロイして、検証する必要があります。

一般的なオーバーレイ overlays-in-general

AEM の標準機能を拡張する場合は、/libs の下のノードやファイルを /apps の下の追加ノードでオーバーレイすることが一般的です。これらのオーバーレイは、バージョン管理で追跡し、AEM のターゲットバージョンに対してテストする必要があります。ファイル(JS、JSP、HTL)をオーバーレイする場合は、AEM のターゲットバージョンでの回帰テストを容易にするために、拡張した機能に関するコメントを残しておくことをお勧めします。一般的なオーバーレイについて詳しくは、こちらを参照してください。特定の AEM のオーバーレイの手順については、以下を参照してください。

カスタム検索フォームのアップグレード upgrading-custom-search-forms

カスタム検索ファセットを正しく機能させるには、アップグレード後に手動での調整が必要です。詳しくは、カスタム検索フォームのアップグレードを参照してください。

Assets UI のカスタマイズ assets-ui-customizations

NOTE
この手順は、AEM 6.2 より前のバージョンからアップグレードする場合にのみ必要です。

カスタマイズされた Assets デプロイメントを含むインスタンスを、アップグレード用に準備する必要があります。これは、カスタマイズされたすべてのコンテンツに 6.4 の新しいノード構造との互換性を持たせるために必要なアクションです。

Assets UI のカスタマイズを準備するには、次の手順を実行します。

  1. アップグレード中のインスタンス上で、https://server:port/crx/de/index.jsp に移動して CRXDE Lite を開きます。

  2. 次のノードに移動します。

    • /apps/dam/content
  3. ウィンドウ左側のエクスプローラーパネルを右クリックし、「名前を変更」を選択して、コンテンツノードの名前を content_backup に変更します。

  4. ノードの名前を変更したら、content という名前のノードを /apps/dam の下に作成し、ノードタイプを sling:Folder に設定します。

  5. エクスプローラーペインで各子ノードを右クリックし、「移動」を選択して、content_backup のすべての子ノードを新しく作成したコンテンツノードに移動します。

  6. content_backup ノードを削除します。

  7. /apps/dam の下にある、正しいノードタイプ sling:Folder で更新されたノードは、理想的にはバージョン管理に保存してコードベースでデプロイするか、少なくともコンテンツパッケージとしてバックアップする必要があります。

既存アセットのアセット ID の生成 generating-asset-ids-for-existing-assets

既存のアセットのアセット ID を生成するには、AEM 6.5 を実行するために AEM インスタンスをアップグレードする際にアセットをアップグレードします。この手順は、アセットインサイト機能を有効にするために必要です。詳しくは、埋め込みコードの追加を参照してください。

アセットをアップグレードするには、JMX コンソールで Associate Asset IDs パッケージを設定します。リポジトリ内のアセットの数によっては、migrateAllAssets に長い時間がかかることがあります。TarMK に 125,000 のアセットがある場合は、アドビの内部テストに約 1 時間かかります。

1487758945977

アセット全体のサブセットに対してアセット ID が必要な場合は、migrateAssetsAtPath API を使用します。

その他すべての目的には、migrateAllAssets() API を使用してください。

InDesign スクリプトのカスタマイズ indesign-script-customizations

Adobe では、カスタムスクリプトを /apps/settings/dam/indesign/scripts に配置することを推奨しています。InDesign スクリプトのカスタマイズについて詳しくは、こちらを参照してください。

ContextHub 設定の復元 recovering-contexthub-configurations

ContextHub 設定は、アップグレードの影響を受けます。既存の ContextHub 設定の復元方法については、こちらを参照してください。

ワークフローのカスタマイズ workflow-customizations

必要な機能を追加したり、必要のない機能を削除したりするには、標準のワークフローを編集することが一般的な方法です。カスタマイズ対象として一般的なワークフローは、DAM アセットの更新ワークフローです。カスタム実装に必要なすべてのワークフローは、アップグレード中に上書きされる可能性があるので、バックアップしてバージョン管理に保存する必要があります。

編集可能なテンプレート editable-templates

NOTE
この手順は、AEM 6.2 から編集可能テンプレートを使用して Sites をアップグレードする場合にのみ必要になります。

AEM 6.2 と 6.3 では、編集可能なテンプレートの構造が異なります。6.2 以前からアップグレードする場合で、編集可能なテンプレートを使用してサイトコンテンツを作成している場合は、レスポンシブノードのクリーンアップツールを使用する必要があります。このツールは、アップグレード​ ​に実行して、コンテンツをクリーンアップすることを目的としています。このツールは、オーサー層とパブリッシュ層の両方に対して実行します。

CUG 実装の変更 cug-implementation-changes

AEM の以前のバージョンのパフォーマンスおよびスケーラビリティの制限に対処するために、閉じられたユーザーグループの実装が大幅に変更されました。CUG の以前のバージョンは 6.3 で廃止され、新しい実装はタッチ UI でのみサポートされます。6.2 以前からアップグレードする場合の新しい CUG の実装への移行方法については、こちらの説明を参照してください。

手順のテスト testing-procedure

アップグレードをテストするための包括的なテスト計画を準備する必要があります。アップグレードされたコードベースおよびアプリケーションのテストは、最初に下位レベルの環境で実行する必要があります。コードベースが安定するまで、検出されたすべてのバグを繰り返し修正します。より上位レベルの環境は、その後にアップグレードする必要があります。

アップグレード手順のテスト testing-the-upgrade-procedure

ここで説明されているアップグレード手順は、カスタマイズしたランブックに記載されているとおりに開発環境および QA 環境でテストする必要があります(アップグレードの計画を参照してください)。アップグレード手順は、すべてのステップがアップグレードランブックに記載され、アップグレードプロセスが問題なく実行されるようになるまで繰り返す必要があります。

実装テスト領域 implementation-test-areas-

環境がアップグレードされ、アップグレードされたコードベースがデプロイされた後のテスト計画でカバーする必要がある AEM 実装の重要な領域を次に示します。

機能テスト領域
説明
公開済みサイト
AEM 実装および関連するコードを
Dispatcher を介してパブリッシュ層でテストします。ページの更新および
キャッシュの無効化についての基準を含める必要があります。
オーサリング
AEM 実装と関連するコードをオーサー層でテストします。ページ、コンポーネントオーサリングおよびダイアログを含める必要があります。
Experience Cloud ソリューションとの統合
Analytics、DTM、Target などの製品との統合を検証します。
サードパーティシステムとの統合
オーサー層とパブリッシュ層の両方で、サードパーティ統合を検証します。
認証、セキュリティおよび権限
LDAP/SAML などの認証メカニズムを検証する必要があります。
権限およびグループは、オーサー層とパブリッシュ層
の両方でテストする必要があります。
クエリ
カスタムインデックスおよびクエリは、クエリパフォーマンスと共にテストする必要があります。
UI のカスタマイズ
オーサー環境での AEM UI の拡張またはカスタマイズ。
ワークフロー
カスタムまたは標準のワークフローおよび機能。
パフォーマンステスト
実際のシナリオをシミュレートするオーサー層とパブリッシュ層の両方で負荷テストを実行する必要があります。

テスト計画の作成および結果 document-test-plan-and-results

前述の実装テスト領域をカバーするテスト計画を作成する必要があります。多くの場合、テスト計画をオーサーのタスクリストとパブリッシュのタスクリストに分けることをお勧めします。このテスト計画は、実稼動環境をアップグレードする前に、開発環境、QA 環境およびステージング環境で実行する必要があります。ステージング環境および実稼動環境をアップグレードするときに比較できるように、下位レベルの環境でテスト結果およびパフォーマンス指標を取得する必要があります。

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2