.NET ã®æŠå¿µã® Agentforce 360 Platform ãžã®å¯Ÿå¿ä»ã
åŠç¿ã®ç®ç
ãã®åå ãå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
- Lightning ãã©ãããã©ãŒã ãæ§æããäž»èŠãªæ©èœãš Apex ããã°ã©ãã³ã°èšèªãçè§£ãã
- .NET ãš Lightning ãã©ãããã©ãŒã ã®é¡äŒŒç¹ãšçžéç¹ãèå¥ãã
- éçºè
ã³ã³ãœãŒã«ã䜿çšããŠæåã® Apex ã¯ã©ã¹ãäœæãã
- å¿å Apex ã䜿çšã㊠Apex ã¯ã©ã¹ããã¡ãœãããåŒã³åºã
äžç·ã«ãã¬ã€ã«ãé²ã¿ãŸããã
ãšãã¹ããŒããšäžç·ã«ãã®æé ãé²ããŸãã? 次ã®åç»ãã芧ãã ãããããã¯ã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 éçºè ã¬ã€ã: ã¯ã©ã¹ããåç §ããŠãã¯ã©ã¹ããªããžã§ã¯ããããã³ã€ã³ã¿ãŒãã§ãŒã¹ã®ããã¿ã«ã€ããŠè©³çްãåŠç¿ããŠãã ããã
ããŒã¿å
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 (Salesforce Object Query Language) ã¯ãšãªã®åºåã¯ãªã¹ãã§ãããããApex éçºã§ã¯å€ãã®ãªã¹ã倿°ãäœæããããšã«ãªãã§ããããããšãã°ã次ã®ãããªã³ãŒãã䜿çšããŠååŒå ã®ãªã¹ããäœæã§ããŸãã
List<Account> myAccounts = [SELECT Id, Name FROM Account];
ãªã¹ãã®ã€ã³ããã¯ã¹ã¯ãåžžã« 0 ããå§ãŸããŸãããã®ããããªã¹ãã®æåã®ååŒå ã®ååã«ã¢ã¯ã»ã¹ããå Žåã¯ã次ã®ããã«ãªããŸãã
String firstAccount = myAccounts.get(0).Name;
ãŸããæ¬¡ã®æ¹æ³ã§ãåæ§ã«ã¢ã¯ã»ã¹ã§ããŸãã
String firstAccount = myAccounts[0].Name; // Uses Array Notation []
ã¯ã©ã¹å ã§ã®äŸãèŠãŠã¿ãŸãããã
public with sharing class ContactUtils {
public static List<Contact> contactsByTitle(String title) {
List<Contact> contacts = [SELECT Id, FirstName, LastName FROM Contact WHERE Title = :title];
return contacts;
}
}ã»ãã
ã»ããã¯ãéè€ãå«ãŸãªãèŠçŽ ã®é åºä»ããããŠããªãã³ã¬ã¯ã·ã§ã³ã§ããã»ããã¯éåžžã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 ããµããŒãããããŒã¿åã«ã€ããŠã®è©³çްã¯ãå ¬åŒãªããã¥ã¡ã³ããåç §ããŠãã ããã
çžéç¹
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 ã«ã€ããŠã®è©³çްã¯ããããã±ãŒãžéçºã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®å ±åæ§ç¯ããã¬ã€ã«ãåç §ããŠãã ããã
ããã«ã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 ãå®éã«äœ¿ã£ãŠã¿ã
ä»ãã Trailhead Playground ãèµ·åãããã®ã¢ãžã¥ãŒã«ã®æé ãå®è¡ããŠã¿ãŸããããTrailhead Playground ãéãã«ã¯ããã³ãºãªã³ Challenge ãŸã§ã¹ã¯ããŒã«ããŠã³ãã[Launch (èµ·å)] ãã¯ãªãã¯ããŸãããŸãããã³ãºãªã³ Challenge ãå®è¡ãããšãã«ã Playground ã䜿çšããŸãã
Apex ã¯ã©ã¹ã®äœæ
Lightning ãã©ãããã©ãŒã ãš .NET ãã©ãããã©ãŒã ã®é¢é£ã«ã€ããŠçè§£ãæ·±ãŸã£ããšããã§ãæ©ééçºè ã³ã³ãœãŒã«ã䜿çšã㊠Apex ã¯ã©ã¹ãäœæããŠã¿ãŸããããäœæããã¯ã©ã¹ã«ã¯å ¬éã¡ãœãã sendMail ãå«ãŸããŸãããã®ã¡ãœããã«ã¯ãã¡ãŒã«éä¿¡ã³ãŒã«ã®çµæãæ€æ»ãã inspectResults ãšããéå ¬éãã«ããŒã¡ãœãããå«ãŸããŸãã
- éçºè
çµç¹ã® [Setup (èšå®)] (
) ã¡ãã¥ãŒãã [Developer Console (éçºè
ã³ã³ãœãŒã«)] ãéžæããŸãã
- éçºè
ã³ã³ãœãŒã«ã§ã[File (ãã¡ã€ã«)] > [New (æ°èŠ)] > [Apex Class (Apex ã¯ã©ã¹)] ãéžæããŸãã
- ã¯ã©ã¹åã
EmailManagerãšæå®ãã[OK] ãã¯ãªãã¯ããŸãã
- æ¢åã®ã³ãŒããåé€ããŠã次ã®ã¹ãããããæ¿å
¥ããŸãã
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; } }
-
Ctrl + S ããŒãæŒããŠã¯ã©ã¹ãä¿åããŸãã
ã¡ãœãããåŒã³åºã
å ¬é sendMail ã¡ãœããã¯éçãšããŠå®£èšããã®ã§ãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããã«ã¢ã¯ã»ã¹ã§ããŸããããã¯ãéçºè ã³ã³ãœãŒã«ã®å¿å Apex ã䜿çšããŠç°¡åã«è¡ãããšãã§ããŸãã
- éçºè
ã³ã³ãœãŒã«ã§ã[Debug (ãããã°)] > [Open Execute Anonymous Window (å®è¡å¿åãŠã£ã³ããŠãéã)] ãéžæããŸãã
- æ¢åã®ã³ãŒãããã¹ãŠåé€ããŠã次ã®ã¹ãããããæ¿å
¥ããŸããæåã®ãã©ã¡ãŒã¿ãŒã«ã¯èªåã®ã¡ãŒã«ã¢ãã¬ã¹ãæå®ããŠãã ããã
EmailManager.sendMail('Your email address', 'Trailhead Tutorial', '123 body');
-
[Open Log (ãã°ãéã)] ãªãã·ã§ã³ãéžæãããŠããããšã確èªãã[Execute (å®è¡)] ãã¯ãªãã¯ããŸãã
æ°ããã¿ãã«å®è¡ãã°ã衚瀺ãããŸãã
- ãã°ã«ãããã°ã¹ããŒãã¡ã³ãã®ã¿ã衚瀺ãããããã«ã[Debug Only (ãããã°ã®ã¿)] ãªãã·ã§ã³ãéžæããŸããã¡ãŒã«ãæ£åžžã«éä¿¡ãããããšãäŒããã¡ãã»ãŒãžã衚瀺ãããŸããæå¹ãªã¡ãŒã«ã¢ãã¬ã¹ãå
¥åããŠããã°ãã¡ãŒã«ãåä¿¡ããŸãã
åãäœæ¥ã .NET ã§è¡ãããšãæ³åããŠã¿ãŠãã ãããã¡ãŒã«ãéä¿¡ãã .NET ã¢ããªã±ãŒã·ã§ã³ã®äœæã¯ãã®ããã«ç°¡åã§ãããã? æ£çŽã«çããŸãããã
ãªãœãŒã¹
- Trailhead: Salesforce Platform ã®åºç€
- Salesforce éçºè ããã°: When to Click Instead of Write Code (ããžã¥ã¢ã«éçº â ã³ãŒããæžãã®ã§ã¯ãªãã¯ãªãã¯æäœã§éçºããã®ã¯ã©ã®ãããªå Žåã)
- Apex éçºè ã¬ã€ã: Apex ã®æŠèŠ
- Salesforce Developers: Apex éçºè ã¬ã€ã
- Salesforce Developers: ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¿ãŒã³ã®æŠèŠ
