---
title: "レイアウトサービス"
slug: "layout-service"
abstract: "JSON形式のSitecoreレイアウトとコンテンツデータを、分離したフロントエンドアプリケーション向けに入手できます。"
---
# レイアウトサービス

Sitecoreレイアウトサービスは、構造化されたJavaScriptオブジェクト表記(JSON)データとしてSitecoreレイアウト情報を公開するSitecoreヘッドレスサービスのエンドポイントです。

このサービスは[Sitecoreレンダリングエンジン](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/rendering-engines.html "Rendering engines") を活用し、構造化されたJSON出力を生成し、*レイアウト* と *レンダリング*のデカップリングを行い、JSONデータを消費可能なフロントエンド技術スタックでSitecoreコンポーネントをレンダリングすることを可能にします。

> !ヒントレイアウトサービスからデータを取得するには、RESTまたはGraphQLエンドポイントを使用します。GraphQLエンドポイントに関するドキュメントについては、[Sitecore Experience Edge for XM](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/sitecore-experience-edge-for-xm.html "Sitecore Experience Edge for XM")を参照してください。

以下の図は、Sitecoreからデカップルされたフロントエンドアプリケーションへのレイアウトデータ応答フローを示しています。

![Layout Service request flow](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/hd/19/sitecore-headless-development/images/LayoutServiceRequestAnatomy-18_.png)

## レイアウトサービスのアクション

レイアウトサービスは2つのアクションを公開します:

-   アイテム全体のレイアウトの出力を取得できます。
-   特定のプレースホルダーの出力を取得すること。

目的のサイトコンテキストに解析するには、sc\_siteクエリ文字列パラメータまたはホスト名を使ってレイアウトサービスを呼び出します。レイアウトサービスのパスはサイトのホームアイテムに相対的だからです。

### アイテム全体のレイアウトの出力を取得する方法

アイテムの完全なレイアウト出力を得るには、レイアウトサービスのrenderエンドポイントを呼び出す必要があります:

/sitecore/api/layout/render/config?item=path&sc\_lang=language&sc\_apikey=key&tracking=true|false&sc\_site=your-site-name

利用可能なパラメータは以下の通りです:

パラメータ

概要

config

使用するレイアウトサービス構成の名前。JSSの場合、通常はjssです。

item

コンテキストサイトのホームアイテムまたはアイテムGUID(ID)に対するアイテムへのパスです。

sc\_lang

回収したいアイテムの言語バージョンです。

sc\_apikey

レイアウトサービスコントローラ(Sitecore.LayoutService.Mvc.Controllers.LayoutServiceController、Sitecore.LayoutService.Mvc)で使用できるように設定された[SSC APIキー](https://doc.sitecore.com/xp/en/developers/102/sitecore-experience-manager/api-keys-for-the-odata-item-service.html)です。クエリ文字列にAPIキーが必要か、sc\_apikey HTTPヘッダーを通じて送信されます。

sc\_site

データを取得するサイト名。レイアウトサービス通話に含まれる分析追跡に必要な情報。

tracking

(オプションで、Sitecore XPのみ。)レイアウトサービスの呼び出しでアナリティクストラッキングを有効/無効にします。デフォルトは trueです。

### 特定のプレースホルダーの出力を得る方法

この操作は、アプリがレイアウトの一部にアクセスする必要がある特別な状況で有用で、処理されるデータ量や送受信の量を最小限に抑えられます。

/sitecore/api/layout/placeholder/config?placeholderName=/main&item=path&sc\_lang=language&sc\_apikey=key&tracking=true|false

この動作は、前述の /render動作と同じパラメータおよび以下の条件を受け入れます。

パラメータ

概要

placeholderName

レンダリングするプレースホルダーの名前。このパラメータの値は、コンテンツエディターのレイアウト詳細から取得できます。 jss 設定で最初から動的プレースホルダーを使用しているため、ここでは動的プレースホルダー形式を使用する必要があります。

### 注意

このアクションを使用する際にtracking=falseを追加し、placeholderアクションの呼び出しがxDBのページ訪問データを破損させないようにしましょう。

## レイアウトサービスの解剖学に関する依頼

レイアウトサービスがリクエスト(例えば /sitecore/api/layout/render/jss?item=/about )を受信すると、サーバー上で以下のプロセスが行われます。

> !注jssはレイアウトサービスの *名前付き構成* を表します。自分の名前付き構成を登録して、アプリケーション固有のレイアウトサービス拡張を作成できます。「 [カスタムレイアウトサービス構成をJSSで使う」](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/using-a-custom-layout-service-configuration-with-jss.html "Using a custom Layout Service configuration with JSS")を参照してください。

1.  MVCコントローラーが応答し、?item=/aboutパラメータを解析します。
    
2.  レイアウトサービスはitemパラメータに基づくアイテム検索を行い、コンテキストサイトの開始項目を考慮します。ロジックは標準的なSitecore URL処理と一致しています。アイテムGUIDも許可されています。
    
3.  アイテムを解決した後、レイアウトサービスはレイアウトおよびレンダリング定義項目のプレースホルダーデータを利用して、mvc.renderPlaceholderパイプラインを用いてオブジェクト構造にレンダリングします。Sitecore MVCパイプラインを使用することで、レイアウトサービスの出力はパーソナライズルールやコンポーネントレベルのコンテンツテストをアイテムのレイアウト定義に反映します。ページレベルのコンテンツテストはレイアウトサービスではサポートされていません。
    
4.  MVCビューをレンダリングする代わりに、カスタムJavaScriptシリアライザーはコンポーネントのデータソース項目を取り出し、それらをJavaScriptオブジェクトにシリアライズします。
    
    > !注レンダリングのシリアル化出力は、Sitecore.LayoutService.ItemRendering.IRenderingContentsResolverの実装を作成し、レンダリングのRendering Contents Resolverフィールドでタイプを指定することでカスタマイズできます。
    
5.  その後、出力はアセンブルされ、JSONとして返されます。
    

## レイアウトサービスデータ

レイアウトサービスは、要求されたSitecoreアイテムに関する以下のJSON形式の構造化データを提供します:

-   項目のIDやテンプレートを含むフィールド値やメタデータ。
-   配置内の親子関係を示すネストされた木構造内のプレースホルダーとそのレンダリング。これによりクライアントのレンダリングロジックが大幅に簡素化されます。
-   レンダリングに関連付けられたシリアライズされたコンテンツ。デフォルトでは、これはレンダリングのデータソース項目です。
-   Sitecoreフィールドをフィールドタイプに基づく構造化JSONにレンダリングし、フィールド値やメタデータ(例えば画像の代替テキスト)を構造化して利用できます。
-   レンダリングに便利なカスタマイズ可能なコンテキストデータ。例えば、現在のサイト、ユーザー、編集モードなどのデータ Sitecore.Context 。

編集モードで呼び出すと、レイアウトサービスにはインライン編集をサポートするデータが含まれます。例えば:

-   インライン編集用のエディターマークアップ付きレンダリングフィールド。
-   レンダリング用の追加のマークアップや、インラインエディターが編集コントロールを挿入できるプレースホルダー。

### Sitecoreフィールドおよびレイアウトサービスフィールドシリアライザー

レイアウトサービスは以下の種類のSitecoreフィールドをシリアライズできます:

-   リッチテキスト
-   画像
-   一般リンク
-   デート / デートタイム
-   チェックボックス
-   リンク(ドロップリンク、ドロップツリー、グループドドロップリンク)
-   マルチリンク(マルチリスト、チェックリスト、ツリーリスト、エクステンおよびそのバリエーション)
-   番号
-   ファイル
-   プレーンテキスト(単行テキスト、複数行テキスト)

その他のフィールドタイプもプレーンテキストとして扱われ、生の値で出力されます。

### レイアウトサービスとSitecoreプレースホルダー

アイテムの完全な構造化レイアウトデータを返すには、レイアウトサービスがレンダリング上のプレースホルダーを把握している必要があります。

これらの露出したプレースホルダーを発見可能にするためには、**レイアウトサービスのプレースホルダー** フィールドを埋める必要があります。

![LayoutService-ExposedPlaceholders10\_.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/hd/19/sitecore-headless-development/images/LayoutService-ExposedPlaceholders10_.png)

> !警告これは、プレースホルダー設定の「許可コントロール」と混同しないでください。プレースホルダーに追加できるレンダリングを定義しています。レイアウトサービスのプレースホルダーフィールドは、フロントエンドレンダリングホスト内で使用するプレースホルダーを定義します。

#### 動的プレースホルダーキー

デフォルトでは、レイアウトサービスはルートのプレースホルダー(通常main)以外のすべてのプレースホルダーが動的プレースホルダーであると仮定し、Sitecoreの組み込み動的プレースホルダーロジックを使ってどのプレースホルダーキーをレンダリングするかを決定します。

## レイアウトサービスとSitecore Experience Platform Analytics(分析サービス)です

レイアウトサービスはSitecore MVCレンダリングエンジン内で実行され、標準的なページビュー、目標、イベント、コンポーネントレベルのパーソナライズ、コンポーネントレベルのコンテンツテストのためのSitecore分析追跡と機能を維持します。ページレベルのコンテンツテストはサポートされていません。

フロントエンドアプリケーションや特定のレイアウトサービスコールを分析で追跡したくない場合は、trackingパラメータをfalseに設定してください。