はじめに
初投稿です。
前回の資格試験のときにつまづいた、カスタムメタデータとカスタム設定の違いについて、まとめていこうと思います。
カスタムメタデータ
カスタムオブジェクトのように、項目(カスタムメタデータ型項目)を定義し、レコードを作成、更新、削除できる。
大きな特徴
- 作成したレコードのリリースが可能。変更セットやMetadata APIでのリリースに含めることができる。マスターデータ(業務を遂行する際の基礎情報となるデータ、更新頻度が低いことが特徴)の管理に向いている。
- データへのアクセスが容易。SOQLや数式からの参照が可能である。
※SOQLにおいては、ロングテキスト項目を含まない場合に限り、ガバナ制約の対象外。
SELECT Id, SampleField__c FROM SampleMetaData__mdt WHERE DeveloperName = 'TestA' LIMIT 1]
- テストメソッドにおいて、seeAllData=trueを使用せずに、レコードにアクセスが可能。
使い方
- 「設定/カスタムメタデータ型/新規カスタムメタデータ型」を選択し、ラベルとAPI名を入力して保存する。
- カスタム項目セクションの「新規」を選択する。データ型、ラベル、API名(、文字数)などを入力し、保存する。
- 「設定/カスタムメタデータ型/レコードの管理/新規」を選択し、ラベル、API名、カスタム項目を入力し、保存する。
※カスタムメタデータには、複数選択リストや数式などのデータ型の項目が作成できない、レコードタイプが存在しないなどの制約事項もある。
※カスタムメタデータのレコード一括作成を行いたい際には、以下の記事を参照。
カスタム設定
一つのレコードに対して、たくさん項目を作成し、固定値を設定するようなイメージ。
カスタム設定には「リスト」と「階層」の2つの設定種別がある。
※現在、「リスト」形式のカスタム設定は新規作成できなくなっており、代わりにカスタムメタデータの利用が推奨されている。
大きな特徴
- 特定の組織、プロファイル、ユーザ単位で定義することが可能。
- 作成したレコードは、変更セットやMetadata APIに含めることができない。そのため、リリース後は手動で追加する必要がある。
- 数式からの参照が可能。
$Setup.SampleCustomeSetting__c.SampleField__c
- テストメソッドにおいて、アクセスが不可。アクセスするためには、seeAllData=tureが必要。
使い方
- 「設定/カスタム設定/新規」を選択し、ラベルとオブジェクト名を入力して保存する。
- カスタム項目セクションの「新規」を選択する。データ型、ラベル、API名(、文字数)などを入力し、保存する。
- 「設定/カスタム設定/Manage」を選択し、カスタム項目を入力し、保存する。この時点で、組織のデフォルト値か、プロファイル・ユーザごとの値かを選択し、使い分ける。
※カスタム設定は、カスタムオブジェクトの一種。各カスタム設定は、組織で使用可能なカスタムオブジェクトの総数の一部として加算される。
まとめ
- 数式やソースコードに対して、IDやURLをべた書きしないためには、必須の機能。
- 基本的にはカスタムメタデータの使用を検討し、要件が満たせないとき(プロファイル、ユーザ単位で値を切り替えたいなど)はカスタム設定の利用を検討する。