Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20190809 ルーキー会 × TERAKOYAFORCE

ルーキー会とTERAKOYAFORCEのコラボ企画

  • Be the first to comment

  • Be the first to like this

20190809 ルーキー会 × TERAKOYAFORCE

  1. 1. Salesforce Developer Group Rookies × TERAKOYAFORCE 2019/8/9(⾦)@MOTEX株式会社 ハッシュタグ #sfdgr ハッシュタグ #terakoyaforce
  2. 2. 本⽇のメニュー 2 • 20分くらい Apex基礎の説明 • 60分くらい モブプロ
  3. 3. 今⽇の進⾏役 名前︓⼩林 亮理(リョウスケ) 所属︓株式会社フレクト ︓@ryosuke921186 SF歴︓7、8年くらい 最近︓デザイナー資格やっと1つ取りました DGルーキー会運営、DG新会⻑ 趣味︓運動(ソフトテニス、ゴルフ、ジムでトレーニング)、寝る 3
  4. 4. 「Apex」の基本
  5. 5. Apexとは 5 • Salesforceのサーバーサイドで動作するJavaに似た言語 • ロジックの記述やデータの処理に利用 クライアント サーバー API Trigger バッチ処理 ApexVisualforce (HTML/JS/CSS) LightningCmp (HTML/JS/CSS) 標準UI
  6. 6. データ型について Apexでは下記型などがサポートされています 6 基本データ(プリミティブ)型 • Integer(整数値) • Double(⼩数点を含む数値) • Long(整数値(Integerより広範囲)) • Date(⽇付) • Datetime(⽇付時間) • String(⽂字列) • ID(所謂、SalesforceId) • Boolean(True/False)
  7. 7. データ型について(続き) Apexでは下記型などがサポートされています 7 SObject型 • 平たく⾔うとレコード • 標準オブジェクト、カスタムオブジェクト両⽅利⽤可能 • Account(取引先型)のSObject変数には、Id、Name、 NumberOfEmployeeなど情報が含まれる [SObject変数].項⽬名(acc.Name)などで参照可能
  8. 8. データ型について(続き) Apexでは下記型などがサポートされています 8 SObject型 • 平たく⾔うとレコード • 標準オブジェクト、カスタムオブジェクト両⽅利⽤可能 • Account(取引先型)のSObject変数には、Id、Name、 NumberOfEmployeeなど情報が含まれる [SObject変数].項⽬名(acc.Name)などで参照可能
  9. 9. コレクションについて Listや配列 9 データ型の変数の集合体みたいなイメージ //リストの宣⾔ List<String> strList = new List<String>(); strList.add(ʻtest1ʼ); strList.add(ʻtest2ʼ); strList.add(ʻtest3ʼ); //リストの1番⽬(0番⽬)にはtest1が格納されている System.debug(strList[0]);
  10. 10. SOQLについて Salesforce Object Query Language の略称 Salesforceのデータベースにアクセスしデータの取得を⾏う 10 ◆基本構⽂ SELECT Id FROM Account WHERE CreatedDate = TODAY LIMIT 50 ・SELECT︓必須 。後には、取得対象項⽬を記述 ・FROM ︓必須。後には、どのオブジェクトを対象とするかを記述 ・WHERE︓任意。後には条件⽂(レポートの絞り込み条件的な) ・LIMIT ︓任意。レコードの取得上限設定 ※グルーピングや並べ替えもありますが、⼀旦おいておきます。
  11. 11. SOQLについて(続き 11 Apexでの記述⽅法は2つ ・静的SOQL 処理速度は早い。なるべくこっちで記載したい ・動的SOQL 各種条件(例︓検索画⾯の⼊⼒項⽬)によって、取得する条件や、 取得する項⽬を変更する際に利⽤する。処理速度は静的SOQLには劣 る(めっちゃ遅いということはないですが)
  12. 12. SOQLについて(続き 12 Apexでの記述⽅法は2つ ・静的SOQL ・動的SOQL List<Account> accList = [select id from account]; or String queryStr = ʻselect id from accountʼ; List<Account> accList = Database.query(queryStr);
  13. 13. Apexクラス、メソッドの例 13
  14. 14. Let's モブプログラミング n ドライバーを⼀⼈決め、それ以外はナビゲータとしてサポート n ドライバーが詰まっても、周りは優しくサポート︕ n 疑問点があったら遠慮なく周りの⼈やメンターに聞いてみよう︕ n 適度なところでドライバーを交代しよう n 〜20:40まで(チーム内での振り返り含めて) 14
  15. 15. 開発者コンソールの起動 15
  16. 16. 開発者コンソールの起動 16 起動
  17. 17. 開発者コンソールの起動 17 新規作成は こちらから
  18. 18. お題① • 以下のソースコードを実⾏し、デバッグログに表⽰される⽂字列を 答えてください。匿名実⾏は開発者コンソールを起動し、下記コマ ンドで起動できます。 Windows︓Windowsキー+E Mac︓Command+E 18 String message ='TERAKOYAとルーキー会のコラボイベントへようこそ!'; Integer count = [SELECT COUNT() FROM Account]; System.debug(message); System.debug('私の組織には取引先が' + count + '件あります。');
  19. 19. お題② • 以下のソースコードのコンパイルエラーを解消してください。 19 class TestClass{ public Int getNumber() { String name = 'test’; if (name.equals('test')) { return 10; Boolean isSuccess= True return; } public Account getAccountById(Id targetId) { return [SELECTId,Name,IndustryFROMAccountWHEREId = :targetId]; } }
  20. 20. ヒント 20 • カッコは閉じられていますか︖ • 戻り値の指定はされていますか︖ • ⽂章は閉じられていますか︖ • データ型の名前は正しいですか︖
  21. 21. お題③ • 以下の要件を満たすソースコードを書いてください。 – ⾦額を引数で与えると、消費税(10%とする)を加算して数値を返し てくれるメソッド – メソッドは好きな名前のクラスの中にあり、別のクラスから呼び出す ことができる 21
  22. 22. お題④ • 以下の要件を満たすソースコードを書いてください。 – 完了予定⽇をすぎた商談を抽出して、「次のステップ」を「マネー ジャ確認」に更新するメソッド – ただし最⼤200件までしか取得できないようにする※ – メソッドは好きな名前のクラスの中にあり、別のクラスから呼び出す ことができる ※200件の取得⽅法︓作成⽇付降順に並び替えて取得してください 22
  23. 23. お題⑤ • 以下のコードにはSalesforceプラットフォームで実⾏する際、⼤き な問題があります。問題ないコードへと修正してください。 23 public with sharing class SelectController { public List<Contact> getContacts() { List<Contact> results; for (Account acc: [Select Id, Name From Account Limit 1000]) { for(Contact con : [Select Name From Contact Where AccountId= :acc.Id]){ results.add(con); } } return results; } }

×