ソフトウェアアプリケーション開発者を目指していますか? Force.comプラットフォームで独自のアプリケーションを構築しますか?これらの質問に対する答えが「はい」の場合は、Salesforce開発者になることを検討する必要があります。
私の以前のブログで、私はについて議論しました 、 Salesforce認定 また、 カスタムアプリケーションを構築する Salesforceで利用可能な宣言型オプションを使用します。このブログでは、Salesforceでアプリケーションを開発するために利用できるプログラムオプションについて説明します。
MVCアーキテクチャ
VisualforceとApexを使用してアプリケーションを構築する前に、まずSalesforceModel-View-Controllerアーキテクチャについて説明します。以下は、SalesforceModel-View-ControllerアーキテクチャとさまざまなSalesforceコンポーネントの概要を示す図です。
モデル: モデルは、Salesforceデータオブジェクト、フィールド、および関係です。これは、標準(アカウント、商談など)とカスタムオブジェクト(作成したオブジェクト)で構成されます。
見る: ビューは、データの表示、つまりユーザーインターフェイスを表します。 Salesforceでは、ビューはvisualforceページ、コンポーネント、ページレイアウト、およびタブで構成されます。
コントローラ: コントローラは、実際のアプリケーションロジックの構成要素です。ユーザーがvisualforceを操作するときはいつでも、アクションを実行できます。
Salesforceの動作
Salesforce開発者になるには、まずSalesforceアプリケーションがどのように機能するかを知る必要があります。以下は画像です これにより、Salesforceの実際の全体像がわかります。クライアントまたはユーザーは、Salesforceアプリケーションに情報を要求または提供します。これは通常、Visualforceを使用して行われます。この情報は、Apexで記述されたアプリケーションロジックレイヤーに渡されます。情報に応じて、データはデータベースに挿入されるか、データベースから削除されます。 Salesforceには、Webサービスを使用してアプリケーションロジックに直接アクセスするオプションもあります。
Salesforce開発者は、宣言型またはプログラム型のオプションを使用して開発に取り組むことができます。以下は、ユーザーインターフェイス、ビジネスロジック、およびデータモデルレイヤーのそれぞれで利用可能な宣言型アプローチとプログラム型アプローチの両方の詳細を提供する画像です。ユーザーインターフェイスを構築するには、ページレイアウトとレコードタイプを使用する宣言型アプローチを使用するか、visualforceページやコンポーネントなどのプログラム的アプローチを使用できます。一般に、プログラムによるアプローチは、宣言型のアプローチを使用して必要なユーザーインターフェイスを実現できない場合にのみ使用する必要があります。アプリケーションのビジネスロジックレイヤーを開発するには、ワークフロー、検証ルール、承認プロセスのSalesforce宣言型オプションを使用するか、トリガー、コントローラー、クラスなどのプログラムによるアプローチを使用します。データモデルにアクセスするには、オブジェクト、フィールド、および関係を使用した宣言型アプローチを使用できます。メタデータAPI、REST API、バルクAPIを使用して、プログラムでデータモデルにアクセスすることもできます。
Salesforceアプリケーションがどのように機能するか、Salesforceでの開発に使用されるMVCアーキテクチャ、およびSalesforce開発者が利用できる2つの異なるアプローチを見てきました。それでは、VisualforceとApexについて説明します。
Visualforce
Salesforceプラットフォームでアプリケーションを構築するには、ユーザーインターフェイスを開発してアプリケーションロジックを作成する方法を知っている必要があります。 Salesforce開発者は、Visualforceを使用してユーザーインターフェイスを開発できます。 Visualforceは、Force.comプラットフォームのユーザーインターフェイスフレームワークです。 javascript Angular-JSフレームワークを使用してWebサイトのユーザーインターフェイスを構築する方法と同様に、Visualforceを使用してSalesforceアプリケーションのユーザーインターフェイスを設計および構築できます。
Javaでのオーバーライドとオーバーロード
カスタムページを作成する必要があるときはいつでも、visualforceを使用できます。 Visualforceを使用できる状況の例は次のとおりです。
- メールテンプレートを作成するには
- モバイルユーザーインターフェースを開発するには
- Salesforceに保存されているデータのPDFを生成するには
- それらを標準のページレイアウトに埋め込むには
- 標準のSalesforceページを上書きするには
- アプリケーションのカスタムタブを開発するには
Visualforceページは、次の2つの主要な要素で構成されています。
- Visualforceマークアップ–visualforceマークアップには、visualforceタグ、HTML、JavaScript、またはその他のWeb対応コードが含まれます。
- Visualforceコントローラー– Visualforceコントローラーには、ユーザーがコンポーネントを操作したときに何が起こるかを指定する命令が含まれています。 Visualforceコントローラーは、Apexプログラミング言語を使用して記述されています。
以下のさまざまなコンポーネントとともに、単純なVisualforceページコードを確認できます。
以下に、国とその通貨値を表示するための簡単なvisualforceページを作成する手順を示します。
ステップ1: [設定]から、[クイック検索]ボックスに「Visualforceページ」と入力し、[Visualforceページ]を選択して[新規]をクリックします。
ステップ2: エディタで次のコードを追加して、国とその通貨の値を表示します。
頂点
ユーザーインターフェイスの開発が完了したら、Salesforce開発者として、アプリケーションにカスタムロジックを追加する方法を知る必要があります。 Apexプログラミング言語を使用して、コントローラーコードを記述し、アプリケーションにカスタムロジックを追加できます。 Apexは、Force.comプラットフォームでフローおよびトランザクション制御ステートメントを実行できるようにするオブジェクト指向プログラミング言語です。以前にJavaプログラミング言語を使用したことがある場合は、Apexを簡単に学ぶことができます。 Apex構文はJavaの構文と70%類似しています。
アプリケーションにカスタムロジックを追加するときはいつでも、Apexを使用できます。 Apexを使用できる状況のいくつかの例は次のとおりです。
- アプリケーションにWebおよび電子メールサービスを追加する場合
- 複雑なビジネスプロセスを実行したい場合
- 複雑な検証ルールをアプリケーションに追加する場合
- レコードの保存などの操作にカスタムロジックを追加する場合
以下は、Apexコードのスクリーンショットと、ループステートメント、制御フローステートメント、SOQLクエリなどのさまざまなコンポーネントです。
Apexとは何か、いつ使用するかを理解したので、Apexプログラミングについて詳しく見ていきましょう。
Apexでのプログラミング
上記の概念を理解している場合は、Salesforce開発者になるための道のりの途中です。このセクションでは、さまざまなデータ型と変数、データベースからデータを取得するさまざまな方法、およびクラスとメソッドの記述方法に関する情報を提供することで、Apexについて詳しく説明します。
データ型と変数
Salesforceは、4つの異なるデータ型と変数を提供します。次の表に、4つのデータ型のそれぞれに関する情報を示します。
データ型と変数 | 説明 | 例 |
プリミティブ | Salesforceのプリミティブデータ型には、ブール、日付、整数、オブジェクト、文字列、および時刻が含まれます。 | ブールisSunny = true 整数I = 1 String myString =“ Hello World” |
sObjects | sObjectは、データベースに保存できる任意のオブジェクトを指します。 | アカウントa = new Account() MyCustomObj__c obj = new MyCustomObj__c() |
コレクション | Apexには、次の種類のコレクションがあります。
| リストvar_lst = new List() セットsetOne = new Set() マップvar_map = new Map() |
列挙型 | 列挙型は、有限の識別子のセットをとる値を持つ抽象データ型です。 | パブリック列挙型シーズン{冬、春、夏、秋} |
SOQLとSOSL
ソフトウェアアプリケーションを開発するには、データベースにデータを挿入したり、データベースからデータを取得したりする方法を知っている必要があります。 Salesforceでは、SOQLおよびSOSLを使用してデータベースからデータを取得できます。 Salesforce開発者になりたい場合は、これらのクエリ言語の両方を知っている必要があります。これらの言語の詳細な説明を以下に示します。
- SOQLは、Salesforce Object QueryLanguageの略です。 SOQLステートメントを使用すると、データベースからsObjectのリスト、単一のsObject、またはcountメソッドの整数としてデータを取得できます。 SOQLは、SELECTSOQLクエリと同等であると考えることができます。以下にSOQLクエリの例を示します。
リストaccList = [SELECT Id、Name FROM Account WHERE Name =” YourName”]
- SOSLはSalesforceObject SearchLanguageの略です。 SOSLステートメントを使用して、sObjectのリストを取得できます。各リストには、特定のsObjectタイプの検索結果が含まれています。 SOSLは、データベース検索クエリと同等であると考えることができます。以下にSOSLクエリの例を示します。
リスト
searchList = [アカウント(ID、名前)、連絡先、商談、リードを返すすべてのフィールドで「マップ*」を検索]
データが存在するオブジェクトがわかっている場合はSOQLを使用でき、データが存在するオブジェクトの名前がわからない場合はSOSLを使用できます。
クラスとメソッド
他のすべてのオブジェクト指向プログラミング言語と同様に、Apexを使用してクラスとメソッドを開発できます。クラスは、個々のオブジェクトを作成して使用するための青写真と考えることができます。メソッドは、データに作用して値を返すサブプログラムと考えることができます。以下にクラスとメソッドを作成するための構文を提供しました。
ここで、Apexにクラスとメソッドを追加する方法を説明します。
ステップ1: セットアップから、QuickFindボックスにApex Classesと入力し、Apex Classesを選択して、Newをクリックします。
ステップ2: エディタで、次のクラス定義を追加します。
パブリッククラスHelloWorld {
}
ステップ3: クラスの開始括弧と終了括弧の間にメソッド定義を追加します。
Public static void helloWorldMethod(Country__c [] countrys){
For(Country__c country:countries){
country.currency_value__c * = 1.5
}
}
ステップ4: [保存]をクリックすると、クラス全体が次のようになります。
パブリッククラスHelloWorld {
Public static void helloWorldMethod(Country__c [] countrys){
For(Country__c country:countries){
country.currency_value__c * = 1.5
}
}
上記の構文と例を使用して、Salesforceアプリケーション用の独自のクラスとメソッドを開発できます。 Salesforce開発者になるには、クラスとメソッドを作成するだけでは不十分です。次のいくつかのセクションでは、Salesforceプラットフォームでのアプリケーションの開発をシンプルかつ簡単にするトピックについて説明します。
トリガー
すべてのSalesforce開発者は、Salesforceトリガーの概念を知っている必要があります。以前、他のデータベースで作業しているときにトリガーに遭遇したことがあるかもしれません。トリガーは、Salesforceレコードへの変更の前後にアクションを実行したときに呼び出されるストアドプログラムに他なりません。たとえば、トリガーは、挿入操作が実行される前、または更新操作が実行されるときに実行できます。トリガーには2つのタイプがあります。
- トリガー前 – beforeトリガーを使用して、データベースに保存する前にレコード値を更新または検証できます。
- トリガー後 – afterトリガーを使用して、システムによって設定されたフィールド値にアクセスし、他のレコードの変更に影響を与えることができます。
トリガーは、以下の操作の前または後に実行されます。
機械学習で過剰適合しているもの
- インサート
- 更新
- 削除
- 行く
- おっと
- 元に戻す
上記のクラスで見たCountryオブジェクトのトリガーを追加して、apexにトリガーを追加する方法を説明します。
ステップ1: 国のオブジェクト管理設定から、[トリガー]に移動し、[新規]をクリックします。
ステップ2: トリガーエディターで、次のトリガー定義を追加します。
Country__cでHelloWorldTriggerをトリガーします(挿入前){
Country__c国= Trigger.new
HelloWorld.helloWorldMethod(国)
}
上記のコードは、データベースに挿入するたびに国の通貨を更新します。
知事の制限
Salesforceがマルチテナントアーキテクチャで動作することをご存知かもしれません。これは、リソースが異なるクライアント間で共有されることを意味します。誰も共有リソースを独占しないようにするために、Apexランタイムエンジンはガバナー制限を厳密に適用します。 Apexコードが制限を超えた場合、予期されるガバナーは、処理できない実行時例外を発行します。したがって、Salesforce開発者は、アプリケーションの開発時に非常に注意する必要があります。
一括操作
Salesforce開発者は、コードがガバナ制限を維持していることを常に確認する必要があります。 Apexがガバナーの制限に準拠していることを確認するには、一括呼び出しのデザインパターンを使用する必要があります。一括操作とは、DML操作を行うときに複数のレコードをコミットすることを指します。 DML操作を行う前に、必ず行をコレクションに追加する必要があります。以下は、一括操作の設計パターンの完全な説明を提供する画像です。
DMLとデータ操作
SOQLおよびSOSLクエリを使用してデータベースからデータを取得する方法については前に説明しました。次に、Salesforceデータベースにデータを挿入するために使用できるさまざまなステートメントを見てみましょう。 Salesforce開発者にとって、これらのステートメントで何ができるか、そしてそれらをどのように使用するかを知る必要があります。
DMLステートメント | 説明 |
インサート | 組織のデータに1つ以上のsObjectを追加します |
更新 | 1つ以上の既存のsObjectレコードを変更します |
おっと | 新しいレコードを作成し、sObjectレコードを更新します |
削除 | 1つ以上の既存のsObjectレコードを削除します |
元に戻す | 1つ以上の既存のsObjectレコードを復元します |
行く | 同じsObjectタイプの最大3つのレコードを1つのレコードにマージします |
VisualforceとApex
あなたはSalesforce開発者になるための探求において長い道のりを歩んできました。次に、visualforceページとapexコードを統合する方法について説明します。コントローラと拡張機能を使用して、visualforceページとapexコードを接続できます。
カスタムコントローラー–Visualforceページを完全にシステムモードで実行する場合、つまり権限とフィールドレベルのセキュリティを使用しない場合は、カスタムコントローラーを使用します。
コントローラ拡張–標準またはカスタムコントローラーの機能を拡張する新しいアクションまたは関数を追加する場合は、コントローラー拡張機能を使用します。
以下のコードでは、visualforceページにカスタムコントローラーを含める方法を示しました。
以下のコードでは、visualforceページにコントローラー拡張機能を含める方法を示しました。
例外処理
以前にアプリケーションを開発したことがある場合は、間違いなく例外に遭遇するでしょう。例外は、プログラム実行の通常のフローを変更する特別な条件です。たとえば、数値をゼロで除算したり、範囲外のリスト値にアクセスしたりします。これらの例外を処理しない場合、プロセスの実行は停止し、DMLはロールバックされます。
Salesforce開発者は、これらの例外をキャッチする方法と、それらをキャッチしたらどうするかを知る必要があります。例外をキャッチするには、try、catch、finally構文を使用できます。例外をキャッチしたら、以下の方法で処理できます。
例外 | それを処理する方法 |
DML | レコードまたはフィールドでaddError()メソッドを使用します |
Visualforce | ApexPages.messageクラスを使用する |
例外でメールを送信する | あなたは電子メールで開発者に通知することができます |
カスタムオブジェクトへのログイン | futureメソッドを使用して、カスタムオブジェクトをキャッチできます |
これまで、このSalesforce開発者ブログで、Visualforceを使用してユーザーインターフェイスを開発する方法、Apexを使用してカスタムロジックを作成する方法、およびトリガー、一括操作、例外処理などのさまざまな概念を見てきました。最後になりましたが、Salesforceのテストフレームワークについて見ていきます。
テスト
Salesforce開発者は、作成したコードをテストする方法を知っている必要があります。テスト駆動開発は、ソフトウェアアプリケーションの長期的な成功を保証する良い方法です。アプリケーションが期待どおりに機能することを検証できるように、アプリケーションをテストする必要があります。特に、顧客向けのアプリケーションを開発している場合は、最終製品を提供する前にそれをテストすることが非常に重要です。 Apexは、単体テストの作成、テストの実行、テスト結果の確認、およびコードカバレッジ結果の取得を可能にするテストフレームワークを提供します。
アプリケーションは次の2つの方法でテストできます。
- Salesforceユーザーインターフェイスを介したこのテスト方法は重要ですが、アプリケーションのすべてのユースケースを把握できるわけではありません。
- バルク機能をテストできます。SOAPAPIまたはvisualforce標準セットコントローラーを使用して、最大200レコードをコードに渡すことができます。
テストクラスはデータベースにデータをコミットせず、@ isTestアノテーションが付けられます。以下のHelloWorldクラスにテストクラスを追加することにより、テストクラスを追加する方法を示しました。
@isTest
プライベートクラスHelloWorldTestClass {
static testMethod void validateHelloWorld(){
Country__c country = new Country__c(Name =” India”、currency_value__c = 50.0)
国を挿入
国= [SELECTcurrency_value__c FROM Country WHERE Id = country.Id]
System.assertEquals(75、country.currency_value__c)
}
メソッドのオーバーロードとメソッドのオーバーライドとは
}
Salesforce開発者になるために知っておく必要のあるすべての概念を理解していただければ幸いです。詳細については、こちらをご覧ください インストラクター主導のライブトレーニングと実際のプロジェクトの経験が付属しています。コメントがありましたら、下のコメントボックスに残してください。