フルスタックの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. 環境を整えろ
  2. ソリューションを設定し実行してください
  3. アイテムシリアライゼーションの設定
  4. SitecoreAI組織内で認可してください
  5. Connect a SitecoreAI 環境
  6. Connect the local environment(地域の環境をつなぐ)
  7. SitecoreAIからシリア化されたアイテムをローカルリポジトリに引き寄せます
  8. シリアル化されたアイテムをローカル環境にプッシュする

環境を整えろ

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

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

  1. 管理者権限で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 ""

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

    nssm stop ""

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

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

  • コンテナイメージを更新してください。
  • コンテナを作ってください。
  • 必要なホストをセットアップしましょう。
  • コンテナを始めろ。
  • Content Management (CM)インスタンスを起動します。
  • Sitecore CLIと必要なプラグインをインストールしてください。
  • Solr管理スキーマを埋める。
  • 再建指数。
  • 開発者管理の項目をシリアライズし、インスタンスにプッシュします。
  • ブラウザでCMインスタンスとクライアントアプリを開いてください。

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

!注XM Cloudは現在SitecoreAIです。エンジニアリング資産が更新されている間、一部のコード例、画像、UIラベルはXM Cloudを使用している場合があります。

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

  1. 管理者権限でPowerShellを開いてください。

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

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

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

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

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

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

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

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

      TRAEFIK_IMAGE=traefik

      .5.3-windowsservercore-1809

      NODEJS_PARENT_IMAGE=mcr.microsoft.com/windows/nanoserver

  6. Sitecore Dockerイメージをダウンロードし、コンテナおよびクライアントアプリケーションをインストール・設定するには、以下のスクリプトを実行します。

    ./local-containers/scripts/up.ps1

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

    実行中のコンテナを停止・削除するには、ソリューションのルートディレクトリから .\down.ps1を実行します。これによりdocker-compose down呼び出し、up.ps1によって作成されたコンテナやネットワークが削除されます。SolrインデックスやSQLデータベースなどの永続データを消去するには、代わりに .\docker\clean.ps1を使いましょう。

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

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

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

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

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

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

Sitecore Serializationで環境間でアイテムを同期できます。公式のSitecoreAIスターターテンプレートを使用している場合、リポジトリにはシリアライズを有効にするための必要なセットアップがすでに含まれています。また、レンダリングホストのアイテムシリアライゼーションを設定する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 a SitecoreAI環境

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

環境とつながる方法:

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

    dotnet sitecore cloud project list

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

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

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

    dotnet sitecore cloud environment list --project-id

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

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

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

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

{ "endpoints": { "xmCloud": { ... }, "dev": { "ref": "XMCloud", "allowWrite": true, "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-root、media、templatesが含まれています。

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

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

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

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

    dotnet sitecore ser push -n "local"

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

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

次のステップ

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

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

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