Salesforce システム概要
R.Design Brand Communityで使用されているSalesforceのシステムアーキテクチャ、共有設定、データモデルの全体像を解説します。
🎯
対象読者: Salesforce管理者、開発者、システムアーキテクト
このドキュメントは、複雑な共有設定の理解、トラブルシューティング、新規ブランドのオンボーディングに必要な情報を提供します。
システムの目的
R.Design Brand Communityは、B2Bマーケットプレイスとして機能するExperience Cloudサイトです。
主要な要件
-
マルチテナント分離
- 各ブランド企業のデータを完全に隔離
- Brand A のユーザーは Brand B のデータを閲覧不可
-
同一ブランド内での共有
- 同じブランドに属する複数のユーザーが、相互にレコードを閲覧・編集可能
- Chatterでの@mentionとコラボレーション機能の活用
-
データ所有権の明確化
- 各レコードの所有者は、実際にそれを作成したブランドユーザー
- 監査証跡の正確性(CreatedBy, LastModifiedByが実際の担当者)
システム構成
利用しているSalesforce機能
| 機能カテゴリ | 使用している機能 |
|---|---|
| Experience Cloud | Brand Community サイト |
| ライセンス | Customer Community, Partner Community |
| オブジェクト | 172個のカスタムオブジェクト(標準オブジェクトを含む) |
| 共有設定 | • Organization-Wide Defaults (Private) • 157個の Sharing Rules • Sharing Set Settings • Portal Role Hierarchy • Apex Managed Sharing(一部) |
| 認証 | Keycloak SSO連携(SAML) |
アーキテクチャの特徴
1. 外部共有モデル: Private
すべての主要オブジェクトで externalSharingModel = Private を採用。
<CustomObject>
<sharingModel>Private</sharingModel>
<externalSharingModel>Private</externalSharingModel>
</CustomObject>理由:
- ブランド間のデータ完全隔離を実現するため
- マルチテナント要件を満たすため
トレードオフ:
- 同一ブランド内での共有に複雑な設定が必要
- Sharing Set Settings、Sharing Rules、カスタムフィールドの組み合わせが必須
2. Community Userがレコード所有者
レコードの所有者(Owner)は、実際にそれを作成したブランドのCommunity Userです。
理由:
- Chatterでの@mentionとリアルタイムコラボレーション
- データ所有権の明確化
- ビジネスプロセスとの整合性
- 将来的なデータ移行の容易性
3. カスタムフィールドによる共有判定
多くのオブジェクトに Owner_Account__c フィールドを追加し、共有判定に使用。
理由:
- Sharing Set Settingsでは、複雑なリレーションシップパスを使用した共有ルールを作成できない
- 明示的にAccount IDを保持することで、シンプルな共有ルールを実現
主要なデータフロー
レコード作成から共有まで
システムの複雑性について
⚠️
技術的な複雑性の認識
本システムは以下の理由により、極めて複雑な構成となっています:
- Customer Community Licenseの制約: マルチテナント + 同一テナント内共有の両立が困難
- 172個のカスタムオブジェクト: 各オブジェクトに個別の共有設定が必要
- 複数の共有メカニズムの組み合わせ: Sharing Rules、Sharing Set Settings、カスタムフィールド、Portal Role Hierarchy
- ビジネス要件優先の設計: ユーザー体験とデータガバナンスを優先し、技術的シンプルさを犠牲
なぜこの複雑さが必要だったのか
この複雑さは、以下のビジネス要件を満たすための必然的なトレードオフです:
| 優先したもの | 犠牲にしたもの |
|---|---|
| ✅ ビジネスロジックの正確性 | ❌ 技術的シンプルさ |
| ✅ データ所有権の明確性 | ❌ メンテナンスの容易性 |
| ✅ ユーザー体験の自然さ | ❌ トラブルシューティングの簡単さ |
| ✅ 将来的な拡張性 | ❌ 初期設定の簡便性 |
ドキュメント構成
本セクションは以下のページで構成されています:
- データモデル - オブジェクト間の関係性とカスタムフィールド
- 共有設定アーキテクチャ - OWD、Sharing Rules、Sharing Set Settingsの全体像
- 共有メカニズム - 具体的な共有ルールの実装方法
- ライセンスとプロファイル - ライセンスタイプ、プロファイル、Portal Role
- 設計判断の理由 - なぜこの設計を選択したのか
- トラブルシューティング - よくある問題と診断方法
関連ドキュメント
認証連携
- Keycloak認証システム - SSO連携の詳細
データモデル
- データモデル概要 - 3Dアプリケーション側のデータモデル
権限システム
- メンバー・プラン体系 - 3Dアプリケーション側の権限管理
更新履歴
- 2026年1月21日: 初版作成