フルスタックSitecoreAIローカル開発環境を構築しましょう

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Deployアプリでプロジェクトを作成し、初期デプロイのソースとしてfoundationテンプレートを選択すると、プロセスは初期環境用に設定したソース管理リポジトリにFoundationテンプレートを追加します。

その結果得られたコードベースを使って、Dockerコンテナをベースにしたローカル開発環境を構築できます。

注記

ここで説明されているように、Docker v.2を使用していることを確認してください。

基礎テンプレートを使用するには、ワークステーションに以下のソフトウェアコンポーネントが必要です:

  • 有効なSitecoreライセンスファイル。

  • Windows PowerShell。

  • 現在の長期サポート(LTS)バージョンのNode.jsです。

  • .NET 8 (インストールされたバージョンをdotnet --versionコマンドで確認してください)。

  • .NET Framework 4.8 SDK (. NETフレームワークのバージョンを確認するためのMicrosoft手順を参照)。

  • Visual Studio 2022

  • Docker Windows用で、Windows Containersを有効にしています。

    注記

    SitecoreAIコンテナ化環境はDockerエンジンとDocker CLIに依存します。コンテナ化環境はDockerDesktopに依存していませんが、ローカルでDockerDesktopなしでSitecoreAIを実行できるかどうかの公式なテストはしていません。

    Windows環境でのDocker設定については、IT部門と公式のDockerドキュメントにご相談することをおすすめします。

  • Sitecoreコンテナを使用するために必要なコンポーネントについて。

このウォークスルーでは、以下の方法を説明します:

環境を整えろ

コンテナを始動させる前に、必要なポートがアクセス可能であることを確認しなければなりません。

ソリューションを実行するための環境準備:

  1. 管理者権限を持つOpen PowerShell。

  2. インターネット情報サーバーがポート443で動いているか確認してください:

    Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess

    もしそうなら、必ず止めなければなりません:

    iisreset /stop
  3. Apache Solrや他のサービスがポート8984で動いているか確認してください:

    Get-Process -Id (Get-NetTCPConnection -LocalPort 8984).OwningProcess

    もしそうなら、必ず止めなければなりません:

    Stop-Service -Name "<the name of your service>"

    あるいは、Non-Sucking Service Managerで起動している場合は、以下のコマンドで停止してください:

    nssm stop "<the name of your service>"

ソリューションを設定し実行してください

基礎テンプレートには、以下のソフトウェアコンポーネントとスクリプトが含まれています:

  • コンテナイメージを更新してください。

  • コンテナを作ってください。

  • 必要なホストをセットアップしましょう。

  • コンテナを始めろ。

  • Content Management (CM)インスタンスを起動します。

  • Sitecore CLIと必要なプラグインをインストールしてください。

  • Solr管理スキーマを埋める。

  • 再建指数。

  • 開発者管理の項目をシリアライズし、インスタンスにプッシュします。

  • ブラウザでCMインスタンスとクライアントアプリをOpenしてください。

大事な

たとえ複数のコンテンツ管理インスタンス(複数のプロジェクト)をローカルで実行する予定であっても、認証のためにホスト名が正しく機能するevery instance must follow the *.xmcloudcm.localhost pattern 。つまり、myproject.xmcloudcm.localhostのようなホスト名は使えますが、cm.mycompany.localhostはできません。

XM Cloudは現在SitecoreAIとなっています

一部のコード例、画像、UIラベルは、エンジニアリング資産の更新中もXM Cloudを使用している場合があります。

ローカルで実行するためのテンプレートを設定し、コンテナを起動するには:

  1. 管理者権限を持つOpen PowerShell。

  2. プロジェクトディレクトリで、そのプロジェクト用に設定したリポジトリをクローンします。

  3. コマンドラインインターフェースを使って、リポジトリフォルダのルートページにアクセスします。

  4. Sitecoreコンテナ環境を準備するには、プロジェクトのルートディレクトリからスクリプトinit.ps1を実行します:

    ./local-containers/scripts/init.ps1 -InitEnv -LicenseXmlPath "<C:\path\to\license.xml>" -AdminPassword "<desired password>"
    ヒント

    もしFoundationテンプレートを使っていなければ、プロジェクトにinit.ps1スクリプトがない可能性があります。 スターターキットのリポジトリからinit.ps1スクリプトをコピーできます。

  5. Windows 10を使っている場合は、コンテナベースのイメージをWindows 10のサポートに合わせて調整する必要があります。これを行うには:

    • init.ps1ファイルで$baseOsバージョン設定をltsc2019に変更してください。

    • .envファイルでは、以下の変数をこれらの値に置き換えます。

      TRAEFIK_IMAGE=traefik:v2.5.3-windowsservercore-1809
      
      NODEJS_PARENT_IMAGE=mcr.microsoft.com/windows/nanoserver:1809
  6. Sitecore Dockerイメージをダウンロードし、コンテナおよびクライアントアプリケーションをインストール・設定するには、以下のスクリプトを実行します。

    ./local-containers/scripts/up.ps1
    ヒント

    もしFoundationテンプレートを使っていなければ、プロジェクトにup.ps1スクリプトがない可能性があります。 スターターキットのリポジトリからup.ps1スクリプトをコピーできます。

  7. 促されたら、ブラウザでインスタンスにログインし、デバイスの承認を受け入れてください。

  8. 複数の組織に所属している場合は、現在のプロジェクトに割り当てる組織を選択してください。

  9. 起動スクリプトがレンダリングされたサイトとSitecore Launchpadのブラウザタブを開くのを待ちます。

大事な

コンテナの状態をリセットする必要がある場合は、\docker\clean.ps1スクリプトを実行することができます。マウントされたデータとデプロイ/コピーされたビルド出力をすべてクリアします。 .\docker\clean.ps1スクリプトを実行した後、検索インデックスを再構築する必要があります。

アイテムシリアライゼーションの設定

ローカルインスタンスが稼働している間にContent Editorツールでコンテンツツリーを確認すると、ローカルインスタンスには新しいサイトの項目が一切含まれていないことがわかります。これは、サイトが元々リモート環境で作成されたためであり、ローカルインスタンスがそれらの項目を自動的に含めていないためです。したがって、すべての開発者がアクセスできるように、サイトアイテムをローカルおよびリモートのリポジトリに移す必要があります。

Sitecore Serializationで環境間でアイテムを同期できます。リポジトリには、公式のSitecoreAI Foundationテンプレートを使用している場合、シリアライズを有効にするための必要なセットアップがすでに含まれています。また、レンダリングホストのアイテムシリアライズを設定するauthoring/items/next-starter.module.jsonファイルも含まれています。しかし、ローカルで開発する際には追加の構成が必要です。

新しいシリアライゼーション構成を作成するには:

  1. authoring/items/{SITE_NAME}フォルダ内に新しいシリアライゼーションモジュールファイルを作成します。例えば、意義のある名前を付けてみてください。mysite.module.json

  2. namespace値をサイト名などの一意値に置き換えます。例えば、MySite

  3. 既存のシリアライゼーションモジュール定義から内容をコピーし、itemsプロパティを以下のように修正します:

    • プレースホルダー設定:

      {
        "name": "layout",
        "path": "/sitecore/layout/Placeholder Settings/Project/placeholdersite",
        "allowedPushOperations": "CreateUpdateAndDelete"
      }
    • 展開プロセス中に作成されたテンプレート:

      {
        "name": "templates",
        "path": "/sitecore/templates/Project/MySite",
        "allowedPushOperations": "CreateUpdateAndDelete"
      }
    • コンテンツにはテナントやサイトが含まれます:

      {
        "name": "contentRoot",
        "path": "/sitecore/content",
        "allowedPushOperations": "CreateUpdateAndDelete"
      }
      注意

      この構成は単一項目スコープを持たないため、コンテンツツリー全体をシリアライズします。コンテンツ作成者がアイテムの作業を始めたら、シリアライズプッシュ操作時に作業が上書きされないようにこの構成を変更する必要があります。

    • メディア関連の記事:

      {
        "name": "media",
        "path": "/sitecore/Media Library/Project/MySite",
        "allowedPushOperations": "CreateUpdateAndDelete"
      }

    インスタンス内で作成されたレンダリング、レイアウト、設定などの追加パスを設定できます。

  4. ファイルを保存してください。

SitecoreAI組織内での承認

リモートのSitecoreAIインスタンスに対して操作を行う前に、組織内で認証する必要があります。

組織内でローカルプロジェクトを承認するには:

  • 次のコマンドを実行します:

    dotnet sitecore cloud login

    ユーザーインターフェースの手順に従ってログインし、デバイスを認証してください。認証プロセスを完了すると、接続情報は .sitecore/user.jsonファイルに保存されます。

Connect SitecoreAI環境

1つ以上のリモート環境に接続できます。

環境とつながる方法:

  1. 次のコマンドを実行してプロジェクトのIDを取得します:

    dotnet sitecore cloud project list

    取り組んでいるプロジェクトを特定し、IDをコピーしてください。

    ヒント

    プロジェクトがなければ、Deployアプリでプロジェクトを作成してください。

  2. 次のコマンドを実行して環境のIDを取得します:

    dotnet sitecore cloud environment list --project-id <project-id>

    接続したい環境を特定し、IDをコピーします。

  3. 環境接続コマンドを実行してください:

    dotnet sitecore cloud environment connect -id <environment-id> --allow-write true

接続が成功した場合、プロセスは環境接続設定とともに.sitecore/user.jsonファイルを更新します。環境名をdevとした場合、.sitecore/user.jsonファイルにはendpointsオブジェクトのdevキーが含まれています:

{
  "endpoints": {
    "xmCloud": {
      ...
    },
    "dev": {
        "ref": "XMCloud",
        "allowWrite": true,
        "host": "<the environment host>",
        "variables": {}
    }
  }
}
XM Cloudは現在SitecoreAIとなっています

一部のコード例、画像、UIラベルは、エンジニアリング資産の更新中もXM Cloudを使用している場合があります。

Connect the local environment(地域の環境をつなぐ)

ローカル環境はSitecore CLI connectコマンドで接続します。

つながり方:

  • ターミナルでローカルプロジェクトのルートディレクトリにアクセスし、以下のコマンドを実行します:

    dotnet sitecore connect --ref xmcloud --cm https://xmcloudcm.localhost --allow-write true -n local

このプロセスは、ローカル環境の接続設定で .sitecore/user.jsonファイルを更新します:

{
  "endpoints": {
    "xmCloud": {
      ...
    },
    "dev": {
      ...
    },
    "local": {
        "ref": "xmcloudlocal",
        "allowWrite": true,
        "host": "https://xmcloudcm.localhost",
        "variables": {}
    }
  }
}
XM Cloudは現在SitecoreAIとなっています

一部のコード例、画像、UIラベルは、エンジニアリング資産の更新中もXM Cloudを使用している場合があります。

SitecoreAIからシリア化されたアイテムをローカルリポジトリに引き寄せてください

認証・認可が整い、必要な環境参照が .sitecore/user.jsonに追加されれば、ローカルプロジェクトはシリアライゼーション操作を行う準備が整います。

リモート環境からシリアル化されたアイテムを取得するには:

  • ターミナルでSitecoreシリアライズpullコマンドを実行し、.sitecore/user.jsonファイルで設定された環境名を指定します:

    dotnet sitecore ser pull -n "dev"

    コマンド出力は、どのアイテムがシリアライズされたかを示します。

リアライズ設定に基づいて、ソースコードにはsrc/itemsフォルダーとサブフォルダcontent-rootmediatemplatesが含まれています。

シリアル化されたアイテムをローカル環境にプッシュする

リモート環境で作成されたシリアライズされたアイテムをローカルリポジトリに取り込んだので、それらをローカルインスタンスにプッシュできます。

シリアライズされたアイテムをローカルインスタンスにプッシュするには:

  • ターミナルで、Sitecore serialization pushコマンドを実行し、.sitecore/user.jsonファイルで設定されたローカル環境名を指定します:

    dotnet sitecore ser push -n "local"

操作が完了すると、ローカルインスタンスで新しいアイテムを確認できます。これでシリアライズされたアイテムをコミットし、リモートのバージョン管理リポジトリにプッシュできます。

注記

コマンドserialization push (ser push)はアイテムを公開しません。手動で公開する必要があります。

今後のステップ

このセットアップが完了したら、SitecoreAIソリューションとフロントエンドアプリケーションの開発を始めることができます。

作業中には、Sitecore CLIを使って以下のような一般的な開発作業を行うことができます:

この記事を改善するための提案がある場合は、 お知らせください!