SlideShare a Scribd company logo
1 of 24
Download to read offline
敗北のアプリコンテスト作品と
待望の Apex 新機能
in Summer ’18
2018/06/28(Thu)
Salesforce Developers Meetup #18
Let me introduce myself
宮本 隆人 Takahito Miyamoto
since 2016.12.04
2
@takahito0508
/takahito.miyamoto
/takahito-miyamoto
/takahitomiyamoto
宮本 隆人 Takahito Miyamoto
Let me introduce myself
3
• Salesforce 5年目
• 北鎌倉在住、中国人の妻(専業主婦)
• 趣味はコーディング、ボランティア、卓球
• カラオケしたい、ダイエットしたい
SalesforceSaturday Tokyo (@SFSatTokyo)
土曜日にSalesforceを勉強するコミュニティです♪
アクセンチュア株式会社
テクノロジーコンサルティング本部 シニアアナリスト
コーポレートシチズンシップ推進室 コアメンバー
NPO法人キッズドア
学生ボランティア → 正会員
Let me introduce myself
愛用している自作ツール
✓ 組織ごとに取得可能なメタデータすべてを含んだ package.xml を
自動生成してくれるツール (Java)
➢ https://github.com/takahitomiyamoto/salesforce-manifest-generator
✓ Trailhead スコアを一括取得してくれるツール (Python)
➢ https://github.com/takahitomiyamoto/scraping-trailhead-scores
4
もっと綺麗なコードに直していきたいので、
プルリクエストお待ちしてます!
Let me introduce myself
いっしょに卓球やりませんか!?初心者大歓迎。
5
Today’s Topic
• 敗北のアプリコンテスト作品
• デモ(動画&ご自身のスマホで)
• 利用した技術のオーバービュー
• 待望の Apex 新機能
• レコードタイプの API 参照名をより簡単に取得
6
Awesome Retail Advisor
7
移動スーパーのトラックを走らせるならどこで?
Awesome Retail Advisor
8
画像データ
テキスト
&
スタンプ
日本語 ⇄ 英語
家屋の戸数を判別
会話の感情分析 結果を連携
※汚いですが、GitHubでコード公開してます。
Awesome Retail Advisor
9
カスタムオブジェクトに
Einsteinの分析結果を登録
ダッシュボードで
傾向を分析
Salesforceに何が連携される?
Awesome Retail Advisor
10
Salesforceにどうやって連携する?
オブジェクト名と
項目名を指定する
レコードタイプを指定せずにインサートしてるので、
ベストプラクティスではないことに注意!
レコードタイプ?
11
?
レコードタイプを作ろう
作らなかったことによる悲劇 その①
12
1パターンしかないし、
別に作らなくてよくない?
A社はある組織に新規
アプリ ”A” を開発中。
UAT を実施中、アプリ ”A” の画面上の選択リスト
項目で 想定外の値が選択できてしまう ことが発覚!
調査の結果、アプリ “B” で使う値をB社が
密かに新規追加していたことが判明。。。
A社
新規アプリ “B” を 並行開発 することが
決定。開発は B社が担当する。
ちゃんと単体テスト
したんだけどなあ。。。
続く
レコードタイプを作ろう
作らなかったことによる悲劇 その②
13
組織ごとにID違うし、
わざわざ面倒くさくない?
レコードタイプを意識せずに、
Apexコード を書いていた。
Apexコード内で レコードタイプIDごとの
ロジックが無い ことに気づく。。。
A社
調査結果を受け、レコードタイプ “A” と “B”
を作成してアプリごとに制御することに。
修正箇所多すぎ!最初から
やってればよかった。。。
続き
既存のテストデータに レコードタイプIDを追加。思った
よりしんどい!そして、単体テストがことごとく失敗!!
レコードタイプ?
作ろう!
14
レコードタイプIDがほしいなら
従来の取得方法
RecordType オブジェクトのレコードを取得して Map を作る。
15
ユーティリティクラスに汎用的なメソッドを作ることが通例。
なお、従来から getRecordTypeInfosByName() が利用可能ではあっ
たが事実上使うことのないメソッドであった。 Name(ラベル名)は
エンドユーザーに表示されるものでありしばしば変更が発生するため、
Map の Key とするのはベストプラクティスではない。
レコードタイプIDがほしいなら
Summer ‘18 で
強い味方がついに登場!
16
レコードタイプIDがほしいなら
Summer ‘18 以降の取得方法
getRecordTypeInfosByDeveloperName() を利用できる。
17
DeveloperName であれば言語設定に影響されないため非常に便利。
ただし、このメソッドを利用する際には、プロファイルからアクセスが許可
されていないレコードタイプについても取得できることには注意が必要。
偶然気づいた「仕様」
18
!
偶然気づいた「仕様」
レコードタイプ作成 Tips
「Master」という名前のレコードタイプを作ってはいけない!
ちなみに「MASTER」は作っても OK。
• Name =「Master」のレコードタイプ
→ getRecordTypeInfosByName() で取得できない。
• DeveloperName =「Master」のレコードタイプ
→ getRecordTypeInfosByDeveloperName() で取得できない。
19
従来の取得方法であれば
特に発生しない事象
参考: 検証してみよう
1. 検証用のレコードタイプを作る。
20
両方とも「Master」じゃなくて
複数個に分けて検証しても OK
参考: 検証してみよう
2. Workbench や開発者コンソールなどで以下のコードを実行する。
21
Workbench での
実行画面
参考: 検証してみよう
3. デバッグログに出力されたデータを確認する。
22
getDeveloperName : Master
getName : Master
getRecordTypeId : 012000000000000AAA
isActive : true
isAvailable : true
isDefaultRecordTypeMapping : false
isMaster : true
開発者コンソールの
ログ画面
参考: 検証してみよう
4. デバッグログに出力されたデータは存在しない模様。
23
以上、気をつけましょう
ありがとうございました
Q&A は懇親会にて

More Related Content

Similar to 20180628_SFDG_Meetup_Summer18

Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
SFDG ROOKIES
 

Similar to 20180628_SFDG_Meetup_Summer18 (20)

20171025_Tokyo_DG_LT_Road_to_Trailblazer
20171025_Tokyo_DG_LT_Road_to_Trailblazer20171025_Tokyo_DG_LT_Road_to_Trailblazer
20171025_Tokyo_DG_LT_Road_to_Trailblazer
 
Demonstration of Einstein Language with Platform Event
Demonstration of Einstein Language with Platform EventDemonstration of Einstein Language with Platform Event
Demonstration of Einstein Language with Platform Event
 
スグにできる!Microsoft Flow でこんな連携あんな連携
スグにできる!Microsoft Flow でこんな連携あんな連携スグにできる!Microsoft Flow でこんな連携あんな連携
スグにできる!Microsoft Flow でこんな連携あんな連携
 
Terakoyaforce 200125 ver2
Terakoyaforce 200125 ver2Terakoyaforce 200125 ver2
Terakoyaforce 200125 ver2
 
20221104_しゃべくりforceのおしゃべり用資料
20221104_しゃべくりforceのおしゃべり用資料20221104_しゃべくりforceのおしゃべり用資料
20221104_しゃべくりforceのおしゃべり用資料
 
音声で楽しく業務効率化!TOKSOKで変わる請求業務
音声で楽しく業務効率化!TOKSOKで変わる請求業務音声で楽しく業務効率化!TOKSOKで変わる請求業務
音声で楽しく業務効率化!TOKSOKで変わる請求業務
 
Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...
Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...
Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...
 
Sap inside track2019tokyo_d3-caa-dev04_sap-graph
Sap inside track2019tokyo_d3-caa-dev04_sap-graphSap inside track2019tokyo_d3-caa-dev04_sap-graph
Sap inside track2019tokyo_d3-caa-dev04_sap-graph
 
COET Record Meetingのローンチまでの開発秘話
COET Record Meetingのローンチまでの開発秘話COET Record Meetingのローンチまでの開発秘話
COET Record Meetingのローンチまでの開発秘話
 
私に背中を見せてくれた永遠の上司Sさん(インフラ勉強会1周年記念イベント講演資料)
私に背中を見せてくれた永遠の上司Sさん(インフラ勉強会1周年記念イベント講演資料)私に背中を見せてくれた永遠の上司Sさん(インフラ勉強会1周年記念イベント講演資料)
私に背中を見せてくれた永遠の上司Sさん(インフラ勉強会1周年記念イベント講演資料)
 
てきめし#06_イベント紹介&アンケート結果
てきめし#06_イベント紹介&アンケート結果てきめし#06_イベント紹介&アンケート結果
てきめし#06_イベント紹介&アンケート結果
 
PowerApps+Excelで作る 一番簡単な業務アプリ
PowerApps+Excelで作る 一番簡単な業務アプリPowerApps+Excelで作る 一番簡単な業務アプリ
PowerApps+Excelで作る 一番簡単な業務アプリ
 
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズDon't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
 
IkaLog_FPGAStartup1
IkaLog_FPGAStartup1IkaLog_FPGAStartup1
IkaLog_FPGAStartup1
 
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
 
作るツールから支えるツールへ - Movable Typeと外部システムの連携事例 -
作るツールから支えるツールへ - Movable Typeと外部システムの連携事例 -作るツールから支えるツールへ - Movable Typeと外部システムの連携事例 -
作るツールから支えるツールへ - Movable Typeと外部システムの連携事例 -
 
20240125_SFDG Meetup32寄稿資料_TDX2024に行こう!(TrailblazerDX)
20240125_SFDG Meetup32寄稿資料_TDX2024に行こう!(TrailblazerDX)20240125_SFDG Meetup32寄稿資料_TDX2024に行こう!(TrailblazerDX)
20240125_SFDG Meetup32寄稿資料_TDX2024に行こう!(TrailblazerDX)
 
Salesforceに関わったことでキャリアが変わった話(JapanDreamin' )
Salesforceに関わったことでキャリアが変わった話(JapanDreamin' )Salesforceに関わったことでキャリアが変わった話(JapanDreamin' )
Salesforceに関わったことでキャリアが変わった話(JapanDreamin' )
 
Salesforce と kintone 徹底比較
Salesforce と kintone 徹底比較Salesforce と kintone 徹底比較
Salesforce と kintone 徹底比較
 
SharePoint Online 外部共有を考える
SharePoint Online 外部共有を考えるSharePoint Online 外部共有を考える
SharePoint Online 外部共有を考える
 

More from Takahito Miyamoto

More from Takahito Miyamoto (14)

Build Your Digital HQ with Salesforce Architects
Build Your Digital HQ with Salesforce ArchitectsBuild Your Digital HQ with Salesforce Architects
Build Your Digital HQ with Salesforce Architects
 
20200617_archjapan-tokyo-05
20200617_archjapan-tokyo-0520200617_archjapan-tokyo-05
20200617_archjapan-tokyo-05
 
認定 Integration Architecture デザイナー試験を復習してみた
認定 Integration Architecture デザイナー試験を復習してみた認定 Integration Architecture デザイナー試験を復習してみた
認定 Integration Architecture デザイナー試験を復習してみた
 
#RoadToDF19 - Dreamforceでやりたいこと
#RoadToDF19 - Dreamforceでやりたいこと#RoadToDF19 - Dreamforceでやりたいこと
#RoadToDF19 - Dreamforceでやりたいこと
 
20191023 Einstein Platform Update - Winter '20 Release
20191023 Einstein Platform Update - Winter '20 Release20191023 Einstein Platform Update - Winter '20 Release
20191023 Einstein Platform Update - Winter '20 Release
 
Lightning Web Components Basic
Lightning Web Components BasicLightning Web Components Basic
Lightning Web Components Basic
 
認定Field Service Lightningコンサルタント 合格への第一歩
認定Field Service Lightningコンサルタント 合格への第一歩認定Field Service Lightningコンサルタント 合格への第一歩
認定Field Service Lightningコンサルタント 合格への第一歩
 
20190517_モバイルアーキテクチャを決定する際の観点
20190517_モバイルアーキテクチャを決定する際の観点20190517_モバイルアーキテクチャを決定する際の観点
20190517_モバイルアーキテクチャを決定する際の観点
 
SFDG これからアーキテクトを目指すあなたへ
SFDG これからアーキテクトを目指すあなたへSFDG これからアーキテクトを目指すあなたへ
SFDG これからアーキテクトを目指すあなたへ
 
ドメインアーキテクト資格に挑戦しよう
ドメインアーキテクト資格に挑戦しようドメインアーキテクト資格に挑戦しよう
ドメインアーキテクト資格に挑戦しよう
 
20181030_sfdg_TechSession
20181030_sfdg_TechSession20181030_sfdg_TechSession
20181030_sfdg_TechSession
 
Dreamforce 2018 Global Gathering
Dreamforce 2018 Global Gathering Dreamforce 2018 Global Gathering
Dreamforce 2018 Global Gathering
 
Takahito_Miyamoto_20180923
Takahito_Miyamoto_20180923Takahito_Miyamoto_20180923
Takahito_Miyamoto_20180923
 
New Lightning Components and Salesforce Surveys
New Lightning Components and Salesforce SurveysNew Lightning Components and Salesforce Surveys
New Lightning Components and Salesforce Surveys
 

Recently uploaded

Recently uploaded (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

20180628_SFDG_Meetup_Summer18