Skip to main content
From 16:00 UTC on January 17, 2026, to 20:00 UTC on January 17, 2026, we will perform planned maintenance on the Trailhead, myTrailhead, and Trailblazer Community sites. During the maintenance, these sites will be unavailable, and users won't be able to access them. Please plan your activities around this required maintenance.

sObject を使用する

学習の目的

この単元を完了すると、次のことができるようになります。

  • sObject レコードと Salesforce レコード間のリレーションを説明する。
  • 特定の sObject 変数を作成して使用する。
  • 汎用 sObject を特定の sObject にキャストする。

sObject を使用する

Apex はデータベースと緊密に統合されているため、Salesforce レコードとその項目に Apex から直接アクセスできます。Salesforce のすべてのレコードは、Apex の sObject としてネイティブに表現されます。たとえば、Acme 取引先レコードは Apex の Account sObject に対応します。ユーザーインターフェースで表示および変更できる Acme レコードの項目は、sObject でも直接読み込みや変更ができます。

次の表は、Acme 取引先サンプルレコードのいくつかの入力済み項目を示します。Account sObject は、取引先レコードの抽象化であり、取引先項目情報をメモリ内にオブジェクトとして保持します。

表 1.取得されたレコードの Account sObject

取引先項目

Id

001D000000JlfXe

名前

Acme

電話

(415) 555-1212

NumberOfEmployees

100

各 Salesforce レコードは、Salesforce に挿入される前は sObject として表されます。同様に、Salesforce から保持されているレコードが取得されると、sObject 変数として保存されます。

Salesforce の標準およびカスタムオブジェクトレコードは、Apex ではその sObject 型に対応付けられます。Apex では、次のような標準オブジェクトの sObject 型名がよく利用されます。

  • 取引先
  • 取引先責任者
  • リード
  • 商談

組織にカスタムオブジェクトを追加している場合、Apex ではカスタムオブジェクトの API 参照名を使用します。たとえば、Merchandise というカスタムオブジェクトは Apex の Merchandise__c sObject に対応します。

sObject 変数を作成する

sObject を作成するには、変数を宣言して、sObject インスタンスを割り当てる必要があります。変数のデータ型は sObject 型です。

次の例では、Acme という名前で Account 型の sObject を作成して、acct 変数に割り当てます。

Account acct = new Account(Name='Acme');

sObject と項目名

Apex では、一意の API 参照名を使用して、標準またはカスタムの sObject とその項目を参照します。

オブジェクトと項目の API 参照名は、その表示ラベルとは異なる場合があります。たとえば、Employees 項目の表示ラベルは「Employees」で、取引先レコードページに「Employees (従業員数)」と表示されますが、API 参照名は NumberOfEmployees です。Apex でこの項目にアクセスするには、項目の API 参照名である NumberOfEmployees を使用する必要があります。

カスタムオブジェクトとカスタム項目の API 参照名に使用されるルールの要点を次に示します。

カスタムオブジェクトとカスタム項目の場合、API 参照名は常に __c サフィックスで終わります。カスタムリレーション項目の場合、API 参照名は __r サフィックスで終わります。次に例を示します。

  • カスタムオブジェクトの表示ラベルが Merchandise の場合、API 参照名は Merchandise__c になります。
  • カスタム項目の表示ラベルが Description の場合、API 参照名は Description__c になります。
  • カスタムリレーション項目の表示ラベルが Items の場合、API 参照名は Items__r になります。

さらに、API 参照名では、表示ラベルのスペースがアンダースコアに置き換えられます。たとえば、カスタム項目名が Employee Seniority の場合、API 参照名は Employee_Seniority__c になります。

オブジェクトと項目名を確認する

Apex で使用する標準オブジェクトとその項目を確認するには、『Object Reference for Salesforce Platform (Salesforce Platform のオブジェクトリファレンス)』を参照してください。

標準オブジェクトとカスタムオブジェクトのどちらの場合も、組織のオブジェクトおよび項目の API 参照名を検索します。[設定] から、[ホーム] タブの右側にある [オブジェクトマネージャー] タブをクリックして、オブジェクト名をクリックします。

sObject の作成と項目の追加を行う

Salesforce レコードを挿入するには、事前にレコードをメモリ内に sObject として作成しておく必要があります。ほかのオブジェクトと同様に、sObject は new 演算子を使用して作成されます。

Account acct = new Account();

API オブジェクト名が Apex の sObject 変数のデータ型になります。この例では、Account が、acct 変数のデータ型です。

acct 変数で参照される取引先は、その項目がまだ入力されていないため空です。項目を追加するには、コンストラクターを使用する方法と、ドット表記を使用する方法の 2 つがあります。

項目を最もすばやく追加できるのは、コンストラクター内部に名前-値ペアとして指定する方法です。たとえば、次のステートメントは新規取引先 sObject を作成し、その名前項目に文字列値を入力します。

Account acct = new Account(Name='Acme');

取引先の必須項目は名前項目のみです。つまり、新規レコードを挿入するには、名前項目に値が入力されている必要があります。一方、新規レコードのほかの項目にも入力できます。次の例では、電話番号と従業員数も追加しています。

Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);

または、ドット表記を使用して項目を sObject に追加できます。次の例は、前の例と同等ですが、コードが数行多くなっています。

Account acct = new Account();
acct.Name = 'Acme';
acct.Phone = '(415)555-1212';
acct.NumberOfEmployees = 100;

汎用 sObject データ型を操作する

通常、sObject を操作する場合には、標準オブジェクトの Account やカスタムオブジェクトの Book__c など、特定の sObject データ型を使用します。ただし、メソッドで処理する sObject のデータ型が不明な場合は、汎用 sObject データ型を使用できます。

汎用 sObject データ型で宣言された変数は、標準オブジェクトレコードかカスタムオブジェクトレコードを問わず、任意の Salesforce レコードを参照できます。

汎用 sObject 変数は任意の Salesforce レコードを参照可能

次の例は、取引先やカスタムオブジェクト (Book__c) などの Salesforce オブジェクトを汎用 sObject 変数に割り当てられるようにする方法を示します。

sObject sobj1 = new Account(Name='Trailhead');
sObject sobj2 = new Book__c(Name='Workbook 1');

一方、特定の sObject データ型で宣言される変数が参照できるのは、同じデータ型の Salesforce レコードのみです。

特定の sObject 変数は同じデータ型の Salesforce レコードのみを参照可能

汎用 sObject を特定の sObject 型にキャストする

汎用 sObject を処理するとき、sObject 変数から特定の sObject 型へのキャストが必要になる場合があります。これを行う利点の 1 つは、ドット表記を使用して項目にアクセスできることです。これは汎用 sObject ではできません。sObject は、特定の sObject 型すべての親データ型であるため、汎用 sObject を特定の sObject にキャストできます。次の例は、汎用 sObject を Account にキャストする方法を示します。

// Cast a generic sObject to an Account
Account acct = (Account)myGenericSObject;
// Now, you can use the dot notation to access fields on Account
String name = acct.Name;
String phone = acct.Phone;

もうひとこと...

汎用 sObject の項目にアクセスするには、put() メソッドと get() メソッドを使用する必要があります。

この単元では、sObject の概要とその使用方法を学習しました。ただし、sObject を作成しても、データベースにレコードとして保持されません。sObject をレコードとして保存し、そのレコードに別の処理を行うには、Data Manipulation Language (DML) を使用します。レコードを取得するには、Salesforce Object Query Language (SOQL) を使用します。DML と SOQL については、後の単元で学習します。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む