[Developers Summit 2019]
開発者に贈るsalesforceプラットフォーム概論と
最新動向
Salesforce Developer Group ルーキー会
2019年2月14日
#devsumi #sfdg
1
本セッションでご理解いただきたいこと
1. 入門者向けセッションである
2. Salesforceの技術要素はいっぱいある
3. とっかかりとしてポイントを絞って説明
2
今日のゴール
3
Salesforceってなに?
Salesforceでの開発に使う技術っ
てどんなものがあるの?
疑問解決!
「やってみよう」という気持ち
次の一歩の踏み出してみる!
45分後
4
Salesforce Developer Group Rookies
ぷれぜんつ!
スピーカー紹介①
名前:小林 亮理(リョウスケ)
所属:株式会社フレクト
:@ryosuke921186
SF歴:8年目
役割:PM、エンジニア
趣味:運動(ソフトテニス、ゴルフ、筋トレ)、寝る
5
スピーカー紹介②
6
名前:齋藤 俊
所属:株式会社フレクト
マネージャー
2014年より株式会社フレクト
エンジニア,PM
AWS SA Professional,
Salesforce Consultant資格他
アジェンダ
1. Salesforceってなに?
2. どんな技術要素があるの?
3. キャリアについて&まとめ
7
8
Salesforceってなに?
どんな技術要素があるの?
キャリアについて&まとめ
Salesforceとは
9
セールスフォース・ドットコム社が
提供しているサービスの名称
10
クラウド
コンピューティング
Application
Salesforce Platform
Salesforceの仕組み
11
サービス
サポート
CRM/SFA
マーケ
ティング
コミュ
ニティ
分析
カスタム
アプリ
サード
パーティ
アプリコマース
Salesforce提供 独自 パートナー提供
利用例(ユーザ視点)
12
Salesforce
Platform
契約組織
営業支援
カスタム
アプリ
INTERNET
ライセンスタイプ
により利用可能
必要に応じて
個別開発
ライセンス契約login/利用
INTERNET
開発例(Dev視点)
13
Salesforce Platform
契約組織
営業支援
カスタム
アプリ
Dev組織
サードパー
ティアプリ
標準アプリを拡張
特定組織用の
独自アプリを開発
組織に依存しない
独自アプリを開発
login/開発
14
ユーザからみるとアプリ
開発者からみるとプラットフォーム
Platform内のレイヤー
15
Salesforce Platform
開発者向け機能
インフラ
標準カスタマイズ機能
ミドルウェア
ストレージ, CPU,
メモリ等
DB, Appサーバー,
VM等
気にしなくても
良い領域
コーディング無
コーディング有
実はこっちも
大事なところ
Developerの
大事なところ
標準カスタマイズ機能
• Low-Code系機能
– 企業向けシステムに必要となるベース機能
16
分析
ワークフロー
レイアウト コミュニ
ティ
わざわざコーディングで開発しないこと
モバイル
認証ユーザ管理 アクセス
コントロール
多言語
/通貨
ロジック
・・他沢山DB
テーブル操作
バックアップ
障害復旧
開発者向け機能
• 主にコーディングを必要とする機能
• ClientSide, ServerSide, Query, UnitTest, API, AI…etc
• 標準カスタマイズで対応できない時に使う
17
(デブサミに来ている)皆さんが輝くところ・・!
18
Salesforceってなに?
どんな技術要素があるの?
キャリアについて&まとめ
19
どんな技術要素があるの?
1. サーバサイド … Apex / Trigger
2. データベース … SOQL
3. フロントエンド … LightningComponent / Visualforce
4. テスト … Apexテストフレームワーク
5. 開発環境・ツール … 開発者コンソール / SFDX / force.com CLI
6. Webアプリ開発 … Heroku
7. ML, IoT … Einstein / IoT Cloud
20
1. Apexとは?(1)
開発者が Salesforce Platformでフローとトランザクションの
制御ステートメントを実行できるようにした、
強く型付けされたオブジェクト指向のプログラミング言語
https://trailhead.salesforce.com/ja/projects/quickstart-apex/steps/quickstart-apex-1
21
1. Apexとは?(2)
開発者が Salesforce Platformでフローとトランザクションの
制御ステートメントを実行できるようにした、
強く型付けされたオブジェクト指向のプログラミング言語
https://trailhead.salesforce.com/ja/projects/quickstart-apex/steps/quickstart-apex-1
例 1.1 取引先オブジェクトから洗い替え対象レコードを抽出し、洗い替えを行う処理
22
1. Apexとは?(3)
開発者が Salesforce Platformでフローとトランザクションの
制御ステートメントを実行できるようにした、
強く型付けされたオブジェクト指向のプログラミング言語
https://trailhead.salesforce.com/ja/projects/quickstart-apex/steps/quickstart-apex-1
技術コスト低めで初心者が学びやすい
Ease of Development の頃のJavaを
少しやさしく制限をかけた感じ
おまじない含めコード量は最小限
標準カスタマイズとの棲み分けが
根底にあるため、きちんと設計すれば
コード量は最小限で済む
例 1.1 取引先オブジェクトから洗い替え対象レコードを抽出し、洗い替えを行う処理
23
1. Apexとは?(4)
• 標準カスタマイズで実現できない要件で用いる
要件
開発が
必要
標準で
できる
例
• あるオブジェクトの更新時のトリ
ガーで関連オブジェクトにも一括
更新をかける
• 定期バッチでAWS S3上のCSV
データを取り込みして、サマリと
してSalesforceへ保存する
• ボタン押下により、外部基幹シス
テムのWebサービスからデータを
取得し、Salesforceへ保存する
24
1. Apexとは?(5) Apex Trigger
=Salesforce PlatformでのDBトリガー
古いレコードのロード
新しいレコードで古い値の
上書き
システムの入力規則
Before トリガー
カスタムの入力規則
レコードのDBへの保存
(未コミット)
レコードのリロード
After トリガー
割り当てルール
自動応答ルール
ワークフロールール
プロセス
エスカレーションルール
積み上げ集計数式の値更新
データベースのコミット
コミット後のロジック
Salesforceのレコードに適用される
これらのロジック群のうち、
他ロジックで実現できない、
特にクリックベースで担いにくいタ
スクを実行する時に用いる
https://help.salesforce.com/articleView?id=000005694&language=ja&type=1
25
2. DB操作 – SOQL(1)
SOQLとは
アプリケーション層のApexからデータ層へアクセスする際に使用する、SQL類似言語
例 2.1 ステータスが「完了」の商談を、「リードソース」別に集計して、商談金額の合計を表示する
26
2. DB操作 – SOQL(2)
SOQLとは
アプリケーション層のApexからデータ層へアクセスする際に使用する、SQL類似言語
例 2.1 ステータスが「完了」の商談を、「リードソース」別に集計して、商談金額の合計を表示する
=ORマッパーを兼ねている
点に注目
オブジェクトが返ってくる
商談(Opportunity)
27
2. DB操作 – SOQL(3)
見込み顧客と取引先は別のオブジェクトだが、
オブジェクトのリレーションを経由してフィールドを取得できる
例 2.2 「見込み顧客」のうち、取引を開始して「取引先」になったレコードから、取引
先の社名と年間売上を取得
28
2. DB操作 – SOQL(3)
見込み顧客と取引先は別のオブジェクトだが、
オブジェクトのリレーションを経由してフィールドを取得できる
例 2.2 「見込み顧客」のうち、取引を開始して「取引先」になったレコードから、取引
先の社名と年間売上を取得
見込み顧客(Lead) 取引先(Account)
29
2. DB操作 – SOQL(3)
見込み顧客と取引先は別のオブジェクトだが、
オブジェクトのリレーションを経由してフィールドを取得できる
例 2.2 「見込み顧客」のうち、取引を開始して「取引先」になったレコードから、取引
先の社名と年間売上を取得
見込み顧客(Lead) 取引先(Account)
関係演算のうち、
「選択」と「射影」はそのまま
だが、「結合」がSQLと異なる
30
2. DB操作 – SOQL(4)
SQLとSOQLの違い
レコードベース オブジェクトベース
INSERT, UPDATE, DELETEなどを
サポート
SELECTのみ
(※INSERT,UPDATEなどはDMLを使用)
多くの関係代数演算子をサポート
※和、差、交差、直積、選択、射影、
結合、商など
関係代数演算子はSQLと比べて少ない
※独自のリレーションクエリで代替
https://trailhead.salesforce.com/ja/modules/database_basics_dotnet/units/sql_to_soql
制限をあらかじめ考慮して
データモデルの設計・実装を行う
SQL SOQL
31
3. Salesforce Lightning
Salesforce Lightning は、現行のSalesforceプラットフォームサービスの総称。
ブランドとして「Lightning」と呼ぶこともある
代表的なLightningサービス群
• Lightning Component フレームワーク(クライアント-サーバフレームワーク)
• Lightning Application ビルダー(コンポーネントを組み合わせたUI構築基盤)
• Lightning Experience (ユーザエクスペリエンス)
他にも Lightningブランド以前をClassicと呼び、Classicから存在する
サービスや機能にLightningを冠していることもある
32
3. Lightning Component フレームワーク
レコード詳細
Todos
Action
buttons
Google Map Social
関連レコード一覧
画面を疎結合なコンポーネント単位に
切り出して構築できるようにした仕組み
画面構築例
コンポーネント
標準を利用したり、
AppExchangeで取り入れたり、
自身のコーディングで開発したりできる
Lightning アプリケーションビル
ダーでコンポーネントを1つの画面
にまとめることができるが、
もちろんコンポーネント単体での
再利用も可能
33
3. Lightning Component フレームワーク
https://youtu.be/Lm3uB6YkwIE
34
3. Lightning Component フレームワーク
UI構築はいくつかの選択肢がある
①Apex+Visualforce
Servlet/JSPチックな世界
②Visualforce + JavaScript
SPAチックな世界
③Lightningコンポーネント
コンポーネント駆動な世界
④HerokuなどのPaaS+Salesforce
→プロプライエタリだが安定
緻密な権限など、堅めの要件向き
→既存資産のポータビリティ重視
SFはReact, Vueを載せる箱として
→今後の拡張性重視
柔軟性はあるが、安定性が課題
→Webアプリ前提なら無難にMixしたい
Fargateなど本命対抗も出てきており
SFとの親和性でHerokuを取るかを検討
35
リリース・デプロイモデル
https://trailhead.salesforce.com/ja/modules/salesforce-crm-customization-and-extension/units/innovate-faster-with-salesforce-environments-and-salesforce-dx
36
4. テストフレームワーク(1)
テストはSalesforceにおける扇の要
本番リリース要件
・プロダクトコードに対するコードカバレッジが75%以上であること
・すべてのテストコードがPassしていること
develop staging production
All Passed
&
75%
coverage
37
https://s3-ap-northeast-1.amazonaws.com/salesforce-japan-marketing/SWTT2017/Breakout+Session/10-L_TerraSky-FLECT.pdf
38
4. テストフレームワーク(3)
プロダクトコード群 テストコード群
ステップ単位でカバーされる
ショートサーキットはC1網羅
JUnitライクな記法
ファクトリなどで効率化可能
39
4. テストフレームワーク(4)
• CLI経由でテスト実行でき、CIツールで自動化するケースも多い
• Salesforce謹製の「開発者コンソール」ならブラウザベースで
• Salesforceの開発においては以下を勘案すること
– 標準カスタマイズだけでは駄目で、開発が必要か?
– Apexコーディングをともなう開発か?
– 今後の保守性を含めてApexコーディングを取るべきか?
40
5. 開発環境・ツール
IDE
★開発者コンソール
★VSCode
・Welkin IDE
API tool
★Workbench
★API Explorer
CLI
★force.com CLI
★SFDX CLI
ライブラリ
・jsForce
・restforce
・simple-salesforce
Data tool
★DataLoader
★Dataloader.io
• ほとんどSalesforceのブラウザベースで整う
• 以下が手元に揃っていれば開発で困ることはない
最初にチームで使う
ツールを決めるのがおすすめ
41
5. 開発者コンソール
ブラウザベースで開発するためのツール
• コーディング
• テスト実行
– ユニット
– スイート実行
– カバレッジ計測
• データベース操作
• 即席のコード片実行
• クエリオプティマイザ
• デバッグログ出力
42
6. Heroku
2007年創業、2010年よりSalesforceに属するPaaS提供企業
PaaSそのものをHerokuと呼ぶ
Heroku Einstein
Marketing
Cloud
フロントに置いてBtoCのエンドユーザ向けに機動力のあるアプリを展開して、
価値の高い顧客データはSalesforceで、というのが王道パターンの1つ
エンドユーザ向け 企業内部向け
Analytics
43
7. Salesforce Einstein
ひとことで言えば、CRM 用の人工知能 (AI)
Salesforceが展開する機械学習/AI(人工知能)関連のサービスを総称していくもの
http://itpro.nikkeibp.co.jp/atcl/news/16/092002725
企業名 サービス内容 発表時期
BeyondCore データディスカバリー 2016年8月
Coolan データセンター向けデータ分析 2016年7月
EdgeSpring データ分析 2013年6月
Implisit 営業担当者向けBI(Business Intelligence) 2016年5月
MetaMind ディープラーニングベースの画像認識など 2016年4月
MinHash 質問応答システム用の検索エンジン 2015年12月
PredictionIO 機械学習プラットフォーム 2016年2月
RelateIQ 企業と顧客との関係分析 2014年7月
Tempo AIがスケジュールを調整するカレンダー 2015年6月
Salesforceが2013年以降、買収してきたML/AI企業の一覧。
44
7. Salesforce Einstein
リードの予測スコアリングや、成立する可能性の高い商談を示唆したり、
https://trailhead.salesforce.com/ja/trails/get_smart_einstein/modules/get_smart_einstein_feat/units/get_smart_einstein_feat_tour
45
7. Salesforce Einstein
リコメンドやコンバージョンの分析に使ったり、
https://trailhead.salesforce.com/ja/trails/get_smart_einstein/modules/get_smart_einstein_feat/units/get_smart_einstein_feat_tour
46
7. Salesforce Einstein
Langで言語解析したり、Visionで画像解析したり
https://trailhead.salesforce.com/ja/trails/get_smart_einstein/modules/get_smart_einstein_feat/units/get_smart_einstein_feat_tour
47
8. Salesforce IoT
CRMと Connected Devices を繋げる接着剤
デバイスからのデータをCRM基盤へ { そのまま | 要約して } 取り込んで、
顧客にとって価値の高い体験を提供する
48
8. Salesforce IoT
・デバイスのデータは膨大かつ単体では情報密度が少ない
・CRMのデータはそれに比べて、レコードあたりの価値が高い
ETL
Filter
収集 集約 可視化
device
49
どんな技術要素があるの?
1. サーバサイド … Apex / Trigger
2. データベース … SOQL
3. フロントエンド … LightningComponent / Visualforce
4. テスト … Apexテストフレームワーク
5. 開発環境・ツール … 開発者コンソール / SFDX / force.com CLI
6. Webアプリ開発 … Heroku
7. ML, IoT … Einstein / IoT Cloud
50
Salesforceにおける開発
• 要件って何?標準でできることは?
要件
開発が
必要
標準で
できる
シンプルで完成されたCRMの
世界に加えて、ML/AI, IoT,
Marketing Automationなど
要件のカバー範囲は拡大している
開発者視点でSalesforceで
できることをよく知って、
向き合い方を身につけよう
Lightning Web Componentのご紹介
1. Lightning Web Componentとは?
2. サンプルコード
51
Lightning Web Componentとは
1. Webアプリ開発の潮流に沿った新しい
Lightning開発の枠組み
2. 軽量で高パフォーマンス
3. コードは主にJavaScriptとHTML
52
サンプルコード
53
サンプルコード
54
参考
Trailheadモジュール:
https://trailhead.salesforce.com/ja/content/le
arn/projects/quick-start-lightning-web-
components
Github:
https://github.com/trailheadapps/lwc-recipes
55
キャリアについて&まとめ
56
Salesforceってなに?
どんな技術要素があるの?
Salesforceエンジニアのキャリア
Salesforceエンジニアは大きく2つのカテゴリーに分けられます。
• 社内開発者(Salesforce導入企業・SIer)
• 独立系ソフトウェアベンダー(ISV)
57
社内アプリケーションを構築して
Salesforce をカスタマイズ
他の開発者や顧客のために
アプリケーションを開発
→ →
インテグレーション開発者
• Salesforceとその他システム(Saas・基幹
システム)との連携はよくあるシナリオ。
WEB・UI開発者
• HTMLとCSSの知識が必要。Lightningコ
ンポーネントなどにより、高度なUIを作成する
場合にはApexとJSのスキルも重要。
データベース・ロジック開発者
• スキーマやデータ検証機能、数式、ビジネス
ルール、プロセスの作成方法を理解している
必要。
モバイル開発者
• S1やネイティブのモバイルSDKを使用して
ユーザーに新たなアプリケーションを提供。
専門性
専門性を活かせるか?
58
枯れない(かもしれない)エコシステム
Salesforceは、年に3回メジャーリリースが行われ、
毎回多くの新機能が追加されます。
59
• 春、夏、冬にリリースされる
• Spring’19 で58回目のメジャーリリース
• 最新機能をイベントやWEBでチェック!!
まとめ
⇒クラウド上のアプリでありプラットフォーム
⇒サーバーサイド、フロントエンド、ML、IoT等色々!
⇒進化し続けているため、陳腐化しない?!
⇒キャリアについても多くの道がある
60
1. Salesforceって何?
2. どんな技術要素があるの?
3. 技術・キャリアについて
コミュニティ紹介
Salesforce Developer Group ルーキー会
61
• Salesforce開発初心者向けコミュニティ
• 月一回程度勉強会実施
• 同じ初心者仲間が見つかる!
• connpass
– https://sfdgr.connpass.com/
• Twitterアカウント
– @sfdgrjp
次回ルーキー会のお知らせ
62
• 日時
– 2018年2月28日(木) 19:00~
• 場所
– アクセンチュア様(溜池山王駅から徒歩約5分)
• 内容
– ハンズオン
– お題は「Apexトリガーフレームワーク」
• connpass申込ページ
– https://sfdgr.connpass.com/event/118989/
ほかにもこんなオフラインコミュニティが
• Tokyo Salesforce Developer Group
• Umekita Force(関西)
• Salesforce 女子部
• Northern Force(北海道)
• Fukuoka Salesforce Developer Group(福岡)
などなど
詳細はこちらから
https://www.trailblazers.jp/group
63
Thank You!
64

【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向