Slide 1

Slide 1 text

SwiftUIͬΆͨ͘͠࿩ ϥΫϚ x STORES LTΠϕϯτ ~ iOS։ൃͷཪଆ ~ @_chocoyama

Slide 2

Slide 2 text

ࣗݾ঺հ • ͨ·Ͷ͗ʢ@_chocoyamaʣ • 2019೥12݄~ ϔΠגࣜձࣾ • STORES ϨδͷiOSΞϓϦ։ൃ

Slide 3

Slide 3 text

ΞδΣϯμ 1. STORES Ϩδͱ͸ 2. Ϩγʔτͱҹ࡮ͷྲྀΕ 3. ϨγʔτϨΠΞ΢τ࣮૷ͷมભ 4. ;Γ͔͑Γ

Slide 4

Slide 4 text

STORES Ϩδͱ͸ • 2021.06ʹϦϦʔε • ࣮ళฮۀ຿Λαϙʔτ͢ΔPOSΞϓϦ • ϑϧSwiftUI • ձܭɾ঎඼؅ཧɾϨγʔτҹ࡮ etc…

Slide 5

Slide 5 text

ϑϧSwiftUIʹͨ͠࿩ SwiftUIͬΆͨ͘͠࿩

Slide 6

Slide 6 text

Ϩγʔτͱҹ࡮ͷྲྀΕ ձܭϨγʔτ ਫ਼ࢉϨγʔτ

Slide 7

Slide 7 text

Ϩγʔτͱҹ࡮ͷྲྀΕ XML CALayer CGImage ϓϦϯλʔ ϨΠΞ΢τΛಈతʹఆٛ XMLΛύʔεͯ͠CALayerʹม׵ CALayerΛը૾σʔλԽ ը૾ͷόΠφϦσʔλΛBluetoothͰૹ৴

Slide 8

Slide 8 text

Ϩγʔτͱҹ࡮ͷྲྀΕ XML CALayer CGImage ϓϦϯλʔ ϨΠΞ΢τΛಈతʹఆٛ XMLΛύʔεͯ͠CALayerʹม׵ CALayerΛը૾σʔλԽ ը૾ͷόΠφϦσʔλΛBluetoothͰૹ৴ ॳظஈ֊ Ͳ͏SwiftUIͬΆ͘վળ͖͔ͯͨ͠

Slide 9

Slide 9 text

ϨγʔτϨΠΞ΢τ࣮૷ͷมભ • ͬΆ͞Lv1ɿXMLϕλॻ͖Ͱͷ࣮૷ • ͬΆ͞Lv2ɿFlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞੒ • ͬΆ͞Lv3ɿresultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ

Slide 10

Slide 10 text

ಠࣗϧʔϧʹج͍ͮͨλά+ଐੑ ↓ Stringͷ݁߹ ↓ XMLจࣈྻΛ࡞੒ ͬΆ͘ͳ͍ʙʙʙ ͬΆ͞Lv1 : XMLϕλॻ͖Ͱͷ࣮૷ 9.-

Slide 11

Slide 11 text

• ܕ҆શͰͳ͘ɺ૝ఆ֎ͷจࣈ͕͋ΔͱऴΘΔ • ίʔυͱΞ΢τϓοτͷߏ଄͕ඇରԠͰɺશମ૾͕ಡΈऔΓͮΒ͍ • ৑௕Ͱॏෳͨ͠هड़΋ଟ͍ • มߋʹऑ͍ XMLจࣈྻΛ௚઀ੜ੒͢Δ͜ͱͷ໰୊఺

Slide 12

Slide 12 text

XML͸એݴత ↓ એݴతUI ↓ SwiftUI ↓ ϨγʔτUI΋SwiftUIͬΆ͘࡞ΕΔͷͰ͸ʁ Ͱ͸Ͳ͏͢Δ͔ʁ

Slide 13

Slide 13 text

• SwiftUIͷΑ͏ʹγϯϓϧͰએݴతͳϨΠΞ΢τఆٛ • ܕͰݎ࿚ͯ͠ɺ޷͖์୊͔͚Δهड़Λഉআ • ΤσΟλͷิ׬ʹΑΓࣄલ஌ࣝͳ͠Ͱॻ͚ΔIF • ࠓޙͷཁૉ֦ுΛݟਾ͑ͯɺ௥Ճɾมߋ͠΍͍͢ → ܕ҆શͰXMLੜ੒Λந৅Խͨ͠IFΛఏڙ͢Δ վળํ਑

Slide 14

Slide 14 text

·͋·͋ ͬΆ͍ʙʙʙ ֤ཁૉ͝ͱʹΫϥεΛఆٛ ↓ ΠϯελϯεΛReceiptΫϥεʹ౉͢ ↓ ಺෦తʹXMLจࣈྻΛ࡞੒ ʢ௚઀XMLΛॻ͔ͳͯ͘ྑ͍ʣ ͬΆ͞Lv2 : FlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞੒ 9.-

Slide 15

Slide 15 text

Textͷ৔߹ • ߏ଄Λଊ͑΍͘͢ • ࢦఆՄೳύϥϝʔλΛܕͰݫ֨ʹ੍ޚ • ࣄલ஌ࣝͳ͠Ͱ΋ɺิ׬ʹΑΓબ୒Մೳͳ஋Λ೺Ѳ

Slide 16

Slide 16 text

۩ମతͳ࣮૷ ʮXMLλά1ͭʹ૬౰͢ΔจࣈྻΛੜ੒ʯ͢ΔIFΛఆٛ ଐੑ஋ΛؚΊͯλάจࣈྻΛੜ੒

Slide 17

Slide 17 text

۩ମతͳ࣮૷ ͢΂ͯͷจࣈྻΛ1ͭͷXMLʹ·ͱΊ্͛Δ

Slide 18

Slide 18 text

՝୊ ཁૉΛ഑ྻʹͯ͠౉͢ ↓ ࣜ΍੍ޚߏจΛ௚઀ॻ͚ͳ͍ ↓ ผΫϥεΛ࡞੒۪ͯ͠௚ʹରԠ

Slide 19

Slide 19 text

• resultBuilderͰߋʹSwiftUIͬΆ͘ • ෼ذ΍܁Γฦ͠΋௚઀هड़Մೳʹ ͔ͳΓ ͬΆ͍ʙʙʙ ͬΆ͞Lv3 : resultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ 9.-

Slide 20

Slide 20 text

resultBuilder • Swift5.4Ͱ௥Ճ͞ΕͨAttributeͰɺ಺෦DSLੜ੒ʹ׆༻Ͱ͖Δ 
 ʢSwiftUIͷViewBuilderʹ΋࢖ΘΕ͍ͯΔʣ • ؔ਺ͳͲʹద༻͢Δͱɺྻڍ஋Λऩूͯ͠࠷ऴతͳܕʹ·ͱΊΒΕΔ • ஋ͷྻڍʹΧϯϚ͕ඞཁͳ͘ɺࣜ΍੍ޚߏจ΋هड़Ͱ͖Δ • ϓϩτλΠϓͷ@_functionBuilderͰ͸ɺػೳ੍͕ݶ͞Ε͍ͯͨ ྻڍͨ͠஋ SFTVMU#VJMEFS ࠷ऴతͳ஋

Slide 21

Slide 21 text

୯७ͳ஋ͷྻڍ   < > CVJME#MPDL

Slide 22

Slide 22 text

෼ذ͕͋Δ৔߹  <><><><> CVJME&YQSFTTJPO <<> <>> < > CVJME#MPDL < > < > CVJME&JUIFS fi STU <<> <> < >> <   > CVJME#MPDL

Slide 23

Slide 23 text

elseઅͷͳ͍෼ذ͕͋Δ৔߹  <> CVJME0QUJPOBM

Slide 24

Slide 24 text

ϧʔϓ͕͋Δ৔߹ <<> <> <> <>> <   > CVJME"SSBZ

Slide 25

Slide 25 text

׬੒ʂ ड͚౉͞ΕΔ஋ͷύλʔϯʹԠͯ͡ɺରԠ͢Δbuildؔ਺Λ࣮૷ → ݁Ռͷܕʹม׵͍ͯ͘͠

Slide 26

Slide 26 text

ϨγʔτϨΠΞ΢τ༻ͷ࣮૷ [ReceiptElement] ྻڍͨ͠஋ SFTVMU#VJMEFS ࠷ऴతͳ஋

Slide 27

Slide 27 text

࠷ऴܗ ͬΆ͘ͳͬͨʂ

Slide 28

Slide 28 text

࠷ऴܗ

Slide 29

Slide 29 text

;Γ͔͑Γ • ཧ૝ܗ͔Βߟ͑ͨͷ͕ྑ͔ͬͨ • ࣮ݱͷͨΊɺ஌Βͳ͍஌ࣝͷΠϯϓοτػձ͕ੜ·ΕΔ • ׬੒ܗ͕ελʔτ࣌఺Ͱݟ͍͑ͯΔͨΊɺઃܭʹϒϨ͕ੜ·Εͳ͍ • ಠࣗSDK͸࢖͍ॴΛݟۃΊΔͱ͏·͘ػೳ͢Δ • ʢཚ༻͗͢͠ΔͱٯʹΘ͔ΓͮΒ͘ͳΔ఺͸஫ҙʣ

Slide 30

Slide 30 text

͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ͖ͯ͢ͳϨγʔτҹ࡮ϥΠϑΛʂ