2021/06/28

Salesforceのapexの「sobject」|sobjectの作成・利用方法

 
  

Salesforceのapexの「sobject」

SalesforceのapexはSalesforceの標準カスタマイズ機能ではカバー出来ない機能を拡張させる為に使用するオブジェクト指向が強めのプログラミング言語です。 特徴としては、強く型付けされているので不正コードを型によって探し出し易い事があります。更にマルチテナント型でもあるのでソフトウェアやデータを複数のお客様とシェアしつつも、回避コードが起こらない様にして共有リソースの占有を防げます。 Salesforceのapexを使う事でビジネスツールやwebコンテンツ等を作る事が出来ます。なお、変数や式、ループ等の構文がJavaの構文と似ているので、特にJava学習者は扱いやすい言語になっています。 Salesforceのapexのみならず、プログラミングでは変数を宣言する際に必要な「データ型」があり、数値型や文字列型等があります。そのうちの1つに「sobject」があるので、今回は徹底的に解説していきます。

sobjectとは

sobjectはapexのデータ型の1つで、まとまったデータが入っている変数を何個か格納出来ます。これにより、何らかの情報の取っ掛かり(会社名など)から検索する事で取引先番号等の項目が芋づる式に出てくるのですが、これら項目の事を「プロパティ」と呼びます。 各プロパティにもデータ型が複数存在します。従って、オブジェクトの名前項目及びsobjectのプロパティが共に文字列のデータ型の場合、名前項目をmyAcct、プロパティをNameに設定します。 値を設定する際にはデータ型も1種類に統一する事に注意して下さい。具体的には以下のコードの様に、アカウント番号などの項目を設定します。
Account myAcct = new Account();
myAcct.Name = 'The Trout Association';
myAcct.Phone= '180-2859';
myAcct.AccountNumber = '442087';

sobjectの作成・利用方法

sobjectには汎用タイプと特定タイプがありそれぞれ使い方が若干異なります。しかし基本的にはsobject変数及びインスタンスを作成し、そこに各項目を格納していくという使い方です。ここでは基本的な使い方と汎用タイプ、特定タイプの使用手法について見ていきましょう。

sobjectの型の使い方

sobjectでは基本的にはAccount、Contact、Lead、Oppotunityなどの型名が使われます。まずは実際の使い方を見ていきますが、その際型(今回はAccountがメイン)の使い方に注目して下さい。
Account acct = new Account();
Account acct = new Account(Name='oil company', Phone='(284)337-2029', NumberOfEmployees=5000);
Account acct = new Account();
acct.Name = 'oil company';
acct.Phone = '(284)337-2029';
acct.NumberOfEmployees = 5000;

上記のコードから分かる事

電話番号や従業員数等の項目を設定する前に、sobject変数を宣言する必要があります。1行目から4行目では、Account型の変数を設定し、Accountのインスタンスであるacctを作成しています。その後であれば、5〜8行目の様に各項目の情報をsobject 変数に設定する事が出来ます。 もう1つ着目すべきポイントとして、演算子としてnewを使っている事です。newはインスタンスを作る際に必要な演算子であり、メモリー領域の確保または初期化する役割があります。 今回の場合はコードが短い上に、1行目から変数Accountの演算子として使用している為、データを初期化させる為に用いました。

その他のポイント

カスタムオブジェクトを搭載していて、その名前が”mycustomobject”だった場合、API名には”mycustomobject__c”と言った様に末尾に__cサフィックスを付けるのがルールになっています。 ただし、カスタム項目ではなく「カスタムリレーション」項目の場合は末尾が__rになるので気をつけて下さい。

汎用タイプの使い方

使用するデータ型が標準オブジェクトなのかカスタムオブジェクトなのか分からない場合に使いましょう。 汎用タイプとしてsobject変数を宣言した場合でも標準/カスタム問わずレコード内の情報を反映させられます。お客様とカスタムオブジェクトの両方に汎用sobject 変数を反映させるには以下の様なコードを書く必要があります。
sObject sobj1 = new Account(Name='Loadway');
sObject sobj2 = new Book__c(Name='Python 1');

特定タイプの使い方

Book__c等のカスタムオブジェクトを使用したい時に特定タイプのsobject 変数を使います。また、ドット表記でも項目上の情報を検索出来る様にしたい時は、汎用タイプから特定タイプのsobject 変数に変更します。実装する場合には、以下の様なコードを作成します。
//汎用sobject をアカウントへ投入する
Account acct = (Account)myGenericSObject;
// ドット表記でもアクセス出来る様になった
String name = acct.Name;
String phone = acct.Phone;

Salesforceのapexのsobjectを使ってみよう

この記事を読んで、Salesforceのapexのデータ型の1つである”sobject “の使い方を大まかに把握する事ができれば十分です。とても扱いやすい一方で、汎用タイプと特定タイプとで色々と遊べるので、是非積極的に使ってみてください。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】