Metadata APIとは何か?

By | September 11, 2022

メタデータとは何か?

SFにおいて、データは以下の二種類に大別される。

  • ビジネスデータ:レコード
  • メタデータ:レコード以外のデータ(例:DBのスキーマ、プロセス、プレゼンテーション、認証、組織の全般設定)

■メタデータの具体例

  • プロセスメタデータ:「保存」ボタンを押した際に実行される処理
  • プレゼンテーションメタデータ:ページレイアウト
  • 組織の全般設定:Chatter投稿内での絵文字をブロック

メタデータAPIとは何か?

REST APIやSOAP APIがビジネスデータを操作するためのAPIであるのに対して、メタデータAPIは組織のメタデータを操作するためのAPIである。

  • REST/SOAP API:レコードのcreate, read, update, delete
  • メタデータAPI:組織設定のdeploy, retrieve, create, update, delete

メタデータAPIを用いた組織間でのメタデータの移行には大きく以下の二つの方法がある。

  • deploy()・retrieve()コールを利用する方法:manifestファイルに記載されている全てのメタデータがdeploy・retrieveされる。
  • push()・pull()コマンドを利用する方法:ソース追跡機能をベースとして差分だけがpush・pullされる。

■それぞれの利用シーン

  • deploy()・retrieve()コール:既存のメタデータがoverwriteされるという特徴を持つため、「メタデータをまとめてローカルに落としてくる場合」や「メタデータをまとめてクリーンな状態の(=上書きしても問題のない)組織に反映させたい場合」などに利用する。
  • push()・pull()コマンド:push先のbranchとconflictが発生した場合はoverwriteせずにエラーを出してくれるなどの機能がある。主に開発中に利用する。

利用例

■ローカルのデータをまとめて特定組織にdeployする

sfdx force:source:deploy --targetusername target-org --sourcepath src

■特定組織のメタデータをまとめてローカルにretrieveする

sfdx force:source:retrieve --sourcepath src --targetusername target-org

■開発したApexなどを特定組織にpushする

sfdx force:source:push --targetusername target-org

■特定組織への変更をローカルにpullする

sfdx force:source:pull --targetusername target-org

参考リンク

Metadata API Developer Guide

Demystifying the Salesforce Metadata API

Author: Regardie

Salesforce & AWS Enthusiast.