Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

,PUMJO'FTU ˖ ㅷ䊛דꟚ⪵ ˖ 傈劤ⴱך,PUMJOؕٝؿ؋ٖٝأ ˖ ♧菙⿫⸇罏せ 1FBUJY״׶  ˖ إحءّٝ-5

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

TUBSUGSPN$POWFSUUP,PUMJO

Slide 8

Slide 8 text

$POWFSU+BWB'JMFUP,PUMJO'JMF

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

%FDPNQJMF

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

չ)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ׁ׿ח侄׻׏׋ז ו鎉⿹׃גְ׋կ

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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) } ˞ٖࣅίʔυͰ͢

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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΋͋ΔΑ

Slide 27

Slide 27 text

USZ BOESPJEDPSPVUJOFT

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

橆㞮圓眠 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'

Slide 31

Slide 31 text

BOESPJEDPSPVUJOFT IUUQTHJUIVCDPNQEWSJF[FBOESPJEDPSPVUJOFT

Slide 32

Slide 32 text

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() } } } }

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

&OKPZ,PUMJO

Slide 38

Slide 38 text

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