日本語版
最新ニュース
企業

オプティマイズをテストするための開発者ガイド

Optimizely CMS 13 のリリースは、より構成可能でヘッドレスファーストのアーキテクチャを採用し、大きな前進を示しています。これにより強力な新機能が解放される一方で、基礎となるフレームワークに重要な変更も導入されます。 このガイドでは、標準の CMS 12 Alloy スターター サイトを CMS 13 プレビューにアップグレードするための実践的なウォークスルーを提供します。依存関係の更新、廃止された API のコード移行、および新しいアプリケーション構成モデルについて説明します。 ステップ 1: ベースライン CMS 12 サイトを作成する まず、出発点を確立しましょう。 Optimizely テンプレートを使用して、新しい CMS 12 Alloy サイトを作成します。これにより、アップグレードを開始する前に、クリーンで正常に動作するインストールが確保されます。 # Create a new Alloy project dotnet new epi-alloy-mvc -n…

オプティマイズをテストするための開発者ガイド

1769300017
2026-01-23 14:21:00

Optimizely CMS 13 のリリースは、より構成可能でヘッドレスファーストのアーキテクチャを採用し、大きな前進を示しています。これにより強力な新機能が解放される一方で、基礎となるフレームワークに重要な変更も導入されます。

このガイドでは、標準の CMS 12 Alloy スターター サイトを CMS 13 プレビューにアップグレードするための実践的なウォークスルーを提供します。依存関係の更新、廃止された API のコード移行、および新しいアプリケーション構成モデルについて説明します。

ステップ 1: ベースライン CMS 12 サイトを作成する

まず、出発点を確立しましょう。 Optimizely テンプレートを使用して、新しい CMS 12 Alloy サイトを作成します。これにより、アップグレードを開始する前に、クリーンで正常に動作するインストールが確保されます。

# Create a new Alloy project
dotnet new epi-alloy-mvc -n alloy13preview

# Build and run the site
dotnet build
dotnet run

サイトが実行されたら、ログインできるように新しいユーザー アカウントを登録します。サイトが完全に機能することを確認します。準備ができたら、アプリケーションをシャットダウンします。

ステップ 2: プロジェクトの依存関係を更新する

ベースラインを確立したら、次のステップはプロジェクト ファイルと NuGet パッケージを更新することです。

  1. ターゲットフレームワークを更新する: .csproj ファイルを開き、ターゲット フレームワークを次のように変更します。

  2. NuGet パッケージを更新する: すべての EpiServer.* パッケージ バージョンを 13.0.0-preview2 に更新します。

  3. AspNetIdentity の追加: CMS 13 は、UI のアイデンティティ管理を分離します。 EPiServer.CMS.UI.AspNetIdentity の新しいパッケージ参照を追加します。

ステップ 3: コードの移行と廃止された API の軽減

CMS 13 では、いくつかのコア API がリファクタリングされています。コンパイラは、廃止されたメンバーに関連する一連の警告とエラーを報告するようになります。それらを解決していきましょう。

親切なプロからのヒント: 移行を開始するときは、IDE またはビルド出力でコンパイラの警告を確認する習慣を付けてください。これらの警告は、特定のプロジェクト内の非推奨または廃止された API のすべてのインスタンスを見つけるためのロードマップです。このガイドでは Alloy テンプレートの一般的な変更について説明していますが、コードベースには注意が必要な他の領域がある場合があります。

ContentReference と ContentLink を使用する

PageReference および PageData.PageLink タイプは廃止されました。この変更は、すべてのコンテンツをより一般的に扱うという広範な移行を反映しています。この修正は、ソリューション全体を簡単に置き換えるものです。

SiteDefinition を新しいアプリケーション モデルに置き換えます

SiteDefinition の概念は、より柔軟な概念に置き換えられました。 アプリケーションモデル。アプリケーションは、コンテンツ ツリーの開始点を特定のレンダリング モード (「インプロセス」または「ヘッドレス」など) とホスト名に接続します。

これを解決するには、IApplicationResolver をコントローラーとサービスに挿入して、現在のアプリケーション (IApplication) のコンテキストを取得する必要があります。

StartPageController をリファクタリングする方法の例を次に示します。

using alloy13preview.Models.Pages;
using alloy13preview.Models.ViewModels;
using EPiServer.Web;
using EPiServer.Web.Mvc;
using Microsoft.AspNetCore.Mvc;
using EPiServer.Applications;
using EPiServer.Shell.Security;
using EPiServer.Web.Routing;

namespace alloy13preview.Controllers;

public class StartPageController : PageControllerBase
{
  private readonly IApplicationResolver _applicationResolver;
  
  public StartPageController(IApplicationResolver applicationResolver)
  {
    _applicationResolver = applicationResolver;
  }

  public async Task Index(StartPage currentPage, CancellationToken cancellationToken)
  {
    var model = PageViewModel.Create(currentPage);
    var application = await _applicationResolver.GetByContextAsync(cancellationToken);

    var website = application as Website;
    
    if (website is not null && website.RoutingEntryPoint.CompareToIgnoreWorkID(currentPage.ContentLink))
    {
      // Connect the view models logotype property to the start page's to make it editable
      var editHints = ViewData.GetEditHints, StartPage>();
      editHints.AddConnection(m => m.Layout.Logotype, p => p.SiteLogotype);
      editHints.AddConnection(m => m.Layout.ProductPages, p => p.ProductPageLinks);
      editHints.AddConnection(m => m.Layout.CompanyInformationPages, p => p.CompanyInformationPageLinks);
      editHints.AddConnection(m => m.Layout.NewsPages, p => p.NewsPageLinks);
      editHints.AddConnection(m => m.Layout.CustomerZonePages, p => p.CustomerZonePageLinks);
    }

    return View(model);
  }
}

SiteDefinition.Current を参照するコード内の他の場所にも同様のパターンを適用する必要があります。 SiteDefinition.Current.RootPage の場合は、ContentReference.RootPage に置き換えることができます。

依存関係の注入を最新化する

InitializationEngined.Locate を使用したサービスの場所は廃止されました。代わりに、コンストラクター インジェクションを使用して IServiceProvider インスタンスを取得します。

  • 前に: context.Locate.Advanced.GetInstance()

  • : IServiceProvider を挿入し、serviceProvider.GetRequiredService を呼び出します。() IInitializationModule では、context.Services 経由でアクセスできます。

その他の API の小さな変更

ステップ 4: 構成の更新

次に、Startup.cs と appSetting.json でいくつかの調整を行う必要があります。

  1. データベース互換性アップデートを有効にする: Startup.cs に次のコードを追加して、データベース互換性レベルが自動的に更新されるようにします。

    services.Configure(options =>
    {
        options.UpdateDatabaseCompatibilityLevel = true;
    });
  2. コンテンツグラフの構成: コンテンツ グラフは、CMS 13 のプレビューではデフォルトで有効になっており、無効にすることはできません。これは今後のリリースで変更される可能性があります。資格情報を appSettings.json に追加する必要があります。

    "Optimizely": {
      "ContentGraph": {
        "GatewayAddress": "https://staging.cg.optimizely.com",
        "AllowSendingLog": "true",
        "SingleKey": "INSERT SINGLEKEY HERE",
        "AppKey": "INSERT APPKEY HERE",
        "Secret": "INSERT SECRET HERE"
      }
    }
  3. 訪問者グループをインストールする: プレビューの既知の問題により、訪問者グループがインストールされていない限り、メニュー システムは正しく表示されません。これを Startup.cs に追加します

    services.AddVisitorGroups();

ステップ 5: アップグレード後の問題を修正する 404

すべての変更を加えた後、アプリケーションを実行します。

サイトが 404 見つかりません エラー。これは予想通りです。移行されたデータベースには古い SiteDefinition 構成がまだ残っており、新しいアプリケーション モデルと一致していません。

これを修正するには、次の手順に従ってください。

  1. CMS 管理インターフェイスに移動します。 https://localhost:5000/Optimizely/CMS

  2. に行く 設定 > アプリケーション。ページのレンダリングに失敗した場合は、ブラウザのキャッシュをクリアして再読み込みしてください。デフォルトの「ヘッドレス」アプリケーションが表示されます。

  3. アプリケーションを編集して、 アプリケーションの削除

  4. クリック 新しいアプリケーションの作成

  5. 作成したばかりの新しい「処理中」アプリケーションを編集します。

これで、Alloy サイトがフロントエンドで正しくレンダリングされ、編集モードでのプレビューが機能するようになります。

結論

おめでとう! Alloy サイトは CMS 13 に正常にアップグレードされました。このプロセスでは、新しいバージョンでの主要なアーキテクチャの変更、特にコンポーザブル アプリケーション モデルと最新の API への移行が強調表示されます。これで、Optimizely CMS 13 の新機能と可能性を探索する準備が整いました。

重要な注意事項: このガイドで説明されている手順は、開発者が Alloy テンプレートを使用して CMS 13 プレビューを探索することを目的としています。これは不完全なプレビューであり、これらの手順は実際の開発プロジェクトでの使用や、実際の運用サイトでの使用はお勧めできません。 CMS 13 のリリース日が近づいたら、さらに多くの情報を共有する予定です。

2026 年 1 月 23 日

#オプティマイズをテストするための開発者ガイド

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。