✔以下の疑問をお持ちの方へ向けた記事です
「Salesforceのメタデータとは何か、そしてそれはなぜ重要なのか?」
「Salesforceのメタデータ管理の基本的な方法は何か?」
「メタデータを効果的に管理し活用するための戦略は?」
✔当記事を読むことで得られる知識
- Salesforceにおけるメタデータの基本概念とその重要性
- メタデータの管理と操作の基本的な方法
- メタデータを使用した開発やカスタマイズのベストプラクティス
当記事では、Salesforceにおけるメタデータの概念と、それがシステムの設定やカスタマイズにどのように影響を与えるかを詳しく解説します。
Salesforceを深く理解し、より効率的に運用するための知識が得られるはず。
ぜひ最後までご覧ください。
メタデータの基本
こちらでは、「メタデータの基本」についてお伝えしていきます。
メタデータを理解することで、データをより効率的に管理し、サービスのカスタマイズやシステムの整合性を維持するための基盤を築くことができるでしょう。
- メタデータとは何か
- Salesforceにおけるメタデータの役割
- メタデータの種類と構造
メタデータとは何か
メタデータとは、データに関するデータのこと。
主に情報の構造、定義、管理に関わる属性や要素を指します。
たとえば本でいえば、メタデータは以下などの情報です。
- タイトル
- 著者
- 発行日
コンピュータシステムにおけるメタデータ例は、ファイルの作成日時、変更履歴、アクセス権限など。
メタデータは、適切な管理や検索、理解を助けるために不可欠な要素です。
Salesforceにおけるメタデータの役割
Salesforceでは、メタデータは、ビジネスを運営していくうえで、中核的な役割を果たすもの。
カスタマイズされたビジネスロジックやアプリケーションの構成情報が記載されています。
メタデータAPIを使用することで、デベロッパーは以下などをプログラム的に操作できるのです。
- Salesforceのオブジェクト
- フィールド
- ページレイアウト
<types>
<members>*</members>
<name>CustomObject</name>
</types>
こちらのXMLコードは、すべてのカスタムオブジェクトのメタデータを取り扱う例です。
メタデータを適切に扱うことで、効果的にビジネスプロセスを自動化し、処理を高速化することが可能になります。
このXMLファイルは、Salesforce CLIを使用すると頻繁に扱うもの。
Salesforceを通常どおり使用している場合は、見慣れないものかもしれません。
メタデータの種類と構造
メタデータの基本的な構造は、XMLフォーマットです。
Salesforceのメタデータは、以下のように分類され、要素には特定のフィールド・プロパティが備わっています。
- 「CustomObject」: (子要素あり)「fields」「listViews」「webLinks」
- 「ApexPage」
- 「ApexClass」
object
├── Account.object-meta.xml
├── fields
├── listViews
└── webLinks
このように階層的に整理されたメタデータは、システムの複雑さを把握しやすくし、効率的なアプリケーション開発を支援します。
メタデータの主要カテゴリと例
こちらでは、メタデータの主要カテゴリとそれに属するいくつかの具体例を紹介していきます。
これにより、Salesforceをカスタマイズする際にどのようなメタデータが鍵となるか、その概要を理解できるでしょう。
- 標準オブジェクトのフィールド(例: fields, weblinks, listviews)
- カスタムオブジェクトとフィールド
- ワークフローとプロセス(例: rules, actions)
- レイアウトとビジュアル要素(例: page layouts, visualforce pages)
標準オブジェクトのフィールド(例: fields, weblinks, listviews)
Salesforce内の標準オブジェクトは、会社の連絡先や商談などの共通ビジネスプロセスを表す汎用的なテンプレートです。
各標準オブジェクトには、以下が含まれています。
- 複数のフィールド(fields)
- ウェブリンク(weblinks)
- リストビュー(listviews)
たとえば、AccountオブジェクトのNameフィールドは、以下のようなメタデータを持ちます。
<CustomLabel>
<fullName>Account.Name</fullName>
<label>Account Name</label>
</CustomLabel>
このようなメタデータを理解し管理することで、システムの整合性を保ち、必要な変更を適切に加えられます。
フィールドはデータを保存するときの列といえます。
各レコードは行で、データを各列に保存していくイメージです。
例えばAcccount(取引先)には、取引先名や業種、従業員数などがあります。
カスタムオブジェクトとフィールド
カスタムオブジェクトは、Salesforce内で独自のビジネスロジックを反映させるためにユーザーが定義できる構造です。
カスタムオブジェクトにはカスタムフィールドが結びつけられ、特定のデータを保存・管理します。
たとえば以下は、カスタムオブジェクトに「Invoice__c」があり、その中に「InvoiceNumber」というカスタムフィールドを持つ例です。
<CustomObject xmlns=""http://soap.sforce.com/2006/04/metadata"">
<fullName>Invoice__c</fullName>
<fields>
<fullName>InvoiceNumber__c</fullName>
<label>Invoice Number</label>
<type>Text</type>
</fields>
</CustomObject>
このメタデータを編集し管理することで、ビジネスニーズに合わせたデータ構造を構築できます。
カスタムオブジェクトはカスタムで作成したテーブル・表といえます。
各列がカスタムフィールドで、レコードを行に保存していくのです。
ワークフローとプロセス(例: rules, actions)
ワークフロールールやプロセスビルダーは、ビジネスプロセスを自動化するための重要なメタデータ要素です。
ワークフロールール(rules)は、特定の条件が満たされたときに自動的にアクション(actions)を実行します。
例えば、商談が成立した際に自動的に関連タスクを生成するワークフローは、以下のようなメタデータを通じて設定されます。
<?xml version="1.0" encoding="UTF-8"?>
<Workflow xmlns="http://soap.sforce.com/2006/04/metadata">
<fieldUpdates>
<fullName>ChangePriorityToHigh</fullName>
<field>Priority</field>
<literalValue>High</literalValue>
<name>Changes the case priority to high.</name>
<notifyAssignee>false</notifyAssignee>
<operation>Literal</operation>
<protected>false</protected>
<reevaluateOnChange>false</reevaluateOnChange>
</fieldUpdates>
</Workflow>
このメタデータを活用することで、繰り返しの業務を効率化し、時間の節約とエラーの減少を実現できます。
実際の設定は、Salesforceの画面上からおこなえます。
メタデータをとっておくことで、変更を管理したり、別の組織でも流用したりが可能になるのです。
レイアウトとビジュアル要素(例: page layouts, visualforce pages)
ページレイアウト(page layouts)とビジュアルフォースページ(visualforce pages)は、ユーザーインターフェイスをカスタマイズして、必要な情報の表示や操作をおこなうメタデータです。
- ページレイアウト: フィールドの配置や表示項目を調整
- ビジュアルフォースページ: カスタムUIコンポーネントの作成
以下はページレイアウトのメタデータの一部です。
<Layout>
<fullName>Account_Layout</fullName>
<layoutSections>
<style>TwoColumnsTopToBottom</style>
<layoutColumns>
<layoutItems>
<fieldName>Name</fieldName>
</layoutItems>
</layoutColumns>
</layoutSections>
</Layout>
こうしたメタデータを適切に設計・実装することで、ユーザーの利便性を高めることが可能になるのです。
ページレイアウトは、各オブジェクトのページから確認できるユーザーのための画面です。
コードで管理することで、バージョン管理などが適切におこなえます。
メタデータの管理
こちらでは、メタデータの作成や編集、Salesforce開発環境でのメタデータ管理方法などをご覧いただきます。
メタデータのライフサイクル全体を通して、効果的な管理をおこなえるでしょう。
- メタデータの作成と編集
- Salesforceの開発環境とメタデータ
- メタデータのバージョン管理と追跡
メタデータの作成と編集
メタデータの作成と編集は、Salesforceでのカスタムアプリケーション開発において中心的な活動です。
メタデータを作成する方法は、主に以下の2つです。
- 構成設定をおこなう
- メタデータAPIを使用してプログラマティックに生成する
メタデータAPIを使用して新しいカスタムフィールドを作成するには、以下のようなSOAPリクエストを送信する必要があります。
SaveResult[] = metadatabinding.createMetadata(
Metadata[] metadata);
(参考: createMetadata()|メタデータ API 開発者ガイド)
一方、既存のメタデータを編集する場合は、適切な部分のXMLファイルを変更して、更新リクエストを送信します。
ビジネスロジックやデータ構造が変更された際に、素早く対応できます。
Salesforceの開発環境とメタデータ
Salesforceには、メタデータを管理するための複数の開発環境があります。
- Sandboxes
- Developer Edition
- Scratch Orgs
これらが存在するのは、開発やテストなどに使用するためです。
開発者は、これらの環境でメタデータを変更してアプリケーションをカスタマイズ・検証し、本番環境に展開します。
Salesforce DXを用いることで、より能動的にメタデータの管理も可能。
Salesforce CLI(コマンドラインインターフェース)を使用して、以下のようにメタデータを操作できます。
sf project deploy start --target-org <対象の組織エイリアス>
sf project retrieve start
Scratch Orgsとローカル開発環境のメタデータを同期させ、効率的な開発フローを実現します。
著者のおこなうプロジェクトでは、基本的には以下の流れで開発・検証・デプロイをおこないます。
- (開発)本番のコピーSandboxで開発
- (検証①)スクラッチ組織を作成し、デプロイ・動作確認
- (検証②)本番のコピーSandboxへデプロイ・動作確認
- (デプロイ)いざ、本番へデプロイ
各工程で正しく動作を確認したら、次のステップへ進みます。
メタデータのバージョン管理と追跡
メタデータのバージョン管理は、以下を可能にする重要なプロセスです。
- 変更履歴の記録
- 追跡
- 複数人での共同作業
バージョン管理を使用すると、メタデータのどのバージョンがどの環境に存在するのかを一目で識別可能。
Gitなどのバージョン管理システムを使用してメタデータの変更をコミットし、以下のコマンドで履歴を管理できます。
git add .
git commit -m ""Add new custom field""
git push
適切なバージョン管理をおこなうことで、開発における不具合や混乱を防ぎ、チーム間でのコラボレーションを促進します。
gitについて詳しく知りたい方は以下の記事集をどうぞ。
メタデータの実践的活用
こちらでは、カスタムオブジェクトやワークフローなどの具体的なメタデータの管理方法と、ビジネスロジックへの影響について解説します。
メタデータを理解し、その管理方法を学んだら、どのようにして実践的に活用するかが重要です。
- カスタムオブジェクトとフィールドの管理
- ワークフローとプロセスのメタデータ
- メタデータとビジネスロジック
カスタムオブジェクトとフィールドの管理
カスタムオブジェクトとフィールドは、より柔軟なデータモデリングを可能にするため、Salesforceユーザーに不可欠なメタデータの要素です。
実際にカスタムオブジェクトとフィールドを管理するためには、権限設定やオブジェクト間の関連性などの詳細なメタデータ設定が重要。
例えば、以下のメタデータはカスタムフィールドをカスタムオブジェクトに関連付けます。
<CustomField xmlns=""http://soap.sforce.com/2006/04/metadata"">
<fullName>MyCustomObject__c.Custom_Field__c</fullName>
<label>Custom Field Label</label>
<type>Checkbox</type>
<defaultValue>false</defaultValue>
</CustomField>
このようにメタデータを配置し、適切に設定することで、システムのデータを用途に応じて扱えます。
ワークフローとプロセスのメタデータ
ワークフローやプロセスビルダーを通じて、複雑なビジネスロジックを自動化することが可能です。
こうしたツールを利用して作成されるメタデータは、業務の自動化や組織内の決定プロセスをサポートします。
以下は、自動メール通知を送信するワークフローアクションのメタデータの例です。
<WorkflowAction xmlns=""http://soap.sforce.com/2006/04/metadata"">
<fullName>NewCustomerEmail</fullName>
<type>EmailAlert</type>
<emailAlert>
<fullName>New_Customer_Email</fullName>
</emailAlert>
</WorkflowAction>
このメタデータを管理することで、新規顧客に関する情報を迅速に共有し、顧客満足度の向上に繋げられます。
メタデータとビジネスロジック
メタデータは、ビジネスロジックの定義と組み込みにおいて中心的な役割を担います。
具体的には、バリデーションルールや計算されたフィールドといった機能を通じて、ビジネス上の制約や条件を強制するもの。
こうしたメタデータを設定することで、データの完全性を確保し、業務プロセスを標準化できるのです。
たとえば、次のXMLは商談の金額が0以上でなければならないことを定めるバリデーションルールのメタデータです。
<ValidationRule xmlns=\""http://soap.sforce.com/2006/04/metadata\""><fullName>Opportunity.AmountGreaterThanZero</fullName>
<active>true</active>
<errorConditionFormula>Amount <= 0</errorConditionFormula>
<errorMessage>商談の金額は0より大きく設定してください。</errorMessage>
</ValidationRule>
このようなメタデータの利用は、データ入力エラーのマイナス影響を減らし、組織のデータ品質を維持します。
メタデータのデプロイメント
メタデータは、開発から本番までのプロセスを支える重要な要素です。
デプロイメント段階では、メタデータを安全かつ効率良く移行し、環境間で整合性を保つことが要求されます。
- メタデータの移行とデプロイメント
- パッケージ化と配布
- 環境間でのメタデータの整合性
メタデータの移行とデプロイメント
メタデータの移行とデプロイメントは主に、変更セットやメタデータAPIを通じておこなわれます。
これにより、あるSalesforce環境から別の環境へメタデータを安全かつ迅速に移行できるのです。
たとえば、次のコマンドを用いてメタデータAPI経由でのデプロイを実行できます。
sf project deploy start --target-org 組織名
パッケージ化と配布
Salesforceパッケージは、メタデータコンポーネントの集合体であり、配布可能な形式で整理されます。
パッケージを使用すると、カスタムアプリケーションや拡張機能を組織内外との共有が可能です。
パッケージは非管理型と管理型の2種類があり、各々に異なるメリットと用途があります。
以下は管理型パッケージを作成するコマンドの例です。
sfdx force:package:create -n \""MyPackage\"" -t Managed -r ./src
このコマンドは「MyPackage」という名前の管理型パッケージを、ソースディレクトリ「./src」に基づいて作成します。
環境間でのメタデータの整合性
開発、ステージング、本番環境間でのメタデータの整合性を保つことは、エラーやデータ不整合を避けるために欠かせません。
環境間のメタデータ整合性を保つためには、一貫したデプロイメントプロセス、適切なテスト手順の実施、メタデータの監視と追跡が不可欠です。
デプロイメントの前には、次のようにメタデータデプロイメントを検証することが推奨されます。
sf deploy validate --manifest <package.xmlのパス> --target-org <対象の組織>
このコマンドは、本番環境へ移行する前に、ステージング環境でメタデータの変更が正しく機能するかをチェック(確認)します。
参考: sf|Salesforce CLI Command Reference
メタデータのトラブルシューティング
メタデータ管理では、ときに予期せぬエラーや問題に遭遇します。
トラブルシューティングは、これらの問題を診断し、解決するプロセスです。
- 一般的なメタデータ関連のエラー
- メタデータのデバッグと監視
- メタデータのセキュリティ
一般的なメタデータ関連のエラー
メタデータ関連のエラーは、通常、以下などが原因です。
- XML文法の誤り
- 欠落した依存関係
- アクセス権限の不足
例えばフィールド参照エラーは、カスタムフィールドが消去されたにも関わらず、ほかのメタデータが引き続きそのフィールドを参照している場合に発生します。
こうしたエラーに対処するには、メタデータの依存関係を慎重に確認し、適切な更新が必要です。
メタデータのデバッグと監視
メタデータのデバッグと監視は問題の発見と修正には不可欠です。
デプロイメントエラーが起こった場合、Salesforceの「Deployment Status」画面を確認し、問題の詳細な情報を得られます。
また開発者コンソールやSalesforceの監視ツールを使い、システムのパフォーマンスを監視・問題の早期発見に努めることも大切です。
メタデータのセキュリティ
メタデータのセキュリティは、不正なアクセスや変更から保護するために重要です。
プロファイルやロールベースのアクセス管理を実装することにより、ユーザーが適切な権限でのみメタデータを閲覧、変更できるように制限します。
また監査追跡機能を使うと変更履歴を記録できるため、セキュリティをさらに強化できます。
まとめ
当記事では、メタデータの基本から実践的な管理、デプロイメント、トラブルシューティングに至るまで、Salesforceにおけるメタデータの全貌を詳しく解説しました。
メタデータはSalesforceのカスタマイズと開発における中心的存在です。
その適切な理解と管理が、効率的かつセキュアなシステム運用を実現するカギとなります。
それぞれのセクションにおいて具体的な手順やコマンドの例を交えながら説明し、初心者にも理解しやすい内容になるよう努めました。
この情報が、Salesforceを用いた開発やデータ管理の出発点となり、より高いレベルのカスタマイズやシステム統合へと進むための一助となることを願っています。