---
title: "出版プロセス"
slug: "the-publishing-process"
abstract: "SitecoreAIの公開は、スマートまたは増分的な公開のためのアイテムを特定します。ジョブが公開終了すると、Edgeのウェブフックが起動しログが作成されます。公開時間にはキャッシュのクリアが含まれます。"
---
# 出版プロセス

Experience Edgeへの公開は、[SitecoreAI](https://doc.sitecore.com/sai/en/users/sitecoreai/sitecoreai.html)で公開操作をトリガーしたときに始まります。公開操作を開始すると、Sitecoreが自動的にこのプロセスを処理し、スキーマの作成とEdgeへの公開も含まれます。 [Sitecoreの公開パイプライン](https://doc.sitecore.com/sai/ja/developers/sitecoreai/experience-edge/publishing-to-experience-edge.html "Publishing to Experience Edge") は公開すべき項目を特定し、それを使って初期の公開マニフェストを作成します。

> !注スキーマはアイテムの公開制限を考慮して自動的に作成され、変更はできません。
> 
> マニフェストには以下のパス内の項目のみが含まれます:
> 
> -   /sitecore/content
>     
> -   /sitecore/media library
>     
> -   /sitecore/templates
>     
> -   sitecore/system/dictionary
>     
> 
> サイトを公開する場合、コンテンツとの関係から、どの経路の他の項目も含まれることがあります。出版 [制限](https://doc.sitecore.com/sai/en/users/sitecoreai/set-up-publishing-restrictions-for-an-item.html)により、機密性の高い記事が誤って公開されないように守ってください。

## 伐採

公開前に、トラブルシューティングのための詳細なログ作成プロセスを設定し、どの項目が公開されたのか、なぜ公開されたのかを理解することができます。ログのレベルは [環境変数](https://doc.sitecore.com/sai/ja/developers/sitecoreai/deploying-sitecoreai/deploy-app/manage-an-environment/environment-variables.html "Environment variables") PUBLISHING\_LOG\_LEVEL\_VALUEを使って指定できます。

公開されるすべてのアイテムバージョンのログを有効にするには、edgePublishItemパイプラインのSitecore.ExperienceEdge.Connector.Client.Pipelines.EdgePublishItem.UpdateStatisticsプロセッサでtraceToLog設定を使った[パッチファイルを作成します](https://doc.sitecore.com/sai/ja/developers/sitecoreai/development/use-a-patch-file-to-customize-the-sitecore-configuration.html)。Edgeに公開する際、すべての公開アイテムバージョンがこれらのログに表示されるわけではありません。

<edgePublishItem patch:source="ExperienceEdgeConnector.config">
 ...
 <processor type="Sitecore.ExperienceEdge.Connector.Client.Pipelines.EdgePublishItem.UpdateStatistics, Sitecore.ExperienceEdge.Connector.Client" method="Process" resolve="true">
 <traceToLog>false</traceToLog>
 </processor>
		</edgePublishItem>

traceToLogがtrueに設定されている場合、公開情報はログファイルに記録され、利用可能です。Deployアプリでログファイルにアクセスできます。

ログレコードの例:

6584 11:19:00 INFO ##Publish Item: Name=A content item, Uri=sitecore://master/{EF687BD4-3C0D-4121-8B63-C7B602DF3213}?lang=fr-FR&ver=1, Operation=Updated, ChildAction=Skip, Explanation=Version 'fr-FR\_1' was published.

以下は利用可能なログの詳細です:

-   Operation - 出版候補(ターゲットアイテム)に対して行われる公開アクション。可能な値は skip、 update、 create、または deleteです。
-   ChildAction - 子項目に対する公開措置。可能な値は skip、 allow、または forceです。
-   Explanation - 出版状況の説明、例えば記事が出版されたかどうかや詳細。

## Experience Edgeへの公開

Experience Edgeとの通信は、配信リモートプロシージャコール(RPC)エンドポイントを通じて行われます。エンドポイントへのすべての通話はベアラートークンを使用して安全かつ承認されています。モジュールはトークンを自動的に作成・更新します。

公開開始時、Sitecoreは以下の通りに公開プロセスを実行します。

1.  JobStartイベントはExperience Edgeに公開されます。
2.  Sitecore GraphQLスキーマが生成され、スキーマエンティティがExperience Edgeに公開されます。
3.  Edgeは、公開予定のアイテムと既存のものを比較するために呼ばれます。
4.  公開ジョブがスマートまたはインクリメンタルの場合、キュー内の各項目がレビューされ、公開が必要なすべての依存項目を計算されます:
    -   レンダリングデータソース - 初期マニフェストにあるページでレンダリングデータソースとして使われるアイテムが含まれていて、その公開モードがスナップショット公開の場合、そのページはキューに追加されます。
    -   テンプレート - 初期キューにテンプレート項目が含まれている場合、そのテンプレートに基づくすべての項目(直接または継承を通じて)がキューに追加されます。新たに追加された項目はページ依存関係もチェックされます。
    -   テンプレートフィールド - 初期キューにテンプレートフィールドが含まれている場合、所有者テンプレートもテンプレートと同じように拡張されます。
    -   言語フォールバック - [言語フォールバック](https://doc.sitecore.com/sai/ja/developers/sitecoreai/content-modeling-and-presentation/working-with-languages/language-fallback.html "Language fallback") はすべてのキュー項目についてレビューされ、キューにソース言語のバージョンが含まれている場合、フォールバック言語のバージョンが自動的にキューに追加されます。この機能はEdgeではデフォルトで無効にされており、必要に応じて有効にすることができます。
    -   コンテンツサイトのルート項目 - 初期キューにコンテンツサイトのルート項目が含まれている場合、サイト情報は自動的にキューに含まれ、Edge上で SiteInfo エンティティとして利用可能です。
5.  キュー内のすべてのアイテム、テンプレート、テンプレートフィールドは、Experience Edge固有の静的フォーマットエンティティにマッピングされ、公開されています。
    -   キューにページ(レイアウトのあるアイテム)が含まれている場合、レイアウトデータは計算され、Experience Edgeに公開されます。
    -   メディアブロブはExperience Edgeにアップロードされます。
    -   メディアメタデータはExperience Edge固有の静的フォーマットエンティティにマッピングされ、公開されます。
6.  JobEndイベントはExperience Edgeに公開されています。

> !注Experience Edgeを初めて使うときは、サイト全体の再公開を行います。

## Experience Edge上の処理エンティティ

公開されたすべてのエンティティがExperience Edgeにアップロードされた後、Sitecoreは公開を最終決定するために以下の追加操作を実行します。

1.  Edgeのパブリッシング – Edgeでパブリッシングを最終決定するために様々なアクションが行われます。
2.  エッジキャッシュクリア – すべてのキャッシュがクリアされ、新たに公開されたコンテンツが利用可能になるようにします。
3.  エッジウェブフック – もしウェブ [フ](https://doc.sitecore.com/sai/ja/developers/sitecoreai/experience-edge/webhook-objects.html "Webhook objects") ックが設定されている場合、公開作業の最後にトリガーされ、下流システムが新たに公開されたコンテンツにアクセスできるようにします。

公開ジョブが完了した後、Sitecoreはさらに30秒待って公開操作がないか確認し、その後Edgeテナントのキャッシュをクリアし、JobEndメッセージの処理を終えます。キャッシュの完全削除には最大1分かかることがあり、完全なキャッシュのリフレッシュは30〜90秒で完了します。

## インデックス作成

公開ジョブは常にインデックスジョブの後ろにキューイングします。それ以外の場合、インデックスに対して検索クエリを使った統合GraphQLのコンポーネントは、公開結果で空として表示されます。インデックスの再構築まで公開ジョブを待つ必要があるため、公開時間が長くなることがあります。

## PowerShellスクリプトを使って公開操作をトリガーする

[Sitecore PowerShell拡張機能モジュール](https://doc.sitecore.com/sai/ja/developers/sitecoreai/content-modeling-and-presentation/the-sitecore-powershell-extensions-script-library.html "The Sitecore PowerShell extensions script library")を使って、公開操作をトリガーするPowerShellスクリプトを作成できます。SitecoreAIは、1回のPowerShell操作で処理できるアイテムの上限を定めていません。コンテンツサイズ、言語数やバージョン数、カスタムパイプライン、利用可能なメモリによっては、System.OutOfMemoryExceptionエラーのリスクがあります。

メモリの枯渇やサービスの不安定さを防ぐために、以下のガイドラインに従ってください:

-   大規模な作成、更新、公開作業は必ず小規模に処理してください。実際の出発点は、重作業の場合1バッチあたり200〜500点です。
-   コンテンツツリー全体を読み込みたりループしたり、非常に大きなアイテムリストをメモリに保存するスクリプトは避けてください。
-   大きなアイテムコレクションを変数に保存しないでください。アイテムをストリームとして処理し、バッチ間で参照を解放します。
-   重いPowerShellジョブは営業時間外にスケジュールし、他のリソース集約型のタスクと並行して実行するのは避けましょう。
-   まずは非本番環境で小規模にテストし、メモリ使用状況を監視しながらバッチサイズを徐々に増やしましょう。
-   長時間実行するジョブを単一の長期間スクリプトを実行するのではなく、複数の実行に分割する。

大規模で無限のPowerShell操作はSitecoreAIではサポートされておらず、サービスの再起動や一時的な停止を引き起こす可能性があります。

## 出版結果と失敗の可能性

出版の仕事は、公開中に失敗したエンティティをExperience Edgeに報告することがあります。これらの失敗は多くの場合、エンティティレベルで発生し、必ずしもコンテンツ項目が公開されなかったことを示すわけではありません。失敗した事業体が報告されていても、出版は成功裏に完了することが可能です。

一般的な出版失敗シナリオとその影響評価方法の詳細については、「 [出版失敗と診断](https://doc.sitecore.com/sai/ja/developers/sitecoreai/experience-edge/publishing-to-experience-edge/publishing-failures-and-diagnostics.html "Publishing failures and diagnostics")」をご覧ください。