Slide 1

Slide 1 text

Context Receiversʹ ࢥ͍Λ஘ͤΔ uzzu @ 2022/10/05 DroidKaigi 2022 DAY.01

Slide 2

Slide 2 text

Cluster, Inc. All Rights Reserved. 2 ஫ҙ 2022/09࣌఺Ͱͷ ৘ใΛݩʹൃද͓ͯ͠Γ·͢ ࢥ͍Λ஘ͤΔ಺༰ͳͷͰओ؍΋ؚ·Ε͓ͯΓ·͢ Context Receivers͸ݱࡏprototypeஈ֊Ͱ͢ ྃ͝ঝ͍ͩ͘͞

Slide 3

Slide 3 text

Cluster, Inc. All Rights Reserved. 3 ࣗݾ঺հ @uzzu Cluster, Inc. ιϑτ΢ΣΞΤϯδχΞ झຯ: VR, ࡶଟͳٕज़ݕূ, ಡॻ, DTM, ֨ήʔ, εϓϥ

Slide 4

Slide 4 text

Cluster, Inc. All Rights Reserved. 4 ClusterͷAndroidΞϓϦʹ͍ͭͯ AndroidΞϓϦ ࠾༻৘ใ AndroidΞϓϦΤϯδχΞืू ⬆ inroom (Unity as a Library) ⬅︎ outroom (Native App)ɹɹɹ

Slide 5

Slide 5 text

Cluster, Inc. All Rights Reserved. 5 ΞδΣϯμ ɾContext Receivers͕དྷΔ·Ͱͷ͓͞Β͍ ɾContext Receiversͱ͸ɺ࢖༻ྫ ɾContext Receiversͷ՝୊ɺࢥ͍ ɾ·ͱΊ

Slide 6

Slide 6 text

Cluster, Inc. All Rights Reserved. 6 ContextReceivers͕དྷΔ·Ͱͷ͓͞Β͍ KEEP(https://github.com/Kotlin/KEEP) YouTrack(https://youtrack.jetbrains.com/) Kotlin Slack(https://kotlinlang.slack.com/) ͍͔ͭ͋͘Δ͕ͦͷதͰ΋2ͭͷissueΛൈਮ

Slide 7

Slide 7 text

Cluster, Inc. All Rights Reserved. 7 Compile-time Extension Interfaces https://github.com/Kotlin/KEEP/pull/87 2017/10ࠒ ɾ࠷ॳظ͸ʮType Classesʯͱ͍͏λΠτϧͰproposal͕ॻ͔Ε͍ͯͨ ɾʮ͍ͭʹKotlinʹ΋ܕΫϥε͕དྷΔ…?!ʯͱ͍͏ࣄͰք۾͸੝Γ্͕Δ

Slide 8

Slide 8 text

Cluster, Inc. All Rights Reserved. 8 Compile-time Extension Interfaces https://github.com/Kotlin/KEEP/pull/87

Slide 9

Slide 9 text

Cluster, Inc. All Rights Reserved. 9 Compile-time Extension Interfaces https://github.com/Kotlin/KEEP/pull/87 ɾcompanion objectͱͷ໾ׂͷॏෳ ɾJVMͱͷ૬ޓӡ༻ ɾෳ਺ͷϨγʔόʹର͢Δ֦ுߏจ͕ඞཁ ɾimplicit parameterͷ೉͠͞ ɾetc…

Slide 10

Slide 10 text

Cluster, Inc. All Rights Reserved. 10 Multiple receivers on extension functions/properties https://youtrack.jetbrains.com/issue/KT-10468 https://youtrack.jetbrains.com/issue/KT-42435

Slide 11

Slide 11 text

Cluster, Inc. All Rights Reserved. 11 ͦͯ͠Context Receivers΁ https://github.com/Kotlin/KEEP/issues/259 https://github.com/Kotlin/KEEP/blob/master/proposals/context- receivers.md ឯ༨ۂંʹ͍ͭͯ΋Proposalʹॻ͔Ε͍ͯΔ (Alternative approaches and design tradeoffs) 1.6.20-M1 ʹͯPrototypeͱͯ͠ϦϦʔε https://blog.jetbrains.com/kotlin/2022/02/kotlin-1-6-20-m1- released/ freeCompilerArgs = listOf("-Xcontext-receivers")

Slide 12

Slide 12 text

Cluster, Inc. All Rights Reserved. 12 Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩ঺հ) ɾίϯςΩετந৅ԽΛهड़͢ΔͨΊͷ ɹmember extension(ϝϯόʔ֦ு)ΛऔΓআ͘

Slide 13

Slide 13 text

Cluster, Inc. All Rights Reserved. 13 Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩ঺հ)

Slide 14

Slide 14 text

Cluster, Inc. All Rights Reserved. 14 Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩ঺հ)

Slide 15

Slide 15 text

Cluster, Inc. All Rights Reserved. 15 Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩ঺հ)

Slide 16

Slide 16 text

Cluster, Inc. All Rights Reserved. 16 Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩ঺հ) ɾKotlinͷܕγεςϜͰෳ਺ͷϨγʔόΛ࣋ͭ ɹίʔυϒϩοΫΛදݱͰ͖ΔΑ͏ʹ͢Δ

Slide 17

Slide 17 text

Cluster, Inc. All Rights Reserved. 17 Context Receiversͷͦͷଞͷྫ ɾίϯετϥΫλͷӅṭ + Contextࢀর

Slide 18

Slide 18 text

Cluster, Inc. All Rights Reserved. 18 Context Receiversͷͦͷଞͷྫ ɾOverloading(※஫ҙ఺͋Γ) ͜͏͍͏ίʔυ͸ॻ͔ͳ͍Ͱɺͳ಺༰΋Proposalʹهࡌ͞Ε͍ͯΔ (contexts-and-coding-style)

Slide 19

Slide 19 text

Cluster, Inc. All Rights Reserved. 19 ɾContext Functionͷείʔϓ֊૚ͷਂ͞(ݕ౼த) ɾReflectionະରԠ(Prototypeஈ֊Ͱ͸΍Βͳͦ͏ͳؾ͕) ɾΤοδέʔε΁ͷରԠ (Kotlin 1.8.0ͰҰ෦मਖ਼ࡁ) ɾSyntax Highlighting(Τϥʔ͸ు͘ͷͰے೑Ͱ) ɾetc… Context Receiversͷ՝୊(Future Work)

Slide 20

Slide 20 text

Cluster, Inc. All Rights Reserved. 20 (ϓϩτλΠϓஈ֊Ͱͱ΍͔͍͘͏΂͖ Ͱ͸ͳ͍ͷ͸ঝ஌Ͱ) ɾهड़ͷબ୒ࢶ͕ଟͯ͋͘Μ·Γࠓ·ͰͷKotlinΒ͘͠ͳ͍Α͏ͳؾ͕͢Δͷ͕ ɹݸਓతʹ͸ٯʹ໘ന͍ ɾCompile-time extensionํ໘Ͱ্͕ͬͨ՝୊͔ΒݟΔʹՄೳͳهड़͸ ɹ͜Ε͔ΒߜΒΕ͍ͯͬͯཉ͍͠ͳʔͱࢥ͍ͬͯΔ 
 ɹ(ཞ༻͕ාͯ͘ਂ͘͸৮Εͳ͍ਓʑ͕͍ͦ͏ͳͷ͸΋͍ͬͨͳ͍ɺͱ͍͏ҙຯͰ) ɾݱঢ়Ͱ΋ᙱ͍ͱ͜Ζʹख͕ಧ͘ͷͰݸਓతʹ͸ॿ͔Δ Context Receivers΁ͷࢥ͍

Slide 21

Slide 21 text

Cluster, Inc. All Rights Reserved. 21 Context Receivers΁ͷࢥ͍ ɾͦ΋ͦ΋ͳͥ ”Context” ʹͳͬͨͷ͔…ʁ ɹ=> Multiple receiversͷϓϩτλΠϓͷஈ֊Ͱ ɹɹύϥϝʔλΛஔ͖׵͑ΔͨΊʹ͋ΔΘ͚Ͱ͸ͳ͘ ɹɹؔ਺ݺͼग़͠ͷͨΊͷίϯςΩετΛ௥Ճ͢Δҝͷ ɹɹઃܭ͕ඞཁͩͱؾ͍ͮͨҝ ɹɹ=> ύϥϝʔλͷ୅ΘΓʹ࢖༻͢Δ৔߹ʹ͸ ɹɹɹهड़͕৑௕ʹͳΔΑ͏׶͍͑ͯͯ͠Δ ɹɹɹ=> ཞ༻͞Εͳ͍Α͏ʹ https://youtrack.jetbrains.com/issue/KT-10468/Multiple-receivers-on-extension-functionsproperties#focus=Comments-27-4608759.0-0

Slide 22

Slide 22 text

Cluster, Inc. All Rights Reserved. 22 Context Receivers΁ͷࢥ͍ ɾͦ΋ͦ΋ͳͥ ”Context” ʹͳͬͨͷ͔…ʁ ɹ=> Multiple receiversͷϓϩτλΠϓͷஈ֊Ͱ ɹɹύϥϝʔλΛஔ͖׵͑ΔͨΊʹ͋ΔΘ͚Ͱ͸ͳ͘ ɹɹؔ਺ݺͼग़͠ͷͨΊͷίϯςΩετΛ௥Ճ͢Δҝͷ ɹɹઃܭ͕ඞཁͩͱؾ͍ͮͨҝ ɹɹ=> ύϥϝʔλͷ୅ΘΓʹ࢖༻͢Δ৔߹ʹ͸ ɹɹɹهड़͕৑௕ʹͳΔΑ͏׶͍͑ͯͯ͠Δ ɹɹɹ=> ཞ༻͞Εͳ͍Α͏ʹ https://youtrack.jetbrains.com/issue/KT-10468/Multiple-receivers-on-extension-functionsproperties#focus=Comments-27-4608759.0-0 ͻΐͬͱͯ͠ਅ໘໨ʹimplicit parameterʹcode generationͳΓͰ ͪΌΜͱରԠͰ͖ΔΑ͏ʹɺ༨നͱͯ͠࢒͍ͯ͠ΔͷͩΖ͏͔…ʁ ؾʹͳΔ…ͦΘͦΘ…ৄ͍͠ਓڭ͍͑ͯͩ͘͞

Slide 23

Slide 23 text

Cluster, Inc. All Rights Reserved. 23 ·ͱΊ ɾContext Receivers͸ܕΫϥεͷProposal͔Β 
 ɹෳ਺ͷϨγʔόʹର͢Δ֦ுߏจ͕ඞཁͱ͍͏ 
 ɹྲྀΕͰ࡞ΒΕͨ ɾKotlinʹͯ͠͸௝ࣗ͘͠༝౓ͷߴ͍Proposal ɾָ͍͠ͷ͸ࠓ͚͔ͩ΋…ʁ 
 ɹProposalΛಡΜͰָ͘͠ɹ ʂ

Slide 24

Slide 24 text

Context Receiversʹ ࢥ͍Λ஘ͤΔ uzzu @ 2022/10/05 DroidKaigi 2022 DAY.01