DroidKaigi2022 Dialogs - 2022/10/05 14:20-14:45 https://droidkaigi.jp/2022/timetable/363729
Context Receiversʹࢥ͍ΛͤΔuzzu @ 2022/10/05 DroidKaigi 2022 DAY.01
View Slide
Cluster, Inc. All Rights Reserved. 2ҙ2022/09࣌ͰͷใΛݩʹൃද͓ͯ͠Γ·͢ࢥ͍ΛͤΔ༰ͳͷͰओ؍ؚ·Ε͓ͯΓ·͢Context Receiversݱࡏprototypeஈ֊Ͱྃ͢͝ঝ͍ͩ͘͞
Cluster, Inc. All Rights Reserved. 3ࣗݾհ@uzzuCluster, Inc.ιϑτΣΞΤϯδχΞझຯ: VR, ࡶଟͳٕज़ݕূ, ಡॻ, DTM, ֨ήʔ, εϓϥ
Cluster, Inc. All Rights Reserved. 4ClusterͷAndroidΞϓϦʹ͍ͭͯAndroidΞϓϦ ࠾༻ใAndroidΞϓϦΤϯδχΞืू⬆ inroom (Unity as a Library)⬅︎outroom (Native App)ɹɹɹ
Cluster, Inc. All Rights Reserved. 5ΞδΣϯμɾContext Receivers͕དྷΔ·Ͱͷ͓͞Β͍ɾContext Receiversͱɺ༻ྫɾContext Receiversͷ՝ɺࢥ͍ɾ·ͱΊ
Cluster, Inc. All Rights Reserved. 6ContextReceivers͕དྷΔ·Ͱͷ͓͞Β͍KEEP(https://github.com/Kotlin/KEEP)YouTrack(https://youtrack.jetbrains.com/)Kotlin Slack(https://kotlinlang.slack.com/)͍͔ͭ͋͘Δ͕ͦͷதͰ2ͭͷissueΛൈਮ
Cluster, Inc. All Rights Reserved. 7Compile-time Extension Interfaceshttps://github.com/Kotlin/KEEP/pull/872017/10ࠒɾ࠷ॳظʮType Classesʯͱ͍͏λΠτϧͰproposal͕ॻ͔Ε͍ͯͨɾʮ͍ͭʹKotlinʹܕΫϥε͕དྷΔ…?!ʯͱ͍͏ࣄͰք۾Γ্͕Δ
Cluster, Inc. All Rights Reserved. 8Compile-time Extension Interfaceshttps://github.com/Kotlin/KEEP/pull/87
Cluster, Inc. All Rights Reserved. 9Compile-time Extension Interfaceshttps://github.com/Kotlin/KEEP/pull/87ɾcompanion objectͱͷׂͷॏෳɾJVMͱͷ૬ޓӡ༻ɾෳͷϨγʔόʹର͢Δ֦ுߏจ͕ඞཁɾimplicit parameterͷ͠͞ɾetc…
Cluster, Inc. All Rights Reserved. 10Multiple receivers on extension functions/propertieshttps://youtrack.jetbrains.com/issue/KT-10468https://youtrack.jetbrains.com/issue/KT-42435
Cluster, Inc. All Rights Reserved. 11ͦͯ͠Context Receivershttps://github.com/Kotlin/KEEP/issues/259https://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")
Cluster, Inc. All Rights Reserved. 12Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩհ)ɾίϯςΩετநԽΛهड़͢ΔͨΊͷɹmember extension(ϝϯόʔ֦ு)ΛऔΓআ͘
Cluster, Inc. All Rights Reserved. 13Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩհ)
Cluster, Inc. All Rights Reserved. 14Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩհ)
Cluster, Inc. All Rights Reserved. 15Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩհ)
Cluster, Inc. All Rights Reserved. 16Context ReceiversͷGoal (ͷ͏ͪ2͚ͭͩհ)ɾKotlinͷܕγεςϜͰෳͷϨγʔόΛ࣋ͭɹίʔυϒϩοΫΛදݱͰ͖ΔΑ͏ʹ͢Δ
Cluster, Inc. All Rights Reserved. 17Context ReceiversͷͦͷଞͷྫɾίϯετϥΫλͷӅṭ + Contextࢀর
Cluster, Inc. All Rights Reserved. 18Context ReceiversͷͦͷଞͷྫɾOverloading(※ҙ͋Γ)͜͏͍͏ίʔυॻ͔ͳ͍Ͱɺͳ༰Proposalʹهࡌ͞Ε͍ͯΔ(contexts-and-coding-style)
Cluster, Inc. All Rights Reserved. 19ɾContext Functionͷείʔϓ֊ͷਂ͞(ݕ౼த)ɾReflectionະରԠ(Prototypeஈ֊ͰΒͳͦ͏ͳؾ͕)ɾΤοδέʔεͷରԠ (Kotlin 1.8.0ͰҰ෦मਖ਼ࡁ)ɾSyntax Highlighting(Τϥʔు͘ͷͰےͰ)ɾetc…Context Receiversͷ՝(Future Work)
Cluster, Inc. All Rights Reserved. 20(ϓϩτλΠϓஈ֊Ͱͱ͔͍͘͏͖Ͱͳ͍ͷঝͰ)ɾهड़ͷબࢶ͕ଟͯ͋͘Μ·Γࠓ·ͰͷKotlinΒ͘͠ͳ͍Α͏ͳؾ͕͢Δͷ͕ɹݸਓతʹٯʹ໘ന͍ɾCompile-time extensionํ໘Ͱ্͕ͬͨ՝͔ΒݟΔʹՄೳͳهड़ɹ͜Ε͔ΒߜΒΕ͍ͯͬͯཉ͍͠ͳʔͱࢥ͍ͬͯΔ ɹ(ཞ༻͕ාͯ͘ਂ͘৮Εͳ͍ਓʑ͕͍ͦ͏ͳͷ͍ͬͨͳ͍ɺͱ͍͏ҙຯͰ)ɾݱঢ়Ͱᙱ͍ͱ͜Ζʹख͕ಧ͘ͷͰݸਓతʹॿ͔ΔContext Receiversͷࢥ͍
Cluster, Inc. All Rights Reserved. 21Context Receiversͷࢥ͍ɾͦͦͳͥ ”Context” ʹͳͬͨͷ͔…ʁɹ=> Multiple receiversͷϓϩτλΠϓͷஈ֊ͰɹɹύϥϝʔλΛஔ͖͑ΔͨΊʹ͋ΔΘ͚Ͱͳ͘ɹɹؔݺͼग़͠ͷͨΊͷίϯςΩετΛՃ͢Δҝͷɹɹઃܭ͕ඞཁͩͱؾ͍ͮͨҝɹɹ=> ύϥϝʔλͷΘΓʹ༻͢Δ߹ʹɹɹɹهड़͕ʹͳΔΑ͏͍͑ͯͯ͠Δɹɹɹ=> ཞ༻͞Εͳ͍Α͏ʹhttps://youtrack.jetbrains.com/issue/KT-10468/Multiple-receivers-on-extension-functionsproperties#focus=Comments-27-4608759.0-0
Cluster, Inc. All Rights Reserved. 22Context 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ͳΓͰͪΌΜͱରԠͰ͖ΔΑ͏ʹɺ༨നͱ͍ͯͯ͠͠ΔͷͩΖ͏͔…ʁؾʹͳΔ…ͦΘͦΘ…ৄ͍͠ਓڭ͍͑ͯͩ͘͞
Cluster, Inc. All Rights Reserved. 23·ͱΊɾContext ReceiversܕΫϥεͷProposal͔Β ɹෳͷϨγʔόʹର͢Δ֦ுߏจ͕ඞཁͱ͍͏ ɹྲྀΕͰ࡞ΒΕͨɾKotlinʹͯࣗ͘͠͠༝ͷߴ͍Proposalɾָ͍͠ͷࠓ͚͔ͩ…ʁ ɹProposalΛಡΜͰָ͘͠ɹ ʂ