Newer Version Available
NamespaceAccessible アノテーション
@NamespaceAccessible は、パッケージ内の公開 Apex を、同じ名前空間を使用する他のパッケージで使用できるようにします。このアノテーションがないと、2GP パッケージで定義されている Apex クラス、メソッド、インターフェース、プロパティ、および抽象クラスは、名前空間を共有する他のパッケージからアクセスできません。グローバルとして宣言されている Apex は、アノテーションを必要とせず、常にすべての名前空間で使用できます。
2GP 管理パッケージについての詳細は、『Salesforce DX 開発者ガイド』の「第二世代管理パッケージ」を参照してください。
パッケージ間の Apex のアクセシビリティの考慮事項
- @AuraEnabled Apex メソッドで @NamespaceAccessible アノテーションは使用できません。
- @NamespaceAccessible アノテーションはいつでも追加または削除できます。管理およびリリース済み Apex コードに対しても可能です。アノテーションを追加または削除する前に、その機能に依存する連動パッケージがないことを確認してください。
- パッケージの @NamespaceAccessible Apex を追加または削除するときには、このパッケージのアノテーションを参照する他のパッケージのインストール済みバージョンを使用しているユーザーへの影響を考慮します。パッケージアップグレードを転送する前に、アップグレードが転送されると完全なコンパイルに失敗するパッケージバージョンを実行しているユーザーがいないことを確認します。
- 公開インターフェースが @NamespaceAccessible として宣言されている場合は、すべてのインターフェースメンバーがアノテーションを継承します。個々のインターフェースメンバーに @NamespaceAccessible アノテーションを付加することはできません。
- public または protected 変数/メソッドが @NamespaceAccessible として宣言されている場合、それを定義するクラスは、@NamespaceAccessible アノテーションが付加された global クラスまたは public クラスにする必要があります。
- public または protected 内部クラスが @NamespaceAccessible として宣言されている場合、それを囲むクラスは、@NamespaceAccessible アノテーションが付加された global クラスまたは public クラスにする必要があります。
バージョン管理動作の変更
API バージョン 47.0 以降の場合、@AuraEnabled でマークされているエンティティでは、@NamespaceAccessible を使用できません。したがって、あるパッケージからインストールされた Aura または Lightning Web コンポーネントは、別のパッケージからの Apex メソッドをコールできません。これは、両方のパッケージが同じ名前空間に存在している場合であっても当てはまります。
API バージョン 50.0 以降の場合、範囲およびアクセシビリティのルールは、@NamespaceAccessible アノテーションが付加されている Apex 変数、メソッド、内部クラス、およびインターフェースに適用されます。アクセシビリティの考慮事項については、「パッケージ間の Apex のアクセシビリティの考慮事項」を参照してください。名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。