名前空間
- 管理パッケージの場合、名前空間は必須です。
- 同じ名前空間を使用して複数のパッケージを開発できますが、各パッケージに関連付けられるのは 1 つの名前空間のみです。ISV の場合、すべてのパッケージに同じ名前空間を使用することをお勧めします。
- 複数の名前空間を使用する場合、各名前空間に対して 1 つのプロジェクトを設定します。
パッケージ名前空間を指定すると、パッケージに追加したすべてのコンポーネントの API 参照名に名前空間プレフィックスが付けられます。たとえば、Insurance_Agent というカスタムオブジェクトの API 参照名が Insurance_Agent__c だとします。このコンポーネントを Acme 名前空間に関連付けられたパッケージに追加すると、API 参照名は Acme__Insurance_Agent__c になります。
ロック解除済みパッケージの名前空間
ロック解除済みパッケージを作成するときには、特定の名前空間を使用するかどうかを選択できます。
パッケージ化を初めて使用するエンタープライズ顧客の場合、おそらくいくつかのフェーズでパッケージを採用することになります。その場合、名前空間プレフィックス (Acme__) は本番組織でパッケージ化されているメタデータとまだパッケージ化されていないメタデータを区別するために役立ちます。
名前空間のないパッケージを作成すると、アプリケーションの各部分を整理および配布する方法を開発者がより詳細に制御できます。パッケージ採用の初期フェーズでは、こうした柔軟性が役立つことがあります。
組織のパッケージ化されていないメタデータへの連動関係がない新機能を作成する場合、開発計画を評価して名前空間を使用するかどうかを判断します。
既存のパッケージ化されていないメタデータは、名前空間のないロック解除済みパッケージにのみ移行できます。そのため、既存のメタデータを移行できるようにするには、名前空間のないロック解除済みパッケージを作成します。
第二世代 (2GP) パッケージでの Apex クラスの名前空間ベースの参照
パッケージレベルの Apex の参照に対する制限は、Apex が別の Apex クラスまたはトリガから呼び出された場合に適用されます。ただし、Apex が Visualforce または Lightning コントローラとして呼び出された場合、パッケージ間で使用されるアノテーションは適用されません。今後のリリースで適用される予定です。
1// A namespace-visible Apex class
2@namespaceAccessible
3public class MyClass {
4 private Boolean bypassFLS;
5
6 // A namespace-visible constructor that only allows secure use
7 @namespaceAccessible
8 public MyClass() {
9 bypassFLS = false;
10 }
11
12 // A package private constructor that allows use in trusted contexts,
13 // but only internal to the package
14 public MyClass (Boolean bypassFLS) {
15 this.bypassFLS = bypassFLS;
16 }
17 @namespaceAccessible
18 protected Boolean getBypassFLS() {
19 return bypassFLS;
20 }
21}