この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

名前空間

名前空間とは、各自のパッケージとそのコンテンツを他の開発者のパッケージと区別するための 1 ~ 15 文字の英数字で構成される識別子です。名前空間は、パッケージに対し作成時に割り当てられ、変更できません。

名前空間を作成する場合、ユーザにとって便利で有益なものを使用します。ただし、名前空間の名前にユーザに関する情報 (ユーザの名前、ニックネーム、個人情報など) は使用しないでください。

重要

2GP 名前空間を使用する場合、次の考慮事項に留意してください。
  • 管理パッケージの場合、名前空間は必須です。
  • 同じ名前空間を使用して複数のパッケージを開発できますが、各パッケージに関連付けられるのは 1 つの名前空間のみです。ISV の場合、すべてのパッケージに同じ名前空間を使用することをお勧めします。
  • 複数の名前空間を使用する場合、各名前空間に対して 1 つのプロジェクトを設定します。

パッケージ名前空間を指定すると、パッケージに追加したすべてのコンポーネントの API 参照名に名前空間プレフィックスが付けられます。たとえば、Insurance_Agent というカスタムオブジェクトの API 参照名が Insurance_Agent__c だとします。このコンポーネントを Acme 名前空間に関連付けられたパッケージに追加すると、API 参照名は Acme__Insurance_Agent__c になります。

ロック解除済みパッケージの名前空間

ロック解除済みパッケージを作成するときには、特定の名前空間を使用するかどうかを選択できます。

パッケージ化を初めて使用するエンタープライズ顧客の場合、おそらくいくつかのフェーズでパッケージを採用することになります。その場合、名前空間プレフィックス (Acme__) は本番組織でパッケージ化されているメタデータとまだパッケージ化されていないメタデータを区別するために役立ちます。

名前空間のないパッケージを作成すると、アプリケーションの各部分を整理および配布する方法を開発者がより詳細に制御できます。パッケージ採用の初期フェーズでは、こうした柔軟性が役立つことがあります。

組織のパッケージ化されていないメタデータへの連動関係がない新機能を作成する場合、開発計画を評価して名前空間を使用するかどうかを判断します。

既存のパッケージ化されていないメタデータは、名前空間のないロック解除済みパッケージにのみ移行できます。そのため、既存のメタデータを移行できるようにするには、名前空間のないロック解除済みパッケージを作成します。

名前空間のないロック解除済みパッケージを名前空間のある組織 (名前空間のあるスクラッチ組織、第一世代パッケージ組織など) にインストールすることはできません。

メモ

第二世代 (2GP) パッケージでの Apex クラスの名前空間ベースの参照

@namespaceAccessible アノテーションは、パッケージ内の公開または保護された Apex を、同じ名前空間を使用する他のパッケージで使用可能であるとマークします。明示的なアノテーションがない限り、2GP パッケージで定義されている Apex クラス、メソッド、インターフェース、およびプロパティは、名前空間を共有する他のパッケージからアクセスできません。パッケージ化されていない Apex には影響はありません。

グローバルとして宣言されている Apex は、このアノテーションを必要とせず、常にすべての名前空間で使用できます。

メモ

パッケージレベルの Apex の参照に対する制限は、Apex が別の Apex クラスまたはトリガから呼び出された場合に適用されます。ただし、Apex が Visualforce または Lightning コントローラとして呼び出された場合、パッケージ間で使用されるアノテーションは適用されません。今後のリリースで適用される予定です。

@namespaceAccessible アノテーションはいつでも追加または削除できます。管理およびリリース済み Apex コードに対しても可能です。アノテーションを追加または削除する前に、その機能に依存する連動パッケージがないことを確認してください。

パッケージの @namespaceAccessible Apex を追加または削除するときには、このパッケージのア��テーションを参照する他のパッケージのインストール済みバージョンを使用しているユーザへの影響を考慮します。パッケージアップグレードを転送する前に、アップグレードが転送されると完全なコンパイルに失敗するパッケージバージョンを実行しているユーザがいないことを確認します。

メモ

次の例は、@namespaceAccessible アノテーションでマークされている Apex クラスを示します。このクラスは、同じ名前空間内の他のパッケージからアクセスできます。最初のコンストラクタも同じ名前空間内で参照できますが、2 つ目のコンストラクタは参照できません。
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}