Salesforceレコード共有設定について、わかりやすく解説してみた

こんにちは
本橋孝昭です



今回は
・レコード共有設定
について解説します

今回の内容はとても長いので動画でも公開しています
ぜひご確認ください

https://www.youtube.com/watch?v=yL6OWYYbY6w

<iframe width="560" height="315" src="https://www.youtube.com/embed/yL6OWYYbY6w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



## レコード共有設定とは
ざっくりいうと「特定のレコードをどのユーザに見せる？どこまで許可する？（参照まで？編集まで？）」という設定です

画像でいえばみんな見たことあるはず？のここの設定です！
（いつもの三角形の図ですね）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/f10e8492-f833-4511-0399-3d9213fbfb51.png)


画像はこちらから引用
https://successjp.salesforce.com/article/NAI-000106


ここはSalesforce初学者？についてはとてもつまづきやすい部分であると私は勝手に思っているのでなるべく分かりやすく解説しようと思います
（といってもわかりにくかったらごめんなさい。コメントお待ちしてます）
（※そして今回の記事は、わかりやすく書こうとした結果5000文字超えました笑）



なぜ難しいかというと、レコード共有設定では前提として

・オブジェクト
・レコード
・項目

・プロファイル（権限セット）
を理解する必要があるからです

「オブジェクト？なんだっけ？プロファイル？」って思った人。大丈夫です。
まずは↓の前提を確認してください


## 前提1 オブジェクト　レコード　項目について思い出そう

さて、レコード共有とは何か　についてですが、今回はそもそも
・オブジェクト
・レコード
・項目
という言葉があっちこっち出てきてこの言葉の意味がわからないととても厳しいです

上記言葉、ちょっとでも「これってなんだっけ？」と思ったらまずはこちらをCheck！

https://qiita.com/Takaa/items/fa7db2456889c3ce76c1

ざっくりいうと
・オブジェクト＝エクセルでいうタブごとに管理してるシート
・レコード＝エクセルでいう行のこと
・項目＝エクセルでいう列のこと

です。

## 前提2 プロファイル（権限セット）について思い出そう

次に大事な考えとしては
 
・プロファイル（権限セット）
の考えです

もしも「プロファイルってなんだっけ？」とすこしでも思ったらこちらをＣｈｅｃｋ！

https://qiita.com/Takaa/items/10071d4eee1319a2b9f5

さきほど、私はSalesforceのオブジェクトやレコード、項目をエクセルで例えましたが、
プロファイルや権限セットはそのオブジェクトや項目を見たり編集出来たりする権限だと思ってください

ざっくりいうとプロファイルと権限セットの権限がそのユーザがオブジェクトでできる権限です（細かい話はいくらでもできますしこの表現はなんとなく適切ではない気がしますが、とりあえず今は当初の目標「レコード共有設定」について理解するためこのように理解しましょう）

## プロファイル（権限セット）とレコード共有設定　の考え方

今後話をしていくうえで
・オブジェクト
・レコード
・項目
についての考えが複雑に絡んできます
そして今回メインで話したい部分は
・レコードには「非公開」「公開（参照のみ）」「公開（参照・編集）」
という主に３タイプがあります

さらに言えば
・オブジェクト権限は参照可能のみ（編集不可）だけどレコードでは編集可能、しかし項目は参照可能のみ（編集不可）
のようなややこしい話が出てきます

こういうときの考え方として
・オブジェクト権限、レコード権限、項目レベルセキュリティの権限の順に考えよう
としてください


さて、以上のことから、正直文面だけでは何を言ってるかわかりにくいはずです
そして、Salesforceの画面を見せても、もっとわからないことはわからなくなると思います
なので、まずはこのようなイメージを持っていただければと思います

![t1オブジェクト権限.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/07cc3ed2-74ed-118a-44a2-578382c18781.png)

↑　図１　レコードの共有設定を考えるにはプロファイル（権限セット）の権限（赤の縦軸）とレコードの共有設定（緑の横軸）の考えが必要


![t2-権限.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/92fcb97e-0ee8-fd99-f130-bfb13f012891.png)

↑図２　まずはオブジェクト権限を考え、次にレコード共有設定を考え、その後項目レベルセキュリティを考えよ　の図




さて、前提が決まったところでさっそくレコード設定について考えます。
その前に、そもそもSalesforceではレコード共有設定について考えなくてもいいパターンがいくつかあります
まずは話をややこしくしないため「Salesforceレコード共有設定を考えなくてもいいパターン」をいくつか説明し、そのあと「どのような場面でSalesforceレコード共有設定が必要か？」について考えていきます


分かりやすくするため、今から以下のような会社があるとして、このSalesforce環境は
・レコード共有設定を設定するの？
・レコード共有設定を設定しないの？
について解説します

以下、いくつか同じような画像が表示されますが、この画像は以下の「会社設定」を基に構築されたSalesforce環境だとお考え下さい

「会社設定」
・これからの話は株式会社TAKAAKIのSalesforce環境の設定です
・株式会社TAKAAKIは採用管理の求人情報をSalesforce環境で管理したい
・株式会社TAKAAKIのSalesforceシステム管理者はSalesforce環境で「採用管理」というカスタムオブジェクトを作成。その採用管理オブジェクトには「希望年収」「住所」などの項目を作成した
・さあ、Salesforceシステム管理者どのようにプロファイルやレコード共有をするべきか？みんなで考えよう！


## Salesforceレコード共有設定を考えなくてもいいパターン１　全ユーザが採用オブジェクトのレコードをすべて「参照・編集」してもOKだよ　というパターン

まずはレコード共有設定について考えなくていいパターン１　として

・全ユーザが特定のオブジェクトのレコードを「参照・編集」してもOKだよ

という状態です
今回の株式会社TAKAAKIでいうと
・採用管理オブジェクトに記載されている採用者データは誰が見てもいいし編集してもしてもいいぞ　という状態です

この場合
・レコード共有設定を設定しなくてOK（レコードの共有設定は「公開（参照・編集）」です）

です

図にするとこのようになります

![2023-07-02 20_39_29-編集権限20230702-1 - PowerPoint.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/ce875f01-dd9f-e289-7576-53b58a3f8ee2.png)
↑この場合、なんとなくレコード共有設定も不要だな　と思ったはずです
では、次のパターンです


## Salesforceレコード共有設定を考えなくてもいいパターン２　あるユーザが採用オブジェクトのレコードをすべて「参照」のみOKだよ　というパターン

さあ、株式会社TAKAAKIは順調に社員も増えてきて、よく考えれば「採用情報はみんな見えてもいいけど、特定の人だけ編集させたいな」ということにやっと気づきました

この場合、レコードの共有設定はどのようになるでしょうか

この場合も
・レコード共有設定を設定しなくてOK（レコードの共有設定は「公開（参照・編集）」です）

そして、採用オブジェクト閲覧のみのユーザには新しくプロファイルを作成して参照のみのプロファイルを付与しましょう

![t3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/4a376d61-4d81-0600-7714-cfac7a0a08f3.png)
↑このように参照のみなら参照のみのプロファイルを割り当てれば大丈夫です


## Salesforceレコード共有設定を考えなくてもいいパターン３　あるユーザが採用オブジェクトのレコードをすべて「参照」のみで閲覧可能。しかし「希望年収」項目は参照不可　というパターン


さあ、従業員数が拡大すると、株式会社TAKAAKIの社長は考えました
「いままで採用データを参照のみか編集可能にユーザを分けていたが、そもそも閲覧のみのユーザにも希望年収項目とか見せるのはやばいんじゃないの？」となりました

この場合、レコードの共有設定はどのようになるでしょうか

この場合も
・レコード共有設定を設定しなくてOK（レコードの共有設定は「公開（参照・編集）」です）

そして、採用オブジェクト閲覧のみ＆希望年収項目は非公開にしたいユーザには新しくプロファイルを作成して
・採用オブジェクトのプロファイル権限は参照のみ
・採用オブジェクトの希望年収項目は非公開
のプロファイルを付与しましょう

![t4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/cb458373-4106-4c02-017c-a5ec0b9fec7a.png)

さあ、みなさんいかがでしょうか？
さきほどのパターン２の
・特定のユーザにすべてのレコードを編集させたくない（すべてのレコードを参照のみにしたい）
や
・特定のユーザに（すべてのレコード参照は許可するが）すべてのレコードの特定の項目を参照不可にしたい

の場合、このいつもの三角形（レコードの共有設定）は必要ないです
なんと、プロファイル（または権限セット）の設定のみで対応可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/f10e8492-f833-4511-0399-3d9213fbfb51.png)


「では、このいつもの三角形はいつ現れるんだ」というと

A.オブジェクトのレコードを１レコード以上参照して欲しいが特定のレコードだけ見せたくない人がいる１ユーザでもいる場合
B.オブジェクトのレコードを１レコード以上編集して欲しいが特定のレコードだけ閲覧や編集してほしくない　という人が１ユーザでもいる場合

の場合です。

では、レコードの共有設定場面は以下のようになります

## Salesforceレコード共有設定を考えるパターン　あるユーザが採用オブジェクトのレコードを「参照・編集」したいが、特定の条件のレコードは閲覧不可にさせたいというパターン

さて、株式会社TAKAAKIも無事に拡大していき、東京本社のほか大阪支社、名古屋支社も設立されました
採用活動も本格化していき、社員だけでは採用活動が足りないので新しくインターン生を１人東京本社で採用し採用活動に励んでいただきました
そこで株式会社TAKAAKIは考えました
・インターン生には採用オブジェクトの閲覧や編集権限を与えて、どんどん採用情報を更新してほしい
・しかし、インターン生は東京の採用のために雇ったので、大阪支社の採用情報を見せるのは、ちょっとよくないな（大阪の採用情報は少ないけど１件ある）

さあ、この場合どうしましょう
この場合、Salesforceの考えとしては
・レコード共有設定を公開から非公開にする
（非公開にしたら基本的にシステム管理者のようなすべてのレコード閲覧権限があるユーザ以外はレコードの所有者が自分のレコードしか見えなくなる）
・その後、共有ルール・ロール階層・手動共有などを使用しユーザの参照権限・編集権限を増やす
というふうになります

つまり、このように

・オブジェクトのレコードを１レコード以上編集して欲しいが特定のレコードだけ閲覧や編集してほしくない　という人が１ユーザでもいる場合
にレコードの共有設定を考える必要があります

![t5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/51286a3b-106f-9d59-4edc-872b33c0f237.png)

なお、この話を聞くと（おそらく）多くの人が
・今までインターン生がいない場合、レコードの共有設定は公開のままでよかったのだからインターン生のみ参照権限を閲覧することはできないのか？
・インターン生に見せたくない大阪採用のレコードは１レコードしかないのだから、大阪レコード１件を何とか設定してインターン生に見せなくすることはできなかったか？

と思うかもしれないですが、今回のように
・インターン生は大阪以外の採用活動データは閲覧をさせたい
という場合、Salesforceでは「まずは採用オブジェクトのレコード設定を非公開にする」しか解決方法は無いです


なお、ほかにもこの話をまとめた記事がありますのでこちらをご覧ください


https://qiita.com/Takaa/items/9a701f9cce508e51a848

以上で大まかな考えはおしまいです


今の話をまとめると

・単純なオブジェクトの参照のみや編集のみ　などの権限や項目権限は
→プロファイル（または権限セット）のオブジェクト権限で対応可能

・特定のレコードだけ閲覧してほしくない（他は閲覧してほしい）　というユーザが一人でもいる場合
→まずはレコードの共有設定を「非公開」にして考えよう
→非公開後、上司が部下のレコードが見たい　ならロール階層
→非公開後、特定の条件での共有なら共有ルール
→非公開後、特に条件などはないけどこのレコードもあのユーザに見て欲しい　という微調整は手動共有


さて、ここから今の話も踏まえた確認テストを行います
ぜひ解いてみてください

## 　確認テスト

さて、ここらでレコード共有設定についてわかったところでクイズを９問用意しました。
ぜひ解いてみてください


### 問題１
 　
![１－１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/43a919f2-fcaf-d613-0617-5f5ecf20438c.png)

まずは簡単な問題です
この場合
・それぞれのレコードの項目はどのようになるでしょうか
×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちら、全部〇（参照および編集可能）　です
![1-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/59ed64cf-c61a-2e4a-53f2-126343dd2db8.png)


このような形でのこりの問題もバシバシやりましょう


### 問題2
![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/a545a651-93cc-d48d-d562-563167cd4c6e.png)

次の問題です
先ほどの問題１と違うのはプロファイル設定で項目レベルセキュリティの設定が異なることです

みなさんいかがでしょうか

×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです。
![２－２１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/32d7f75a-103e-c999-1431-81334a533b5f.png)



・オブジェクト権限は参照・編集だけど項目権限が無い場合、どうなるのか？
と思って問題を解こうとした方、鋭いです！
　

次行きましょう

### 問題3


![３－１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/04de3eac-5c49-d833-16e4-ee72646d7d9b.png)

ある意味一番簡単な問題かもしれないです
共有設定や項目レベルセキュリティなどいろいろ書いてますが惑わされずに！


×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです
![3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/b644af6b-8837-9766-ffa3-e1bbbc34ee0e.png)


なんと全部×！
はじめのオブジェクト権限が×（参照不可）であれば、レコード共有設定やら項目レベルセキュリティやらは参照可能になることは絶対にないですね！

ここまでくれば、なんとなく
・はじめオブジェクト権限を確認
・その後レコードの共有設定を確認
・最後に項目レベルセキュリティを確認
という考え方が身につくはずです

次行きましょう

### 問題4

![４－１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/a375ead3-6d23-45e5-d19d-d04676277e65.png)

さあ、ここからはレコードの共有設定（左下緑）がとうとう動きがでました

プロファイル（権限セット）の権限とレコードの権限をよく考えてみてください
（なお、わかりにくいですが本橋太郎さんは「品川じろう」レコードのみ所有者のユーザです）


×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです
![４－２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/48f6f0a3-440e-322f-6dd8-e231da2f45dd.png)

レコード共有設定が「公開・参照のみ」なので本橋太郎さんは「品川じろう」レコードのみ所有者のユーザなので、本橋太郎さんは品川じろうさんのレコードのみ編集可能です

次行きましょう

### 問題5

![5-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/4bbe6fe5-52ce-f01c-e4c3-733747d46ae9.png)

次はレコードの共有設定は非公開です
先ほどの問題を思い出せば、簡単かもしれないですね

×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです

![5-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/35d5e174-d000-c75e-b79d-d434fd2e0128.png)

共有設定は非公開なので、本橋太郎さんは自分の所有しているレコードのみ参照や編集が可能です


では、どうすれば本橋太郎さんは他のユーザ所有のレコードが参照可能か？次は共有ルールも絡むさらにややこしい問題です

### 問題6

![x6-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/84389743-26a6-5a3b-37dd-b0d57ce178a0.png)


共有ルールで特定のレコードのみ参照可能にしました。
さあ、どうなるでしょうか

×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです

![x6-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/cf4eda63-4ff0-0397-fc68-466092a9a67d.png)


共有ルール作成により渋谷はなこレコードも参照可能になりました

### 問題7

![x7-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/8750583c-14a1-a313-aef2-6616be2146eb.png)


共有ルールで特定のレコードのみ参照・編集可能にしました。
さあ、どうなるでしょうか

×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです

![ｘ７－２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/1fbdb447-d5a8-03e4-bce1-ec9cc37ac4ec.png)


共有ルール作成により渋谷はなこレコードも参照可能・編集可能になりました


### 問題8

![x8-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/940684cf-e81e-59e6-85ff-ea8c64c62c9f.png)


共有ルールに慣れたところで問７の条件から
・オブジェクト権限を参照・編集から参照のみ
にしました

オブジェクト権限は参照のみだが、共有ルールは参照と編集がありますね
果たしてどうなる？

×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです

![x8-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/d82872c5-020e-29f8-f1e7-7e1818c77323.png)


オブジェクト権限は
・△（参照のみ）
なので

・〇（参照および編集可能）
はありえない。選択肢は

×（参照不可）
△（参照のみ）
のどちらか。と考えられて人は、もうだいぶ理解している人です
（共有ルールの参照・編集可能にひっかかっちゃった人は復習してくださいっ！）


最後です

### 問題9
![９－１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/f411b934-3791-1c16-f068-5003ede6a1cf.png)

最後はロール階層の問題です

×（参照不可）
△（参照のみ）
〇（参照および編集可能）
で答えてください

正解はこちらです

![9-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/63c3fcb0-98d3-a437-0f40-4869e9b2ca1b.png)

山田一郎さんの所有者データも参照や編集可能です

いかがでしたでしょうか


今回の内容がわかりにくかったかた、ぜひコメントお待ちしてます

（そしても文字の誤字など、誤りありましたらご指摘お待ちしてます！）