Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Salesforceのツールの作り方
Search
tzmfreedom
September 26, 2019
Technology
0
580
Salesforceのツールの作り方
Salesforce World Tour Tokyo 2019で登壇したときの資料です
tzmfreedom
September 26, 2019
Tweet
Share
More Decks by tzmfreedom
See All by tzmfreedom
Alpine.js を活用した Laravel MPA フロントエンド最適化戦略 / Alpine.js MPA
tzmfreedom
1
890
PHPStan拡張のコードから読み解く静的解析の威力と可能性 / PHPStan extension code reading
tzmfreedom
3
330
php-srcを読んでみよう / php-src codereading
tzmfreedom
1
2.1k
DBGpを使って PHPのデバッガーをつくろう / DGBp PHP Debugger
tzmfreedom
1
1.8k
独自フレームワークPHPアプリケーションの改善戦略 / Original Framework PHP Kaizen
tzmfreedom
5
4.3k
PHPでPHPを実装する〜プログラミング言語実装入門〜
tzmfreedom
0
980
Other Decks in Technology
See All in Technology
View Transition API
shirakaba
1
910
KCD Brazil '25: Enabling Developers with Dapr & Backstage
salaboy
1
120
PHPStan をできる限り高速化してみる
colopl
0
250
Road to SRE NEXT@仙台 IVRyの組織の形とSLO運用の現状
abnoumaru
0
370
空が堕ち、大地が割れ、海が涸れた日~もしも愛用しているフレームワークが開発停止したら?~ #phperkaigi 2025
77web
2
980
チームの性質によって変わる ADR との向き合い方と、生成 AI 時代のこれから / How to deal with ADR depends on the characteristics of the team
mh4gf
4
320
開発組織全体で意識するSLI/SLOを実装している話
zepprix
1
800
LINEギフトのLINEミニアプリアクセシビリティ改善事例
lycorptech_jp
PRO
0
210
移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略 / phper-kaigi-2025-ryu
carta_engineering
0
680
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
1.4k
モンテカルロ木探索のパフォーマンスを予測する Kaggleコンペ解説 〜生成AIによる未知のゲーム生成〜
rist
4
1k
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.7k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
33
6.5k
Being A Developer After 40
akosma
90
590k
Unsuck your backbone
ammeep
669
57k
Site-Speed That Sticks
csswizardry
4
450
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Thoughts on Productivity
jonyablonski
69
4.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How GitHub (no longer) Works
holman
314
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Git: the NoSQL Database
bkeepers
PRO
429
65k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
Transcript
Salesforceͷπʔϧͷ࡞Γํ ా࣮
ࣗݾհ • Twitter: @tzm_freedom • GitHub: tzmfreedom • Blog: https://blog.freedom-man.com
• ࣄۀ։ൃձࣾͷαʔόʔαΠυΤϯδχΞ • Ruby/Rails, PHP/Symfony, ... • ࠷ۙϨΨγʔΞϓϦվળۀ • Ϟϊͮ͘Γେ͖ܥΤϯδχΞ • Salesforceͷܦݧલ৬Ͱ5͘Β͍ • Salesforceͷࢿ֨શࣦͯޮʘ(^o^)ʗ • ࠓۀͰSalesforceΛશ͘৮͍ͬͯͳ͍
ࠓ·Ͱ࡞͖ͬͯͨπʔϧ • go-soapforce: GoͷSalesforce SOAP APIΫϥΠΞϯτ • hsforce: HaskellͷSalesforce APIΫϥΠΞϯτ
• fluent-plugin-sforce: fluentdͷSalesforceϓϥάΠϯ • embulk-output-salesforce: embulkͷSalesforceϓϥάΠϯ • hubot-chatter: hubotͷSalesforceΞμϓλ • spm: SalesforceͷύοέʔδϚωʔδϟʔ • land: ApexͷϩʔΧϧ࣮ߦڥ • alt-apex: ApexΛKotlinͰॻ͚ΔΑ͏ʹ͢ΔτϥϯεύΠϥ
ࠓ͢͜ͱ • πʔϧΛ࡞ΔʹͲ͏͍͏ࣝɾٕज़ɾࢹ͕ඞཁͳ ͷ͔ʁ • ಛʹπʔϧ։ൃʹ͓͚ΔϞνϕʔγϣϯʹ͍ͭͯ • πʔϧΛ࡞Δ۩ମతͳํ๏Ͱͳ͘ɺϝλͳࢹͰ͓ ͠·͢
※͜ͷηογϣϯͷεϥΠυ จࣈ͔͠ग़͖ͯ·ͤΜʂ
Salesforce։ൃΛࢧ͑Δπʔϧͨ͘͞Μ͋Δ • Apex։ൃʢGUIɾEditorʣ • ݹ͘ force.com IDEɺݱࡏVS Codeʴplugin • Salesforceૢ࡞؆қԽʢChrome
Extension) • Salesforce Devtools • σʔλೖʢGUIʣ • Salesforce Dataloader • σϓϩΠͷࣗಈԽʢCUIʣ • ant, sfdx, jsforce • APIΛୟ͘ϥΠϒϥϦ • jsforce(JavaScript), restforce(Ruby), go-soapforce(Go), ...
πʔϧΛ࡞ΔͨΊʹ ඞཁͳࣝɾٕज़ɾࢹ
1. SalesforceΛΔ
Salesforceʹ͍ͭͯΔ • SalesforceͰग़དྷΔ͜ͱग़དྷͳ͍͜ͱ • ։ൃͤͣʹͰ͖ΔྖҬͱͰ͖ͳ͍ྖҬͷཧղ • SalesforceΛΧελϚΠζɾ։ൃ্͍ͯ͘͠ͰͲ͏͍͏ۀ ͕සൃ͢Δͷ͔ • SalesforceϓϥοτϑΥʔϜԿ͕ۤखͳͷ͔
• ۤखͳྖҬʹରͯ͠ผͷΞϓϩʔνͰิ͑Δͷͳͷ͔ • Salesforce͕ެࣜʹఏڙ͍ͯ͠Δπʔϧ • Dataloader, SFDX, VS Code Plugin... • ෆศͰͳ͍͔ʁࣗࣾυϝΠϯʹϑΟοτ͍ͯ͠Δ͔ʁ
2. ՝Λղܾ͢ΔͨΊͷ ٕज़ΛΔ
՝Λղܾ͢ΔͨΊͷٕज़ΛΔ • Salesforceͷը໘ΛΑΓ͍͍ͨ͘͢͠ => Chrome֦ுɾϒοΫϚʔΫϨοτɾϢʔβʔεΫϦϓτ • CLIͰSalesforceΛૢ࡞͍ͨ͠ => CLIπʔϧʢCLIϑϨʔϜϫʔΫ oclifͱ͔Thorͱ͔ʣ
• WebΞϓϦͰSalesforceͷAPIΛୟ͘ => APIΫϥΠΞϯτʢRESTɾSOAPɾMetadataɾToolingʣ • σʔλΛ͍͍ײ͡ʹ͢ΔGUIΛ࡞Γ͍ͨ => WebΞϓϦɾσεΫτοϓΞϓϦɾεϚϗΞϓϦ • ੌ͍OSS͕ग़͚ͨͲSalesforce༻ͷϓϥάΠϯ͕ແ͍ʂ => OSSͷϓϥάΠϯ
՝Λղܾ͢ΔͨΊͷٕज़ΛΔ • ެ։ɾΠϯετʔϧํ๏ • GitHub • ֤छύοέʔδཧγεςϜ • WebΞϓϦ •
Heroku Button • Salesforce Button • bashϫϯϥΠφʔ • Πϯετʔϥʔ • ·͊ͰͿͬͪΌ͚ٕज़ͳΜͯޙͰ͓̺ʢޙड़
3. ϞνϕʔγϣϯΛҡ࣋ͯ͠ ࡞ΓΔྗ
࣮πʔϧΛ࡞ΔٕྔΑΓ ϞνϕʔγϣϯΛҡ࣋ͯ͠ ࡞ΓΔͷ͕Ұ൪͍͠
πʔϧ։ൃͷϞνϕʔγϣϯ • ԿΛ࡞͍͍ͬͯͷ͔Θ͔Βͳ͍… • ࣅͨΑ͏ͳπʔϧ͕͋Δ͠ंྠͷ࠶ൃ໌ʹͳͬͯ͠ ·͏ͷͰ… • ៉ྷͳίʔυॻ͚ͳ͍͠ɺίʔυΛެ։͢Δͷ͕ஏ ͔͍ͣ͠… •
ͦͦ͜ͷπʔϧ࡞ͬͯҙຯ͋ΔͷͩΖ͏͔… • ࡞Γ͍ͨͷ͕͋Δ͚Ͳқ͕ߴ͍…
ԿΛ࡞͍͍ͬͯͷ͔Θ͔Βͳ͍…
ԿΛ࡞ͬͯྑ͍ͷ͔Θ͔Βͳ͍ • ෆศʹؾͮ͘ɻͨΓલΛٙ͏ɻ • ৗʹ٬؍తʹݟͯΈΔɻ • Salesforce˓˓ͳ༷͔ͩΒ͠ΐ͏͕ͳ͍ɺఘΊΔ… Ͱͳ͘ɺ։ൃͰϑΥϩʔͰ͖ͳ͍ͷͳͷ͔ɺͲ͏ͳ Εͬͱศརʹ͑Δͷ͔Λߟ͑Δɻ •
SalesforceAPI͕ॆ࣮͍ͯ͠ΔͷͰ։ൃͰϑΥϩʔͰ ͖Δൣғ͍ • ӡ༻ऀɾ։ൃऀʹෆศͳ͕ແ͍͔ฉ͍ͯΈΔ • తSalesforceΛΑΓศརʹ͑ΔΑ͏ʹ͢Δ͜ͱ
ࣅͨΑ͏ͳπʔϧ͕͋Δ͠ ंྠͷ࠶ൃ໌ʹͳͬͯ͠·͏ͷͰ…
ࣅͨΑ͏ͳπʔϧ͕͋Δ͠ंྠͷ࠶ൃ໌ʹͳͬͯ͠·͏ͷͰ… • ंྠͷ࠶ൃ໌্ • શʹಉ͡πʔϧͱ͍͏ͷଘࡏ͠ͳ͍ • ࡉ͔͍͍উखɺඞཁͳϥϯλΠϜ • ಉ͡Α͏ͳπʔϧ͕Կݸ͋ͬͯྑ͍ •
ࣗͷٕज़ྗ࣮֬ʹ্͕Δ • ࣅͨΑ͏ͳπʔϧʹର͢Δཧղྗ্͕Δ • ཧղྗ্͕͕ΔͱτϥϒϧγϡʔςΟϯάʹڧ͘ͳΔ
៉ྷͳίʔυॻ͚ͳ͍͠ ίʔυΛެ։͢Δͷஏ͔͍ͣ͠…
៉ྷͳίʔυॻ͚ͳ͍͠ɺίʔυΛެ։͢Δͷஏ͔͍ͣ͠… • ͦͦ࠷ॳ͔Β៉ྷͳίʔυͳΜͯॻ͚ΔΘ͚͕ͳ͍ • ແཧʹެ։͠ͳͯ͘ྑ͍͠ɺ࠷ॳࣾπʔϧͰશ͘ ͳ͍ • ͕ɺίʔυΛެ։͢ΔϝϦοτ͔ͳΓ͋ΔͷͰ͓͢͢Ί • ঝೝཉٻΛຬͨ͢
• ιʔγϟϧίʔσΟϯάΛମݧͰ͖Δ • ެ։͢Δͱ͍͏ϓϨογϟʔͰ্࣭͕͕Δ • ҙ֎ͱଞͷਓʹͱͬͯ༗༻ͳπʔϧͰ͋Δ͜ͱ͕ଟ͍ • ެ։ͯ͠ҙ֎ͱ୭ݟ͍ͯͳ͍ͷͰؾʹ͢Δඞཁ͕ͳ͍ • ެ։ʹଛͰͳ͍ɻ
ͦͦ͜ͷπʔϧΛ࡞ͬͯ ҙຯ͋ΔͷͩΖ͏͔…
ͦͦ͜ͷπʔϧΛ࡞ͬͯҙຯ͋ΔͷͩΖ͏͔… • ҙຯ࡞ͬͨ͋ͱʹߟ͑ͯྑ͍ • ͱΓ͋͑ͣϓϩτλΠϐϯάతʹਖ਼ৗܥ͚ͩ࡞ͬͯΈΔ • ҙຯΛߟ͑Δલʹͤ͞Δ • ҙ֎ͱͬͯ͘ΕΔਓ͕͍ͨΓ͢Δͷ •
ʹཱͨͳͯ͘ྑ͍ɻָ͚͠ΕOK • ϓϩάϥϛϯάָ͍͠
࡞Γ͍ͨͷ͕͋Δ͚Ͳ қ͕ߴ͍…
࡞Γ͍ͨͷ͕͋Δ͚Ͳқ͕ߴ͍… • қ͕ߴ͍ͷΛ࡞Γ͍ͨͱࢥͬͨͱ͖ࣗͷٕ ज़ྗΛߴΊΔେ͖ͳνϟϯε • ن͕େ͖͍ɺқ͕ߴ͍ͷఔɾඞཁͳٕज़ ཁૉΛղ͢Δ • ̍ʙ̍िؒ͘Β͍ͰୡͰ͖Δখ͍͞ඪΛ࡞ͬͯ ͓͘
• ·ͣ؆୯ͳਖ਼ৗܥΛಈ͔͢ɻ͔ͦ͜Β͍͛ͯ͘ • ࡞Γͳ͕ΒֶͿɺֶͿͨΊʹ࡞Δ
πʔϧΛ࡞Δ্Ͱ େࣄʹ͍ͯ͠Δ͜ͱ
πʔϧΛ࡞Δ্Ͱେࣄʹ͍ͯ͠Δ͜ͱ • ͍͔ͭΔɺͰͳ͘ࠓΔɻίʔυΛॻ͘ɻ • Γͨ͘ͳͬͨͱ͖͕νϟϯεɻ৸͔͢ͱϞνϕʔγϣϯԼ ͕ͬͯΒͳ͘ͳΔɻνϟϯεΛಀ͞ͳ͍ • ϞνϕʔγϣϯԼ͕Δͷɻਖ਼ৗܥ͚ͩͰҰؾʹ࡞ΓΔ • ධՈʹͳΒͳ͍ɺ·ͣखΛಈ͔͢ɻ
• ΞΠσΞΛΞΠσΞͰऴΘΒͤͳ͍ɻ ࣮ͯ͠۩ݱԽͰ͖Δͷ͕ΤϯδχΞͷڧΈ • ۩ݱԽͰ͖ΔͷΛ૿͍͚ͯ͠Δͷ͕ΤϯδχΞͷָ͠Έ Ͱ͋ΓՁʹͳΔ • ԿΑΓɺϓϩάϥϛϯάΛָ͠ΉɻϞϊͮ͘Γָ͍͠ɻ ϓϩάϥϛϯά͕తʹͳͬͯྑ͍ɻ
·ͱΊ • SalesforceͷπʔϧΛ࡞Δͷʹඞཁͳࣝɾٕज़ɾࢹ • SalesforceΛΔ • ՝ղܾ͢ΔͨΊͷٕज़ΛΔ • ϞνϕʔγϣϯΛҡ࣋ͯ͠࡞ΓΔ •
ΞΠσΞΛ࣮ݱͰ͖Δͷ͕ΤϯδχΞͷՁɻ ίʔυΛॻ͍͍͖ͯ·͠ΐ͏ʂ
Enjoy Programming!!