Upgrade to Pro — share decks privately, control downloads, hide ads and more …

1年ぶりにやりなおすKotlinアプリ開発

 1年ぶりにやりなおすKotlinアプリ開発

Kazuya Kitahara

July 12, 2017
Tweet

More Decks by Kazuya Kitahara

Other Decks in Programming

Transcript

  1. 1೥ͿΓʹ΍Γͳ͓͢KotlinΞϓϦ։ൃ
    .HSBN*OD
    ๺ݪ࿨໵

    View Slide

  2. ࣗݾ঺հ
    w ๺ݪ࿨໵
    w גࣜձࣾNHSBNʢچגࣜձࣾ-JQʣΤϯδχΞ
    w ૑ۀϝϯόʔͷ̍ਓͰ͢ɻ
    w ೥൒લʹϛΫγΟ͔Βస৬͠·ͨ͠ɻ
    w "OESPJEϝΠϯɻ8FCɾJ04ঢ়گʹԠͯ͡։ൃ
    w झຯ͸өըɾອը

    View Slide

  3. γϯɾΰδϥͷҠಈܦ࿏Λ஍ਤ্ͰΞχϝʔγϣϯ
    w U
    (&0(3"1)*$0'(0%;*--"
    IUUQHFPHPE[JMMBUL

    View Slide

  4. ΤϜάϥϜੑ֨਍அ
    w ໰ͷ࣭໰Ͱੑ֨Λਖ਼֬਍அ
    w ΩϟονʔͳΞ΢τϓοτ
    w ແྉ
    w ϲ݄Ͱສਓͷํ͕਍அ

    View Slide

  5. 1೥ͿΓʹ΍Γͳ͓͢KotlinΞϓϦ։ൃ

    View Slide

  6. ࿩͢ࣄ
    w ೥ͿΓʹ,PUMJOΛ৮ͬͯࢥͬͨࣄ
    w ,PUMJOͱҰॹʹར༻ՄೳͳϥΠϒϥϦ

    View Slide

  7. ೥ͿΓʹ,PUMJOΛ৮ͬͯࢥͬͨࣄ

    View Slide

  8. ࢖͑ΔϥΠϒϥϦ͕૿͑ͯΔ
    w "OOPUBUJPOϓϩηοαʔΛར༻͍ͯ͠ΔϥΠϒϥϦ͸࢖
    ͑ͨΓ࢖͑ͳ͔ͬͨΓ͍ͯͨ͠
    w %BHHFS%BUB#JOEJOH΋͏·͘ಈ͔ͳ͔ͬͨΑ͏ʹه
    Ա
    w ৭ΜͳϥΠϒϥϦ͕࢖͑ΔΑ͏ʹͳͬͯΔʂ

    View Slide

  9. ,PUMJOͷهࣄ͕૿͑ͯΔ
    w 8FC্Ͱ,PUMJOͷղઆΛͯ͠Δهࣄ͕૿͑ͯͯ͘͢͝ॿ͔
    Γ·ͨ͠ɻ
    w 2JJUBͰ,PUMJOΛݕࡧͯ͠ΈΔͱɺݱࡏ౤ߘఔ͋Γ·͢
    ͕ɺd·Ͱʹͯ͠ΈΔͱ౤ߘ͙Β͍ͩͬͨͷ
    Ͱɺ͜͜೥ͰഒҎ্ʹ૿͍͑ͯ·͢ɻ

    View Slide

  10. ΍ͬͺΓ,PUMJO࢖͍΍͍͢
    w FOVN
    w ஗ԆϓϩύςΟ
    w HFUUFSTFUUFS
    w ֦ுؔ਺
    ಛʹ͖͢ͳػೳ

    View Slide

  11. FOVN
    (FOEFSLU
    FOVNDMBTT(FOEFS WBMKQ4USJOH
    \

    NBMF உੑ

    GFNBMF ঁੑ

    PUIFS ͦͷଞ

    ^
    w ྻڍܕ
    w ,PUMJOͷFOVN͸؆୯ʹ஋Λ࣋ͨͤΔࣄ͕Ͱ͖ͯศར
    w 'SBHNFOU1BHFS"EBQUFSͷදࣔॱΛFOVNͰ؅ཧͯ͠·͢

    View Slide

  12. FOVN
    .BJO1BHFLU
    FOVNDMBTT.BJO1BHF\

    1"(&\

    PWFSSJEFGVOGSBHNFOU
    'SBHNFOU\

    SFUVSO1"(&'SBHNFOUOFX*OTUBODF

    ^

    ^ 

    1"(&\

    PWFSSJEFGVOGSBHNFOU
    'SBHNFOU\

    SFUVSO1"(&'SBHNFOUOFX*OTUBODF

    ^

    ^

    BCTUSBDUGVOGSBHNFOU
    'SBHNFOU

    ^

    View Slide

  13. FOVN
    .BJO1BHFS"EBQUFSLU
    DMBTT.BJO1BHFS"EBQUFS GN'SBHNFOU.BOBHFS

    'SBHNFOU4UBUF1BHFS"EBQUFS GN
    \

    PWFSSJEFGVOHFU*UFN QPTJUJPO*OU
    'SBHNFOU \

    SFUVSO.BJO1BHFWBMVFT
    GSBHNFOU

    ^

    PWFSSJEFGVOHFU$PVOU
    *OU\

    SFUVSO.BJO1BHFWBMVFT
    TJ[F

    ^

    PWFSSJEFGVOHFU1BHF5JUMF QPTJUJPO*OU
    $IBS4FRVFODF\

    SFUVSO.BJO1BHFWBMVFT
    TDSFFO/BNF

    ^

    ^

    View Slide

  14. ஗ԆϓϩύςΟ
    WBMHSBNCZMB[Z\lNHSBNz^
    w ͸͡ΊͯΞΫηε͞Εͨͱ͖ʹܭࢉ͞ΕΔϓϩύςΟ
    w ฐࣾͰ͸ɺ'SBHNFOUʹ஋౉͢ͱ͖ʹ1BSDFMBSͱ߹Θͤͯ
    ࢖ͬͯ·͢ɻ

    View Slide

  15. ஗ԆϓϩύςΟ
    'SBHNFOUͰͷར༻ྫ
    DPNQBOJPOPCKFDU\

    GVOOFX*OTUBODF VTFS6TFS
    6TFS%JBMPH'SBHNFOU\

    WBMBSHT#VOEMF
    BQQMZ\

    QVU1BSDFMBCMF 4FSJBMJ[F,FZ64&3OBNF 1BSDFMTXSBQ VTFS


    ^

    SFUVSO6TFS%JBMPH'SBHNFOU
    BQQMZ\
    BSHVNFOUTBSHT
    ^

    ^

    ^

    View Slide

  16. ஗ԆϓϩύςΟ
    ஗ԆϓϩύςΟͰWBMʹͰ͖Δ
    QSJWBUFWBMVTFS6TFSCZMB[Z\
    1BSDFMTVOXSBQ6TFS
    BSHVNFOUTHFU1BSDFMBCMF 4FSJBMJ[F,FZ64&3OBNF



    ^
    ஗ԆϓϩύςΟΛར༻͠ͳ͍৔߹
    QSJWBUFMBUFJOJUWBSVTFS6TFS
    PWFSSJEFGVOPO$SFBUF TBWFE*OTUBODF4UBUF#VOEMF
    \

    TVQFSPO$SFBUF TBWFE*OTUBODF4UBUF

    VTFS1BSDFMTVOXSBQ6TFS
    BSHVNFOUTHFU1BSDFMBCMF 4FSJBMJ[F,FZ64&3OBNF



    ^

    View Slide

  17. HFUUFSTFUUFS
    w ,PUMJOͰ͸HFUUFSTFUUFSͷఆָ͕ٛ͘͢͝Ͱ͢ɻ
    w ฐࣾͰ͸ɺ%BUBCJOEJOHʹ౉͢0CTFSWBCMFͳ.PEFM
    7JFX.PEFMΛ࡞੒͢ΔࡍʹΑ͘࢖͍ͬͯ·͢ɻ

    View Slide

  18. HFUUFSTFUUFS
    7JFX.PEFM
    DMBTT6TFS7JFX.PEFM
    #BTF0CTFSWBCMF
    \

    !#JOEBCMF

    WBSNBJM4USJOH

    TFU NBJM
    \

    pFMENBJM

    OPUJGZ1SPQFSUZ$IBOHFE #3NBJM

    OPUJGZ1SPQFSUZ$IBOHFE #3WBMJE

    ^

    !HFU#JOEBCMF

    WBSWBMJE#PPMFBOGBMTF

    HFU
    \

    JG UIJTNBJMJT/VMM0S&NQUZ

    SFUVSOGBMTF

    WBMNBUDIFS1BUUFSOT&."*-@"%%3&44NBUDIFS UIJTNBJM

    SFUVSONBUDIFSNBUDIFT

    ^

    ^

    View Slide

  19. ֦ுؔ਺
    w طଘͷΫϥεʹରͯ͠ޙ͔ΒϝιουΛ௥Ճ͢Δࣄ͕Ͱ͖
    Δػೳ
    w #JOEJOH"EBQUFSΛ௥Ճ͢Δͱ͖ʹΑ͘࢖ͬͯ·͢ɻ

    View Slide

  20. ֦ுؔ਺ར༻͠ͳ͍৔߹
    1JDBTTPͷMPBE*NBHF
    PCKFDU*NBHF7JFX#JOEJOH"EBQUFS\
    !#JOEJOH"EBQUFS CJOEJNBHF6SM

    !+WN4UBUJD
    GVOMPBE*NBHF WJFX*NBHF7JFX VSM4USJOH
    \
    1JDBTTPXJUI WJFXDPOUFYU

    MPBE JNBHF6SM

    JOUP WJFX

    ^
    ^

    View Slide

  21. ֦ுؔ਺ར༻ͨ͠৔߹
    1JDBTTPͷMPBE*NBHF
    !#JOEJOH"EBQUFS CJOEJNBHF6SM

    GVO*NBHF7JFXMPBE*NBHF JNBHF6SM4USJOH
    \

    1JDBTTPXJUI UIJTDPOUFYU

    MPBE JNBHF6SM

    JOUP UIJT

    ^

    View Slide

  22. ඍົͩͬͨॴɿMJOU
    w ೥લMJOUͷ݁Ռ͕͍·͍ͪͩͬͨ
    w ,PUMJO͔Βࢀর͞Ε͍ͯΔSFTPVSDF΋6OVTFE3FTPVSDFͷ
    XBSOJOH͕ग़Δࣄ౳
    w मਖ਼͞Ε͍ͯΔࣄΛظ଴ͯ͠·͕ͨ͠ɺΫϥεʹΑͬͯXBSOJOH
    ग़ͨΓग़ͳ͔ͬͨΓͯͯ͠·ͩ࢖͑ͳ͍໛༷Ͱ͢ɻ

    View Slide

  23. ,PUMJOͱҰॹʹར༻ՄೳͳϥΠϒϥϦ

    View Slide

  24. ௨৴ɾඇಉظॲཧपΓ
    w 3FUSPpU
    w 0L)UUQ
    w 3Y+BWB

    View Slide

  25. ௨৴ɾඇಉظॲཧपΓ
    .BJO"DUJWJUZ7JFX.PEFMLU
    UIJTDMJFOUHFU"DDPVOU

    CJOE5P-JGFDZDMF BDUJWJUZ

    TVCTDSJCF0O 4DIFEVMFSTOFX5ISFBE


    PCTFSWF0O "OESPJE4DIFEVMFSTNBJO5ISFBE


    TVCTDSJCF \TVDDFTT

    %PTPNFUIJOH

    ^ \GBJMVSF
    %PTPNFUIJOH

    ^

    "QJLU
    JOUFSGBDF"QJ\

    !(&5 BDDPVOU

    GVOHFU"DDPVOU
    0CTFSWBCMF"DDPVOU
    ^

    View Slide

  26. 1BSDFMFS
    6TFS1SPpMFLU
    !1BSDFM

    EBUBDMBTT6TFS1SPpMF!1BSDFM$POTUSVDUPS
    DPOTUSVDUPS 

    !1BSDFM1SPQFSUZ JDPO
    WBMJDPO4USJOH 

    !1BSDFM1SPQFSUZ OBNF
    WBMOBNF4USJOH


    \

    ^
    w 1BSDFMBCMFͷ࣮૷Λָʹ͢ΔϥΠϒϥϦ

    View Slide

  27. 1BSDFMFS
    6TFS'SBHNFOULU
    1BSDFMTVOXSBQ6TFS1SPpMF
    BSHVNFOUTHFU1BSDFMBCMF 4FSJBMJ[F,FZ64&3@130'*-&OBNF



    6TFS'SBHNFOULU
    WBMBSHT#VOEMF
    BQQMZ\

    QVU1BSDFMBCMF
    4FSJBMJ[F,FZ64&3@1SPpMFOBNF
    1BSDFMTXSBQ VTFS1SPpMF



    ^

    View Slide

  28. (40/
    6TFS1SPpMFLU
    EBUBDMBTT6TFS1SPpMF 

    !4FSJBMJ[FE/BNF JDPO
    WBMJDPO4USJOH 

    !4FSJBMJ[FE/BNF OBNF
    WBMOBNF4USJOH


    \

    ^
    w KTPOͷύʔεΛࣗಈԽ͢ΔϥΠϒϥϦ
    w ฐࣾͰ͸QSPHVBSEରԠʹ͸ΞϊςʔγϣϯΛར༻ͯ͠ର
    Ԡ͍ͯ͠·͢ɻ

    View Slide

  29. %BSU
    w *OUFOUʹσʔλΛ౉͢ͷΛָʹ͢ΔϥΠϒϥϦ
    w ,&:ͷࢦఆ౳͕ෆཁʹͳΔ

    View Slide

  30. %BSU
    6TFS"DUJWJUZLU
    DMBTT6TFS"DUJWJUZ"QQ$PNQBU"DUJWJUZ
    \

    !*OKFDU&YUSB

    MBUFJOJUWBSVTFS6TFS

    PWFSSJEFGVOPO$SFBUF TBWFE*OTUBODF4UBUF#VOEMF
    \

    TVQFSPO$SFBUF TBWFE*OTUBODF4UBUF

    %BSUJOKFDU UIJT

    ^

    DPNQBOJPOPCKFDU\

    GVODSFBUF*OUFOU DPOUFYU$POUFYU VTFS6TFS
    *OUFOU\

    SFUVSO)FOTPOXJUI DPOUFYU

    HPUP6TFS"DUJWJUZ

    VTFS VTFS

    CVJME

    ^

    ^

    ^

    View Slide

  31. %BSUΛ'SBHNFOUͰར༻͢Δʁ
    6TFS'SBHNFOULU
    HFU*OUFOU
    QVU&YUSBT )FOTPOXJUI UIJT

    HPUP.Z'SBHNFOU

    BSH BSH

    CVJME


    HFU4VQQPSU'SBHNFOU.BOBHFS

    CFHJO5SBOTBDUJPO

    SFQMBDF 3JEDPOUBJOFS OFX.Z'SBHNFOU


    DPNNJU

    w IUUQTHJUIVCDPNGQSBUFFLEBSUJTTVFTʮ୭͔པΉʯ
    w ࡌ͍ͬͯΔํ๏΋ඍົͳͷͰɺ'SBHNFOUͰ͸ར༻͍ͯ͠·ͤΜɻ

    View Slide

  32. BOESPJETUBUF
    w *DF1JDLͷ,PUMJOରԠ൛ʢFWFSOPUF͕։ൃʣ
    w PO4BWF*OTUBODF4UBUFͷॲཧΛࣗಈԽͯ͘͠ΕΔ
    w IUUQTHJUIVCDPNFWFSOPUFBOESPJETUBUF

    View Slide

  33. BOESPJETUBUF
    .BJO"DUJWJUZLU
    PWFSSJEFGVOPO$SFBUF TBWFE*OTUBODF4UBUF#VOEMF
    \

    TVQFSPO$SFBUF TBWFE*OTUBODF4UBUF

    4UBUF4BWFSSFTUPSF*OTUBODF4UBUF UIJT TBWFE*OTUBODF4UBUF

    ^
    .BJO"DUJWJUZLU
    !4UBUF

    WBSOBNF4USJOH OVMM

    View Slide

  34. ·ͱΊ
    w ೥ͿΓʹ,PUMJOΛ࢖ͬͯΈͨΒ࢖͑ΔϥΠϒϥϦ͕͢͝
    ͘૿͑ͯͯศརͩͬͨ
    w ,PUMJOͷجຊػೳ͸૬มΘΒͣૉఢ
    w ͜Ε͔Βͷ։ൃ͸,PUMJOͰ࢝ΊΔͷ͕ྑͦ͞͏
    ೥ͿΓʹ࢖ͬͨΒ΍ͬͺΓ,PUMJO͸ྑ͔ͬͨ

    View Slide

  35. גࣜձࣾNHSBN͸ΤϯδχΞੵۃ࠾༻தͰ͢ɻ
    ਓ໨ͷΤϯδχΞΛ୳͍ͯ͠·͢ʂ
    ΤϯδχΞਓͰ͕Μ͹͍ͬͯ·͢ɻ
    ৽͍͠΋ͷେ޷͖
    ࠊ͕ॏ͍

    View Slide