この記事はバージョン Winter ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。
LWR サイトは、その高速なパフォーマンスと柔軟性から、今や Salesforce のコミュニティ・ポータル構築の主流となっています。しかし、標準機能だけでは「もう少し踏み込んだ出し分けをしたい」「特定の条件でコンポーネントの表示を制御したい」といった要望に完璧に応えるのは難しいと感じる場面も多いのではないでしょうか。
例えば、
- 「特定の URL パラメータでアクセスしてきた訪問者にだけ、特別なバナーを表示したい」
- 「ログインユーザーの取引先責任者レコードのカスタム項目を見て、コンテンツを出し分けたい」
- 「ブラウザの Cookie 値によってレコメンドを制御したい」
こうした高度なパーソナライゼーション(個別最適化)を実現するために、今回は Salesforce Labs 製の強力なオープンソースコンポーネント「Personalize Anything for Experience Cloud (LWR)」を徹底解説します。
Personalize Anything とは?
「Personalize Anything」は、配置したコンポーネント領域全体に、柔軟な表示・非表示のロジックを組み込むことができるユーティリティコンポーネントです。
標準の「オーディエンス」設定は強力ですが、設定が組織レベルで複雑になりがちです。一方でこのコンポーネントは、ページ上の単一のブロック単位で、直感的かつ多種多様な条件を設定できるのが最大の特長です。
コアとなる仕組み:2つの領域
このコンポーネントをページにドラッグ&ドロップすると、内部に以下の2つのコンポーネント領域(リージョン)が生成されます。
- Personalized Region(パーソナライズ領域)
- あなたが設定した表示条件が
True(真)になった場合に、この領域内のコンポーネントが表示されます。
- あなたが設定した表示条件が
- Default Region(デフォルト領域)
- 表示条件が
False(偽)になった場合(条件に合致しなかった場合)に、この領域内のコンポーネントが表示されます。
- 表示条件が
利用方法はシンプルです。まずこのコンポーネントを配置し、その内部に他の標準コンポーネントやカスタムLWCを組み込んで、表示条件を設定するだけです。

最重要注意事項:セキュリティとアクセス制御について
ドキュメントでも強調されていますが、本コンポーネントはあくまで「ユーザー体験(UX)向上のためのコンテンツ表示制御」を目的としています。
機密データや特定の情報へのアクセス権限そのものを制御するためには、必ず Salesforce 標準のプロファイル、権限セット、共有設定を利用してください。このコンポーネントの表示ロジックは、セキュリティバリアとして機能するよう設計されていません。
インストール方法
はじめに、LWRサイトの構築におすすめのAppExchangeコンポーネントをインストールしましょう。
インストールしたい組織にログインした状態でURLの末尾に以下を追加するとインストール画面を開くことができます。/packagingSetupUI/ipLanding.app?apvId=04t8X000000xJ5FQAU&src=U
例: https://xxx.lightning.force.com/packagingSetupUI/ipLanding.app?apvId=04t8X000000xJ5FQAU&src=U
「管理者のみインストール」を選択して完了してください。
- インストールするアプリ
- 組織を選択
- チェックを入れてインストール
- 管理者のみでOK




Personalize Anything の強力な表示条件(Criteria)
このコンポーネントの真価は、その「条件(Source Values)」の多様性にあります。
標準の {!fieldName} といったLWR式に加え、@ を冠したカスタムな評価元を指定できます。
| 評価元(Source Value Type) | 記述例 | 取得できる情報 |
| LWR Expressions | {!recordId} | ページのコンテキスト情報(レコードID、オブジェクト名など) |
| ユーザーレコード項目 | @User.Title | 認証済みユーザーのUserオブジェクトの任意の項目(API参照名) |
| 取引先責任者項目 | @Contact.Level__c | 認証済みユーザーに紐づくContactオブジェクトの任意の項目 |
| 取引先項目 | @Account.Industry | 認証済みユーザーに紐づくAccountオブジェクトの任意の項目 |
| URL情報 | @currentURL | 現在のURL全体(パラメータ含む) |
| ブラウザ言語 | @language | ユーザーのブラウザの言語設定(例: ja-JP) |
| デバイス情報 | Form Factor | ブラウザのウィンドウ幅(Desktop, Tablet, Mobile) |
| Cookie値 | @cookie.name | ブラウザに保存されている特定のCookieの値 |
| カスタムイベント | @customEventIdentifier | 独自のLWCから渡された動的なデータ(開発者向け) |

ハマりやすいポイント:User/Contact/Account項目の利用
@User.Title や @Contact.Level__c のように、ユーザー情報や関連オブジェクトの項目を条件に使う場合、セキュリティ上の理由から、参照を許可するフィールドをカスタムメタデータタイプで事前に設定する必要があります。
- 設定場所: [設定] > [カスタムメタデータ型] > [Allow Fields Setting]
- 作業: Allowed Fields に、利用したいフィールドの API 参照名を許可リストに追加します(カンマ区切り)。これを怠ると、コンポーネント上でエラーが発生します。
- エラーになる様子
- Allowed Fieldsを設定
- エラー解消



具体的な活用ユースケースと設定イメージ
最も利用頻度の高い活用例を3つご紹介します。
Case 1: URLパラメータによるコンテンツの出し分け
キャンペーンや広告からの流入ユーザーに対して、特別なメッセージを表示したい場合に有効です。
Case 1: URLパラメータによるコンテンツの出し分け
キャンペーンや広告からの流入ユーザーに対して、特別なメッセージを表示したい場合に有効です。
| 項目 | 設定例 | 説明 |
| Criterion Source | @currentURL | 現在のURLを評価元とする |
| Comparison Operator | Contains | 評価元が目標値を含む |
| Target Value | utm_source=spring_campaign | 特定のキャンペーンパラメータ |
| Personalized Region | 「スプリングキャンペーン特別オファー実施中!」のバナー | |
| Default Region | 通常のコンテンツ |
Case 2: デバイス(フォームファクタ)に応じた最適な UI
LWR のレスポンシブデザインだけでは対応しきれない複雑な出し分け(例:PCでは複雑なデータテーブル、モバイルではシンプルなリスト表示)に利用します。
| 項目 | 設定例 | 説明 |
| Criterion Source | Form Factor | デバイスのウィンドウ幅を評価元とする |
| Comparison Operator | Equals | 評価元が目標値と一致する |
| Target Value | Desktop-only | デスクトップの幅(1024px以上) |
| Personalized Region | 大量のデータを表示するカスタムデータグリッド LWC | |
| Default Region | モバイルユーザー向けの簡略化されたカードリスト |
Case 3: ログインユーザーの属性によるコンテンツ出し分け
社内ポータルや顧客ポータルで、ユーザーの役割や契約レベルに応じた情報を表示します。
| 項目 | 設定例 | 説明 |
| Criterion Source | @User.UserType | ユーザー種別項目を評価元とする |
| Comparison Operator | Equals | 評価元が目標値と一致する |
| Target Value | Standard | 標準ユーザー(顧客ポータルでよくあるタイプ) |
| Personalized Region | 「よくあるご質問」へのリンク集 | |
| Default Region | 「サポートに問い合わせる」ボタン(Standard以外向け) |
【開発者向け】カスタムデータプロバイダの応用
@customEventIdentifier を利用することで、Apex の実行結果や外部APIの応答といった動的なデータをパーソナライズの条件に組み込めます。
仕組みの概要
- Personalize Anything が、条件判定時に特定のイベント(
personalizeAnything:dataRequest)を発火させます。 - サイト内のカスタムLWC(Custom Data Provider)がそのイベントをリッスン(傍受)します。
- LWC は Apex や JavaScript で必要なデータ(例:特定の権限セットを持っているか、外部APIから最新の在庫情報を取得など)を取得します。
- LWC は、取得したデータを含めて新しいイベント(
personalizeAnything:dataResponse)を返し、Personalize Anything に判定結果を渡します。
これにより、Salesforce 標準では到達できない、きわめて複雑なビジネスロジックに基づいたパーソナライズがノーコード/ローコードで実現可能になります。
まとめ
「Personalize Anything for Experience Cloud (LWR)」は、LWR サイト構築において、柔軟な UX 設計を求めるアドミニストレーターと開発者にとって必須級のツールです。
標準機能の表示制御がサイト全体の訪問者レベルでマクロな出し分けを行うのに対し、このコンポーネントはページ上の要素レベルでミクロな、詳細な条件に基づくパーソナライズを可能にします。
ぜひ、皆さんのLWRサイトに導入し、よりコンバージョン率の高い、ユーザーフレンドリーなサイト構築に役立ててください。



読者の声