はじめに
これまで自分よりSalesforce経験が短い方のサポートを4名行ってきました。
皆さんが戸惑うSalesforceのポイントが共通しているなあと思ったので、それを記事にしてキャッチアップの一助になればいいかなと記事にしました。
噛み砕いた用語解説+αくらいの内容になっています。
サンドボックス
開発環境のこと。ローカルではなく、Salesforceのクラウド上に構築される。
サンドボックス同士での干渉は起こらず、独立した環境として開発に集中できる。
容量・本番環境の再現具合ごとに、いくつか種類がある。
DB
SalesforceではDB関連の用語が以下のようになっている。
-
テーブル -> オブジェクト
-
カラム -> 項目
オブジェクトには主に以下の2種類がある。
-
標準オブジェクト:Salesforceに初めから存在するオブジェクト
-
カスタムオブジェクト:自分で追加したオブジェクト。オブジェクト名の末尾に__cと付く
ガバナ制限
リソース制限のこと。制限を超えるとエラーが起きて例外が発生する。
クエリの発行回数・実行時間・ヒープサイズなど、制限の種類は様々。(ガバナ制限の種類)
回避方法はこちらにまとめてあります。
数式項目
項目にロジックをもたせたもの。
保存した値を少し加工したい時などに便利。
例)
-
項目A:メアドが保存されるテキスト項目
-
項目B(数式項目):項目Aのメアドのうち、@以降(=ドメイン)だけを切り取ったテキストが自動で入る
DBのリレーション
よく使うのは以下のリレーション。
-
主従関係
-
強いリレーション
-
以下のようなことができる
-
カスケード削除(親レコードが削除されたら子レコードも消える)
-
紐づく子レコード数の集計結果を、親レコードの項目に保存する
-
-
-
参照関係
-
弱いリレーション
- 「主従関係」のようなカスケード削除や子レコードの集計などはできない
-
ただリレーションが欲しいだけならこちらを使う
- 主従関係は設定できる数に限りがあったり、カスケード削除など考慮事項も増えるので
-
カスタム表示ラベル
管理画面からグローバル定数を作れる機能。
定数の値は文字列になる。
以前はHTMLタグなどを埋め込めたが、今はできない。
例)
以下のラベルを登録。
- 名前:TEST_LABEL
- 値:テストラベル
以下のように書くと、testLabelに「テストラベル」が代入される。
String testLabel = System.Label. TEST_LABEL
カスタム表示ラベルの追加方法
-
管理画面から追加する方法
- 設定→カスタム表示ラベルから追加
-
コードから追加する方法
-
force-app/main/default/labels/CustomLabels.labels-meta.xml
に追加
-
カスタム設定
カスタム表示ラベルより高度なグローバル定数を作れる方法。
コレクションの形式にしたり、オブジェクトの形式にしたりできる。
以下のメリットがある
-
管理画面上から変更できるので、プログラムのリリースが不要
-
セレクトしてもSOQL発行数にはカウントされず、ガバナ制限を回避できる
トリガ
レコードの保存・削除があった時に、自動で動く処理を定義するファイル。
他のコントローラと同じくApexで記述する。
例)
商品オブジェクトのレコードが新規保存されたときは、対応する在庫オブジェクトのレコードも自動で作成・保存する。
パッと見使い勝手がよく、保存時のルールを強要できるので、レコードの一貫性も保てる。
ただ以下の特性もあるので、注意は必要
-
運用していくうちに「この画面の時はトリガを動かしたくない」みたいな要件が出てきて、どんどん複雑になっていく
- トリガに任せることが増えてきて、責務が重くなりすぎる
-
実際に動くプログラムと、トリガのプログラムが分離されているのでコードが読みづらい
- 保存処理が書かれているのが画面でも、その後動くトリガを探して、関係性に注意しながら直さなくてはいけない