Skip to main content
Sitecore Documentation
  • Learn
  • Downloads
  • Changelog
  • Roadmap
PersonalizeCloud Portal
Sitecore Personalize
        • 意思決定モデルの作成
        • Sitecore Personalizeでの決定モデルコンポーネントの使用
        • 意思決定モデルを作成するためのベスト プラクティス
        • 意思決定モデルのパフォーマンス・ガイドライン
        • デシジョンモデルの削除
    • Sitecore Personalizeでのデータ・システムの管理
  • パーソナライゼーションでのクライアントサイドJavaScriptの使用
  • 用語集
  1. Sitecore Personalizeでの意思決定モデルの管理
  1. Sitecore Personalize
  2. Sitecore Personalizeでの意思決定の概要
  3. Sitecore Personalizeでの意思決定モデルの管理
  4. 意思決定モデルを作成するためのベスト プラクティス

意思決定モデルを作成するためのベスト プラクティス

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

意思決定モデルで最適な結果を得るには、これらのベストプラクティスをお勧めします。これらのガイドラインは、意思決定モデルを作成し、さまざまなコンポーネントをバリアントに統合する場合に重要です。

レイアウトの作成

意思決定キャンバスで意思決定モデル・バリアントの構造を作成する場合、意思決定モデル・コンポーネント をキャンバスの下部から開始し、上部で終了するように作成することが重要です。意思決定モデルのバリアントが下す最終的な意思決定は、最上位に配置されます。最適なパフォーマンスを確保するための最終的な決定は1つだけです。意思決定モデル バリアントのレイアウトに一貫性を持たせることは、ユーザーが意思決定キャンバスの上部を見るだけで包括的な意思決定をすぐに特定できるため、重要でもあります。

次の図は、全体的な決定がDetermine discountであるサンプル決定モデル バリアントを示しています。これは、決定キャンバスの上部に配置されています。

Determine discount decision model variant.

コメントの追加

ベストプラクティスは、保存するたびに決定モデルバリアントにコメントを追加することです。これを行うには、右上隅にあるSaveの横にある矢印をクリックし、Save with commentを選択します。チームメンバーと共同作業する場合、コメントは、行われた各リビジョンについてよりコンテキストと明確さを提供できます。

ディシジョンモデルバリアントのリビジョンと関連するコメントのリストを表示するには、Revisionsをクリックします。これにより、特にリビジョンのリストが長くなるにつれて、変更を追跡してレビューすることができます。

命名規則の使用

意思決定モデルバリアントの名前に一貫性を持たせ、簡単に識別できるように、次の命名規則をお勧めします。

  • バージョン番号付け - 標準のバージョン番号付けを使用して、ライブ前、ライブ、テストバージョンを区別します。開発中またはライブ前の段階にあるバージョンの場合は、0.Xバージョン番号を使用します。たとえば、0.1、0.2、0.3などを使用します。ライブ バージョンまたはテスト バージョンの場合は、1.0、1.1、1.2などの1.Xバージョン番号を使用します。

  • 名前にスペースを入れない - 自動生成された参照の問題を回避するために、デシジョン・モデル・ノード名がスペースなしで作成されていることを確認してください。アンダースコアまたはハイフンを使用して、読みやすさを維持します。たとえば、decision node name, を使用する代わりに、decisionNodeNameまたはdecision_node_nameを使用します。

JavaScriptの早期復帰

プログラム可能なものなどの意思決定モデルコンポーネントでJavaScriptを使用する場合、関数から早期に戻るとは、目的の結果が得られたらすぐに関数の実行を停止することを意味します。これにより、不要な計算が防止され、時間とリソースが節約されます。

たとえば、ゲストのセッションで、最新のページビューなど、最近のセッションに含まれる可能性が高いデータを検索する場合、ページが見つかったらすぐに機能を終了することをお勧めします。

function getLastViewedPage() {
    for (var i = 0; i < guest.sessions.length; i++) {
        var currentSession = guest.sessions[i];
        for (var j = 0; j < currentSession.events.length; j++) {
            var currentEvent = currentSession.events[j];
            if (currentEvent.type === "VIEW"
            && currentEvent.arbitraryData
            && currentEvent.arbitraryData.page )
            {
                return currentEvent.arbitraryData.page;
            }
        }
    }
}

ページを早期に戻すことで、残りのイベントやセッションを不必要に反復処理することを回避できます。これにより、特に大規模な配列で作業する場合に時間を節約できます。

同じデータに対するループの最小化

JavaScriptを使用して意思決定モデル内の同じデータセットから複数のデータポイントを取得する必要がある場合は、複数回の反復によるパフォーマンスの低下を避けるために、これを1回のパスで取得することをお勧めします。

次の関数は、セッションの1回の反復でさまざまなカスタム値を取得し、データへのアクセス回数を減らすことで効率を向上させる方法を示しています。

function getLastViewedPage() {
    var customValues = {};
    for (var i = 0; i < guest.sessions.length; i++) {
        var currentSession = guest.sessions[i];
        for (var j = 0; j < currentSession.events.length; j++) {
            var currentEvent = currentSession.events[j];
            if (currentEvent.type === "CUSTOM_EVENT_1")
            {
                customValues.firstValue = currentEvent.customValue;
            }
            else if (currentEvent.type === "CUSTOM_EVENT_2")
            {
                customValues.secondValue = currentEvent.customValue;
            }
            else if (currentEvent.type === "CUSTOM_EVENT_3")
            {
                customValues.thirdValue = currentEvent.customValue;
            }
        }
    }
    return customValues;
}

エンティティオブジェクトの使用

トリガーされたエクスペリエンスの意思決定モデルを作成する場合、多くの場合、エクスペリエンスをトリガーしたオブジェクトを特定して操作する必要があります。これは、ゲスト、イベント、セッション、または注文である可能性があります。このオブジェクトは、ゲスト コンテキストの最上位にあるentityオブジェクトに格納されます。

entityオブジェクトには最上位の属性のみが含まれ、ネストされたすべての値 (セッション・イベントなど) は含まれません。元のオブジェクトを完全に取得し、それを意思決定モデルで使用するには、オブジェクト参照を使用してゲスト コンテキストを検索する必要があります。

次に示す関数は、entityオブジェクトに格納されている参照を使用して、エクスペリエンスをトリガーしたセッション オブジェクトを取得する方法を示しています。

function getTriggerSession(){
  var sessionRef;
  if (entity && entity.ref !== 'undefined') {
    sessionRef = entity.ref;
  }
  var triggerSession;
  for (var i = 0; i < guest.sessions.length; i++) {
    var session = guest.sessions[i];
    if (session.ref === sessionRef) {
      triggerSession = session;
      break;
    }
  }
  return triggerSession;
}

対話型エクスペリエンス要求でのカスタム値の取得

対話型エクスペリエンスでは、多くの場合、動的な意思決定が必要であり、多くの場合、これらのエクスペリエンスへの要求と共にカスタム値を渡す必要があります。これらの値は、ユーザー入力に基づいてインタラクションをパーソナライズするために重要です。これらの値にアクセスするには、request変数を使用できます。慣例により、カスタム値はrequest.params.

request.paramsからcustomValueを取得する関数を次に示します。

function getRequestCustomValue(){
  if (request && request.params && request.params.customValue) {
    return request.params.customValue;
  }
}
この記事を改善するための提案がある場合は、 お知らせください!

Documentation Assistant

This assistant uses AI to generate responses based on Sitecore documentation. While it has access to official sources, answers may be incomplete or inaccurate and should not be considered official advice or support.
Powered by
k
kapa.ai
Protected by reCAPTCHA

© Copyright 2026, Sitecore A/S or a Sitecore affiliated company.
All rights reserved.

Privacy policySitecore Trust CenterTerms of use