開発システムアーキテクチャSalesforce システムSalesforce概要

Salesforce システム概要

R.Design Brand Communityで使用されているSalesforceのシステムアーキテクチャ、共有設定、データモデルの全体像を解説します。

🎯

対象読者: Salesforce管理者、開発者、システムアーキテクト

このドキュメントは、複雑な共有設定の理解、トラブルシューティング、新規ブランドのオンボーディングに必要な情報を提供します。


システムの目的

R.Design Brand Communityは、B2Bマーケットプレイスとして機能するExperience Cloudサイトです。

主要な要件

  1. マルチテナント分離

    • 各ブランド企業のデータを完全に隔離
    • Brand A のユーザーは Brand B のデータを閲覧不可
  2. 同一ブランド内での共有

    • 同じブランドに属する複数のユーザーが、相互にレコードを閲覧・編集可能
    • Chatterでの@mentionとコラボレーション機能の活用
  3. データ所有権の明確化

    • 各レコードの所有者は、実際にそれを作成したブランドユーザー
    • 監査証跡の正確性(CreatedBy, LastModifiedByが実際の担当者)

システム構成

利用しているSalesforce機能

機能カテゴリ使用している機能
Experience CloudBrand 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を保持することで、シンプルな共有ルールを実現

主要なデータフロー

レコード作成から共有まで


システムの複雑性について

⚠️

技術的な複雑性の認識

本システムは以下の理由により、極めて複雑な構成となっています:

  1. Customer Community Licenseの制約: マルチテナント + 同一テナント内共有の両立が困難
  2. 172個のカスタムオブジェクト: 各オブジェクトに個別の共有設定が必要
  3. 複数の共有メカニズムの組み合わせ: Sharing Rules、Sharing Set Settings、カスタムフィールド、Portal Role Hierarchy
  4. ビジネス要件優先の設計: ユーザー体験とデータガバナンスを優先し、技術的シンプルさを犠牲

なぜこの複雑さが必要だったのか

この複雑さは、以下のビジネス要件を満たすための必然的なトレードオフです:

優先したもの犠牲にしたもの
✅ ビジネスロジックの正確性❌ 技術的シンプルさ
✅ データ所有権の明確性❌ メンテナンスの容易性
✅ ユーザー体験の自然さ❌ トラブルシューティングの簡単さ
✅ 将来的な拡張性❌ 初期設定の簡便性

ドキュメント構成

本セクションは以下のページで構成されています:

  1. データモデル - オブジェクト間の関係性とカスタムフィールド
  2. 共有設定アーキテクチャ - OWD、Sharing Rules、Sharing Set Settingsの全体像
  3. 共有メカニズム - 具体的な共有ルールの実装方法
  4. ライセンスとプロファイル - ライセンスタイプ、プロファイル、Portal Role
  5. 設計判断の理由 - なぜこの設計を選択したのか
  6. トラブルシューティング - よくある問題と診断方法

関連ドキュメント

認証連携

データモデル

権限システム


更新履歴

  • 2026年1月21日: 初版作成