Slide 1

Slide 1 text

4XJGUͷ৽ػೳͱ 4XJGU6* ձ௡େֶίϯϐϡʔλཧ޻ֶ෦೥ ҏ౻྇໵

Slide 2

Slide 2 text

ࣗݾ঺հ ҏ౻྇໵ ձ௡େֶ೥ J04 Χϐόϥ

Slide 3

Slide 3 text

ͦ΋ͦ΋ͳͥ4XJGU w ϝδϟʔόʔδϣϯ͡Όͳ͍͡ΌΜɻ w ͦΕΑΓ4XJGU6*͸Αɻ w 4XJGUͱ͔ڵຯͳ͍Θɻ

Slide 4

Slide 4 text

ճ౴ w 4XJGUΛ͔͚Δਓ͕νϥοͱݟͯ΋ʮ͑ʁʯͬͯͳΔΑ͏ ͳจ๏͕૿͑ͨ w 4XJGU6*ʹେ͖͘औΓࠐ·Εɺ಺෦Ͱ΋ͨ͘͞Μ৽จ๏͕ ࢖༻͞Ε͍ͯΔ w ॳݟͰ͸ਖ਼௚Θ͚Θ͔ΒΜɻ

Slide 5

Slide 5 text

4XJGUͷ৽ػೳ

Slide 6

Slide 6 text

Կݸ͔ฒ΂ͯΈͨ struct SwiftUIView : View { var body: some View { Text("Hello World!”) Text("Hello World!") } } @ObjectBinding var viewModel: HogeViewModel func add(x: Int, y: Int) -> Int { x + y }

Slide 7

Slide 7 text

͑ʁී௨͡ΌͶʁ

Slide 8

Slide 8 text

͖ͬ͞ͷίʔυͷதͷ৽ػೳ w !1SPQFSUZ%FMFHBUF w !@GVODUJPO#VJMEFS w 0QBRVF3FTVMU5ZQF w ؔ਺ͷฦΓ஋ͰҰߦͰࡁΉ৔߹ʹASFUVSOAΛॻ͔ͳͯ͘ ΋Α͘ͳͬͨ

Slide 9

Slide 9 text

!1SPQFSUZ%FMFHBUF @ObjectBinding ← ͜Εͱ͔ @State ← ͜Ε KotlinͷҠৡϓϩύςΟʁΛݩʹͯ͠ΔͱͷهࣄΛͪΒͬͱΈͨΓ

Slide 10

Slide 10 text

!1SPQFSUZ%FMFHBUF ࢖͍ํɿ @State var profile = Profile.default Ͳ͏ͳͬͯΔͷ͔ɿ @Stateͷ৔߹ɺprofileʹೖͬͨ஋ΛBindingͱ͍ͬͨ෩ʹϥο ϓ͢Δɻ औΓग़͢ࡍʹ `profile`ͰΞΫηε͢ΔͱೖΕͨ஋, `$profile`ͱΞΫηε͢Δͱϥοϓͨ͠஋Λར༻Ͱ͖Δ

Slide 11

Slide 11 text

!@GVODUJPO#VJMEFS var body: some View { Text("Hello World!”) // ͜͜ Text("Hello World!”) // ͜͜ } 1SPQPTBM https://github.com/apple/swift-evolution/blob/ 9992cf3c11c2d5e0ea20bee98657d93902d5b174/proposals/XXXX- function-builders.md

Slide 12

Slide 12 text

!@GVODUJPO#VJMEFS ಠࣗͷ֦ு΋࡞ΕΔ(ྫɿ୯ޠΛݸผʹ౉ͯ͠ӳจ࡞੒) @_functionBuilder struct SentenceBuilder { static func buildBlock(_ strs: String...) -> String { return strs.reduce(“”) { (res, str) -> String in return res + " " + str } } } func build(@SentenceBuilder block: () -> String) -> String { block() } print(build { "I";"am";"Ryoya Ito";"Nice";"to";"meet";"you!!" }) => I am Ryoya Ito Nice to meet you!!

Slide 13

Slide 13 text

!@GVODUJPO#VJMEFS w ໰୊఺ print(build { let name = "Ryoya Ito" "I" “am" name "Nice" "to" "meet" "you!!" }) ɾΫϩʔδϟ಺Ͱม਺ఆ͕ٛͰ͖ͳ͍ ɾΫϩʔδϟ಺ͰifจͳͲ͕ॻ͚ͳ͍

Slide 14

Slide 14 text

0QBRVF3FTVMU5ZQF ͜ͷίʔυதͷ`some` var body: some View { Text("Hello World!") } ؆୯ʹදݱ͢ΔͱɺฦΓ஋Ͱ૯শܕΛ࢖͍͍ͨ࣌࢖͏΋ͷɻ શͯ͸͜ͷهࣄʹ͋Δɾɾɾ Swift 5.1 ʹಋೖ͞ΕΔ Opaque Result Type ͱ͸Կ͔

Slide 15

Slide 15 text

0QBRVF3FTVMU5ZQF ຊདྷͰ͋Ε͹ func hoge() -> H { } ͜͏ॻ͘ඞཁ͕͋ΔͷΛ func hoge() -> some AnyObject { } ͱॻ͚ΔΑ͏ʹͨ͠΋ͷɻ γϯλοΫεγϡΨʔͰ͢ɻ

Slide 16

Slide 16 text

0QBRVF3FTVMU5ZQF func hoge() -> AnyObject { } ↑͜ΕͰΑ͘Ͷʁ ͍͍͑ɻ func hoge() -> some AnyObject { } ͬͪ͜Ͱ͢ɻ

Slide 17

Slide 17 text

0QBRVF3FTVMU5ZQF ͳͥμϝͳͷ͔ʁ ઌ΄Ͳࡌ͍ͤͯͨهࣄʹ౴͑͸͋Δ

Slide 18

Slide 18 text

0QBRVF3FTVMU5ZQF w ύϑΥʔϚϯε্ͷϩε͕ൃੜ͢Δɻ 1SPUPDPMͰͷฦΓ஋ʹ͢Δͱ༧ظ͞ΕΔશͯͷܕʹ ରԠՄೳͳΑ͏ʹϝϞϦྖҬ͕֬อ͞ΕΔ

Slide 19

Slide 19 text

ؔ਺ͷฦΓ஋ͰҰߦͰࡁΉ৔߹ʹ ASFUVSOAΛॻ͔ͳͯ͘΋Α͘ͳͬͨ func add(x: Int, y: Int) -> Int { x + y } ͦͷ·Μ·Ͱ͢ɻ ࠓ·ͰΫϩʔδϟͰͰ͖ͨ΋ͷ͕ͦͷ··ؔ਺ͰͰ͖ΔΑ͏ ʹͳΓ·ͨ͠ɻ

Slide 20

Slide 20 text

ͦͷଞؾʹͳΔΞοϓσʔτ w $PSF/'$Ͱ4VJDBͳͲͷಡΈऔΓ͕Մೳʹͳͬͨ
 ˠJ1IPOFʹ4VJDB΍OBOBDPΛ͚ۙͮΔ͚ͩͰ࢒ߴͷ֬ೝ ͕Ͱ͖Δʂʂ w EZOBNJD.FNCFS-PPLVQͷ,FZ1BUIରԠ

Slide 21

Slide 21 text

͓·͚ IUUQTHJUIVCDPNSZJUUPFWFSZUIJOH@DPVOUFS

Slide 22

Slide 22 text

͋Γ͕ͱ͏͍͟͝·͠ ͨʂʂ