Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Japan Dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス

Japan Dreamin' 2020 - AppExchangeプロダクト開発を続けて見えてきたプラクティス

Salesforce で ISV/OEM アプリケーションを開発する上で気をつけるべきポイント、たどり着いた解決策について紹介する。

Japan Dreamin' 2020
Practices I discovered during AppExchange product development
Here are some tips and tricks for developing ISV / OEM applications with Salesforce.

Akira Kuratani

January 25, 2020
Tweet

More Decks by Akira Kuratani

Other Decks in Technology

Transcript

  1. ຊ೔࿩͢͜ͱɺ࿩͞ͳ͍͜ͱ
 What to talk or not to talk about today

    ࿩͢͜ͱWhat to talk 
 ɾAppExchange։ൃͰେ੾ͳ͜ͱ
 ɹImportant things in AppExchange development
 
 
 ɾ੒௕͢ΔϓϩμΫτΛ։ൃ͢ΔϓϥΫςΟε
 ɹPractices for developing a growing product 
 ࿩͞ͳ͍͜ͱWhat not to talk 
 ɾϕετϓϥΫςΟε
 ɹBest Practices 
ɾͨ͘͞ΜചΕΔϓϩμΫτͷ࡞Γํ ɹɹHow to make products that sell a lot #͜ͷൃݴ͸ݸਓͷݟղͰ͋Γॴଐ͢Δ૊৫ͷެࣜݟղͰ͸͋Γ·ͤΜ
  2. Akira Kuratani / ૔୩ জ
 ɹɹɹ@a_kuratani ɹɹɹkuratani 
 ɹɹɹTeamSpirit Inc.

    ɹɹɹEngineering Team / Director ɹɹɹPodcast(migration.fm) me
  3. એݴత։ൃ or ίʔυ։ൃ Declarative development or Code development એݴత։ൃ
 %FDMBSBUJWFEFWFMPQNFOU

    ίʔυ։ൃ $PEFEFWFMPQFNFOU ΧελϚΠζ༰қ &BTZDVTUPNJ[BUJPO ߴ͍
 )JHI ௿͍
 -PX ΞοϓάϨʔυՄೳ
 6QHSBEFBCMF ௿͍
 -PX ߴ͍
 )JHI
  4. એݴత։ൃ or ίʔυ։ൃ Declarative development or Code development એݴత։ൃ
 %FDMBSBUJWFEFWFMPQNFOU

    ίʔυ։ൃ $PEFEFWFMPQFNFOU ΧελϚΠζ༰қ &BTZDVTUPNJ[BUJPO ߴ͍
 )JHI ௿͍
 -PX ΞοϓάϨʔυՄೳ
 6QHSBEFBCMF ௿͍
 -PX ߴ͍
 )JHI ಛ௃ $IBSBDUFSJTUJD ιϦϡʔγϣϯςϯϓ Ϩʔτͱͯ͠ఏڙɻ
 1SPWJEFEBTTPMVUJPOUFNQMBUF ϓϩμΫτͱͯ͠ܧଓ ఏڙɻ
 1SPWJEFEDPOUJOVPVTMZBTQSPEVDUT
  5. Salesforce ඪ४ϖʔδ͸࢖͏΂͖͔ʁ Should we use the Salesforce standard pages? •

    ΦϒδΣΫτΛఆٛ͢Ε͹ɺ
 ͙͢ʹҰཡը໘ɺৄࡉը໘͕ར༻Ͱ͖Δ
 Once the object is defined, the list page and detail page can be used immediately. • ϨίʔυλΠϓͰϖʔδϨΠΞ΢τΛ੾Γସ ͑Δ͜ͱ͕Ͱ͖Δ
 We can switch page layout by record type.
  6. ࢲͷճ౴ My Answer Salesforceඪ४ը໘͸ۃྗ࢖͏΂͖Ͱ͸ͳ͍
 Salesforce standard pages should not be

    used as much as possible. ͳ͔ͥʁWhy? ϖʔδϨΠΞ΢τ͕ΞοϓάϨʔυͰ͖ͳ͍
 Page layout is not upgradeable. ✕ ΞοϓάϨʔυ
  7. ࢲͷճ౴ My Answer Salesforceඪ४ը໘͸ۃྗ࢖͏΂͖Ͱ͸ͳ͍
 Salesforce standard pages should not be

    used as much as possible. Ͳ͏͢Δ͔ʁHow to do? VisualforceϖʔδͳͲͷΞοϓάϨʔυ
 ՄೳͳίϯϙʔωϯτΛར༻͢Δ
 Use upgradeable components such as Visualforce pages.
  8. બ୒ϦετΛͲ͏࣮૷͢Δ͔ʁ
 How to implement pick-lists? • બ୒ϦετܕΛར༻͢Δ
 Use picklist type

    • खܰʹ࣮૷Ͱ͖Δ
 Easy implementation • ߲໨஋ʹΑΔόϦσʔγϣϯ͕Ͱ͖Δ
 Validation by item value
  9. ࢲͷճ౴ My Answer બ୒ϦετܕΛ࢖༻͠ͳ͍
 Don't use pick-list type. ͳ͔ͥʁWhy? ΞοϓάϨʔυ࣌ʹର৅૊৫ͷબ୒Ϧετ

    ܕͷ߲໨஋Λ௥Ճɾมߋɾ࡟আͰ͖ͳ͍ Cannot add / change / delete pick-list type item value of target organization when upgrading. ✕ ΞοϓάϨʔυ
  10. ࢲͷճ౴ My Answer બ୒ϦετܕΛ࢖༻͠ͳ͍
 Don't use pick-list type. Ͳ͏͢Δ͔ʁHow to

    do? 1. ςΩετܕͱͯ͠ɺ߲໨஋͸ผ్؅ཧ͢Δ
 Holds data in text type. Item values are managed separately. 2. ΧελϜϝλσʔλܕͷબ୒ϦετΛར༻ ͢Δ
 Use custom metadata type pick-lists. 3. Ϛελʔ؅ཧ͢Δ
 Master manage.
  11. ࢲͷճ౴ My Answer બ୒ϦετܕΛ࢖༻͠ͳ͍
 Don't use pick-list type. Ͳ͏͢Δ͔ʁHow to

    do? ํࣜ.FUIPE ৄࡉ%FUBJM ྑ͍఺(PPE ѱ͍఺#BE બ୒Ϧετܕ 1JDLMJTUUZQF બ୒ϦετܕʹσʔλΛอଘ͢Δɻ
 4BWFUIFEBUBJOBQJDLMJTUUZQF ߲໨஋ΛόϦσʔγϣϯͰ͖Δ
 *UFNWBMVFTDBOCFWBMJEBUFE ߲໨஋Λ௥Ճมߋ࡟আͰ͖ͳ͍ *UFNWBMVFTDBO`UCFBEEFE DIBOHFEEFMFUFE ΧελϜϝλσʔλܕ $VTUPN.FUBEBUBUZQF ΧελϜϝλσʔλܕΛఆٛ͠ɺσʔ λΛอ࣋͢Δɻ
 %FpOFDVTUPNNFUBEBUBUZQFTBOETBWF UIFEBUB ։ൃऀ͕߲໨஋Λ௥ՃͰ͖Δ
 %FWFMPQFSDBOBEEJUFNWBMVFT ߲໨஋Λมߋɾ࡟আͰ͖ͳ͍
 *UFNWBMVFTDBO`UCFDIBOHFE EFMFUFE ςΩετܕ
 5FYUUZQF ߲໨஋͸վߦ۠੾ΓͳͲͰอ࣋ɻ ςΩετܕʹσʔλΛอଘ͢Δɻ
 *UFNWBMVFTBSFTUPSFEBUMJOFCSFBLT 4BWFUIFEBUBJOUFYUUZQF Ϣʔβʔ͕߲໨஋Λ௥Ճɾมߋɾ ࡟আͰ͖Δ 6TFSDBOBEEDIBOHFEFMFUF JUFNWBMVFT ߲໨஋ΛόϦσʔγϣϯͰ͖ͳ͍
 *UFNWBMVFTDBO`UCFWBMJEBUFE Ϛελʔ؅ཧ
 .BTUFS.BOBHFNFOU ΦϒδΣΫτΛ࡞੒͠ɺࢀরܕͰσʔ λΛอ࣋͢Δɻ
 $SFBUFBOPCKFDUBOEIPMEUIFEBUBJOB SFGFSFODFUZQF Ϣʔβʔ͕߲໨஋Λ௥Ճɾมߋɾ ࡟আͰ͖Δ 6TFSDBOBEEDIBOHFEFMFUF JUFNWBMVFT ࢀরܕ߲໨͕ඞཁ
 3FGFSFODFJUFNSFRVJSFE
  12. ࢲͷճ౴ My Answer ϨϙʔτΛ؅ཧύοέʔδʹؚΊͳ͍
 Don’t include reports in managed packages.

    ͳ͔ͥʁWhy? Ϩϙʔτ͸ΞοϓάϨʔυͰ͖ͳ͍ Reports cannot be upgraded. ✕ ΞοϓάϨʔυ
  13. ࢲͷճ౴ My Answer ϨϙʔτΛ؅ཧύοέʔδʹؚΊͳ͍
 Don’t include reports in managed packages.

    Ͳ͏͢Δ͔ʁHow to do? • ϨϙʔτλΠϓ͚ͩఏڙͯ͠Ϩϙʔτ͸ఏڙ ͠ͳ͍
 Provide only report type, not report • ϨϙʔτΛఏڙ͢Δ؅ཧύοέʔδΛ
 ผύοέʔδʹ෼཭͢Δ
 Isolate managed packages that provide reports.
  14. ·ͱΊ Conclusion • AppExchange։ൃʹ͓͍ͯ
 ʮΞοϓάϨʔυՄೳʯ
 Ͱ͋Δ͜ͱ͕ॏཁ
 It is important to

    be “upgradeable” in AppExchange development. • ӡ༻Λ૝૾͠ͳ͕ΒɺISV ΨΠυΛख़ಡ͢Δ
 Peruse the ISV guide while imagining operations.