本記事では、Salesforce(セールスフォース)の導入プロジェクトの設計工程で実施するデータモデル(オブジェクト設計)について説明します。
一般的なシステム開発では、業務プロセスをベースに概念データモデルを設計し、そこからハイレベルのエンティティ抽出を行う流れとなります。
概念データモデル
業務プロセスをモデルとして、まずは、以下のような概念データモデルを作成し、ハイレベルのエンティティを抽出していきます。
最初から細かくなりすぎないように注意してください。全体像が俯瞰できるようなものを作成することを目指します。
定義するべき情報は以下となります。
- エンティティ(Salesforceでは最終的にオブジェクトとして定義される)
- 識別子:エンティティのキーとなる項目を定義(上記では、顧客名や顧客コード)
- リレーション:エンティティ間の関係性を定義
- オプショナリティは、リレーションの元と先の関係性を示し、( | )は必須で(〇)は任意となります。上記の例では、顧客は必ず必要(必須)で、担当者は任意の関係となるため、担当者のいない顧客データが存在することになります。
- カーディナリティは、エンティティ間の多重度(「1:1」、「1:N」、「N:N」)を示す。上記の例では、1顧客に対して、複数の担当者紐づく( 1:N )関係となります。
今回の趣旨はオブジェクト設計のため、概念データモデルの詳細な説明は別の記事で説明します。
まずは、オブジェクト設計までの大まかな流れを理解していただければ構いません。
オブジェクト設計
では、オブジェクト設計について説明していきます。
まず、Salesforceでは、データベースのテーブルのことをオブジェクトといいます。オブジェクトというと、別のものを思い浮かべるかたもいると思いますので、お客様にもプロジェクト開始時にSalesforceの用語について説明しておくとよいでしょう。
そのほかにも、Salesforceやクラウドの基本的なアーキテクチャなども含めて説明しておくとよいでしょう。
以下の記事では、説明用にそのまま利用できる資料を提供しているので、よろしければご利用ください。
-
参考ユーザ説明資料
ユーザ説明用資料に関する記事一覧 Salesforce導入プロジェクトで必要となるユーザ説明資料に関する記事や資料(スライド)をご紹介します。 1.Salesforceの基礎に関する説明資料 &nbs ...
続きを見る
オブジェクト設計書の作成
では、概念データモデルやER図が出来上がったら、続いてはオブジェクト(テーブル)の基本項目について検討していきます。
最初に以下のようなオブジェクト一覧を作成しましょう。
全体のオブジェクト数の把握や、標準オブジェクト、カスタムオブジェクトなどの識別や用途を整理します。
標準オブジェクトは、Salesforceの標準機能(例えば取引先の管理や商談の管理機能)で利用するあらかじめ用意されたオブジェクトを意味します。
カスタムオブジェクトは、新しく自由に定義できるオブジェクトとなります。
オブジェクト定義書
続いて、オブジェクト定義書を作成します。オブジェクト定義書では以下の事項を記述します。
- オブジェクト名、API参照名(オブジェクト一覧より転記)
- 項目の表示ラベル(項目名)
- API参照名(項目のAPI参照名)
- データ型(テキスト、数値、選択リストなど)
- 桁数
- 項目タイプ(標準項目、カスタム項目)
- 必須(〇/×)
- 選択リスト値(項目定義が選択リストの場合の、選択リスト値を定義)
- 数式(数式項目の場合に、数式の内容を定義)
- 外部ID(外部データ連携を行う場合に、キーとなる項目の場合は外部IDとして定義しておく)
- 履歴管理:項目の値が変更された場合に項目変更履歴として残したい項目の場合は管理対象とする必要があります。
- ヘルプ内容:Salesforceでは、項目の入力補助としてヘルプメッセージの表示が可能で、表示する内容を定義できます。
設計担当者は、これらの項目を検討して、オブジェクト定義書を作成していきます。
データ型(補足)
データ型に関する補足事項はいくつかありますが、重要なものだけ紹介しておきます。
- 選択リスト
選択リストの値については、オブジェクト毎に個別で定義するものと、グローバル選択リスト値を利用する場合と2種類あります。
例えば、お客様の業種の選択リストを顧客管理オブジェクトとアンケート管理オブジェクトで利用するような場合には、それぞれのオブジェクトで「業種」という選択リストを作成するとメンテナンスが大変になるため、グローバル選択リストを使って、共通の選択リスト値を定義しておき、それぞれのオブジェクトで利用するというやり方が一般的です。
- 外部ID
項目を外部IDとして定義すると、Salesforceのデータ操作言語であるSalesforce Object Query Language (SOQL)で、データの更新を行う際に更新キーとして指定することができるようになります。
またAPIを利用して外部データ連携する際にも同様に更新キーとして指定することができるようになります。
Salesforceでは、INSERTとUPDATEを合わせたUPSERTという処理があり、UPSERTのキーで指定すると、外部IDが一致する場合は更新(UPDATE)、一致しない場合は新規登録(INSERT)を行うことができます。
オブジェクト設計の注意事項
先ほど説明した通り、オブジェクト設計を行うにあたってはいくつか注意するべきポイントがあります。
注意ポイント
- Salesforceでは、購入するライセンスにより利用可能な標準オブジェクトや作成可能なカスタムオブジェクト数が異なるため注意が必要
- カスタムオブジェクトに対して、追加可能な項目数についても上限があります。
- オブジェクトのAPI参照名については、定義可能な文字数の上限があります。
- これらの上限やライセンスの情報は変更になることがありますので、最新の情報を必ずSalesforceのヘルプサイトで確認するようにしましょう。
Salesforce Summer '21 リリースノートでは、Apexのオブジェクト名が最大255文字まで拡張されていました。
以下、https://help.salesforce.com/のサイトへのリンクとなります。
これらのポイントを理解してから設計に着手するようにしましょう。
オブジェクト定義書の自動生成
Salesforce開発プロジェクトでは、要件定義フェーズでSalesforceの組織(開発用Sandbox)を使って、プロトタイプを作成して進めるというやり方が主流だと思います。
その場合に、オブジェクト設計をしてオブジェクト定義書を作成しながら作業をすると作業効率が悪くなります。
直接SalesforceのUI上からオブジェクトや項目を作成して、お客様と検討して、また修正してという繰り返しの作業になるため、確定した内容で設計書を更新するほうがよいという場合があります。
その場合には、Xgeek.netさんが提供しているオブジェクト定義書自動生成ツール(DevTools)を利用するとよいでしょう。
DevToolsのインストール、利用手順については以下の記事を参考にしてください。
-
参考Salesforce DevToolsを使ってオブジェクト設計書を自動生成(xgeek.net)
今回は、xgeek.netさんが提供する無料ツールであるSalesforce DevToolsをご紹介していきたいと思います。 xgeek.netでは、今回ご紹介するSalesforce DevToo ...
続きを見る
まとめ
少し長くなりましたが、オブジェクト設計に関する記事は以上となります。