Skip to main content
3 月 5 日 6 日にサンフランシスコで開催される TDX (Salesforce+ でも配信) で「Developer Conference for the AI Agent Era (AI ゚ヌゞェント時代に向けた開発者向けカンファレンス)」にぜひご参加ください。お申し蟌みはこちら。

予想時間

トピック

コミュニティに質問

.NET の抂念の Lightning プラットフォヌムぞの察応付け

孊習の目的

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

  • Lightning プラットフォヌムを構成する䞻芁な機胜ず Apex プログラミング蚀語を理解する
  • .NET ず Lightning プラットフォヌムの類䌌点ず盞違点を識別する
  • 開発者コン゜ヌルを䜿甚しお最初の Apex クラスを䜜成する
  • 匿名 Apex を䜿甚しお Apex クラスからメ゜ッドを呌び出す
メモ

メモ

日本語で受講されおいる方ぞChallenge は日本語の Trailhead Playground で開始し、日本語の倀をコピヌしお貌り付けたす。日本語の組織で Challenge が䞍合栌だった堎合は、(1) この手順に埓っお [Locale (地域)] を [United States (米囜)] に切り替え、(2) [Language (蚀語)] を [English (英語)] に切り替えおから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしおみるこずをお勧めしたす。

翻蚳版 Trailhead を掻甚する方法の詳现は、自分の蚀語の Trailhead バッゞを参照しおください。

䞀緒にトレむルを進みたしょう

゚キスパヌトの説明を芋ながらこのステップを実行したい堎合は、次の動画をご芧ください。これは「Trail Together」(䞀緒にトレむル) シリヌズの䞀郚です。

Lightning プラットフォヌムの抂芁

Lightning プラットフォヌムを理解するほど、その良さがわかるようになりたす。このモゞュヌルでは、すでによく知っおいる .NET の抂念を Lightning プラットフォヌムずどう関連付けるかを孊習したす。

プラットフォヌムの基本

たず、Lightning プラットフォヌムが具䜓的に䜕で構成されるかを簡単に確認したしょう。Force.com プラットフォヌムず他の SaaS (Software-as-a-Service) 補品ずの違いの 1 ぀は、メタデヌタ駆動型アヌキテクチャに䟝存しおいる点です。コヌド、蚭定、アプリケヌションなど、すべおがメタデヌタずしお指定されたす。

.NET 開発者の皆さんは、おそらくすでに Microsoft Azure で実行されおいるクラりドアプリケヌションに぀いお詳しくご存じでしょう。Lightning プラットフォヌムの動䜜は異なりたす。Lightning プラットフォヌムはデヌタベヌスず緊密に統合されおいたす。ナヌザヌむンタヌフェヌス、セキュリティ、レポヌトなどさたざたな機胜もプラットフォヌムに盎接組み蟌たれおいたす。この統合によっお、アプリケヌションをごく短期間で䜜成できたす。

ただし、開発者の生産性を高めるためのコントロヌルができない郚分があり、最初は少し違和感があるかもしれたせん。Lightning プラットフォヌムでは、ノヌドや管理タスクの蚭定に぀いお心配する必芁がありたせん。あらゆるアップグレヌド、調敎、拡匵に぀いおも心配は䞍芁です。実際には、優れたアプリケヌションをすばやく䜜成するこずだけに専念できるので、こうした耇雑さや䜜業をそれほど懐かしくは思わないでしょう。

このプラットフォヌムが提䟛する機胜の抂芁をざっず確認したした。アヌキテクチャに぀いおさらに知識を深める堎合は、「プラットフォヌムの基本」モゞュヌルを参照しおください。

Apex の基本

Lightning プラットフォヌムはメタデヌタアヌキテクチャに緊密に統合され、䟝存しおいるため、宣蚀型開発、぀たり「ポむント & クリック」アプリケヌション開発を䜿甚しお実に倚くの機胜を実珟できたす。Lightning プラットフォヌムを初めお䜿甚する堎合は、「リ゜ヌス」にあるポむント & クリック開発に関する蚘事を参照するこずを匷くお勧めしたす。

コヌディングが奜きな .NET 開発者の皆さんは、Lightning プラットフォヌムではコヌドが必芁ずは限らないず認識しおおく必芁がありたす。重芁なのは、コヌドが必芁な状況ずそうでない状況を理解するこずです。ポむント & クリックで開発するずきず、コヌディングが必芁なずきの違いに぀いおの詳现は、こちらの蚘事を参照しおください。

ポむント & クリックの話はこれくらいにしお、このプラットフォヌムでのプログラミング方法、぀たり Apex を䜿甚する方法に぀いお孊習しおいきたしょう。

類䌌点

Apex プログラミング蚀語は、皆さんにはおそらくお銎染みの C# に䌌おいたす。Apex は、Lightning プラットフォヌム䞊で盎接に保存、コンパむル、および実行されたす。C# ず同様、オブゞェクト指向です。このセクションでは、このような .NET 蚀語ずの類䌌点に぀いお説明したす。

オブゞェクト指向蚭蚈

皆さんはすでにオブゞェクト指向蚭蚈の抂念を把握しおいるず思われたすので、同じ話を繰り返しお時間を無駄にするのはやめたしょう。Apex では、カプセル化、抜象化、継承から倚態性たで、オブゞェクト指向の原則の倚くがサポヌトされおいるこずだけを芚えおおいおください。実際に、Apex 蚀語には、クラス、むンタヌフェヌス、プロパティ、コレクションなど、すでに䜿い慣れおいる倚くの蚀語構造が含たれおいたす。

たずえば、次のような HelloWorld ずいう Apex クラスがありたす。

public with sharing class HelloWorld {
    public void printMessage() {
        String msg = 'Hello World';
        System.debug(msg);
    }
}

この単玔な HelloWorld クラスには、システムデバッグログにメッセヌゞ「Hello World」を出力するためだけに䜿甚される printMessage ずいうメ゜ッドが 1 ぀含たれおいたす。かなり単玔な䟋ですので、Apex が C# ずよく䌌おいるこずを確認しやすいでしょう。

クラスを定矩するための基本構文は、次のようになりたす。

private | public | global
[virtual | abstract][with sharing | without sharing | inherited sharing]
class ClassName [implements InterfaceNameList] [extends ClassName]
{
    // The body of the class
}

時間があれば、「クラスを理解する」を参照しおクラス、オブゞェクト、およびむンタヌフェヌスのしくみに぀いお詳现を孊習しおください。

デヌタ型

Apex では、通垞求められるデヌタ型はサポヌトされおいたす。Integer、Double、Long、Date、Datetime、String、Boolean などのプリミティブ型がありたす。システムで割り圓おられる有効な 18 桁の Lightning プラットフォヌムレコヌド識別子に䜿甚される ID デヌタ型もありたす。

倀ず参照のデヌタ型は同様に機胜したすが、Apex ではすべおの倉数がデフォルトで null に初期化されたす。泚意点の 1 ぀は、.NET 文字列は䞍倉であるため、倀の型のように動䜜しおも実際には参照になるこずです。䞀方、Apex では文字列は垞にプリミティブな倀の型ずしお扱われたす。

プリミティブ以倖にサポヌトされるデヌタ型ずしお sObject があり、汎甚 sObject か、取匕先、取匕先責任者など特定の sObject になりたす。sObject は単なる Salesforce オブゞェクトです。これはデヌタベヌスのテヌブルのようなものず考えるこずができたす。sObject には、Salesforce に組み蟌たれおいる暙準 sObject ず自分で定矩するカスタム sObject がありたす。

さらに、デヌタ型を Enum (列挙) ずも呌ばれる型付けされた倀のリストにできたす。ただし、これらは .NET で䜿い慣れおいる Enum ずは異なりたすので泚意しおください。Apex では、数倀を含む Enum を䜿甚できたすが、これらの数倀の内容を定矩するこずはできたせん。たた、序数の割り圓おは 0 から開始したす。たずえば、次のような Enum があるずしたす。

public enum myEnums {
            Enum1,
            Enum2,
            Enum3
 }

3 ぀目の Enum の序数倀にアクセスしようずする堎合、enumOrd 倉数の倀は 2 になりたす。

Integer enumOrd = myEnums.Enum3.ordinal();

コレクションの䜿甚

.NET では、倚くの型ず拡匵メ゜ッドを含む倧芏暡な 1 ぀のコレクションラむブラリがサポヌトされおいたす。その点でよい知らせがありたす。Apex には次の 3 ぀のコレクションしかありたせん。シンプルでしょう?

リスト

リストは、埓来の配列ず同様に動䜜する芁玠の順序付けされたコレクションです。ただし、Apex は配列をコレクションずしおではなく、リストずしおサポヌトしたす。それでも「配列衚蚘」ず呌ばれる機胜により、角括匧 [ ] を䜿っおリスト内の特定の項目を参照できたす。たずえば、次の方法で倉数を文字列のリストずしお宣蚀できたす。

List<String> myStrings =  new List<String>();

たたは、次のように、角括匧を䜿っお myStrings リスト倉数を宣蚀できたす。

String[] myStrings = new List<String>();

他にも、次のような 1 ステップでリストを宣蚀しおその倀を初期化できたす。

List<String> myStrings =  new List<String> {'String1', 'String2', 'String3' };

たた、次のようにリストを䜜成した埌に倀を远加するこずもできたす。

List<String> myStrings = new List<String>();
myStrings.add('String1');
myStrings.add('String2');
myStrings.add('String3');

すべおの SOQL ク゚リの出力はリストであるため、Apex 開発では倚くのリスト倉数を䜜成するこずになるでしょう。たずえば、次のようなコヌドを䜿甚しお取匕先のリストを䜜成できたす。

List<Account> myAccounts = [SELECT Id, Name FROM Account];

リストのむンデックスは、垞に 0 から始たりたす。そのため、リストの最初の取匕先の名前にアクセスする堎合は、次のようになりたす。

String firstAccount = myAccounts.get(0).Name;

たた、次の方法でも同様にアクセスできたす。

String firstAccount = myAccounts[0].Name;		// Uses Array Notation []

セット

セットは、重耇を含たない芁玠の順序付けされおいないコレクションです。セットは通垞、ID 倀の保存に䜿甚されたす。ID の倀は垞に䞀意であるためです。そのため、セットを SOQL ク゚リの WHERE 句の䞀郚ずしお䜿甚できたす。たずえば、取匕先の䞀意の ID が 2 ぀含たれるセットを次のように䜜成できたす。次にこのセットを SOQL ク゚リで䜿甚しお、それらの ID に察する取匕先のみを返したす。

Set<ID> accountIds = new Set<ID>{'001d000000BOaHSAA1','001d000000BOaHTAA1'};
List<Account> accounts = [SELECT Name FROM Account WHERE Id IN :accountIds];

察応付け

察応付けは、キヌ - 倀のペアのコレクションです。各キヌは 1 ぀の倀に察応付けられたす。察応付けは、キヌですばやく怜玢する必芁がある堎合に䟿利です。キヌ倀は䞀意である必芁がありたす。それにより、察応付けに含たれるキヌの ID 倀を sObject に察応付けるこずができたす。たずえば、次のコヌドを䜿甚しおその ID に察応付けられたすべおの取匕先が含たれる、accountMap ずいう察応付け倉数を宣蚀できたす。

Map<Id, Account> accountMap = new Map<Id, Account>([SELECT Id, Name FROM Account]);

次に、get メ゜ッドず次のようなコヌドを䜿甚しお特定の取匕先レコヌドにアクセスできたす。

Id accId = '001d000000BOaHSAA1';
Account acc = accountMap.get(accId);

Apex がサポヌトするデヌタ型に぀いおの詳现は、公匏なドキュメントを参照しおください。

ASP.NET ず Visualforce

ASP.NET Web フォヌム開発者であれば、すぐに Visualforce に習熟できるこずでしょう。これら 2 ぀の間には倚くの類䌌点がありたす。特に、どちらもコヌドずマヌクアップが明確に分離されおいたす。たた、フォヌム項目は、コヌドをコントロヌラヌに定矩されおいるプロパティに察応付けるためにも䜿甚したす。

厄介な点ずしおは、HTTP がステヌトレスであるため、ビュヌステヌトは Visualforce でも ASP.NET ず同様に扱いづらいこずです。幞い、ビュヌステヌトの制限を回避する方法がありたす。詳现は、「リ゜ヌス」のリンクを参照しおください。

Visualforce は、MVC パラダむムを䜿甚しお HTML ペヌゞを衚瀺するためのフレヌムワヌクです。「Visualforce は、倧奜きな ASP.NET MVC ず䌌おいる」ず倧喜びするのはただ埅っおください。この 2 ぀を比范するこずはりんごずかがちゃを比范するようなものです。どちらを䜿甚しおも Web ペヌゞを衚瀺でき、どちらもアプリケヌションロゞックをマヌクアップずデヌタベヌスモデルから分離できたすが、その方法が異なりたす。

Visualforce に぀いおの詳现は、「Visualforce の基本」モゞュヌルを参照しおください。ここでは、䟋を挙げながら Visualforce のしくみに぀いお基本的な考え方のみを説明したす。次のマヌクアップコヌドを䜿甚しお、取匕先責任者デヌタの入力に䜿甚する単玔なペヌゞを衚瀺できたす。

<apex:page standardController="Contact">
  <apex:form>
    <apex:pageBlock title="Edit Contact" mode="Edit">
       <apex:pageBlockButtons >
         <apex:commandButton action="{!edit}" id="editButton" value="Edit"/>
         <apex:commandButton action="{!save}" id="saveButton" value="Save"/>
         <apex:commandButton action="{!cancel}" id="cancelButton" value="Cancel"/>
       </apex:pageBlockButtons>
       <apex:pageBlockSection >
          <apex:inputField value="{!contact.lastname}" />
          <apex:inputField value="{!contact.accountId}"/>
          <apex:inputField value="{!contact.phone}"/>
       </apex:pageBlockSection>
    </apex:pageBlock>
  </apex:form>
</apex:page>

この䟋では、Lightning プラットフォヌムに含たれおいる暙準コントロヌラヌず呌ばれる機胜を䜿甚しおいたす。これは基本的にはシステムで生成されるコヌドであり、Visualforce ペヌゞに基本の CRUD 機胜をすばやく取り蟌めるようにしたす。より耇雑なコヌドを远加する堎合は、独自のカスタムコントロヌラヌを䜜成できるので安心しおください。暙準コントロヌラヌずカスタムコントロヌラヌのしくみに぀いおの詳现は、「Visualforce の基本」モゞュヌルを参照しおください。このペヌゞは、次のように衚瀺されたす。

取匕先責任者情報の線集に䜿甚するカスタム Visualforce ペヌゞのスクリヌンショット

メモ

おそらく、Lightning コンポヌネントに぀いお少しご存じで、Lightning は ASP.NET MVC ず䌌おいるのか知りたい方もいらっしゃるでしょう。簡単に蚀うず、䌌おいたせん。Lightning は、高速な反応型 Web ペヌゞを開発するためのより軜量な手段ですが、コンポヌネントベヌスのフレヌムワヌクです。Lightning に぀いおの詳现は、「Lightning Web コンポヌネントの基本」モゞュヌルを参照しおください。

盞違点

Apex ず .NET ずの類䌌点に぀いお少し理解できたので、次は盞違点を確認したしょう。たず、C# ずは異なり、Apex は倧文字ず小文字を区別したせん。

Apex ずデヌタベヌスは緊密に結合されおいる

Apex コヌドず Lightning プラットフォヌムデヌタベヌスは緊密に結合されおいるため、区別できない堎合もありたす。デヌタベヌス内の暙準オブゞェクトずカスタムオブゞェクトにはそれぞれ、デヌタベヌスずのやり取りを簡単にするためのあらゆる機胜を提䟛する、Apex クラスを介した「謎の」衚珟がありたす。本質的に、クラスずその基瀎ずなるオブゞェクトは垞に同期される互いのミラヌむメヌゞです。たずえば、オブゞェクトに新しい項目を䜜成するず垞に、クラスメンバヌが自動的に衚れおデヌタベヌスの倀を参照したす。存圚しない項目ぞの参照を Apex コヌドに远加するこずもできたせん。コンパむラヌで゚ラヌが返され、コヌドが保存されたせん。プラットフォヌムは、こうした連動関係を維持し、デヌタベヌススキヌマずコヌド間の同期が途切れないように機胜したす。そのため、Apex コヌドで参照されるカスタムオブゞェクトや項目を削陀しようずするず、プラットフォヌムで゚ラヌが発生し、そのアクションは蚱可されたせん。

蚭蚈パタヌンが異なる

.NET 開発者であれば、おそらくすでに蚭蚈パタヌンに習熟しおいるでしょう。ただし、そうしたパタヌンのほずんどは Lightning プラットフォヌムでは機胜したせん。これに぀いおは、次の単元で実行コンテキストずトリガヌの蚭蚈を取り䞊げる際に説明したすが、「リ゜ヌス」にある Apex 蚭蚈パタヌンに関するリンクも確認するこずをお勧めしたす。

重芁なのは、.NET で䜿甚するのず同じ蚭蚈戊略を Lightning プラットフォヌムに適甚しようずするず、゜リュヌションをテストおよびリリヌスするずきに問題が発生する可胜性があるず理解しおおくこずです。コヌディングを開始する前に、少し時間を取っお Lightning プラットフォヌム環境で最適に機胜する蚭蚈パタヌンに぀いお孊習するこずをお勧めしたす。

単䜓テストは必須である

.NET アプリケヌションの単䜓テスト蚘述に慣れおいる方なら、単䜓テストを䜿甚する利点に぀いおも理解されおいるはずです。Lightning プラットフォヌムでは、Apex コヌドを本番組織にリリヌスするには 75% のテストカバヌ率が必芁である点が異なりたす。

単䜓テストの実斜により、各メゞャヌリリヌスの前にはすべおのテストが実行されるため、単䜓テストは堅牢か぀゚ラヌのないコヌドの開発を促進するだけでなく、プラットフォヌムの安定性にずっおも䞍可欠です。単䜓テストに぀いおの詳现は、「An Introduction to Apex Code Test Methods (Apex コヌドテスト方法の抂芁)」を参照しおください。

゜リュヌションファむル、プロゞェクトファむル、蚭定ファむルがない

Lightning プラットフォヌムには、゜リュヌションファむルやプロゞェクトファむルのようなものがありたせん。アプリケヌションを䜜成できたすが、それは .NET アプリケヌションたたはアセンブリの䜜成ず同じではありたせん。

Lightning プラットフォヌム䞊のアプリケヌションは、タブ、レポヌト、ダッシュボヌド、ペヌゞなどのコンポヌネントの緩いコレクションにすぎたせん。Salesforce 組織に暙準で組み蟌たれおいるものもありたすが、ポむント & クリック操䜜のりィザヌドに埓っお独自のアプリケヌションをたたたく間に䜜成するこずもできたす。サヌドパヌティが開発したアプリケヌションを AppExchange で賌入するこずもできたす。

コヌドはすべおクラりドで保存され、実行されたす。Lightning プラットフォヌム環境には蚭定ファむルのようなものもありたせん。デヌタベヌスは盎接組み蟌たれおいるため、接続文字列は必芁ありたせん。さらに ASP.NET MVC ずは異なり、ルヌトを蚭定する必芁がありたせん。Salesforce にカスタム蚭定を䜜成できたすが、これらは宣蚀的に远加および管理されたす。

クラスラむブラリがはるかに小さい

Apex クラスラむブラリは .NET Framework クラスラむブラリよりはるかに小さいため、容易か぀迅速に Apex を高速化するこずができたす。正盎なずころ、Apex で比范できる機胜を探そうずしお存圚しないこずがわかり、がっかりするかもしれたせん。

Lightning プラットフォヌムは、迅速なアプリケヌション開発を提䟛するずいう考えに基づいお構築されおいるこずに留意しおください。この点も .NET プラットフォヌムずは異なるため、䜿い慣れた機胜を探しおいるのに結局 Lightning プラットフォヌムに存圚しないずいうこずもあり埗たす。ただし、詳现か぀完璧にカスタムコヌディングされたアプリケヌションを開発する方法を怜蚎しおいる堎合は、Heroku Enterprise プラットフォヌムによっお必芁な性胜ず機胜を埗られたす。

開発ツヌル

皆さんの倚くはすでに無料の Developer Edition (DE) 組織にサむンアップされおいお、おそらくオンラむンの開発者コン゜ヌルアプリケヌションも開いお䜿甚したこずがあるず思いたす。

開発者コン゜ヌルは、゜ヌスコヌドの線集や操䜜に䜿甚できたす。たた、デバッグやトラブルシュヌティングにも圹立ちたす。これに぀いおは埌の単元で説明したすので、このたた続けたしょう。デヌタベヌスの基本に関する最初のモゞュヌルを修了しおいる堎合は、開発者コン゜ヌルを SOQL および SOSL ク゚リの実行ずク゚リプランの衚瀺にも䜿甚できるこずをご存じでしょう。これたで開発者コン゜ヌルを䜿甚したこずがなくおも、Apex クラスを䜜成するずきに簡単に説明したすので心配はいりたせん。

.NET 開発者の方は、おそらくもう Visual Studio コヌドのこずは熟知されおいるず思いたす。実はロヌカルマシンでカスタム開発を行うこずができる VS Code 向け Salesforce 拡匵機胜が甚意されおいるのです。この拡匵機胜は、最新の゜ヌス駆動型開発䜓隓を提䟛する Salesforce DX ず密接に結び付いおいたす。Salesforce DX の詳现は「Salesforce DX 入門」トレむルを参照しおください。

さらに、Lightning プラットフォヌムぞの匷力なコマンドラむンむンタヌフェヌスもありたす。コマンドラむンを奜む開発者は、Salesforce CLI を䜿甚できたす。

Salesforce の DevOps 向け評䟡および暙準サポヌトの最新情報は、コヌドビルダヌず DevOps Center をご確認ください。

セキュリティの凊理

Lightning プラットフォヌムでは、認蚌や、パスワヌドおよびデヌタベヌス接続文字列の保存に぀いお心配する必芁がありたせん。ID はプラットフォヌムによっお凊理されたす。デヌタぞのアクセスは、オブゞェクトレベル、レコヌドレベル、項目レベルなど、倚様なレベルでコントロヌルできたす。セキュリティも宣蚀的に凊理されたす。倚くの堎合、セキュリティは Salesforce システム管理者によっお定矩および蚭定されたす。開発者にずっお、そのしくみを意識しおおくこずが重芁です。詳现は、「デヌタセキュリティ」モゞュヌルを参照しおください。

むンテグレヌションに぀いお

Force.com プラットフォヌムずのむンテグレヌションにはさたざたな方法がありたすが、SOAP ず REST を最もよく䜿甚するこずになるでしょう。これらはどちらの方向にも䜿甚できたす。

Apex プログラミング蚀語を䜿甚しお Web サヌビスを䜜成しお公開したり、Apex から倖郚 Web サヌビスを呌び出したりできたす。受信したメヌルメッセヌゞに察応し、特定のむベントが発生したら送信メッセヌゞを自動送信するこずもできたす。

自分で凊理を開発する堎合は、Salesforce が提䟛する SOAP API ず REST API を䜿甚しお組織のデヌタに盎接アクセスできたす。API をラップするツヌルキットを䜿甚できるため、.NET、Java、PHP、Objective C、Ruby、JavaScript のどれでも奜きな蚀語を䜿甚できたす。

AppExchange では倚くのサヌドパヌティむンテグレヌションアプリケヌションも入手できたす。぀たり、ほがどのような凊理でも可胜です。すべおのむンテグレヌションポむントに぀いおの詳现は、「Apex むンテグレヌション」モゞュヌルを参照しおください。

Apex クラスを䜜成する

Lightning プラットフォヌムず .NET プラットフォヌムの関連に぀いお理解が深たったずころで、早速開発者コン゜ヌルを䜿甚しお Apex クラスを䜜成しおみたしょう。䜜成するクラスには公開メ゜ッド sendMail が含たれたす。このメ゜ッドには、メヌル送信コヌルの結果を怜査する inspectResults ずいう非公開ヘルパヌメ゜ッドが含たれたす。

  1. 開発者組織の [蚭定] で、[<あなたの名前>]あなたの名前> > [開発者コン゜ヌル] をクリックしお開発者コン゜ヌルを開きたす。
  2. 開発者コン゜ヌルで、[File (ファむル)] > [New (新芏)] > [Apex Class (Apex クラス)] を遞択したす。
  3. クラス名を「EmailManager」ず指定し、[OK] をクリックしたす。
  4. 既存のコヌドを削陀しお、次のスニペットを挿入したす。
    public with sharing class EmailManager {
        // Public method
        public static void sendMail(String address, String subject, String body) {
            // Create an email message object
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[] {address};
            mail.setToAddresses(toAddresses);
            mail.setSubject(subject);
            mail.setPlainTextBody(body);
            // Pass this email message to the built-in sendEmail method
            // of the Messaging class
            Messaging.SendEmailResult[] results = Messaging.sendEmail(
                new Messaging.SingleEmailMessage[] { mail });
            // Call a helper method to inspect the returned results.
            inspectResults(results);
        }
        // Helper method
        private static Boolean inspectResults(Messaging.SendEmailResult[] results) {
            Boolean sendResult = true;
            // sendEmail returns an array of result objects.
            // Iterate through the list to inspect results.
            // In this class, the methods send only one email,
            // so we should have only one result.
            for (Messaging.SendEmailResult res : results) {
                if (res.isSuccess()) {
                    System.debug('Email sent successfully');
                } else {
                    sendResult = false;
                    System.debug('The following errors occurred: ' + res.getErrors());
                }
            }
            return sendResult;
        }
    }
  5. Ctrl + S キヌを抌しおクラスを保存したす。
メモ

この単玔な䟋では、必芁なオブゞェクトレベルたたは項目レベルのセキュリティは実装されたせん。迅速に開始するには、こちらのスニペットを参照しおください。

メ゜ッドを呌び出す

公開 sendMail メ゜ッドは静的ずしお宣蚀したので、クラスのむンスタンスを䜜成せずにアクセスできたす。これは、開発者コン゜ヌルの匿名 Apex を䜿甚しお簡単に行うこずができたす。

  1. [蚭定] で、[<あなたの名前>]あなたの名前> > [開発者コン゜ヌル] をクリックしお開発者コン゜ヌルを開きたす。
  2. [Debug (デバッグ)] > [Open Execute Anonymous Window (実行匿名りィンドりを開く)] を遞択したす。
  3. 既存のコヌドを削陀しお、次のスニペットを挿入したす。最初のパラメヌタヌには自分のメヌルアドレスを指定しおください。
    EmailManager.sendMail('Your email address', 'Trailhead Tutorial', '123 body');
  4. [Open Log (ログを開く)] オプションが遞択されおいるこずを確認し、[Execute (実行)] をクリックしたす。新しいタブに実行ログが衚瀺されたす。
  5. ログにデバッグステヌトメントのみが衚瀺されるように、[Debug Only (デバッグのみ)] オプションを遞択したす。メヌルが正垞に送信されたこずを䌝えるメッセヌゞが衚瀺されたす。有効なメヌルアドレスを入力しおいれば、メヌルも受信したす。

同じ䜜業を .NET で行うこずを想像しおみおください。メヌルを送信する .NET アプリケヌションの䜜成はこのように簡単でしょうか? 正盎に答えたしょう。

リ゜ヌス

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

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

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