$30 off During Our Annual Pro Sale. View Details »

SwiftUIっぽくした話

たまねぎ
February 16, 2022

 SwiftUIっぽくした話

たまねぎ

February 16, 2022
Tweet

More Decks by たまねぎ

Other Decks in Programming

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    • ͨ·Ͷ͗ʢ@_chocoyamaʣ


    • 2019೥12݄~ ϔΠגࣜձࣾ


    • STORES ϨδͷiOSΞϓϦ։ൃ

    View Slide

  3. ΞδΣϯμ
    1. STORES Ϩδͱ͸


    2. Ϩγʔτͱҹ࡮ͷྲྀΕ


    3. ϨγʔτϨΠΞ΢τ࣮૷ͷมભ


    4. ;Γ͔͑Γ

    View Slide

  4. STORES Ϩδͱ͸
    • 2021.06ʹϦϦʔε


    • ࣮ళฮۀ຿Λαϙʔτ͢ΔPOSΞϓϦ


    • ϑϧSwiftUI


    • ձܭɾ঎඼؅ཧɾϨγʔτҹ࡮ etc…

    View Slide

  5. ϑϧSwiftUIʹͨ͠࿩


    SwiftUIͬΆͨ͘͠࿩

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. ϨγʔτϨΠΞ΢τ࣮૷ͷมભ
    • ͬΆ͞Lv1ɿXMLϕλॻ͖Ͱͷ࣮૷


    • ͬΆ͞Lv2ɿFlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞੒


    • ͬΆ͞Lv3ɿresultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ

    View Slide

  10. ಠࣗϧʔϧʹج͍ͮͨλά+ଐੑ





    Stringͷ݁߹





    XMLจࣈྻΛ࡞੒
    ͬΆ͘ͳ͍ʙʙʙ
    ͬΆ͞Lv1 : XMLϕλॻ͖Ͱͷ࣮૷
    9.-

    View Slide

  11. • ܕ҆શͰͳ͘ɺ૝ఆ֎ͷจࣈ͕͋ΔͱऴΘΔ


    • ίʔυͱΞ΢τϓοτͷߏ଄͕ඇରԠͰɺશମ૾͕ಡΈऔΓͮΒ͍


    • ৑௕Ͱॏෳͨ͠هड़΋ଟ͍


    • มߋʹऑ͍
    XMLจࣈྻΛ௚઀ੜ੒͢Δ͜ͱͷ໰୊఺

    View Slide

  12. XML͸એݴత





    એݴతUI





    SwiftUI





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

    View Slide

  13. • SwiftUIͷΑ͏ʹγϯϓϧͰએݴతͳϨΠΞ΢τఆٛ


    • ܕͰݎ࿚ͯ͠ɺ޷͖์୊͔͚Δهड़Λഉআ


    • ΤσΟλͷิ׬ʹΑΓࣄલ஌ࣝͳ͠Ͱॻ͚ΔIF


    • ࠓޙͷཁૉ֦ுΛݟਾ͑ͯɺ௥Ճɾมߋ͠΍͍͢
    → ܕ҆શͰXMLੜ੒Λந৅Խͨ͠IFΛఏڙ͢Δ
    վળํ਑

    View Slide

  14. ·͋·͋
    ͬΆ͍ʙʙʙ
    ֤ཁૉ͝ͱʹΫϥεΛఆٛ





    ΠϯελϯεΛReceiptΫϥεʹ౉͢





    ಺෦తʹXMLจࣈྻΛ࡞੒


    ʢ௚઀XMLΛॻ͔ͳͯ͘ྑ͍ʣ
    ͬΆ͞Lv2 : FlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞੒
    9.-

    View Slide

  15. Textͷ৔߹
    • ߏ଄Λଊ͑΍͘͢


    • ࢦఆՄೳύϥϝʔλΛܕͰݫ֨ʹ੍ޚ


    • ࣄલ஌ࣝͳ͠Ͱ΋ɺิ׬ʹΑΓબ୒Մೳͳ஋Λ೺Ѳ

    View Slide

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

    View Slide

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

    View Slide

  18. ՝୊
    ཁૉΛ഑ྻʹͯ͠౉͢





    ࣜ΍੍ޚߏจΛ௚઀ॻ͚ͳ͍





    ผΫϥεΛ࡞੒۪ͯ͠௚ʹରԠ

    View Slide

  19. • resultBuilderͰߋʹSwiftUIͬΆ͘


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

    View Slide

  20. resultBuilder
    • Swift5.4Ͱ௥Ճ͞ΕͨAttributeͰɺ಺෦DSLੜ੒ʹ׆༻Ͱ͖Δ

    ʢSwiftUIͷViewBuilderʹ΋࢖ΘΕ͍ͯΔʣ


    • ؔ਺ͳͲʹద༻͢Δͱɺྻڍ஋Λऩूͯ͠࠷ऴతͳܕʹ·ͱΊΒΕΔ


    • ஋ͷྻڍʹΧϯϚ͕ඞཁͳ͘ɺࣜ΍੍ޚߏจ΋هड़Ͱ͖Δ


    • ϓϩτλΠϓͷ@_functionBuilderͰ͸ɺػೳ੍͕ݶ͞Ε͍ͯͨ
    ྻڍͨ͠஋ SFTVMU#VJMEFS ࠷ऴతͳ஋

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. ࠷ऴܗ
    ͬΆ͘ͳͬͨʂ

    View Slide

  28. ࠷ऴܗ

    View Slide

  29. ;Γ͔͑Γ
    • ཧ૝ܗ͔Βߟ͑ͨͷ͕ྑ͔ͬͨ


    • ࣮ݱͷͨΊɺ஌Βͳ͍஌ࣝͷΠϯϓοτػձ͕ੜ·ΕΔ


    • ׬੒ܗ͕ελʔτ࣌఺Ͱݟ͍͑ͯΔͨΊɺઃܭʹϒϨ͕ੜ·Εͳ͍


    • ಠࣗSDK͸࢖͍ॴΛݟۃΊΔͱ͏·͘ػೳ͢Δ


    • ʢཚ༻͗͢͠ΔͱٯʹΘ͔ΓͮΒ͘ͳΔ఺͸஫ҙʣ

    View Slide

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

    View Slide