Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
KOTLIN DSL ύλʔϯ 2019/9/9 Kotlin Fest Rejected Conference 2019 খࢁ ݈ଠ (Koyama Kenta) Twitter/Github @doyaaaaaken
Slide 2
Slide 2 text
ࣗݾհ • ׆ಈྖҬɿ ɾαʔόαΠυϝΠϯͷϑϧελοΫΤϯδχΞʢͱ͍͏໊ͷͳΜͰ ʣ ɾSaaSͷ্ཱͪ͛ظ͕͖Ͱ3΄Ͳܦݧ • झຯɿ ɾອըɾϘʔυήʔϜɾຑɾςχεɾϙʔΧʔ… ɾ࠷ۙKotlinOSSͷίϯτϦϏϡʔτ(ktor, Exposed, kotlintest, kohttp)ɺࣗ࡞OSS(kotlin-csv)ͱ͔
Slide 3
Slide 3 text
ձࣾհ smartroundגࣜձࣾͰ ىۀՈɾࢿՈؒͷ ࢿۚௐୡϓϩηεΛཧ͢Δ SaaSͷ։ൃΛ͍ͯ͠·͢ ʢktor͕1.0.0-betaͷࠒʹ։ ൃελʔτ͠·ͨ͠ʣ https://jp.smartround.com/
Slide 4
Slide 4 text
ൃදͷΰʔϧ 1. Kotlin DSLʹ͍ͭͯύλʔϯԽ͢Δ͜ͱͰ ཧͷखॿ͚ͱͳΔ͜ͱ 2. ৄࡉͳ࣮ํࣜͷΠϝʔδΛ࣋ͬͯΒ͏͜ͱ
Slide 5
Slide 5 text
ʢ؆୯ʹʣDSLͱ • Domain Specific Languageͷུ • ൚༻ݴޠΑΓɺυϝΠϯಛԽܕݴޠͷ΄͏͕ ༻్͕໌֬ͰಡΈ͍͢ΑͶͱ͍͏ • ϝϦοτͱͯ͠… • ʢՄಡੑͷ্ʹΑΔʣֶशίετͷݮ • ʢػೳΛ੍ݶ͢Δ͜ͱͰʣ࣮ϛεͷݮ
Slide 6
Slide 6 text
DSLྫʢPATTERN1ʣ • kotlintest (should / shouldBe method) •
Slide 7
Slide 7 text
DSLྫʢPATTERN2ʣ • ktor (Routing) •
Slide 8
Slide 8 text
DSLྫʢPATTERN3ʣ • Exposed (DAO API) •
Slide 9
Slide 9 text
DSLΛࢧ͑Δٕज़܈ • infix functionʢதஔه๏ʣ • extension functionʢ֦ுؔʣ • Lambda as last functionʢؔͷ࠷ޙͷҾ͕Lambdaͷ߹ͷলུه๏ʣ • Lambda with receiverʢϨγʔό͖Lambdaʣ • Property Delegation ʢϓϩύςΟҕৡʣ • [ࠓճऔΓ্͛ͳ͍ͷ] • @DslMarker annotationʢDSL࡞࣌ͷείʔϓ੍ޚ༻ͷΞϊςʔγϣϯʣ • type aliasʢܕΤΠϦΞεʣ • inline class ࢀߟ: Deep Dive into Kotlin DSL: https://speakerdeck.com/jmatsu/ri-ben-yu-zhu-shi-tuki-deep-dive-into-kotlin-dsl Production Kotlin DSL: https://t.co/W6Th9qv7wQ?amp=1
Slide 10
Slide 10 text
• ͦΕͰύλʔϯͷઆ໌ʹҠΓ·͢ • શ4ύλʔϯͰ͢ • େମύλʔϯͱ͍͏ΑΓKotlinͷػೳΛ ͦͷ··͍ͬͯΔ͚ͩͰ͢ ʢ֮͑͘͢͢ΔͨΊωʔϛϯάͨ͠ʣ • ※ ύλʔϯͷ໊લͯ͢Ծ໊ͳͷͰ͝ҙ͍ͩ͘͞
Slide 11
Slide 11 text
1. SENTENCE PATTERN • υοτɾׅހແ͠ͷϝιουݺͼग़͠ʹΑΓɺจͬΆ͘͢Δͭ
Slide 12
Slide 12 text
1. SENTENCE PATTERN
Slide 13
Slide 13 text
2. OPERATOR OVERRIDE PATTERN • +, -, * /ͳͲͷԋࢉࢠʹಠࣗͷҙຯΛఆٛ͢Δػೳ
Slide 14
Slide 14 text
2. OPERATOR OVERRIDE PATTERN
Slide 15
Slide 15 text
3. NESTED STRUCTURE PATTERN(1) • ωετʹΑΓߏԽ͞ΕͨใΛදݱ͢Δύλʔϯ
Slide 16
Slide 16 text
3. NESTED STRUCTURE PATTERN(1)
Slide 17
Slide 17 text
3. NESTED STRUCTURE PATTERN(1) ͜Ε͚ͩͰΓͳ͍
Slide 18
Slide 18 text
3. NESTED STRUCTURE PATTERN(2) • େͷ߹ωετͷଆͷείʔϓͰ ঢ়ଶΛอ࣋͢Δ͔ϝιουΛఆٛͯ͠Δඞཁ͕͋Δ
Slide 19
Slide 19 text
3. NESTED STRUCTURE PATTERN(2)
Slide 20
Slide 20 text
3. NESTED STRUCTURE PATTERN(2) Ϩγʔόͱͯ͠HttpRequestContext͕͑Δ
Slide 21
Slide 21 text
3. NESTED STRUCTURE PATTERN(2) ۭͷHttpRequestContextΛ࡞ޙɺlambdaΛ࣮ߦ
Slide 22
Slide 22 text
3. NESTED STRUCTURE PATTERN(2)
Slide 23
Slide 23 text
4. PROPERTY ACCESS DELEGATION PATTERN • ҕৡϓϩύςΟΛͬͯϓϩύςΟͷऔಘɾηοτ࣌ʹ ՃͷॲཧΛΔ
Slide 24
Slide 24 text
4. PROPERTY ACCESS DELEGATION PATTERN
Slide 25
Slide 25 text
HAVE A NICE KOTLIN!