SITECORE MANIA 開発者向け技術ブログ

XM Cloud

諸岡

諸岡

XM Cloud におけるマルチサイト構築

本記事ではSitecore XMCloudでのマルチサイト事のプロジェクト管理について紹介します。

マルチサイト構築の選択肢

XM Cloud でマルチサイトを構築する場合、同一のプロジェクトを複数サイトで共通利用するか、あるいは サイトごとにプロジェクトを分けるか、大きく2つのアプローチがあります。

■ 共通プロジェクトの場合

  • ソースコードやコンポーネント構成を完全に共通化できる

  • 複数サイトで同一の実装を使い回せるため、保守性が高い

■ 個別プロジェクトの場合

  • サイトごとの要件を柔軟に実装できる

  • 個別プロジェクトにサイト固有のロジックを追加することで煩雑化するリスクを避けられる

 

基本的には、サイト構成(コンポーネント)が似ている場合は共通化した方が実装コストが低くなるため、共通プロジェクトを採用するケースが一般的です。

一方で、サイトごとの要件が大きく異なる場合や、将来的に独立した運用を想定する場合は、プロジェクトを完全に分けた方が適しているケースもあります。

本記事では、その後者である プロジェクトファイルを完全に別管理するパターン について紹介します。

プロジェクトの追加

Next.jsのデフォルトプロジェクトが「headapps\nextjs-starter」にあるためこちらをコピーしてプロジェクトを2つにします。
今回は「sample-site」という名前で作成していますが、一旦はただフォルダをコピーすれば問題ないです。

※ spa-startersというプロジェクトはangular用のプロジェクトとなっているためこちらは今回無視します。

 

XMCloud設定の追加

リポジトリのルートに「xmcloud.build.json」というXMCloud用のビルド設定ファイルがあります。

こちらに今回追加したプロジェクトを追加することでXMCloud上で確認する際に別のWebインスタンスとして立ち上げることができるようになります。

追記したのは「sampleSite」というキーです。

pathは作成したプロジェクトパスに変更しています。

 

{
    "renderingHosts": {
      "nextjsstarter": {
        "path": "./headapps/nextjs-starter",
        "nodeVersion": "22.11.0",
        "jssDeploymentSecret": "110F1C44A496B45478640DD36F80C18C9",
        "enabled": true,
        "type": "sxa",
        "buildCommand": "build",
        "runCommand": "next:start"
      },
      "sampleSite": {
        "path": "./headapps/sample-site",
        "nodeVersion": "22.11.0",
        "jssDeploymentSecret": "110F1C44A496B45478640DD36F80C18C9",
        "enabled": true,
        "type": "sxa",
        "buildCommand": "build",
        "runCommand": "next:start"
      }
    }
    ...
}
 

XMCloudデプロイ

XMCloudへのデプロイ自体はGitの自動連携によって簡単にデプロイ可能なので手順はスキップします。

先程の設定ファイルをコミットし、XMCloud上にデプロイを行うと以下の配下に「sampleSite」というアイテムが追加されます。

「/sitecore/system/Settings/Services/Rendering Hosts」

このレンダリングアイテムのDataセクションにあるフィールド値を確認してみると、「Default」と「sampleSite」には異なるインスタンス(URL)、異なるアプリケーション名が割り当てられていると思います。このアイテムを各サイトに設定することでプロジェクトファイルの振り分けを行うことができます。

 

サイト設定

サイトの設定アイテムに作成したレンダリングアイテムを割り当てます。

実際に追加サイトを作成する場合はXMCloudの「Channels」タブから「Create site」経由でテナントサイトを作成してください。

「/sitecore/content/テナント名/サイト名/Settings/Site Grouping/サイト名」

Settingセクション配下の「Predefined application editing host」というフィールド最初は「Default」が設定されています。

この場合初期プロジェクトである「nextjs-starter」プロジェクトがレンダリングされるためこちらを「sampleSite」に変更します。

 

以上でサイトに対してプロジェクトの設定は完了です。

実際にソース・ファイルなどを変更しPageアプリケーション等を起動をすると対象のプロジェクトが切り替わっていることが確認できるはずです。

 

ローカルでの開発について

XMCloud上でのプロジェクトの振り分けはできましたが、ローカルのDocker開発をする場合や、ローカルをXMCloudと接続して開発する場合は本設定だけでは不十分です。

簡単に概要だけ書くと以下のようになります。

  • ローカルDocker対応

Nodeコンテナの追加、それに伴うdocker-compose等の設定追加

  • ローカルとXMCloudの接続

サイト環境設定の追加(XMCloud上にあるSitecore AI Deploy→Projects→対象環境→対象プロジェクト→Developer settingsにある環境変数)

 

ローカルとXMCloudの接続は環境変数の追加ので後は通常通りのNext.js起動コマンドで立ち上げるだけで比較的用意ですが、Docker対応する場合は諸々の記述追加が必要なため少し手順が複雑になります。

こちらはまた別記事でご紹介したいと思います。

 

以上がXMCloudマルチサイトにおける別プロジェクト参照の手順になります。

ご参考にしていただけると幸いです。
最後まで読んでいただきありがとうございました。

参考文献

※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。

この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス