SlideShare a Scribd company logo
Salesforce Developers Meetup #29
画面フローとLightningWebComponentの
ハイブリッド開発について
Toru Inoue
自己紹介
井上 徹 (Inoue Toru)
所属: 株式会社テラスカイ
居住地:大阪 出身地:岡山
Salesforce歴:約6年
ロール:Salesforce開発プロジェクトのPM/PMO、アーキテクト
トピック:LWCの勉強始めました!
@tiaug30
皆さんフロー使ってますか??
コード開発しなくても色々作れて便利!!
かなり使えるようになっているけど、少し物足りない!!
複雑な機能は結局個別開発が必要なんじゃない?
• 標準コンポーネントだけだとやりたいことができない
• AppExchangeにあるものだと微妙に機能がマッチしない
• 画面フローでできないので、すべて個別開発で対応した
画面フローで使えるLWCを作ります
こんなことないですか??
ないなら自分で作ってみよう!!
画面フローとLWCの違い
画面フロー Lightning Web Component(LWC)
タイプ 標準機能(Low-Code) 個別開発(Pro-Code)
利用者 アドミン~開発者 開発者
難易度 〇
低~中
△
高
コスト 〇
低
△
高
自由度
△
基本的に標準設定の範囲内
〇
個別開発により自由度高
特性 シンプルな画面をスピーディに実現したいときに便利 複雑な機能や独自のUIを作り込める
どちらもメリット・デメリットがある
• 基本はフローベースで開発
• フローでは実装できない最低限の画面コンポーネントをLWCで開発する
• コーディングは最低限にとどめる(フローでできることはフローでやる)
• フローのお手軽さとLWCの自由度のおいしいところ取りをする
画面フローとLWCのハイブリッド開発のアプローチ
画面FLOW
標準コンポーネント
カスタムコンポーネント
(LWC)
標準コンポーネント
デモアプリ
デモアプリ
住所型項目(Summer’22新機能)
住所項目の地図を表示(フロー)
地図(LWC)
<template>
<lightning-map
map-markers={mapMarkers}
zoom-level={zoomLevel}>
</lightning-map>
</template>
flowMap.html
地図コンポーネントのLWC
import { api, LightningElement } from 'lwc';
export default class FlowMap extends LightningElement {
@api city;
@api country;
@api postalCode;
@api state;
@api street;
@api zoomLevel;
mapMarkers;
connectedCallback() {
let mapMarkers = [
{
location: {
City: this.city,
Country: this.country,
PostalCode: this.postalCode,
State: this.state,
Street: this.street
}
}
]
this.mapMarkers = mapMarkers;
}
}
flowMap.js
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>55.0</apiVersion>
<isExposed>true</isExposed>
<masterLabel>Map Component In Flow</masterLabel>
<targets>
<target>lightning__FlowScreen</target>
</targets>
<targetConfigs>
<targetConfig targets="lightning__FlowScreen">
<property name="country" label="Country" type="String"/>
<property name="state" label="State" type="String"/>
<property name="city" label="City" type="String"/>
<property name="street" label="Street" type="String"/>
<property name="postalCode" label="PostalCode" type="String"/>
<property name="zoomLevel" label="Zoom Level" type="Integer"/>
</targetConfig>
</targetConfigs>
</LightningComponentBundle>
flowMap.js-meta.xml
フローから渡すパラメータを指定
LWC標準のタグを置くだけ
lightning-mapに渡す住所情報を構成
フローから渡されるパラメータを格納する変数
フローから呼び出し可能に設定
フローで指定したパラメータがLWCに受け渡される
パラメータ①
↓
パラメータ②
↓
パラメータ③
・
・
・
LWCのライフサイクルフローとパラメータの設定タイミング
constructor()
コンポーネントインスタンスの作成時に起動
connectedCallback()
コンポーネントが DOM に挿入されると起動
renderedCallback()
コンポーネントの表示フェーズが完了したら起動
パラメータはフロービルダーの表示順にセットされる。
LWC側のsetプロパティで何かしらの処理をする場合は
実行順序に注意が必要
※公式ドキュメントは未確認
デモアプリのフロー定義(Lightningページの地図)
パラメータのrecordIdを条件にレコードを取得
カスタムの地図コンポーネントを配置
住所項目から国、郵便番号、都道府県、市区群、
町名番地を地図コンポーネントに渡す。
① LWCがカスタムセクションに表示される
② 画面にカスタムコンポーネントを配置
③ LWCに渡すパラメータを指定
住所型項目利用時の注意点
①住所型項目の国と都道府県は選択リストであり、データベース上はコード値(ラベルでない)で登録される。
レコードは州コード(API参照名)で登録される。
州コードは英数字のみ指定可
住所型項目の選択リスト値の設定
⇒ 住所型項目の選択リストのコードを地図コンポーネントが国、都道府県として認識されないコード体系で定義すると、
地図が正しく表示されない可能性があるので要注意!!(必要に応じてフローでコード変換する必要がでてくる)
②画面フロー標準の住所入力コンポーネントの選択リスト値は、住所型の選択リストの設定が適用されない。(フロー側で独自設定する)
住所型項目の値(コード値)を渡す場合は要注意!!
デモアプリ完成!!
あとはLightningアプリケーションビルダーでフローを配置するだけ
まとめ
• 画面フローとLWCを使ったハイブリッド開発を行うことで、フロー単独ではできないことができるようになる。
• プログラミング開発を最低限にすることで開発コストや難易度を低減させることができる。(フル個別開発>ハイブリッド開発)
• 汎用的なコンポーネントを作成しておけば、様々なユースケースで再利用できる。
• プログラミング開発を外注している場合は、外注費用を下げることができる。(システム管理者やユーザにもメリットがある)
まとめ
今回の手法を使えば画面フローでこんなこともできます!
まとめ
データテーブルコンポーネント リッチテキスト入力コンポーネント
<lightning-datatable> <lightning-input-rich-text>
資料公開・解説記事
@tiaug30
@tiaug30

More Related Content

What's hot

大量データを扱う際のクイックTips インデックス&スキニーテーブル編-
大量データを扱う際のクイックTips インデックス&スキニーテーブル編-大量データを扱う際のクイックTips インデックス&スキニーテーブル編-
大量データを扱う際のクイックTips インデックス&スキニーテーブル編-Salesforce Developers Japan
 
Einstein Next Best Action を試してみよう
Einstein Next Best Action を試してみようEinstein Next Best Action を試してみよう
Einstein Next Best Action を試してみよう
Salesforce Developers Japan
 
基本設計+詳細設計の書き方 社内勉強会0304
基本設計+詳細設計の書き方 社内勉強会0304基本設計+詳細設計の書き方 社内勉強会0304
基本設計+詳細設計の書き方 社内勉強会0304
furuCRM株式会社 CEO/Dreamforce Vietnam Founder
 
Visualforceを使ってみよう
Visualforceを使ってみようVisualforceを使ってみよう
Visualforceを使ってみよう
Salesforce Developers Japan
 
20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較
20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較
20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較
Takashi Hatamoto
 
Salesforce 開発入門
Salesforce 開発入門Salesforce 開発入門
Salesforce 開発入門
Salesforce Developers Japan
 
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法についてSalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
Takashi Hatamoto
 
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメントSalesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce Developers Japan
 
モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門
モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門
モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門
Salesforce Developers Japan
 
Salesforceの標準オブジェクトについて復習してみた
Salesforceの標準オブジェクトについて復習してみたSalesforceの標準オブジェクトについて復習してみた
Salesforceの標準オブジェクトについて復習してみた
y-maeda
 
データローダについてちょっと詳しくなる
データローダについてちょっと詳しくなるデータローダについてちょっと詳しくなる
データローダについてちょっと詳しくなる
Junko Nakayama
 
Salesforceのサイトゲストユーザについて
SalesforceのサイトゲストユーザについてSalesforceのサイトゲストユーザについて
Salesforceのサイトゲストユーザについて
Taiki Yoshikawa
 
認定テクニカルアーキテクト取ろうぜ
認定テクニカルアーキテクト取ろうぜ認定テクニカルアーキテクト取ろうぜ
認定テクニカルアーキテクト取ろうぜ
Hiroki Sato
 
Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行
Salesforce Developers Japan
 
SharePoint Framework の最新情報をキャッチアップしよう!
SharePoint Framework の最新情報をキャッチアップしよう!SharePoint Framework の最新情報をキャッチアップしよう!
SharePoint Framework の最新情報をキャッチアップしよう!
Ai Hirano
 
Force.com canvas入門ガイド
Force.com canvas入門ガイドForce.com canvas入門ガイド
Force.com canvas入門ガイドKazuki Nakajima
 
Terraformディレクトリ構成のベスプラを考えてみた
Terraformディレクトリ構成のベスプラを考えてみたTerraformディレクトリ構成のベスプラを考えてみた
Terraformディレクトリ構成のベスプラを考えてみた
山下 達也
 
Community cloud運用開発の基礎
Community cloud運用開発の基礎Community cloud運用開発の基礎
Community cloud運用開発の基礎
Salesforce Developers Japan
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
 
PowerApps をざっくりさわってみた
PowerApps をざっくりさわってみたPowerApps をざっくりさわってみた
PowerApps をざっくりさわってみた
Hiroaki Oikawa
 

What's hot (20)

大量データを扱う際のクイックTips インデックス&スキニーテーブル編-
大量データを扱う際のクイックTips インデックス&スキニーテーブル編-大量データを扱う際のクイックTips インデックス&スキニーテーブル編-
大量データを扱う際のクイックTips インデックス&スキニーテーブル編-
 
Einstein Next Best Action を試してみよう
Einstein Next Best Action を試してみようEinstein Next Best Action を試してみよう
Einstein Next Best Action を試してみよう
 
基本設計+詳細設計の書き方 社内勉強会0304
基本設計+詳細設計の書き方 社内勉強会0304基本設計+詳細設計の書き方 社内勉強会0304
基本設計+詳細設計の書き方 社内勉強会0304
 
Visualforceを使ってみよう
Visualforceを使ってみようVisualforceを使ってみよう
Visualforceを使ってみよう
 
20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較
20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較
20230424_TDXGG寄稿記事:同期/非同期アーキテクチャの比較
 
Salesforce 開発入門
Salesforce 開発入門Salesforce 開発入門
Salesforce 開発入門
 
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法についてSalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
 
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメントSalesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
Salesforce開発プロジェクトの進め方とアプリケーションライフサイクルマネジメント
 
モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門
モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門
モダンなイベント駆動型システム連携を学ぼう〜Platform Events 入門
 
Salesforceの標準オブジェクトについて復習してみた
Salesforceの標準オブジェクトについて復習してみたSalesforceの標準オブジェクトについて復習してみた
Salesforceの標準オブジェクトについて復習してみた
 
データローダについてちょっと詳しくなる
データローダについてちょっと詳しくなるデータローダについてちょっと詳しくなる
データローダについてちょっと詳しくなる
 
Salesforceのサイトゲストユーザについて
SalesforceのサイトゲストユーザについてSalesforceのサイトゲストユーザについて
Salesforceのサイトゲストユーザについて
 
認定テクニカルアーキテクト取ろうぜ
認定テクニカルアーキテクト取ろうぜ認定テクニカルアーキテクト取ろうぜ
認定テクニカルアーキテクト取ろうぜ
 
Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行Lightning アプリケーション開発 - Visualforce ページの移行
Lightning アプリケーション開発 - Visualforce ページの移行
 
SharePoint Framework の最新情報をキャッチアップしよう!
SharePoint Framework の最新情報をキャッチアップしよう!SharePoint Framework の最新情報をキャッチアップしよう!
SharePoint Framework の最新情報をキャッチアップしよう!
 
Force.com canvas入門ガイド
Force.com canvas入門ガイドForce.com canvas入門ガイド
Force.com canvas入門ガイド
 
Terraformディレクトリ構成のベスプラを考えてみた
Terraformディレクトリ構成のベスプラを考えてみたTerraformディレクトリ構成のベスプラを考えてみた
Terraformディレクトリ構成のベスプラを考えてみた
 
Community cloud運用開発の基礎
Community cloud運用開発の基礎Community cloud運用開発の基礎
Community cloud運用開発の基礎
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
 
PowerApps をざっくりさわってみた
PowerApps をざっくりさわってみたPowerApps をざっくりさわってみた
PowerApps をざっくりさわってみた
 

Similar to SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx

【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
SFDG ROOKIES
 
Salesforce開発のスタート地点で考えたいこと
Salesforce開発のスタート地点で考えたいことSalesforce開発のスタート地点で考えたいこと
Salesforce開発のスタート地点で考えたいこと
Yuki Yamaguchi
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
 
Lightning Component × Lightning Design System
Lightning Component × Lightning Design SystemLightning Component × Lightning Design System
Lightning Component × Lightning Design System
Taiki Yoshikawa
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability SeminarVisso株式会社
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Manato KAMEYA
 
Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化
Katsushiro Koizumi
 
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
Kazuki Shibata
 
開発者が話すSalesforceのui設計とは?
開発者が話すSalesforceのui設計とは?開発者が話すSalesforceのui設計とは?
開発者が話すSalesforceのui設計とは?
Junji Imaoka
 
Fxug
FxugFxug
Fxug
satoshi
 
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
schoowebcampus
 
デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門
webcampusschoo
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
Yoshitaka Seo
 
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズDon't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Takahito Miyamoto
 
HoloLens first impression & development
HoloLens first impression & developmentHoloLens first impression & development
HoloLens first impression & development
c-mitsuba
 
会話型UI事始め
会話型UI事始め会話型UI事始め
会話型UI事始め
DeNA
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
Takashi Hatamoto
 
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
典子 松本
 
早く・良いものを作るための、WordPressサイト構築ワークフロー
早く・良いものを作るための、WordPressサイト構築ワークフロー早く・良いものを作るための、WordPressサイト構築ワークフロー
早く・良いものを作るための、WordPressサイト構築ワークフロー
Takako Horiuchi
 
LightSwitchでマルチデータソース
LightSwitchでマルチデータソースLightSwitchでマルチデータソース
LightSwitchでマルチデータソース
Yoshitaka Seo
 

Similar to SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx (20)

【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
 
Salesforce開発のスタート地点で考えたいこと
Salesforce開発のスタート地点で考えたいことSalesforce開発のスタート地点で考えたいこと
Salesforce開発のスタート地点で考えたいこと
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
Lightning Component × Lightning Design System
Lightning Component × Lightning Design SystemLightning Component × Lightning Design System
Lightning Component × Lightning Design System
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
 
Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化
 
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
 
開発者が話すSalesforceのui設計とは?
開発者が話すSalesforceのui設計とは?開発者が話すSalesforceのui設計とは?
開発者が話すSalesforceのui設計とは?
 
Fxug
FxugFxug
Fxug
 
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
 
デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
 
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズDon't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
 
HoloLens first impression & development
HoloLens first impression & developmentHoloLens first impression & development
HoloLens first impression & development
 
会話型UI事始め
会話型UI事始め会話型UI事始め
会話型UI事始め
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
 
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
 
早く・良いものを作るための、WordPressサイト構築ワークフロー
早く・良いものを作るための、WordPressサイト構築ワークフロー早く・良いものを作るための、WordPressサイト構築ワークフロー
早く・良いものを作るための、WordPressサイト構築ワークフロー
 
LightSwitchでマルチデータソース
LightSwitchでマルチデータソースLightSwitchでマルチデータソース
LightSwitchでマルチデータソース
 

SFDG_画面フローとLightningWebComponentのハイブリッド開発について.pptx