Slide 1

Slide 1 text

!LHNZTIJO %.."OESPJEษڧձ ,PUMJOͰ3FBDU/BUJWF FYQP Λ࢖͍͍ͨ

Slide 2

Slide 2 text

X © DMM.com ࣗݾ঺հ

Slide 3

Slide 3 text

X © DMM.com ࣗݾ঺հ w LHNZTIJOఝٶʢ͗͘Έ΍ʣ w "OESPJEΤϯδχΞ w $50ࣨॴଐ w ࠷ۙɺؾ·͙ΕΫοΫʹ͸·ͬͯڕΛ͞͹͖ ࢝Ί·ͨ͠

Slide 4

Slide 4 text

X © DMM.com ΰʔϧ

Slide 5

Slide 5 text

X © DMM.com ΰʔϧ w ,PUMJONQQͰFYQP͕࢖͑Δ͜ͱΛ஌ͬͯ΋Β͏ w FYQPͳͲͷϑϨʔϜϫʔΫΛ࢖͏ͨΊʹɺͲ͏͍͏͜ͱΛ͢Ε͹͍͍ͷ ͔Λ஌ͬͯ΋Β͏ w ଞͷϑϨʔϜϫʔΫΛ࢖͏ͱ͖ͷࢀߟʹͳΔ

Slide 6

Slide 6 text

X © DMM.com BHFOEB

Slide 7

Slide 7 text

X © DMM.com BHFOEB w ࣗ෼͕,PUMJO.11Λ࢖͏ཧ༝ w ,PUMJOͰ8FCϑϩϯτΛ։ൃ͢Δͱ͖͸Ͳ͏͢Δ͔ʁ w FYQP 3FBDU/BUJWF Ͱ΋8FC։ൃͷΑ͏ʹʜ

Slide 8

Slide 8 text

X © DMM.com ࣗ෼͕,PUMJO.11Λ࢖͏ཧ༝

Slide 9

Slide 9 text

X © DMM.com ࣗ෼͕,PUMJO.11Λ࢖͏ཧ༝ w ϞϊϨϙͰ ݴޠͰ΍ͬͯΈ͍͔ͨΒ

Slide 10

Slide 10 text

X © DMM.com ͳͥϞϊϨϙΛࢼ͍ͨ͠ͷ͔ w ྫ͑͹αʔόʔΤϯδχΞਓɺJ04ΤϯδχΞਓɺ"OESPJEΤϯδχ Ξਓɺ8FCϑϩϯτਓͷਓͷνʔϜ͕͋Δͱ͢Δ w ྖҬ͝ͱʹϦϙδτϦΛ࡞ΔɻYYYTFSWFS YYYJPT YYYXFC YYY BOESPJEͳͲ w ͍ͭͷؒʹ͔ɺαʔόʔνʔϜɺJ04νʔϜͳͲͱݺ͹ΕΔʜʢ੹೚ൣ ғ͕໌֬ʹ෼͔Εͯ͠·͏ʣ w ଞྖҬͷ͜ͱ͸͔͋ͣΓ஌Β͵ʜ ͱ͍͏ঢ়گΛճආ͍ͨ͠ʂ

Slide 11

Slide 11 text

X © DMM.com ͳͥ̍ݴޠͳͷ͔ w ֤ྖҬ͕͍ͭͷؒʹ͔෼அ͞ΕΔͷΛճආ͢ΔͨΊʹϞϊϨϙ΁ʂ w ϓϧϦΫ͕ͨ͘͞ΜདྷΔΑ͏ʹͳ͚ͬͨͲɺීஈ࢖Θͳ͍ݴޠʜίϯς ΩετεΠον͕େม w ͍ͭͷؒʹ͔ɺଞྖҬͷ13͸ݟͳ͘ͳΔ ͱ͍͏ঢ়گΛճආ͍ͨ͠ʂ w ʢίϯςΩετεΠονͩΔ͍ʜݩʹ໭͍ͨ͠ʜϞϊϨϙ΍Ί͍ͨʜʣ

Slide 12

Slide 12 text

X © DMM.com ϞϊϨϙͰݴޠͳΒ͹ʂ w ̍ͭͷνʔϜ͕̍ͭͷνʔϜͷ··Ͱ͍ΒΕΔ w ଞྖҬͷϨϏϡʔΛ͢Δ࣌ͷίϯςΩετεΠονͷෛՙ͕௿͍ ͔΋͠Εͳ͍

Slide 13

Slide 13 text

X © DMM.com ͳͥɺࣗ෼͸,PUMJONQQΛબΜͩͷ͔ w ਖ਼௚͍͏ͱɺνʔϜͷٕज़ελοΫΛΈͯબ୒͢Δͷ͕Ұ൪ w ͕ͩɺͦΕͧΕͷಛ௃ΛݟͯΈΑ͏

Slide 14

Slide 14 text

X © DMM.com ैདྷͷΫϩεϓϥοτϑΥʔϜؔ࿈ٕज़ͷಛ௃ "OESPJE J04 8FC 91MBUGPSN'SBNFXPSL :PVS$PEF

Slide 15

Slide 15 text

X © DMM.com ैདྷͷΫϩεϓϥοτϑΥʔϜؔ࿈ٕज़ͷಛ௃ "OESPJE J04 8FC 91MBUGPSN'SBNFXPSL :PVS$PEF w 91MBUGPSN'SBNFXPSLͷ"1*Λ ࢖༻͢Δ w 91MBUGPSN'SBNFXPSLͷରԠ͢ ΔϓϥοτϑΥʔϜʹ͸੍ݶ͕ ͋Δ w ݴޠ͸റΒΕΔ

Slide 16

Slide 16 text

X © DMM.com ,PUMJONQQͷಛ௃ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY

Slide 17

Slide 17 text

X © DMM.com w ֤ϓϥοτϑΥʔϜͷ"1*Λ࢖༻͢ Δ w ରԠϓϥοτϑΥʔϜͷ੍ݶ͸΄ͱ ΜͲͳ͍ʢίϯύΠϥτϥϯεύ Πϥ͕ͦͦ͜͜༻ҙ͞ΕͯΔͷͰʣ w ݴޠ͸,PUMJOʹറΒΕΔ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY ,PUMJONQQͷಛ௃

Slide 18

Slide 18 text

X © DMM.com w ֤ϓϥοτϑΥʔϜͷ"1*Λ࢖༻͢ Δ࢖༻ͯ͠΋ྑ͍ w ରԠϓϥοτϑΥʔϜͷ੍ݶ͸΄ͱ ΜͲͳ͍ʢίϯύΠϥτϥϯεύ Πϥ͕ͦͦ͜͜༻ҙ͞ΕͯΔͷͰʣ w ݴޠ͸,PUMJOʹറΒΕΔ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY ,PUMJONQQͷಛ௃

Slide 19

Slide 19 text

X © DMM.com ,PUMJONQQͷಛ௃ w σεΫτοϓΞϓϦΛ֤04͝ͱʹ࣮૷͢Δͷ͸͠ΜͲ͍͔ΒFMFDUSPO࢖ ͍͍ͨ w 8FC͸3FBDUͰ΍Γ͍ͨ w "OESPJE͸ಘҙ͔ͩΒωΠςΟϒͷ·· w J04͸ͦΜͳʹಘҙ͡Όͳ͍ɻͲͪΒ͔ͱ͍͏ͱ3FBDU/BUJWFͰ΍Γͨ ͍ ,PUMJONQQͳΒ͜Ε͕Ͱ͖Δʂ

Slide 20

Slide 20 text

X © DMM.com w ֤ϓϥοτϑΥʔϜͷ"1*Λ࢖༻͢ Δ࢖༻ͯ͠΋ྑ͍ w ରԠϓϥοτϑΥʔϜͷ੍ݶ͸΄ͱ ΜͲͳ͍ʢίϯύΠϥτϥϯεύ Πϥʹґଘʣ w ݴޠ͸,PUMJOʹറΒΕΔ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY ,PUMJONQQͷಛ௃ &MFDUSPO 3/

Slide 21

Slide 21 text

X © DMM.com ˞஫ҙ఺ w 'SBNFXPSLʹϩοΫΠϯ͞ΕΔ͜ͱ͸ϝϦοτͰ΋͋ΓɺσϝϦοτͰ ΋͋Γ·͢ w ͦͷٯʢ,PUMJONQQʣ΋ɺ·ͨવΓͰ͢ w τϨʔυΦϑΛߟٕ͑ͯज़બ୒͍͖ͯ͠·͠ΐ͏

Slide 22

Slide 22 text

X © DMM.com ϝϦοτɾσϝϦοτͷྫ 91MBUGPSN'SBNFXPSL ,PUMJONQQ ϝϦοτ w ֶशίετతʹ͸̍ͭͷ'SBNFXPSLͷ"1*Λ஌Δ ͚ͩͰྑ͍ w ͳͲͳͲ w ֤ϓϥοτϑΥʔϜʹରͯ͠޷͖ͳ'SBNFXPSL Λ࢖༻Ͱ͖Δ w 'SBNFXPSL͕ഇΕͨ৔߹ͷμϝʔδ͸௿͍ʢ࡞ Γํʹ΋ΑΔ͕ʣ w ͳͲͳͲ σϝϦοτ w 'SBNFXPSL͕ഇΕͨ৔߹ͷμϝʔδ͕ਙେ w 'SBNFXPSLͷ࠾༻͢ΔݴޠʹϩοΫΠϯ͞ΕΔ ʢϝϦοτʹ΋ͳΓ͏Δʣ w ͳͲͳͲ w ֶशίετ͸બΜͩ'SBNFXPSLɺϓϥοτϑΥ ʔϜͷ਺͚ͩ͋Δ w ,PUJMOʹϩοΫΠϯ͞ΕΔʢϝϦοτͷਓ΋͍ Δʣ w ͳͲͳͲ

Slide 23

Slide 23 text

X © DMM.com ͨͩʜ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY &MFDUSPO 3/ w ຊ౰ʹͰ͖Δͷʜʁʁ w ΍ͬͯΔͷݟͨ͜ͱͳ͍͚Ͳʁʁ

Slide 24

Slide 24 text

X © DMM.com ͨͩʜ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY &MFDUSPO 3/ w ຊ౰ʹͰ͖Δͷʜʁʁ w ΍ͬͯΔͷݟͨ͜ͱͳ͍͚Ͳʁʁ ͱ͍͏͜ͱͰࢼͯ͠Έͨʂͱ͍͏ͷ͕ࠓճͷൃදͰ͢ʂ

Slide 25

Slide 25 text

X © DMM.com ,PUMJOͰ8FCϑϩϯτΛ։ൃ͢Δͱ͖͸ Ͳ͏͢Δ͔ʁ

Slide 26

Slide 26 text

X © DMM.com ,PUMJOΛ࢖ͬͯ8FCϑϩϯτΛ։ൃΛ͢Δ࣌ CVJMEHSBEMF͸͜͏ͳΔ

Slide 27

Slide 27 text

X © DMM.com ,PUMJOΛ࢖ͬͯ8FC։ൃΛ͢Δ࣌ plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.11' implementation 'org.jetbrains:kotlin-react:16.6.0-pre.70-kotlin-1.3.21' … } compileKotlin2Js { … } kotlinFrontend { downloadNodeJsVersion = "latest" npm { dependency "kotlinx-html-js" dependency "react" dependency "react-dom" … } webpackBundle { bundleName = "main" … } } CVJMEHSBEMF͸͜͏ͳΔ

Slide 28

Slide 28 text

X © DMM.com ,PUMJOΛ࢖ͬͯ8FC։ൃΛ͢Δ࣌ plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.11' implementation 'org.jetbrains:kotlin-react:16.6.0-pre.70-kotlin-1.3.21' … } compileKotlin2Js { … } kotlinFrontend { downloadNodeJsVersion = "latest" npm { dependency "kotlinx-html-js" dependency "react" dependency "react-dom" … } webpackBundle { bundleName = "main" … } } CVJMEHSBEMF͸͜͏ͳΔ

Slide 29

Slide 29 text

X © DMM.com ,PUMJOΛ࢖ͬͯ8FC։ൃΛ͢Δ࣌ plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.11' implementation 'org.jetbrains:kotlin-react:16.6.0-pre.70-kotlin-1.3.21' … } compileKotlin2Js { … } kotlinFrontend { downloadNodeJsVersion = "latest" npm { dependency "kotlinx-html-js" dependency "react" dependency "react-dom" … } webpackBundle { bundleName = "main" … } } CVJMEHSBEMF͸͜͏ͳΔ

Slide 30

Slide 30 text

X © DMM.com ,PUMJOΛ࢖ͬͯ8FC։ൃΛ͢Δ࣌ plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.11' implementation 'org.jetbrains:kotlin-react:16.6.0-pre.70-kotlin-1.3.21' … } compileKotlin2Js { … } kotlinFrontend { downloadNodeJsVersion = "latest" npm { dependency "kotlinx-html-js" dependency "react" dependency "react-dom" … } webpackBundle { bundleName = "main" … } } CVJMEHSBEMF͸͜͏ͳΔ

Slide 31

Slide 31 text

X © DMM.com ,PUMJOΛ࢖ͬͯ8FC։ൃΛ͢Δ࣌ plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.11' implementation 'org.jetbrains:kotlin-react:16.6.0-pre.70-kotlin-1.3.21' … } compileKotlin2Js { … } kotlinFrontend { downloadNodeJsVersion = "latest" npm { dependency "kotlinx-html-js" dependency "react" dependency "react-dom" … } webpackBundle { bundleName = "main" … } } CVJMEHSBEMF͸͜͏ͳΔ

Slide 32

Slide 32 text

X © DMM.com ࣮ࡍͷίʔυྫ ίʔυ͸͜͏ͳΔ

Slide 33

Slide 33 text

X © DMM.com ࣮ࡍͷίʔυྫ ίʔυ͸͜͏ͳΔ fun main() { document.addEventListener("DOMContentLoaded", { render(document.getElementById("root")) { a { +"Hello" } } }) } NBJOLU

Slide 34

Slide 34 text

X © DMM.com ࣮ࡍͷίʔυྫ ίʔυ͸͜͏ͳΔ fun main() { document.addEventListener("DOMContentLoaded", { render(document.getElementById("root")) { a { +"Hello" } } }) } …
NBJOLU JOEFYIUNM

Slide 35

Slide 35 text

X © DMM.com ࣮ࡍͷίʔυྫ ίʔυ͸͜͏ͳΔ fun main() { document.addEventListener("DOMContentLoaded", { render(document.getElementById("root")) { a { +"Hello" } } }) } …
NBJOLU JOEFYIUNM ͜ΕͰ3VO͢Ε͹ɺϒϥ΢β͕։͍ͯ8FC͕ಈ͘

Slide 36

Slide 36 text

X © DMM.com Ͳ͏͍͏࢓૊ΈͰಈ͍͍ͯΔͷ͔ʁ

Slide 37

Slide 37 text

X © DMM.com Ͳ͏͍͏࢓૊ΈͰಈ͍͍ͯΔͷ͔ʁ w ,PUMJOKT w KTʹτϥϯεύΠϧ͞ΕͯɺXFCϑϩϯτ͕ಈ͘·Ͱ

Slide 38

Slide 38 text

X © DMM.com ,PUMJOKT ͜͏͍͏ؔ਺͕͋ͬͨΒ

Slide 39

Slide 39 text

X © DMM.com ,PUMJOKT ͜͏͍͏ؔ਺͕͋ͬͨΒ @file:JsModule("react") package react external fun isValidElement(element: Any): Boolean ͜͏ॻ͚ͩ͘

Slide 40

Slide 40 text

X © DMM.com ,PUMJOKT ͜͏͍͏ؔ਺͕͋ͬͨΒ @file:JsModule("react") package react external fun isValidElement(element: Any): Boolean ͜͏ॻ͚ͩ͘ ͜Ε͚ͩͰɺ,PUMJOͰ࢖͑Δ

Slide 41

Slide 41 text

X © DMM.com Ͳ͏͍͏࢓૊ΈͰಈ͍͍ͯΔͷ͔ʁ τϥϯεύΠϧͯ͠,PUMJO͔ΒKT͕Ͱ͖Δ QBDLBHFKTPO࡞੒ KBS͔ΒVOQBDL OQNJOTUBMM EFWTFSWFSىಈ 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ͸͜͏ͳͬͯΔ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ

Slide 42

Slide 42 text

X © DMM.com τϥϯεύΠϧͯ͠,PUMJO͔ΒKT͕Ͱ͖Δ LU KT LPUMJOKT CVJMEKT഑Լʹੜ੒͞ΕΔ

Slide 43

Slide 43 text

X © DMM.com plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } … kotlinFrontend { downloadNodeJsVersion = "latest" npm { dependency "kotlinx-html-js" dependency "react" dependency "react-dom" … } webpackBundle { bundleName = "main" … } } QBDLBHFKTPO࡞੒ QBDLBHFKTPO CVJME഑Լʹੜ੒͞ΕΔ

Slide 44

Slide 44 text

X © DMM.com KBS͔ΒVOQBDLᶃ CVJMEOPEF@NPEVMFT@JNQPSUFE KT LKTN KBS KT LKTN KBS KT LKTN KBS KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KBS͔Βநग़

Slide 45

Slide 45 text

X © DMM.com KBS͔ΒVOQBDLᶄ CVJMEOPEF@NPEVMFT KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO γϯϘϦοΫϦϯΫ࡞੒ CVJMEOPEF@NPEVMFT@JNQPSUFE KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO

Slide 46

Slide 46 text

X © DMM.com OQNJOTUBMM CVJMEOPEF@NPEVMFT KT LKTN QBDLBHFKTPO OQNJOTUBMM KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO

Slide 47

Slide 47 text

X © DMM.com OQNJOTUBMM CVJMEOPEF@NPEVMFT KT LKTN QBDLBHFKTPO OQNJOTUBMM KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT QBDLBHFKTPO KT QBDLBHFKTPO KT QBDLBHFKTPO ʜ

Slide 48

Slide 48 text

X © DMM.com EFWTFSWFSىಈ XFCQBDLEFWTFSWFSSVOKT CVJME഑Լʹੜ੒࣮ͯ͠ߦ ࣮ߦ ϒϥ΢β

Slide 49

Slide 49 text

X © DMM.com Ͳ͏͍͏࢓૊ΈͰಈ͍͍ͯΔͷ͔ʁ τϥϯεύΠϧͯ͠,PUMJO͔ΒKT͕Ͱ͖Δ QBDLBHFKTPO࡞੒ KBS͔ΒVOQBDL OQNJOTUBMM EFWTFSWFSىಈ 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ͸͜͏ͳͬͯΔ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ

Slide 50

Slide 50 text

X © DMM.com Ͳ͏͍͏࢓૊ΈͰಈ͍͍ͯΔͷ͔ʁ τϥϯεύΠϧͯ͠,PUMJO͔ΒKT͕Ͱ͖Δ QBDLBHFKTPO࡞੒ KBS͔ΒVOQBDL OQNJOTUBMM EFWTFSWFSىಈ 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ͸͜͏ͳͬͯΔ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ LPUMJOKT LPUMJOGSPOUFOEQMVHJO

Slide 51

Slide 51 text

X © DMM.com FYQPͰ΋ 8FC։ൃͷΑ͏ʹʜ

Slide 52

Slide 52 text

X © DMM.com LPUMJOΛ࢖Θͳ͍৔߹ͷී௨ͷFYQP։ൃ FYQPJOJUNZOFXQSPKFDU "QQKTͳͲΛमਖ਼ FYQPTUBSU 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ

Slide 53

Slide 53 text

X © DMM.com LPUMJOΛ࢖Θͳ͍৔߹ͷී௨ͷFYQP։ൃ FYQPJOJUNZOFXQSPKFDU "QQKTͳͲΛमਖ਼ FYQPTUBSU 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ

Slide 54

Slide 54 text

X © DMM.com LPUMJOΛ࢖Θͳ͍৔߹ͷී௨ͷFYQP։ൃ QBDLBHFKTPOΛੜ੒ OQNJOTUBMM BQQKTPOͳͲॾʑඞཁͳϑΝΠϧੜ੒ "QQKTͳͲΛमਖ਼ FYQPTUBSU 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ

Slide 55

Slide 55 text

X © DMM.com LPUMJOΛ࢖Θͳ͍৔߹ͷී௨ͷFYQP։ൃ QBDLBHFKTPOΛੜ੒ OQNJOTUBMM BQQKTPOͳͲॾʑඞཁͳϑΝΠϧੜ੒ "QQKTͳͲΛमਖ਼ FYQPTUBSU 3VO͢Δ·Ͱͷɺେ·͔ͳखॱ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ LPUMJOKTͱ LPUMJOGSPOUFOEQMVHJO͕ ΍͍ͬͯΔ͜ͱͱࣅ͍ͯΔ

Slide 56

Slide 56 text

X © DMM.com ·ͣ͸FYQPͷ"1*Λ࢖͑ΔΑ͏ʹXSBQQFSΛ࡞Δ @file:JsModule("expo") package expo import react.Component external fun > registerRootComponent(component: JsClass) FYQPϞδϡʔϧΛ࡞੒

Slide 57

Slide 57 text

X © DMM.com ࣍ʹLPUMJOGSPOUFOEQMVHJOͷΑ͏ͳ HSBMEFQMVHJOΛੜ੒͢Δ

Slide 58

Slide 58 text

X © DMM.com ,PUMJONQQ৔߹ͷී௨ͷFYQP։ൃ τϥϯεύΠϧͯ͠,PUMJO͔ΒKT͕Ͱ͖Δ QBDLBHFKTPOΛੜ੒ KBS͔ΒVOQBDL OQNJOTUBMM BQQKTPOͳͲॾʑඞཁͳϑΝΠϧੜ੒ "QQKTʹSFOBNF FYQPTUBSU ͜͏͍͏λεΫΛ࣮૷ͯ͠ߦ͘ ʢҰ෦୺ંͬͯΔͱ͜Ζ΋͋Γ·͢ʣ LPUMJOKT LPUMJOFYQPQMVHJO ‑

Slide 59

Slide 59 text

X © DMM.com τϥϯεύΠϧͯ͠,PUMJO͔ΒKT͕Ͱ͖Δ LU KT LPUMJOKT CVJMEKT഑Լʹੜ੒͞ΕΔ

Slide 60

Slide 60 text

X © DMM.com plugins { id "kotlin2js" id "org.jetbrains.kotlin.frontend" } … kotlinExpo { npm { dependency "kotlinx-html-js" dependency "kotlin-expo" dependency "kotlinx-html-js" dependency "react" dependency "react-dom" dependency "react-redux" dependency "react-router-dom" } } QBDLBHFKTPO࡞੒ QBDLBHFKTPO CVJMEFYQP഑Լʹੜ੒͞ΕΔ https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/GeneratePackageJsonTask.kt

Slide 61

Slide 61 text

X © DMM.com KBS͔ΒVOQBDLᶃ CVJMEFYQPOPEF@NPEVMFT@JNQPSUFE KT LKTN KBS KT LKTN KBS KT LKTN KBS KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KBS͔Βநग़ https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/UnpackGradleDependenciesTask.kt

Slide 62

Slide 62 text

X © DMM.com KBS͔ΒVOQBDLᶄ CVJMEFYQPOPEF@NPEVMFT KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO γϯϘϦοΫϦϯΫ࡞੒ CVJMEFYQPOPEF@NPEVMFT@JNQPSUFE KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/UnpackGradleDependenciesTask.kt

Slide 63

Slide 63 text

X © DMM.com OQNJOTUBMM CVJMEFYQPOPEF@NPEVMFT KT LKTN QBDLBHFKTPO OQNJOTUBMM KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/NpmInstallTask.kt

Slide 64

Slide 64 text

X © DMM.com OQNJOTUBMM CVJMEFYQPOPEF@NPEVMFT KT LKTN QBDLBHFKTPO OQNJOTUBMM KT LKTN QBDLBHFKTPO KT LKTN QBDLBHFKTPO KT QBDLBHFKTPO KT QBDLBHFKTPO KT QBDLBHFKTPO ʜ https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/NpmInstallTask.kt

Slide 65

Slide 65 text

X © DMM.com BQQKTPO࡞੒ BQQKTPO CVJMEFYQP഑Լʹੜ੒͞ΕΔ BQQKTPOͳͲΛੜ੒

Slide 66

Slide 66 text

X © DMM.com "QQKTʹSFOBNF "QQKT CVJMEKT഑Լʹੜ੒͞ΕͨKT KT CVJMEFYQP഑ԼʹNPWF NPWF https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/BuildTask.kt

Slide 67

Slide 67 text

X © DMM.com ىಈʢJ04ͷ৔߹ʣ CVJMEFYQPͰԼهΛ࣮ߦ OPEF@NPEVMFTCJOFYQPTUBSUJPT ࣮ߦ J04ΞϓϦ͕ىಈ https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/RunIOSExpoTask.kt

Slide 68

Slide 68 text

X © DMM.com ىಈʢ"OESPJEͷ৔߹ʣ CVJMEFYQPͰԼهΛ࣮ߦ OPEF@NPEVMFTCJOFYQPTUBSUŠBOESPJE ࣮ߦ "OESPJEΞϓϦ͕ىಈ https://github.com/kgmyshin/kotlin-expo-sample/blob/master/kotlin-expo-gradle-plugin/src/main/kotlin/com/kgmyshin/kotlin/expo/tasks/RunAndroidExpoTask.kt

Slide 69

Slide 69 text

X © DMM.com ·ͱΊ

Slide 70

Slide 70 text

X © DMM.com ͨͩʜ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY &MFDUSPO 3/ w ຊ౰ʹͰ͖Δͷʜʁʁ w ΍ͬͯΔͷΈͨ͜ͱͳ͍͚Ͳʁʁ

Slide 71

Slide 71 text

X © DMM.com ͨͩʜ "OESPJE :PVS$PEF J04 8FC .BD 8JO -JOVY &MFDUSPO 3/ w ຊ౰ʹͰ͖Δͷʜʁʁ w ΍ͬͯΔͷΈͨ͜ͱͳ͍͚Ͳʁʁ Ͱ͖ΔΑʂ