Slide 1

Slide 1 text

"OESPJEΤϯδχΞ໨ઢͷ,.. J04ΤϯδχΞ໨ઢͷ,.. גࣜձࣾελσΟετºגࣜձࣾΏΊΈ߹ಉษڧձ :PIUB8BUBOBWF

Slide 2

Slide 2 text

"CPVUNF :PIUB8BUBOBWF גࣜձࣾΏΊΈJ04"OESPJE5FDI-FBE 
 ๺ւಓࡏॅͰࣇͷ෕ 🕊XBUBOBWF !4VTBO@KBDLP 
 🐙XBUBOBWF XBUBOBWFY

Slide 3

Slide 3 text

,..ͱ͸

Slide 4

Slide 4 text

,..ͱ͸ w ,PUMJO.VMUJQMBUGPSNGPS.PCJMF w ,PUMJOͰॻ͍ͨιʔε͕ "OESPJEͱJ04Ͱಈ͘ʂ IUUQTLPUMJOMBOHPSHEPDTNVMUJQMBUGPSNIUNM

Slide 5

Slide 5 text

'MVUUFSͱͲ͏ҧ͏ʁ IUUQTLPUMJOMBOHPSHEPDTNPCJMFBSDIJUFDULNNBQQIUNMUIBOLTUPDPOUSJCVUPST

Slide 6

Slide 6 text

"OESPJEΤϯδχΞ໨ઢͷ,.. J04ΤϯδχΞ໨ઢͷ,..

Slide 7

Slide 7 text

"OESPJEΤϯδχΞࢹ఺ͷ,.. w ීஈͷ"OESPJEΞϓϦ։ൃͱͲ͏ҧ͏ʁ w J04΁ͷ഑ྀ͸ඞཁʁ

Slide 8

Slide 8 text

։ൃ؀ڥ͸ʁ w "OESPJE4UVEJP,..ϓϥάΠϯ w WFSTJPOPSIJHIFS w όʔδϣϯޓ׵ੑʹ஫ҙ w "OESPJE4UVEJP w ,PUMJOϓϥάΠϯ w ,..ϓϥάΠϯ

Slide 9

Slide 9 text

"OESPJE(SBEMFQMVHJO w Ҏ্͸ඇରԠ w ͔͠͠ɺϫʔΫΞϥ΢ϯυͰར༻Մೳ w IUUQTZPVUSBDLKFUCSBJOTDPNJTTVF,5 w %SPJE,BJHJΞϓϦ΋͜ͷϫʔΫΞϥ΢ϯυΛ࢖͍ͬͯΔ

Slide 10

Slide 10 text

ύοͱݟ͸ϚϧνϞδϡʔϧϓϩδΣΫτ w ςϯϓϨʔτͰ৽نϓϩδΣΫτ࡞Δͱʜ w "OESPJEΞϓϦϞδϡʔϧ w ,..ڞ௨Ϟδϡʔϧ w JPT"QQ഑Լ͸9DPEFͷϓϩδΣΫτ w ϚϧνϦϙδτϦ΋Մ "OESPJEΞϓϦϞδϡʔϧ 9DPEFϓϩδΣΫτ ڞ௨Ϟδϡʔϧ

Slide 11

Slide 11 text

ڞ௨Ϟδϡʔϧͷத਎ w DPNNPO.BJOʹڞ௨ίʔυ w ϓϥοτϑΥʔϜݻ༗ίʔυ͸ͦΕͧΕͷ σΟϨΫτϦ͸഑Լʹ w DPNNPO.BJOʹએݴͨ͠JOUFSGBDFΛ֤ϓ ϥοτϑΥʔϜͰ࣮૷ w FYQFDUBDUVBMͱ͍͏࢓૊Έ΋ "OESPJEݻ༗ίʔυ J04ݻ༗ίʔυ ڞ௨ίʔυ

Slide 12

Slide 12 text

ϥΠϒϥϦબఆ͸৻ॏʹ w 🙅+BWB੡ϥΠϒϥϦ͸࢖͑ͳ͍ w %BHHFSˠ,PJO ,PEFJO w 3FUSP fi Uˠ,UPS w 3PPNˠ4RMEFMJHIU w IUUQTHJUIVCDPN""LJSB,PUMJO.VMUJQMBUGPSN-JCSBSJFT

Slide 13

Slide 13 text

$PSPVUJOFTͷѻ͍ʹ஫ҙ͕ඞཁ w J04 ,PUMJO/BUJWF ͷ$PSPVUJOFT͸γϯάϧεϨου w ϚϧνεϨουόʔδϣϯ͸ผϒϥϯν dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3-native-mt") { version { strictly("1.4.3-native-mt" ) } } }

Slide 14

Slide 14 text

$PSPVUJOFTͷѻ͍ʹ஫ҙ͕ඞཁ w J04 ,PUMJO/BUJWF ͸҆શͳฒྻॲཧͷͨΊʹGSP[FOͱ͍͏࢓૊Έ͕ w "OESPJEΤϯδχΞ͕ීஈ௨Γʹڞ௨ίʔυΛ࣮૷͢Δͱ 
 J04͚ͩΫϥογϡ💥ͷΑ͏ͳ͜ͱ͕ى͜ΓಘΔ MainScope().launch { var str = “string " withContext(Dispatchers.Main) { str = “main " } withContext(Dispatchers.Default) { str = "default " } )

Slide 15

Slide 15 text

J04ΤϯδχΞࢹ఺ͷ,.. w ීஈͷJ04ΞϓϦ։ൃͱͲ͏ҧ͏ʁ w ԿΛ֮͑ͳ͚Ε͹ͳΒͳ͍ʁ w ,..ͷίʔυ͸Ͳ͏΍ͬͯݺͼग़͢ͷʁ w ݴ͍͍ͨ͜ͱ͕ଟ͗͢ΔͷͰۦ͚଍Ͱ

Slide 16

Slide 16 text

։ൃ؀ڥ͸ʁ w ͍ͭ΋௨Γͷ9DPEF w WFSTJPOPSIJHIFS w ,PUMJOίʔυ΋ॻ͘ͳΒ"OESPJE4UVEJP,..ϓϥάΠϯ

Slide 17

Slide 17 text

,PUMJOͱ4XJGU͸ࣅͯΔʁ WBM⁶MFU GVOD⁶GVO 7PJE⁶6OJU QSPUPDPM⁶JOUFSGBDF TXJUDI⁶XIFO 
 FOVN⁶TFBMEDMBTTʁ ͋Δఔ౓ͷֶशίετ͸ඞཁ͔΋ fun test(str: String?) { str?.count() // ·͘͞͠OptionalνΣΠϯʂ str!!.count() // ڧ੍Unwra p if (str == null) retur n // ͜͜͸OptionalνΣΠϯ͍Βͳ͍ͷ⁉ str.count( ) } Ұݟɺҙຯෆ໌ͳεϚʔτΩϟετ

Slide 18

Slide 18 text

(SBEMFͱ͍͏ϏϧυγεςϜ val iosTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget = if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true ) ::iosArm6 4 els e ::iosX6 4 iosTarget("ios") { binaries { framework { baseName = "shared " } } } ,..ͷϞδϡʔϧ⁶9DPEFͷλʔήοτʁʁʁ

Slide 19

Slide 19 text

J04ΤϯδχΞ͕֮͑Δඞཁ͋Δ͔ʁ IUUQTLPUMJOMBOHPSHEPDTNPCJMFPSHBOJ[FQSPDFTTBSPVOELNNIUNMBQQSPBDIFTUPPSHBOJ[JOHUFBNXPSLGPSNVMUJQMBUGPSNQSPKFDUT

Slide 20

Slide 20 text

,PUMJOίʔυΛͲ͏΍࣮ͬͯߦ͢Δʁ w J04ͷ,PUMJO ,PUMJO/BUJWF ͸0CK$ޓ׵ w ,PUMJOίϯύΠϥ͸GSBNFXPSLΛੜ੒ͯ͘͠ΕΔ w ,PUMJOͰ"'/FUXPSLJOH͕࢖͑Δ w "3$ͱ౷߹͞ΕͯΔ

Slide 21

Slide 21 text

,PUMJOίʔυΛͲ͏΍࣮ͬͯߦ͢Δʁ IUUQTLPUMJOMBOHPSHEPDTOBUJWFPCKDJOUFSPQIUNMVTBHF *OUFSPQFSBCJMJUZXJUI4XJGU0CKFDUJWF$

Slide 22

Slide 22 text

,PUMJOίʔυΛͲ͏΍࣮ͬͯߦ͢Δʁ w GSBNFXPSLΛJNQPSU͢Δ IUUQTLPUMJOMBOHPSHEPDTNPCJMFJOUFHSBUFJOFYJTUJOHBQQIUNMDPOOFDUUIFGSBNFXPSLUPZPVSJPTQSPKFDU val packForXcode by tasks.creating(Sync::class) { group = "build " val mode = System.getenv("CONFIGURATION") ?: "DEBUG " val targetName = "ios " val framework = kotlin.targets.getByName inputs.property("mode", mode ) dependsOn(framework.linkTask ) val targetDir = File(buildDir, "xcode-frameworks" ) from({ framework.outputDirectory } ) into(targetDir ) }

Slide 23

Slide 23 text

,PUMJOίʔυΛͲ͏΍࣮ͬͯߦ͢Δʁ w GSBNFXPSLΛJNQPSU͢Δ IUUQTLPUMJOMBOHPSHEPDTNPCJMFJOUFHSBUFJOFYJTUJOHBQQIUNMDPOOFDUUIFGSBNFXPSLUPZPVSJPTQSPKFDU

Slide 24

Slide 24 text

ݟ஌Β͵Τϥʔ 'VODUJPOEPFTOUIBWFPSJOIFSJU!5ISPXTBOOPUBUJPOBOEUIVTFYDFQUJPOJTOU QSPQBHBUFEGSPN,PUMJOUP0CKFDUJWF$4XJGUBT/4&SSPS *UJTDPOTJEFSFEVOFYQFDUFEBOEVOIBOEMFEJOTUFBE1SPHSBNXJMMCFUFSNJOBUFE 6ODBVHIU,PUMJOFYDFQUJPO99999999 ,PUMJOίʔυͰ!5ISPXTΞϊςʔγϣϯΛ͚ͭ๨ΕͯΔ

Slide 25

Slide 25 text

J04 ,PUMJO/BUJWF ͚ͩϏϧυෆՄɾίʔυิ׬ෆೳʁ w IJFSBSDIJDBMQSPKFDUTUSVDUVSF IUUQTLPUMJOMBOHPSHEPDTNJHSBUJOHNVMUJQMBUGPSNQSPKFDUUPIUNMNJHSBUFUPUIFIJFSBSDIJDBMQSPKFDUTUSVDUVSF ͜Ε͕ ͜͏ͳΔ

Slide 26

Slide 26 text

J04 ,PUMJO/BUJWF ͚ͩϏϧυෆՄɾίʔυิ׬ෆೳʁ w IJFSBSDIJDBMQSPKFDUTUSVDUVSF IUUQTLPUMJOMBOHPSHEPDTNJHSBUJOHNVMUJQMBUGPSNQSPKFDUUPIUNMNJHSBUFUPUIFIJFSBSDIJDBMQSPKFDUTUSVDUVSF

Slide 27

Slide 27 text

·ͱΊ w "OESPJEΤϯδχΞࢹ఺Ͱ͸ w ,..͸ϚϧνϞδϡʔϧϓϩδΣΫτ w ϥΠϒϥϦબఆͱίϧʔνϯ͸ؾΛ഑Δ΂͠ w J04ΤϯδχΞ w ,PUMJO(SBEMFͷֶशίετ͸͋Δ w ͦ͜͸"OESPJEΤϯδχΞʹ೚ͤΔͱ͍͏બ୒ࢶ΋͋Δ w ,PUMJOͷίʔυ͸0CK$ޓ׵ w J04 ,PUMJO/BUJWF ͚ͩϏϧυෆՄɾίʔυิ׬ෆೳ͸ͨ·ʹ͋Δʁ