Slide 1

Slide 1 text

Introducing Function Builder potatotips #267 2019/12/17

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Function Builderͱ͸ʁ

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

࡞Γํ!

Slide 12

Slide 12 text

#VJMEFSͷ࡞੒ํ๏ʹ͍ͭͯ

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

'VODUJPO#VJMEFSͷ࢖༻ํ๏

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

ϓϩμΫτಋೖ

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Amebaͷಋೖྫ NSAttributedStringͷIFΛ៉ྷʹ 5JQT

Slide 22

Slide 22 text

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