---
title: "コンテンツシリアライズの設定"
slug: "set-up-content-serialization"
abstract: "必要なプラグインをインストールし、Content Serializationを設定することでシリアライゼーション機能を設定する方法のガイド"
---
# コンテンツシリアライズの設定

Sitecore Content Serializationを有効にするには、Sitecore CLI Serialization Pluginをインストールしてシリアライズコマンドを有効にし、プロジェクトファイルを設定する必要があります。

## シリアライズコマンド

コンテンツシリアライゼーション操作を行うには、Sitecore CLI内の一連の [シリアライズコマンド](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-command-line-interface/sitecore-cli-command-reference/the-cli-serialization-command.html "The CLI serialization command") およびサブコマンドを使用します。

これらのコマンドを使用するには、[Sitecore CLI Serialization Plugin](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-command-line-interface/plugins/serialization-plugin.html "Serialization plugin")をインストールする必要があります。これはserializationコマンドを提供することでCLIを拡張します。

## コンテンツシリアライズの設定

Sitecore Content Serialization(SCS)は、プロジェクトおよびモジュールファイルを通じて構成され、どのコンテンツ項目を含めるか、どの項目を除外するか、またどの操作を行うかを定義します。

SCSシステムはコンテンツ項目をプロジェクトフォルダにYAMLファイルとしてシリアライズします。デフォルトパスはモジュールファイルに対して相対的に \\serializationですが、任意のパスに対して [相関的なシリアライズパスを設定](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-content-serialization/serialization-paths/change-the-relative-serialization-path.html "Change the relative serialization path") できます。

構成はプロジェクトの構成ファイル(sitecore.json)とプロジェクトのモジュールファイル(例: Project.module.json)の2レベルで行われます:

### プロジェクト設定ファイル

プロジェクト設定ファイルはsitecore.jsonと名付けられています。関連する[Sitecore Content Serializationモジュール](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-content-serialization/create-a-sitecore-content-serialization-module.html "Create a Sitecore Content Serialization module")を参照するmodulesプロパティを含むいくつかのプロパティを持っています。

プロジェクトの最も単純な形での構成は次のようになります。

{
 "$schema": "./.sitecore/schemas/RootConfigurationFile.schema.json",
 "modules":  "src/\*/\*.module.json" 
}

### コンテンツの含め方と除外

イン *クル* スや *ルール*で連続化のためにコンテンツのサブセットを選びます。これはコンテンツツリーの特定の部分の連続化を繰り返し行うのに役立ちます。

Project.module.jsonのようなモジュールファイルで、内容項目のシリアライズに含まれるか、または除外するかを設定します。すべてのモジュールファイルでシリアライゼーション設定を配置・*オーバーライド*できます。

> !注コンテンツアイテムはすべてのモジュールで一度だけ含まれます。

各includeには、ファイルシステム内のフォルダ名となるnameプロパティと、コンテンツアイテムツリーのどの部分をシリアライズするかを指定するpathプロパティが必要です。

例えば、コンテンツアイテムツリー全体をファイルシステムのserialization\\content\\ フォルダにシリアライズするには、これをProject.module.jsonファイルに追加し、sitecore ser pullコマンドを実行します。

"items": {
 "includes": 
 {
 "name": "content",
 "path": "/sitecore/content/home"
 }
 
}

> !重要インクルスの順番は重要です。もしコンテンツ項目が同じモジュール内のテンプレートに依存している場合、テンプレートの含め方が最優先でなければなりません。

含まれるプロパティおよびルールプロパティの完全なリストについては、[Sitecore Content Serialization設定リファレン](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-content-serialization/configuration/sitecore-content-serialization-configuration-reference.html "Sitecore Content Serialization configuration reference") スを参照してください。

> !注インクルーツプロパティは *ルート* プロパティと呼ばれ、ルート *名* や *ルートパス*のように言われます。

#### ルール

ルールはコンテンツ項目ツリーのシリアライズを設定するために使われます。ルールはルートパス、影響を与えるコンテンツ項目の範囲、許可されたプッシュ操作の変更に基づいて設定します。

例えば、/sitecore/content/home/products/ パスとその子孫を同期させたい場合、legacy/ パス以外のすべての子孫を同期させたい場合は、以下のようにインクトゥルを追加します。

"items": {
 "includes": 
 {
 "name": "content",
 "path": "/sitecore/content/home",
 "rules": 
 {
 "path": "/products/legacy",
 "scope": "ignored"
 },
 {
 "path": "/products",
 "scope": "ItemAndDescendants",
 "allowedPushOperations": "createUpdateAndDelete"
 },
 {
 "path": "\\\*",
 "scope": "ignored"
 }
 
 }
 
}

ルールシステムは「 *先勝* 制」の原則に基づいており、コンテンツがルールに合致すると、その後のすべてのルールは無視されます。

-   最初のルールは、SCS /sitecore/content/home/products/legacy パス内のすべてのコンテンツ項目を無視するように指示します。
-   2つ目のルールは、SCS /sitecore/content/home/products パス内のすべてのコンテンツ項目をシリアライズするよう指示します。すべてのサブコンテンツは、範囲が ItemAndDescendantsされているため含まれています。
-   三つ目のルールは、これ以上はコンテンツ /sitecore/content/home をシリアライズするSCS禁止です。このルールのワイルドカードパスは、前のルールで一致しないすべてのコンテンツ項目と一致し、 ignored スコープによってシリアル化されません。

ルールを設定する際には以下の点を念頭に置いてください:

-   ルールの経路が重複しないようにしましょう。あるいは、もしそうなら、最も具体的なルールを最初に設定しなければなりません。
-   親のパスのルールは、子供や子孫のパスのルールを上書きします。
-   ルールスコープはルートスコープ以上に包括的ではありません。例えば、ルートスコープが ItemAndChildrenの場合、ルールスコープは ItemAndDescendantsできません。
-   ルール内の alias プロパティは、この特定のルールのルート name プロパティ(ファイルシステム内のフォルダ名)を置き換えます。
-   aliasプロパティ*と*scopeプロパティをignored値で設定している場合、スコープが使われます。無視対象のコンテンツはエイリアスの影響を受けません。

すべての設定可能なルールプロパティについては、[Sitecore Content Serialization Configuration Reference](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-content-serialization/configuration/sitecore-content-serialization-configuration-reference.html "Sitecore Content Serialization configuration reference")を参照してください。

### SCSパッケージ内のフィールドの除外

> !注除外フィールド機能はCLI 4.0以降から利用可能です。

sitecore.json設定ファイルや任意の\*modules.json fileで指定することで[、シリアライズからフィールドを除外](https://doc.sitecore.com/sai/ja/developers/sitecoreai/sitecore-content-serialization/configuration/excluded-fields.html "Excluded fields")できます。

> !注同期操作は常に除外されたフィールドを無視します。つまり、Sitecoreでこれらのフィールドを変更しても、CLIは変更を検知せず、データをプッシュしても上書きされません。YAMLファイルに除外欄がある場合、それらは含まれるフィールドの変更後か、手動で除外を削除してpull操作を行う場合にのみ削除されます。

excludedFields性質は、2つの性質を持つ除外フィールドの配列を含みます:fieldIdとdescription。

CLIコマンドの除外フィールドをpackage、watch、diff設定することもできます。