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

Introducing Function Builder

100059
December 17, 2019

Introducing Function Builder

potatotips #267
2019/12/17

100059

December 17, 2019
Tweet

More Decks by 100059

Other Decks in Technology

Transcript

  1. Introducing Function Builder
    potatotips #267
    2019/12/17

    View Slide

  2. Akihisa Sengoku
    @akihisasen
    גࣜձࣾαΠόʔΤʔδΣϯτ
    AmebaʢΞϝʔόʣ
    iOSΤϯδχΞ

    View Slide

  3. Function Builderͱ͸ʁ

    View Slide

  4. 4XJGU6*Ͱ࢖ΘΕ͍ͯΔΫϩʔδϟʔతͳ΋ͷʁ

    View Slide

  5. %4-Λॻ͘͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨʁ

    View Slide

  6. 4XJGUͰ௥Ճ͞Εͨ৽ػೳ
    1SPQPTBM 'PSVN

    View Slide

  7. Builderͷϧʔϧʹैͬͯؔ਺Λ
    ҉໧తʹม׵͢Δ͜ͱ͕Ͱ͖Δ
    #VJMEFSΛ
    దԠͨؔ͠਺
    #VJMEFSϧʔϧʹ
    Ԡͯؔ͡਺Λม׵
    #VJMEFSΛఆٛ
    #VJMEFSΛ
    దԠ

    View Slide

  8. View Slide

  9. View Slide

  10. Function BuilderʹΑΓ
    ಠࣗͷDSLΛΑΓ࡞੒͠΍͘͢ͳͬͨ
    - Structure Data (json, XML)
    - UI View Hierarchies
    - HTML DOM Hierarchies

    View Slide

  11. ࡞Γํ!

    View Slide

  12. #VJMEFSͷ࡞੒ํ๏ʹ͍ͭͯ

    View Slide

  13. Builderͷ࡞੒ํ๏
    1. struct or classͷલʹ`@_functionBuilder`Λ͚ͭͯ
    ఆٛ͢Δɻ
    2. static func Ͱ `buildBlock(_ components:
    Component...) -> Component` Λఆٛ͢Δɻ

    View Slide

  14. ͦͷଞͷbuildͷ࣮૷
    • buildExpression(_ expression: Expression) ->
    Component
    • buildFunction(_ components: Component...) -
    > Return
    • buildDo(_ components: Component...) ->
    Component
    • buildOptional(_ component: Component?) ->
    Component

    View Slide

  15. 'VODUJPO#VJMEFSͷ࢖༻ํ๏

    View Slide

  16. Function Builderͷ࢖༻ํ๏
    1. Function BuilderΛ࢖༻͍ͨؔ͠਺ͷલʹ
    @FunctionBuilder໊Λ͚ͭΔ
    2. BuilderͷbuildBlockʹରԠ͢ΔҾ਺Λɺ
    վߦ۠੾ΓͰهड़

    View Slide

  17. ؔ਺ͷҾ਺ͷΫϩʔδϟͰFunction Builder
    Λ࢖༻͢Δ͜ͱ͕Ͱ͖Δ

    View Slide

  18. View Slide

  19. ϓϩμΫτಋೖ

    View Slide

  20. SwiftUI
    HTML
    NSAttributedString
    Network
    UIKit
    ϓϩμΫτಋೖ: DSL

    View Slide

  21. Amebaͷಋೖྫ
    NSAttributedStringͷIFΛ៉ྷʹ



    5JQT

    View Slide

  22. What's New in Swift - WWDC2019
    https://developer.apple.com/videos/play/
    wwdc2019/402/
    Function Builder - swift-evolution
    https://github.com/apple/swift-evolution/blob/
    9992cf3c11c2d5e0ea20bee98657d93902d5b17
    4/proposals/XXXX-function-builders.md

    View Slide