名前空間について
名前空間とは、各自のパッケージとそのコンテンツを組織の他のパッケージと区別するための 1 ~ 15 文字の英数字で構成される識別子です。
パッケージ名前空間を指定すると、パッケージに追加したすべてのコンポーネントの API 参照名に名前空間プレフィックスが付けられます。たとえば、Insurance_Agent というカスタムオブジェクトの API 参照名が Insurance_Agent__c だとします。このコンポーネントを Acme 名前空間に関連付けられたパッケージに追加すると、API 参照名は Acme__Insurance_Agent__c になります。
ロック解除済みパッケージを作成するときには、特定の名前空間を使用するかどうかを選択できます。名前空間は、パッケージに対し作成時に割り当てられ、変更できません。
| 次に該当する場合は名前空間のないパッケージを使用 | 次に該当する場合は名前空間パッケージを使用 |
|---|---|
| 組織の単一のパッケージ化されていないメタデータからロック解除済みパッケージにメタデータを移行したいと考えている。名前空間のないパッケージを作成すると、アプリケーションの各部分を整理および配布する方法をより詳細に制御できます。 | パッケージ化を使用するのが初めてで、いくつかのフェーズでパッケージを採用する。名前空間プレフィックス (Acme__ など) を使用すると、本番組織でパッケージ化されているメタデータとまだパッケージ化されていないメタデータを区別しやすくなります。 |
| 以前のパッケージ化されていないメタデータ要素の API 参照名を保持したいと考えている。 | 複数の開発チームがある。名前空間を使用すると、API 参照名が別のチームと競合しなくなります。 通常、1 つの名前空間を使用する方が容易で、名前空間を共有するパッケージで簡単にコードを共有できます。 |
名前空間を使用する場合、次の考慮事項に留意してください。
- 同じ名前空間を使用して複数のパッケージを開発できますが、各パッケージに関連付けられるのは 1 つの名前空間のみです。
- 複数の名前空間を使用する場合、各名前空間に対して 1 つのプロジェクトを設定することをお勧めします。
ロック解除済みパッケージでの Apex クラスの名前空間ベースの参照
@namespaceAccessible は、パッケージ内の公開 Apex を、同じ名前空間を使用する他のパッケージで使用できるようにします。このアノテーションがないと、ロック解除済みパッケージで定義されている Apex クラス、メソッド、インターフェース、およびプロパティは、名前空間を共有する他のパッケージからアクセスできません。グローバルとして宣言されている Apex は、アノテーションを必要とせず、常にすべての名前空間で使用できます。
- Lightning コンポーネントから参照される @AuraEnabled Apex メソッドで @namespaceAccessible アノテーションは使用できません。
- @namespaceAccessible アノテーションはいつでも追加または削除できます。管理およびリリース済み Apex コードに対しても可能です。アノテーションを追加または削除する前に、その機能に依存する連動パッケージがないことを確認してください。
- パッケージの @namespaceAccessible Apex を追加または削除するときには、このパッケージのアノテーションを参照する他のパッケージのインストール済みバージョンを使用しているユーザへの影響を考慮します。パッケージアップグレードを転送する前に、アップグレードが転送されると完全なコンパイルに失敗するパッケージバージョンを実行しているユーザがいないことを確認します。