SwiftUIͬΆͨ͘͠ϥΫϚ x STORES LTΠϕϯτ ~ iOS։ൃͷཪଆ ~@_chocoyama
View Slide
ࣗݾհ• ͨ·Ͷ͗ʢ@_chocoyamaʣ• 201912݄~ ϔΠגࣜձࣾ• STORES ϨδͷiOSΞϓϦ։ൃ
ΞδΣϯμ1. STORES Ϩδͱ2. ϨγʔτͱҹͷྲྀΕ3. ϨγʔτϨΠΞτ࣮ͷมભ4. ;Γ͔͑Γ
STORES Ϩδͱ• 2021.06ʹϦϦʔε• ࣮ళฮۀΛαϙʔτ͢ΔPOSΞϓϦ• ϑϧSwiftUI• ձܭɾཧɾϨγʔτҹ etc…
ϑϧSwiftUIʹͨ͠SwiftUIͬΆͨ͘͠
ϨγʔτͱҹͷྲྀΕձܭϨγʔτ ਫ਼ࢉϨγʔτ
ϨγʔτͱҹͷྲྀΕXML CALayer CGImage ϓϦϯλʔϨΠΞτΛಈతʹఆٛXMLΛύʔεͯ͠CALayerʹมCALayerΛը૾σʔλԽը૾ͷόΠφϦσʔλΛBluetoothͰૹ৴
ϨγʔτͱҹͷྲྀΕXML CALayer CGImage ϓϦϯλʔϨΠΞτΛಈతʹఆٛXMLΛύʔεͯ͠CALayerʹมCALayerΛը૾σʔλԽը૾ͷόΠφϦσʔλΛBluetoothͰૹ৴ॳظஈ֊Ͳ͏SwiftUIͬΆ͘վળ͖͔ͯͨ͠
ϨγʔτϨΠΞτ࣮ͷมભ• ͬΆ͞Lv1ɿXMLϕλॻ͖Ͱͷ࣮• ͬΆ͞Lv2ɿFlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞• ͬΆ͞Lv3ɿresultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ
ಠࣗϧʔϧʹج͍ͮͨλά+ଐੑ↓Stringͷ݁߹↓XMLจࣈྻΛ࡞ͬΆ͘ͳ͍ʙʙʙͬΆ͞Lv1 : XMLϕλॻ͖Ͱͷ࣮9.-
• ܕ҆શͰͳ͘ɺఆ֎ͷจࣈ͕͋ΔͱऴΘΔ• ίʔυͱΞτϓοτͷߏ͕ඇରԠͰɺશମ૾͕ಡΈऔΓͮΒ͍• Ͱॏෳͨ͠هड़ଟ͍• มߋʹऑ͍XMLจࣈྻΛੜ͢Δ͜ͱͷ
XMLએݴత↓એݴతUI↓SwiftUI↓ϨγʔτUISwiftUIͬΆ͘࡞ΕΔͷͰʁͰͲ͏͢Δ͔ʁ
• SwiftUIͷΑ͏ʹγϯϓϧͰએݴతͳϨΠΞτఆٛ• ܕͰݎ࿚ͯ͠ɺ͖์͔͚Δهड़Λഉআ• ΤσΟλͷิʹΑΓࣄલࣝͳ͠Ͱॻ͚ΔIF• ࠓޙͷཁૉ֦ுΛݟਾ͑ͯɺՃɾมߋ͍͢͠→ ܕ҆શͰXMLੜΛநԽͨ͠IFΛఏڙ͢Δվળํ
·͋·͋ͬΆ͍ʙʙʙ֤ཁૉ͝ͱʹΫϥεΛఆٛ↓ΠϯελϯεΛReceiptΫϥεʹ͢↓෦తʹXMLจࣈྻΛ࡞ʢXMLΛॻ͔ͳͯ͘ྑ͍ʣͬΆ͞Lv2 : FlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞9.-
Textͷ߹• ߏΛଊ͑͘͢• ࢦఆՄೳύϥϝʔλΛܕͰݫ֨ʹ੍ޚ• ࣄલࣝͳ͠ͰɺิʹΑΓબՄೳͳΛѲ
۩ମతͳ࣮ʮXMLλά1ͭʹ૬͢ΔจࣈྻΛੜʯ͢ΔIFΛఆٛଐੑΛؚΊͯλάจࣈྻΛੜ
۩ମతͳ࣮ͯ͢ͷจࣈྻΛ1ͭͷXMLʹ·ͱΊ্͛Δ
՝ཁૉΛྻʹͯ͢͠↓੍ࣜޚߏจΛॻ͚ͳ͍↓ผΫϥεΛ࡞۪ͯ͠ʹରԠ
• resultBuilderͰߋʹSwiftUIͬΆ͘• ذ܁Γฦ͠هड़Մೳʹ͔ͳΓͬΆ͍ʙʙʙͬΆ͞Lv3 : resultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ9.-
resultBuilder• Swift5.4ͰՃ͞ΕͨAttributeͰɺ෦DSLੜʹ׆༻Ͱ͖Δ ʢSwiftUIͷViewBuilderʹΘΕ͍ͯΔʣ• ؔͳͲʹద༻͢ΔͱɺྻڍΛऩूͯ͠࠷ऴతͳܕʹ·ͱΊΒΕΔ• ͷྻڍʹΧϯϚ͕ඞཁͳ͘ɺ੍ࣜޚߏจهड़Ͱ͖Δ• ϓϩτλΠϓͷ@_functionBuilderͰɺػೳ੍͕ݶ͞Ε͍ͯͨྻڍͨ͠ SFTVMU#VJMEFS ࠷ऴతͳ
୯७ͳͷྻڍ < >CVJME#MPDL
ذ͕͋Δ߹ <><><><>CVJME&YQSFTTJPO<<> <>> < >CVJME#MPDL< > < >CVJME&JUIFSfiSTU<<> <> < >> < >CVJME#MPDL
elseઅͷͳ͍ذ͕͋Δ߹ <>CVJME0QUJPOBM
ϧʔϓ͕͋Δ߹<<> <> <> <>> < >CVJME"SSBZ
ʂड͚͞ΕΔͷύλʔϯʹԠͯ͡ɺରԠ͢ΔbuildؔΛ࣮ → ݁Ռͷܕʹม͍ͯ͘͠
ϨγʔτϨΠΞτ༻ͷ࣮[ReceiptElement]ྻڍͨ͠ SFTVMU#VJMEFS ࠷ऴతͳ
࠷ऴܗͬΆ͘ͳͬͨʂ
࠷ऴܗ
;Γ͔͑Γ• ཧܗ͔Βߟ͑ͨͷ͕ྑ͔ͬͨ• ࣮ݱͷͨΊɺΒͳ͍ࣝͷΠϯϓοτػձ͕ੜ·ΕΔ• ܗ͕ελʔτ࣌Ͱݟ͍͑ͯΔͨΊɺઃܭʹϒϨ͕ੜ·Εͳ͍• ಠࣗSDK͍ॴΛݟۃΊΔͱ͏·͘ػೳ͢Δ• ʢཚ༻͗͢͠ΔͱٯʹΘ͔ΓͮΒ͘ͳΔҙʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ͖ͯ͢ͳϨγʔτҹϥΠϑΛʂ