---
title: "Sitecoreコンテンツシリアライズ"
slug: "sitecore-content-serialization"
abstract: "Sitecoreコンテンツシリアライゼーションの入門。"
---
# Sitecoreコンテンツシリアライズ

Sitecore Content Serialization(SCS)は、テンプレート、レンダリング、レイアウト、設定などの構造変更をSitecore AIのアプリケーションコードと同期させるために開発者が主に使用するツールです。

Sitecore AIでは、すべてがアイテムです。開発者がテンプレートや設定項目に依存するコードを変更する場合、それらのアイテムはコードと一緒にバージョン管理され、デプロイされなければなりません。

## シリアライズの役割

シリアライズはSitecoreAIのアイテムを、その構造やフィールド値を表すYAMLファイルに変換します。これらのYAMLファイルは通常、ソース管理のもとでプロジェクトリポジトリにディスクに保存されます。

SCSでは、以下のことができます:

-   SitecoreAIからディスクにアイテムを引き出し、YAML表現を作成または更新します。
-   ディスクからSitecoreAIへアイテムをプッシュし、ソース管理に保存された定義を適用します。

これは以下間での双方向同期です:

-   SitecoreAI環境
-   あなたの地元のプロジェクト
-   あなたのソース管理リポジトリ

例えば、開発者がテンプレートを更新して構造的な項目を変更すると、その項目はYAMLファイルとしてディスクに引き出されます。そのファイルはコードベースの一部となり、関連するコード変更とともにレビュー、バージョン管理、デプロイが可能です。

シリアライズされたアイテムをプッシュすることで、SitecoreAI環境がソース管理に保存されたアイテム定義を反映していることを保証します。

## なぜ開発者がシリアライズを使うのか

他のシステムではシリアライズはしばしばコンテンツ転送に関連付けられますが、SitecoreAIではより広い目的を果たします。

シリアライズは主に以下の目的で使われます:

-   構造的な項目の変更(テンプレート、レイアウト、レンダリング、プレースホルダー設定)を同期させます。
-   コードとアイテム定義は一緒にバージョン管理してください。
-   開発者チームが一貫して作業できるようにすること。
-   展開中、環境が整合性を保つこと。

シリアライズなし:

-   ある環境で行われたテンプレートの変更が、別の環境では存在しない場合があります。
-   コードは欠けているフィールドやテンプレートに依存しているかもしれません。
-   チームはお互いの構造変更を上書きし合うことができます。

シリアライズは、コードと同様にアイテム定義をバージョン管理されたアーティファクトに変換します。

## シリアライズが保証するもの

コードを変更し、コードが依存するテンプレートも変更する場合:

-   シリアライズは、両方の変更が一緒に移動するようにします。
-   コードをデプロイすれば、テンプレートの変更も一緒に行われます。
-   もし他の開発者が最新のコードを引っ張れば、その開発者もテンプレート構造を手に入れます。
-   開発、テスト、本番のすべての環境において、構造は一貫しています。

## シリアライゼーションがワークフローにどのように位置づけられるか

![SCS\_Workflow\_diagram.png](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/SCS_Workflow_diagram.png)

シリアライズは、シリアライズされたアイテムを管理するために使われるリポジトリ内の設定ファイルによって制御されます(例:Sitecore AIをローカルで実行する際のバックエンドソリューションなど)。

-   sitecore.json (プロジェクトレベルの構成)
-   \*.module.json ファイル(モジュールレベルのアイテム定義)

これらのファイルは以下を定義しています:

-   どの項目が含まれているか
-   スコープの定義

## 典型的な現像液フロー

1.  *SitecoreAIで構造的なアイテムを修正する*
    
    例えば、テンプレートに新しいフィールドを追加するとします。
    
2.  *アイテムをディスクに引き寄せてください*
    
    更新されたテンプレートはローカルプロジェクト内のYAMLファイルとして保存されます。
    
3.  *YAMLファイルをソース管理にコミットします*
    
    テンプレート構造は、それに依存するコードとともにバージョン管理されます。
    
4.  *コードやシリアライズされたアイテムの変更を他の環境に適用します*
    
    コードとアイテムの変更はSitecore AIで同時に適用されます。
    

この流れは以下を保証します:

-   コードとアイテムの構造は一貫性を保ちます。
-   開発者も同じ定義に基づいています。

SCSは、シリアライズされたアイテムをプロジェクト内のYAMLファイルとして保存します(モジュールごとに定義されたシリアライズパスのもとでデフォルトです)。これらのファイルはソース管理にコミットされ、デプロイプロセスの一部となります。

構成プロパティの完全なリストについては、Sitecore Content Serialization Configuration Referenceを参照してください。

## 手動および自動同期

アイテムの同期方法は2通りあります:

-   Manual - Sitecore CLIを使えば、以下のことができます:
    
    -   Sitecore AIからアイテムを引き出す
    -   アイテムをSitecore AIにプッシュしてください
-   Automatic (watch mode) - Sitecore CLIでウォッチコマンドを有効にし、変更を監視し、開発中に更新されたアイテムを自動的にディスクに引き寄せることができます。
    

Sitecore CLIはWindows、macOS、Linuxで動作します。

## SitecoreAI環境でのSCS使用について

SCS Content Management APIを介してSitecoreAIに接続し、以下をサポートします:

-   SitecoreAIからディスクへのアイテム取得
-   SitecoreAIへのシリアライズされたYAMLファイルをプッシュする

SCSは、どの項目がシリアライズされ同期されているかを定義します。

管理型SitecoreAI環境でのシリアライズアイテムの展開方法は、ビルド構成(例:Accelerateシナリオのxmcloud.build.json )で別途設定されます。

デプロイメントオプションには、Items as Resources(IAR)などがあり、これは通常開発者が制御する構成のためにファイルシステムにデプロイされるアイテムです。

シリアライズは真実のソースを定義します。ビルド構成は、その真実のソースが展開時にどのように適用されるかを定義します。

## シリアライズが有用なその他の文脈

主に開発者同期に使われますが、シリアライゼーションは以下にも利用できます:

-   バックアップ構造物
-   環境間でのアイテム移動
-   チーム間の構成共有
-   インスタンス間で特定の構造アイテムツリーをプロモートする

しかし、個々のメディア資産を大規模に同期させることを目的としたものではありません。

## 連載されるべきもの

一般的な原則として:

-   コードが依存する開発者が作成または修正したアイテムをシリアライズします。
-   デフォルトのSitecore AIインストールで提供されている基本アイテムは、意図的にカスタマイズしていない限りシリアライズしないでください。

シリアライズが必要な典型的なアイテムには以下が含まれます:

-   テンプレートとブランチテンプレート
-   レンダリングアイテム
-   レイアウトの定義
-   プレースホルダー設定
-   サイトルートアイテム
-   プロジェクトフォルダー下の構造構成

## 連続してはいけないもの

/sitecore/system/Modules/PowerShell/Script Library/Migrationの移行ノードはシステム管理パスです。このノードは、Pathwayアプリケーションが使用される初期化操作中にプラットフォームによって自動的に削除され、再作成されます。

-   このパスにカスタムスクリプトを保存しないでください。削除されます。
-   このパスはシリアライゼーション設定に含めないでください(.module.json)。このノードのIAR保護はアップロード失敗(502/504エラー)を引き起こします。
-   代わりにスクリプトライブラリ内の専用フォルダでカスタムPowerShellスクリプトを作成してください。