- カスタムメタデータとカスタム設定の違い
- カスタムメタデータとカスタム設定の使い分け
今回はカスタムメタデータとカスタム設定の違いや使い分け方について解説していきます。
似ている機能でややこしいですが、特徴をしっかりと理解して、状況に応じて最適な方を利用できるようになりましょう!
カスタムメタデータとカスタム設定の違い
まずはカスタムメタデータとカスタム設定それぞれの特徴を解説します。
カスタムメタデータ
カスタムメタデータはカスタムオブジェクトのような独自のメタデータ用オブジェクトを作成できる機能です。
簡単に特徴を書くと次の通りです。
- カスタムオブジェクトのようにオブジェクトにレコードを作ることができる
- レコードも変更セットやパッケージに含めてリリース可能
- SOQLで取得でき、クエリ数のガバナ制限に影響しない(ロングテキスト項目を含まない場合)
- レコードはMetadata APIを使用して作成や編集できる
- Apexではカスタムメタデータレコードの新規作成・更新はできるが、削除は出来ない
- 数式から参照可能
- 入力規則やページレイアウトを定義できる
- テストメソッドからseeAllDataなしでアクセス可能
カスタム設定
カスタム設定には「リスト」と「階層」の2つの設定種別があります。
「リスト」はカスタムメタデータと同じく、カスタムオブジェクトのようにレコードを追加できるオブジェクトを作成できる機能です。
もう一つの「階層」形式のカスタム設定の主な特徴は次の通りです。
- レコードは変更セットやパッケージに含めることができない
- 特定のプロファイル・ユーザ単位で設定を定義可能
- Apexからレコードの作成・編集・削除が可能
- 数式から参照可能
- テストメソッドからのアクセス不可(seeAllDataをつけるたテストデータの作成が必要)
- カスタムオブジェクトの利用数に含まれる
カスタムメタデータとカスタム設定の機能比較
カスタムメタデータとカスタム設定の違いを表にまとめました。
機能 | カスタムメタデータ | カスタム設定 |
---|---|---|
Apexからの操作 | 新規・編集 | 新規・編集・削除 |
レコードのデプロイ | ○ | × |
選択リスト型の利用 | ○ | × |
通貨型の利用 | × | ○ |
プロファイル・ユーザ単位の設定 | × | ○ |
作成可能項目数 | 100 | 300 |
ストレージ制限 | すべてのカスタムメタデータで合計1,000 万文字 | 次の 2 つの値のうち小さい方 ・10 MB ・1 MB × 組織のフルユーザライセンス数 |
ページレイアウト | ○ | × |
入力規則 | ○ | × |
リレーション | カスタムメタデータ同士のリレーションが可能 | × |
SOQL | クエリ数のガバナ制限に影響しない(ロングテキスト項目を含まない場合) | クエリ数のガバナ制限に影響する |
テストメソッドからのアクセス | アクセス可能 | アクセス不可 ※テストデータの作成が必要 |
カスタムオブジェクト数のカウント | カウントされない | カウントされる |
カスタム設定はカスタムオブジェクトの一種として扱われるので、オブジェクトの使用数にカウントされるので注意しましょう。
カスタムメタデータとカスタム設定の使い分け
カスタムメタデータはレコードのような形式で設定を定義することができ、デプロイすることも可能なので、次のような用途に向いています。
- ApexやLWCに表示するメッセージ一覧の定義
- レコードを含めたパッケージの作成
- カスタムオブジェクトの利用数を消費せずに設定を定義
一方でカスタム設定は1レコードにたくさん項目を用意して設定するようなイメージです。
また、プロファイルやユーザ単位で設定を定義できるため、次のような用途に向いています。
- プロファイルやユーザによって表示する内容を判定なしで切り替えたい時
- データ連携先のエンドポイントなどの定義
- Apexバッチのバッチサイズやメールの送信先などの定義
どちらでも要件を満たせるのであればカスタムメタデータを優先して、要件が満たせない時にカスタム設定の利用を検討するのが良いかと思います。
まとめ
今回はカスタムメタデータとカスタム設定の違いと使い分け方について解説しました。
ID値やURLを数式やコードにべた書きしないためには必須の機能なので、是非使いこなせるようになりましょう!
今回紹介した使用例以外にも便利な使い方があれば是非コメントください!