問題
“without sharing”キーワードを使用してApexクラスを宣言すると、どのような影響がありますか。
- 現在のユーザーが所有するレコードのみを更新できます。
- 現在のユーザーの共有ルールは適用されません。
- クラスが作成したレコードに共有ルールを設定することはできません。
- このクラスは、開発者権限を持つユーザーのみが使用できます。
正解
- 現在のユーザーが所有するレコードのみを更新できます。
- 現在のユーザーの共有ルールは適用されません。
- クラスが作成したレコードに共有ルールを設定することはできません。
- このクラスは、開発者権限を持つユーザーのみが使用できます。
解説
“without sharing” キーワードは、Apexクラスやメソッドで使用されると、そのクラスやメソッドのコードが実行される際に、Salesforceの共有ルールを無視して実行されることを意味します。つまり、このキーワードが適用されたコードは、組織内のデータ保護ルールやユーザーのアクセス権限に関係なく、全てのレコードにアクセスできるようになります。これは通常、システム全体で一貫した動作が必要な管理タスクやデータ処理タスクに用いられますが、セキュリティやデータ保護の観点から慎重に使用する必要があります。
それぞれの選択肢の理由について説明します。
□ 現在のユーザーが所有するレコードのみを更新できます。
これは不正解です。”without sharing”キーワードは、ユーザーが所有するレコードに限定せず、共有ルールを無視するため、所有していないレコードに対しても更新を行うことができます。
□ 現在のユーザーの共有ルールは適用されません。
これは正解です。”without sharing”キーワードは共有ルールを無視し、コードは共有設定に関係なくデータベースのレコードにアクセスします。
□ クラスが作成したレコードに共有ルールを設定することはできません。
これは不正解です。”without sharing”キーワードの使用は、メソッドの実行において共有ルールを無視することを意味しますが、クラスが作成したレコードに対して共有ルールを設定できないわけではありません。レコードの共有は、後から設定することができます。
□ このクラスは、開発者権限を持つユーザーのみが使用できます。
これは不正解です。”without sharing”キーワードは実行ユーザーの権限レベルとは無関係であり、開発者権限を持つユーザーに限定されるわけではありません。どのユーザーがクラスを実行できるかは、プロファイルと権限セットによって制御されます。
コメント