$30 off During Our Annual Pro Sale. View Details »

Kotlin Fest 2018 わいわい報告会 / mochicoroutines

mochico
September 11, 2018

Kotlin Fest 2018 わいわい報告会 / mochicoroutines

Kotlin Fest 2018 わいわい報告会 - connpass : https://connpass.com/event/100752/
各セッションの紹介と、Kotlin コルーチンを 理解しよう - Speaker Deck : https://speakerdeck.com/sys1yagi/kotlin-korutinwo-li-jie-siyou のお話をきいて試してみた内容の紹介をしました。

mochico

September 11, 2018
Tweet

More Decks by mochico

Other Decks in Technology

Transcript

  1. ,PUMJO'FTU׻ְ׻ְ㜠デ⠓
    !NPDIJDP
    ,PUMJO'FTU׻ְ׻ְ㜠デ⠓

    View Slide

  2. "CPVUNF
    NPDIJDP!@NPDIJDPO@
    "OESPJE+BWB,PUMJO
    5FDICPPTUFS䪮遭剅Ⱙ

    View Slide

  3. ,PUMJO'FTUֶ气׸圫ד׃׋

    View Slide

  4. ,PUMJO'FTU
    ˖ ㅷ䊛דꟚ⪵
    ˖ 傈劤ⴱך,PUMJOؕٝؿ؋ٖٝأ
    ˖ ♧菙⿫⸇罏せ 1FBUJY״׶

    ˖ إحءّٝ-5

    View Slide

  5. IUUQTQIPUPTHPPHMFDPNTIBSF"'2JQ.VY*9**#QG3S@)X8U2VQ*$:+M7$4Z[%NE7C&N(BKZB%Q4"@@K9LTS"H
    LFZ/E%;I8E)/'75'PE)MQ/#JB$MB9QR29+L/;

    View Slide

  6. View Slide

  7. TUBSUGSPN$POWFSUUP,PUMJO

    View Slide

  8. $POWFSU+BWB'JMFUP,PUMJO'JMF

    View Slide

  9. 㹋ꥷחכו׿ז؝٦سחז׏גְ׷ךַ

    View Slide

  10. %FDPNQJMF

    View Slide

  11. ,PUMJO'FTU
    ֶׅׅ׭إحءّٝ

    View Slide

  12. չ,PUMJOד何㊣ׅ׷"OESPJE،فٔךㅷ颵պ
    ֮׿ְׂײֹׁ׿
    IUUQTTQFBLFSEFDLDPNZBO[NLPUMJOGFTU
    ؔـآؙؑز䭷ぢⰅꟌ٥&FDUJWF+BWBזוד䱿׭׵
    ׸גְ׷㛙暕ד〳铣䚍ծⱄⵃ欽䚍ך넝ְ؝٦سָ
    ,PUMJOדוך״ֲח鎉铂➬圫ח《׶Ⰵ׸׵׸ծ
    ,PUMJOד剅ֻֿהד䖞ֲֿהָדֹ׷ַהְֲֶ鑧

    View Slide

  13. չ,PUMJO׮ֲ♧娄պ
    啾峔⛒ׁ׿
    IUUQTTQFBLFSEFDLDPNLPCJUPLBCBLPUMJONPV
    CV
    ,PUMJOך㘗ח׮ֲ♧娄驎׫鴥׿׌ֶ鑧կ
    ؙٓأה㘗ך麩ְծ؟ـة؎فהכծ/VMM鏩㺁䚍ծ
    ♶㢌٥Ⱏ㢌٥⿾㢌

    View Slide

  14. չ,PUMJO،فٔךٔؿ؋ؙةؚٔٝه؎ٝزպ
    ⚥ꅽ湫➂ׁ׿
    IUUQTXXXTMJEFTIBSFOFU3FDSVJU-JGFTUZMF
    SFGBDUPSJOHQPJOUPGLPUMJOBQQMJDBUJPO
    ,PUMJO׾⢪׏גٔؿ؋ؙةؚׅٔٝ׷կ

    View Slide

  15. չ)PXUP5FTU4FSWFSTJEF,PUMJOպ
    ꈿ加⨳㣕ׁ׿٥⵸⾱猕䗗ׁ׿
    IUUQTTQFBLFSEFDLDPNNBFIBSJOIPXUPUFTU
    TFSWFSTJEFLPUMJOOVNCFSLPUMJOGFTU
    4FSWFS4JEFד6OJUذأزךٓ؎ـٓٔכׄ׭TQSJOHؿ
    ٖ٦يٙ٦ؙח屟׏׋剅ֹ倯ծ%#ذأزך⸬桦⻉ז
    וկ
    ⵸⼱ךٓ؎ـٓٔ稱➜כ"OESPJEד׮剣欽կ

    View Slide

  16. չ,PUMJO؝ٕ٦ثٝ׾椚鍑׃״ֲպ
    Ⱂ加⤥䎢ׁ׿
    IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJO
    LPSVUJOXPMJKJFTJZPV
    +BWBדכأذ٦زوءٝה׃ג㹋遤ׁ׸׷ֿהתד
    鍑铡׃׋,PUMJO؝ٕ٦ثٝך寸㹀晛

    View Slide

  17. չ,PUMJOMJOUFSպ
    ꆏ㹧䡞⛒➜ׁ׿
    IUUQTTQFBLFSEFDLDPNLHNZTIJOLPUMJOMJOUFS
    LUMJOU EFUFLU BOESPJEMJOUך暴䗙ծ鏣㹀ծؕأةي
    ٕ٦ٕך㼪Ⰵחאְג鍑铡

    View Slide

  18. չ)PXUP,POUSJCVUF W+1
    պ
    熖頺⢕Ⱙׁ׿
    IUUQTQIPUPTHPPHMFDPNTIBSF
    "'2JQ/B:@+-(28#'HT.MG(G
    N26U[R'4MNI%GE'8(NTB$4F)P*PDOH
    LFZC63%E9#:56E%EM7%/8:U5%I#3['KCO2-7M;3KM3
    ,PUMJO׉ך׮ךחفؙٕٔ׾鷏׷$POUSJCVUFׅ׷,POUSJCVUF
    ך➬倯׾鑫׃ֻ铡僇կ
    ֿך酅ך-5㣐⠓דז׿ה➂׮ך涫㠡罏ָTIJSBKJׁ׿ח侄׻׏׋ז
    ו鎉⿹׃גְ׋կ

    View Slide

  19. չ,PUMJOד䠥ד׷.JDSPTFSWJDFTպ
    TUPSNDBUׁ׿
    IUUQTTQFBLFSEFDLDPNTUPSNDBULPUMJOGFTU
    㹋騧涸זغحؙؒٝس,PUMJO鍑铡

    View Slide

  20. וךإحءّٝ׮ֶ׮׃׹ְךד׫ג׫גֻ׌ְׁ

    View Slide

  21. ©2018 Lang-8 Inc. ALL Rights Reserved.
    ,PUMJO'FTU
    5PTIJIJSP:BHJ
    ,PUMJOίϧʔνϯΛ
    ཧղ͠Α͏
    IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV

    View Slide

  22. $PSPVUJOFהכ
    ˖ Ⳣ椚ך鷿⚥ד♧儗⨡姺ָ〳腉
    ˖ ⴽךأٖحسדⱄꟚָ〳腉
    ˖ ⚥倖٥ⱄꟚך֮׷؝٦سꬊず劍Ⳣ椚זו׾ءٝ
    فٕח剅ֽ׷
    ˖ 3Y+BWBהכ㹋植׃׋ְֿהָ殯ז׷

    View Slide

  23. IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV
    ©2018 Lang-8 Inc. ALL Rights Reserved.
    ܧଓঢ়گΛ༰қʹॻ͘
    ίϧʔνϯ BTZODBXBJU

    fun loadProfile(id: Int) {
    getProfile(token) { profile ->
    showProgile(profile)
    }
    }
    ίʔϧόοΫελΠϧ
    fun loadProfile(id: Int) {
    val profile = getProfile(id).await()
    showProfile(profile)
    } ˞ٖࣅίʔυͰ͢

    View Slide

  24. $PSPVUJOFדֹ׉ֲז孡ָ׃גֹ׋

    View Slide

  25. וַֿ׵㨣׭׸לְְ׿׌׹ֲ

    View Slide

  26. IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV
    ©2018 Lang-8 Inc. ALL Rights Reserved.
    PO"DUJWJUZ3FTVMUΛTVTQFOE
    launch(UI) {
    val result = activityResult(intent)
    if (result.isOk) {
    // ok
    val data: Intent? = result.flatMap()
    } else {
    // ng
    }
    }
    IUUQTHJUIVCDPNQEWSJF[FBOESPJEDPSPVUJOFT
    BOESPJEDPSPVUJOFTͱ͍͏αʔυύʔςΟϥΠϒϥϦ͕
    ఏڙɻSFRVFTU1FSNJTTJPO΋͋ΔΑ

    View Slide

  27. USZ
    BOESPJEDPSPVUJOFT

    View Slide

  28. View Slide

  29. 橆㞮圓眠
    kotlin_version = ‘1.2.61’
    kotlin { experimental { coroutines 'enable' } }
    implementation
    'org.jetbrains.kotlinx:kotlinx-coroutines-core:
    0.25.3'

    View Slide

  30. 橆㞮圓眠
    kotlin_version = ‘1.2.61’
    kotlin { experimental { coroutines 'enable' } }
    implementation
    ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:0.25.3'
    implementation
    'net.devrieze:android-coroutines:0.7.0'

    View Slide

  31. BOESPJEDPSPVUJOFT
    IUUQTHJUIVCDPNQEWSJF[FBOESPJEDPSPVUJOFT

    View Slide

  32. PO"DUJWJUZ3FTVMU
    startActivityForResult(
    requestIntent,
    REQUEST_CODE)
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when (requestCode) {
    REQUEST_CODE -> {
    if (resultCode == Activity.RESULT_OK) {
    data ?: return
    setResult(RESULT_OK, data)
    finish()
    }
    }
    }
    }

    View Slide

  33. PO"DUJWJUZ3FTVMU
    launch(UI) {
    val result = activityResult(requestIntent)
    if (result.isOk) {
    // ok
    val data: Intent? = result.flatMap()
    setResult(RESULT_OK, data)
    finish()
    } else {
    // ng
    }
    }

    View Slide

  34. USZBOESPJEDPSPVUJOFT׃ג׫׋䠬䟝
    ˖ ׅ׀ֻءٝفٕ
    ˖ ؙٔؒأزהٖأهٝأָずׄ㜥䨽חתהת׷ךד
    铣׫װְׅ
    ˖ 3Y+BWBך縧ֹ䳔ִ״׶䕦갟眔㔲ָ㼰זְ
    ˖ 㸣Ⰻח傊䒭ה⢘欽〳腉

    View Slide

  35. 3Y+BWB׾⢪׏גְ׷傀㶷،فٔח
    ,PUMJO$PSPVUJOFT׾㼪Ⰵ׃״ֲ
    IUUQTRJJUBDPNUBLBIJSPNJUFNTBDBCDEEF

    View Slide

  36. USZBOESPJEDPSPVUJOFT׃ג׫׋䠬䟝
    ˖ DPSPVUJOF荈⡤ָת׌♧䘔FYQFSJNFOUBM
    ˖ BOESPJEDPSPVUJOF׮FYQFSJNFOUBM
    ˖ فٗتؙزפך㼪Ⰵכ荈䊹顑⟣ד

    View Slide

  37. &OKPZ,PUMJO

    View Slide

  38. SFG
    ˖ (FUUJOHTUBSUFEXJUI"OESPJEBOE,PUMJO,PUMJO
    1SPHSBNNJOH-BOHVBHFIUUQTLPUMJOMBOHPSH
    EPDTUVUPSJBMTLPUMJOBOESPJEIUNM
    ˖ (FU4UBSUFEXJUI,PUMJOPO"OESPJE]"OESPJE
    %FWFMPQFSTIUUQTEFWFMPQFSBOESPJEDPNLPUMJO
    HFUTUBSUFE
    ˖ <,PUMJO؎ٝ٥،ؙءّٝ]و؎شؽـحؙأ> IUUQT
    CPPLNZOBWJKQFDQSPEVDUTEFUBJMJE

    View Slide