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

パッケージのバージョン

パッケージバージョンは、パッケージでアップロードされる一連のコンポーネントを特定する番号です。バージョン番号の形式は majorNumber.minorNumber.patchNumber (例: 2.1.3) です。メジャー番号とマイナー番号は、メジャーリリースのたびに指定した値に増えます。patchNumber は、パッチリリースにのみ生成および更新されます。

未管理パッケージはアップグレードできないため、各パッケージバージョンは単に配布用コンポーネントのセットです。パッケージバージョンは管理パッケージでより大きな意味を持ちます。パッケージは異なるバージョンで異なる動作をします。公開者は、パッケージバージョンを使用して、後続のパッケージバージョンをリリースすることにより、そのパッケージを使用する既存の顧客の統合を分割することなく管理パッケージのコンポーネントを強化することができます。

既存の登録ユーザが新しいパッケージをインストールした場合、パッケージ内の各コンポーネントのインスタンスは 1 つだけですが、コンポーネントは古いバージョンをエミュレートできます。たとえば、登録ユーザが Apex クラスを含む管理パッケージを使用するとします。公開者が Apex クラスのメソッドを廃止し、新しいパッケージバージョンをリリースする場合でも、新しいバージョンをインストールした後、登録者は Apex クラスのインスタンスを 1 つのみ使用できます。ただし、この Apex クラスは、古いバージョンの廃止されたメソッドを参照するコードの以前のバージョンをエミュレートできます。

管理パッケージで Apex を開発する場合、次の点に注意が必要です。

  • 管理パッケージの一部である Apex クラス、トリガ、または Visualforce コンポーネントに含まれるコードは難読化され、インストール先の組織で見ることができません。唯一の例外は、グローバルとして宣言されたメソッドです。グローバルメソッドの署名は、インストール先の組織で表示できます。また、「管理された Apex の表示およびデバッグ」権限を持つライセンス管理組織ユーザは、登録者サポートコンソールで登録者組織にログインしたときにパッケージの難読化された Apex クラスを表示できます。
  • 管理パッケージは、一意の名前空間を受け取ります。この名前空間は、インストール先の組織で名前の重複を防ぐために、クラス名、メソッド、変数などの先頭に追加されます。
  • 1 つのトランザクションでは、10 個の一意の名前空間のみを参照できます。たとえば、オブジェクトを更新するときに、管理パッケージでクラスを実行するオブジェクトがあるとします。その後、クラスは 2 番目のオブジェクトを更新します。つまり、他のパッケージの他のクラスを実行します。最初のパッケージが 2 番目のパッケージに直接アクセスしなかった場合でも、同じトランザクション内でアクセスが発生します。そのため、1 つのトランザクションでアクセスされる名前空間の数に含まれます。
  • パッケージ開発者は、deprecated アノテーションを使用して、今後のリリースの管理パッケージでは参照できないメソッド、クラス、例外、列挙、インターフェース、変数を指定します。要件の変化にともなって、管理パッケージのコードをリファクタリングする場合に役立ちます。
  • システムメソッド runAs を使用して、パッケージバージョンコンテキストを異なるパッケージバージョンに変更するテストメソッドを記述できます。
  • インターフェースまたはクラスが「管理-リリース済み」パッケージバージョンでアップロードされた後は、global インターフェースにメソッドを追加することも、抽象メソッドをクラスに追加することもできません。「管理-リリース済み」パッケージのクラスが仮想の場合、そこに追加できるメソッドも仮想であり、実装があることが必要です。
  • 明示的に名前空間を参照する未管理パッケージに含まれる Apex コードは、アップロードできません。