sObjectとは
sObjectとは
sObjectは、SalesforceのレコードをApexで扱うためのオブジェクトです。
Salesforceのすべてのレコードは、Apexでは基本的にsObjectとして表現されます。
例えば、SalesforceのAccountレコードは、ApexではAccountというsObjectとして扱います。
Account acct = new Account(Name='Acme');
簡単に考えると:
Object → テーブル
Field → カラム
Record → データ(行)
sObject → ApexでRecordを扱うためのオブジェクト
sObjectの作成
newを使用してsObjectを作成します。
Account acct = new Account();
作成時にFieldを設定することもできます。
Account acct = new Account(
Name='Acme',
Phone='03-1234-5678',
NumberOfEmployees=100
);
また、.を使用して後からFieldを設定することもできます。
Account acct = new Account();
acct.Name = 'Acme';
acct.Phone = '03-1234-5678';
acct.NumberOfEmployees = 100;
API名
Apexでは、画面に表示されるラベルではなくAPI名を使用します。
例えば、従業員数を表すFieldのAPI名がNumberOfEmployeesの場合:
acct.NumberOfEmployees = 100;
カスタムObjectやFieldには、基本的に__cが付きます。
Merchandise__c → カスタムObject
Description__c → カスタムField
Items__r → カスタムRelationship
簡単に覚えると:
__c → Custom
__r → Relationship
汎用sObject
Objectの種類を特定しない場合は、sObject型を使用できます。
sObject sobj1 = new Account(Name='Trailhead');
sObject sobj2 = new Book__c(Name='Workbook 1');
AccountやBook__cなど、異なる種類のレコードをsObject型として扱うことができます。
キャスト
汎用sObjectを特定のsObject型に変換できます。
Account acct = (Account)myGenericSObject;
Accountにキャストすると、.を使用してFieldにアクセスできます。
String name = acct.Name;
String phone = acct.Phone;
SOQL・DMLとの関係
sObject → Apexでレコードを扱う
SOQL → Salesforceからレコードを取得する
DML → Salesforceにレコードを登録・更新・削除する
例えば:
Account acct = new Account(Name='Acme');
insert acct;
new Account()でsObjectを作成し、insertでSalesforceにレコードとして保存します。
まとめ
- sObject:SalesforceのレコードをApexで扱うためのオブジェクト
new:新しいsObjectを作成.:Fieldの値を設定・取得- API名:ApexからObjectやFieldを参照するときに使用
__c:カスタムObject・Field__r:カスタムRelationship- キャスト:汎用sObjectを
Accountなどの特定の型に変換 - ポイント:SalesforceのRecordとApexをつなぐ基本的なデータ型

