0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】カスタムオブジェクトとカスタムメタデータの違いって何?

Last updated at Posted at 2024-11-27

結論

  • データ管理が目的なら、カスタムオブジェクトを使用。
  • システムや設定情報の管理が目的なら、カスタムメタデータを使用。

1. 基本的な概要

項目 カスタムオブジェクト カスタムメタデータ
目的 アプリケーションのデータを保存・管理するため。 アプリケーションやシステムの設定情報を保存するため。
主な用途 - レコードデータの管理
- ビジネスプロセスの実行用
- 設定値や定数の管理
- カスタマイズや動的ロジックの実現
保存するデータ例 - 顧客情報
- 契約情報
- 注文データ
- デフォルト設定
- 検証ルール
- 参照可能な設定値

2. 作成および使用の違い

項目 カスタムオブジェクト カスタムメタデータ
作成・変更方法 SalesforceのUI、API、またはApex経由でレコードを作成・変更可能。 メタデータのレコードはAPIやApexでは変更不可(変更セットやメタデータAPI経由で行う)。
移行方法 - データローダー、データインポートウィザードなどでデータを移行 - 変更セットまたはメタデータAPIを使用してレコードごと移行
Apexからの参照 Apexクラスやトリガーで通常のSOQLクエリで参照可能。 getInstance()を利用して直接参照可能(SOQL不要)。
クエリ速度 通常のSOQLでクエリ。データ量が多い場合はパフォーマンスに影響。 クエリ速度が速く、Apexコードで直接参照可能(キャッシュされているため)。
データ量の制限 大量のレコードデータを保存可能(ストレージ制限に依存)。 1組織あたりのメタデータレコード数に制限がある(10,000件)。

3. 特徴・機能の違い

項目 カスタムオブジェクト カスタムメタデータ
カスタム設定との違い 主にデータを管理するために使用。設定の保存には向かない。 カスタム設定と似ているが、より柔軟に設定やデプロイが可能。
デプロイ可能性 オブジェクト自体はデプロイ可能だが、データは手動またはインポートが必要。 レコード(設定データ)も含めて変更セットで移行可能。
バージョン管理 設定変更は容易だが、ソース管理ツールではデータを直接追跡できない。 ソース管理ツールで追跡可能(メタデータXMLとして保存される)。
アクセス制限 プロファイルや権限セットで制御可能。 カスタムメタデータ自体にはアクセス権限の設定が不要。
主な利用例 - 顧客データ
- 注文情報
- 契約情報
- APIキーの保存
- デフォルト値の設定
- 設定ルールの管理

4. 主な利用ケース

カスタムオブジェクトを使うべき場合

  • アプリケーションで動的に生成・変更されるデータを保存する必要がある場合。
  • 大量のレコードを管理する必要がある場合(例: 顧客情報、注文履歴)。
  • データをレポートやダッシュボードで分析したい場合。

カスタムメタデータを使うべき場合

  • システムやアプリケーションの設定情報を管理したい場合(例: 検証ルール、デフォルト設定)。
  • 設定を組織間で移行(デプロイ)する必要がある場合。
  • データ量が少なく、アクセス速度が重視される場合。

5. 比較のまとめ

特徴 カスタムオブジェクト カスタムメタデータ
柔軟性 高い(データの追加・変更が可能)。 中程度(設定情報向けで変更は制限される)。
データ量の制限 多量のデータを扱える。 制限あり(10,000レコードまで)。
用途 データ管理用 設定管理用
デプロイの容易さ データの移行には追加の手間が必要。 レコード含めて一括デプロイ可能。
キャッシュ速度 通常のクエリ速度。 高速(キャッシュされるため)。

結論

  • データ管理が目的なら、カスタムオブジェクトを使用。
  • システムや設定情報の管理が目的なら、カスタムメタデータを使用。

必要に応じて、両者を組み合わせて活用すると効率的です!

追加

以下にカスタムオブジェクトカスタムメタデータカスタム設定の違いを分かりやすく表でまとめました。


カスタムオブジェクト vs カスタムメタデータ vs カスタム設定

特徴 カスタムオブジェクト カスタムメタデータ カスタム設定
主な用途 データ管理用 アプリケーションの設定情報を管理 設定値の保存、組織ごとやプロファイルごとの設定が可能
保存するデータ例 顧客情報、契約情報、注文履歴など デフォルト設定、APIキー、検証ルール 制限値、システム設定値、デフォルト値
レコードの移行 データローダーやインポートウィザードを使用 変更セットやメタデータAPIで移行可能 一部移行可能(カスタム階層設定は不可)
レコードの編集方法 Salesforce UI、Apex、APIで編集可能 Salesforce UIで直接編集不可
デプロイで更新
UI、Apex、APIで編集可能
Apexでの参照方法 SOQLでクエリ実行 getInstance()で直接参照可能(SOQL不要) CustomSettingsName__c.getInstance()で参照可能
アクセス速度 通常(クエリの実行に依存) 高速(キャッシュされているため) 高速(キャッシュされているため)
ストレージ容量 組織のデータストレージ容量に依存 制限あり(最大10,000レコード) 制限あり(階層型:最大1,000項目、単純型:10MBまで)
プロファイルや権限セットでの制御 権限セットやプロファイルで制御可能 制御不可(管理者がアクセス) 権限セットやプロファイルで制御可能
キャッシュ キャッシュされない キャッシュされる キャッシュされる
データ構造の柔軟性 複数のカスタムフィールドを持てる 設定情報の保存に特化し、柔軟性は低い 設定情報の保存に特化し、柔軟性は低い
適用例 - 顧客情報、取引情報
- ダッシュボード用データ
- APIキー管理
- デフォルト設定
- 検証ルール管理
- 制限値の保存
- 組織やプロファイルごとの設定情報保存
データの共有と移行 データは手動またはデータローダーで移行が必要 設定レコードも含めてデプロイ可能 データローダーを使って部分的に移行可能

それぞれの選択が適しているケース

カスタムオブジェクトを使用すべき場合

  • データの保存・管理が必要な場合(例: 顧客情報、売上データ)。
  • レポートやダッシュボードでデータを分析する必要がある場合。

カスタムメタデータを使用すべき場合

  • アプリケーションやシステムの設定値を保存したい場合(例: APIキー、検証ルール)。
  • 設定値を環境間でデプロイする必要がある場合。

カスタム設定を使用すべき場合

  • 組織全体やユーザーグループごとに異なる設定値を保存したい場合(例: プロファイルごとの制限値)。
  • 高速にアクセス可能な設定値が必要な場合。

簡単なまとめ

選択基準 カスタムオブジェクト カスタムメタデータ カスタム設定
動的なデータ管理 適している 適していない 適していない
設定値の保存 適していない 非常に適している 適している
デプロイの容易さ 低い 高い 中程度
キャッシュ性能 通常 高い 高い
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?