Apex メタデータ API の使用開始
Apex メタデータ API の使用開始
Salesforce の開発者か ISV が、何らかのメタデータ変更を含む、アプリケーションの優れた新しいカスタマイズを作成したとします。サポートする組織にこの機能をロールアウトするには、システム管理者が更新を行えるように一連の手順を作成する必要があります。システム管理者はこの手順に従って、Salesforce の設定 UI のさまざまな場所で変更を行います。よく聞く話ではありませんか? 技術文書の作成が (Salesforce の私たちのように) 心底好きな場合を除き、更新方法をもっと簡単にしたいと思うでしょう。
よい知らせがあります。Apex メタデータ API を使用してこのプロセスを改善できます。この API により、Apex から直接メタデータを変更できます。つまり、Apex の便利な機能をすべて使用してカスタムの設定 UI を作成し、バックグラウンドでメタデータを更新できます。この方法で設定の変更を自動化することもできます。では、Apex メタデータ API を使用するいくつかの例を詳しく見てみましょう。
この API でできること
複数の組織をサポートしていて、カスタム項目を作成したとします。新しい項目をすべての組織のページレイアウトに追加する必要があります。この種の設定情報は、組織のメタデータ型およびコンポーネントに保存されます。
Apex メタデータ API を使用するスクリプトを作成し、新しい項目を Apex から直接すべての組織のページレイアウトに追加できます。組織のメタデータはバックグラウンドで更新されるため、システム管理者が組織ごとに手動で変更する必要はありません。

Apex メタデータ API では、機能のカスタム設定環境を作成することもできます。たとえば、新機能をサポートするためにカスタムメタデータ型を作成したとします。カスタムメタデータ型のレコードは、国ごとに異なる設定をする必要があります。Apex メタデータ API を使用して設定ウィザードを作成し、システム管理者にレコードの設定手順をガイドすることができます。この自動化によって、システム管理者は設定 UI で手動の変更を行う必要がなくなります。

Apex から直接メタデータを操作
Apex コード内からメタデータを直接管理するには、Metadata 名前空間のクラスを使用します。2 つの上位メタデータ型 (カスタムメタデータ型のページレイアウトとレコード) にアクセスできるため、組織のカスタマイズと設定の多くを処理できます。
では、Apex メタデータ API ではどのようなことができるのでしょうか? メタデータを組織から同期的に取得できます。このメタデータを検査して更新でき、メタデータを作成することもできます。更新したメタデータは、非同期リリースを使用して簡単に組織にリリースできます。リリースの完了時に通知を受け取るために、コールバックを実装できます。
では、短い Apex コードを見て Apex メタデータ API で何ができるかを確認しましょう。次のスニペットは、Metadata.CustomMetadata クラスを使用してカスタムメタデータ型のレコードを作成します。この新しいレコードを Apex から直接組織にリリースできます。これは、このモジュールの後半で確認します。
Metadata.CustomMetadata customMetadata = new Metadata.CustomMetadata(); customMetadata.fullName = 'MyNamespace__MetadataTypeName.MetadataRecordName'; Metadata.CustomMetadataValue customField = new Metadata.CustomMetadataValue(); customField.field = 'customField__c'; customField.value = 'New value'; customMetadata.values.add(customField);
Apex メタデータ API を使用してできることは沢山ありますが、いくつかの制限事項に注意する必要があります。
- 現在のリリースでサポートされているメタデータ型は、カスタムメタデータ型のページレイアウトとレコードの 2 つのみです。
- メタデータの参照、作成、更新はサポートされますが、削除はサポートされません。
- リリースの状況を追跡できる API はありません。ただし、リリースの完了時にコールされるコールバックを設定できます。
セキュリティについて
メタデータは強力です。そのため、セキュリティが心配でしょう。安心してください。信頼は、Salesforce にとって最も重要な価値の 1 つであり、Apex メタデータ API は信頼できるインターフェースとして構築されました。インストール済みパッケージは Apex の認定を受ける必要があります。または、登録者組織で Apex メタデータリリースを許可する設定を有効にする必要があります。リリースを開始した名前空間を設定変更履歴で追跡できます。
セキュリティについては後の単元で詳しく説明します。その前に、Apex メタデータ API の機能について確認しましょう。
ISV のためのメモ
このモジュールの各例は企業向けですが、Apex メタデータ API は ISV の開発者にとっても便利です。アプリケーション固有の設定 UI を作成し、設定変更を自動化すれば、ビジネスを大きく促進できます。Apex メタデータ API では、次のことができます。
- エキスパートではないユーザ向けに設定操作をより迅速かつ簡単にすることで、自社とお客様のコストを削減する。
- 一部の設定手順を自動化して完全に省略する。
- システム管理者にプロフェッショナルサービスの専門知識がなくても使用できるツールを提供し、すぐに設定を変更できるようにする。
- お客様がアプリケーションを試すためのハードルを下げて製品の採用を増やす。
- 知的財産を保護する。アプリケーションで保護メタデータを更新できるため、より多くの設定をお客様から隠すことができます。
- リモートサイト設定への依存をなくし、コードの複雑さを軽減し、お客様による設定を簡略化する。
リソース
Trailhead: カスタムメタデータ型
Salesforce 開発者ブログ: Introducing the Apex Metadata API (Apex メタデータ API のご紹介)
Salesforce ドキュメント: Apex 開発者ガイド