1. sObjectの概念
sObject は Salesforce のオブジェクト(取引先、取引先責任者、商談など)を総称する言葉
これらを扱うためのデータ型が sObject型
オブジェクト | Apexでの型 | 説明 |
---|---|---|
取引先 | Account |
標準オブジェクト |
取引先責任者 | Contact |
標準オブジェクト |
カスタムオブジェクト | CustomObject__c |
名前の末尾が __c
|
✅ sObject変数の作成方法
sObject(例えば取引先)を扱うには、以下の2パターンで値を設定する。
//1. コンストラクタで項目を指定
Account acc = new Account(Name='Acme');
//2. ドット表記で後から項目を指定
Account acct = new Account();
acct.Name = 'Acme';
2. 汎用sObject データ型
オブジェクトを固定せずに、sObject という基盤型を使うと、どんな Salesforce オブジェクトでも、1つの変数で扱える。
✅ 特徴
• どのオブジェクトかを実行時に決めたいときに便利
• 項目は .put() や .get() でアクセス
🔹 put() / get() 例
// 汎用 sObject 型で取引先 (Account) を作成
sObject myAccount = new Account();
// 項目を .put() で設定
myAccount.put('Name', 'サンプル株式会社');
myAccount.put('Industry', 'IT');
// 項目を .get() で取得
String nameValue = (String)myAccount.get('Name');
String industryValue = (String)myAccount.get('Industry');
// 結果をログに出力
System.debug('Name: ' + nameValue); // => サンプル株式会社
System.debug('Industry: ' + industryValue); // => IT
⚠️ 特定の sObject 型と汎用型の違い
特定の sObject 型 で宣言された変数は、同じデータ型のレコードしか参照できない
3. DML操作まとめ 〜 insert / update / delete / upsert
DML (Data Manipulation Language) とは、Apex でレコードを 登録・更新・削除 する機能
🔹 基本のDML操作
// insert:レコード作成
Account acc = new Account(Name='Acme Inc.');
insert acc;
// update:レコード更新
acc.Name = 'Acme Japan';
update acc;
// delete:レコード削除
acc.Name = 'Acme Japan';
update acc;
// delete:レコード削除
delete acc;
// upsert:存在すれば更新、なければ作成
Account acc = new Account(External_Id__c='A-1001', Name='New Name');
upsert acc External_Id__c;
⚠️ DML 実行時のガバナ制限
Apex にはマルチテナント環境のため、DMLの回数や処理件数に上限がある!
項目 | 制限内容 |
---|---|
DML ステートメント数 | 1トランザクション内で最大 150 回 |
DML 処理件数 | 1回の DML で最大 10,000 件 |
🔑 ガバナ制限対策のポイント
🔹 バルク処理(一括 DMLの使用)
ループ内で insert や update を繰り返すのではなく、List に溜めて一括DMLを実行
❌ 悪い例(ループで毎回 DML)
for (Integer i = 0; i < 100; i++) {
Account acc = new Account(Name = 'Name-' + i);
insert acc; // ← DML を100回実行 → 上限超えの原因!
}
✅ 良い例(一括 DML)
List<Account> accList = new List<Account>();
for (Integer i = 0; i < 100; i++) {
accList.add(new Account(Name = 'Name-' + i));
}
// 1回の insert でまとめて登録!
insert accList;
4. 重要ポイントまとめ
項目 | 内容 |
---|---|
sObject とは? | Salesforce のあらゆるレコードを表す基盤のデータ型 |
特定の sObject 型 | 例:Account Contact CustomObject__c 型安全で項目にドットでアクセスできる |
汎用 sObject 型 | オブジェクトを動的に扱いたいときに使うput() / get() で項目を操作 |
DML とは? | データの登録(insert )、更新(update )、削除(delete )、Upsert(insert + update )を行う処理 |
ガバナ制限 | 大量データをまとめて効率的に処理する全体設計 |
📚 参考資料
Salesforceのオブジェクト型sObjectの基礎
Apexの構文やベストプラクティスを網羅した公式ガイド
Apexでのデータ操作(DML)