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

KMMの導入と得られるもの / Introduction of KMM and its benefits

KMMの導入と得られるもの / Introduction of KMM and its benefits

Masatoshi Kubode

April 06, 2021
Tweet

More Decks by Masatoshi Kubode

Other Decks in Programming

Transcript

  1. ©2021 Wantedly, Inc.
    ,..ͷಋೖͱಘΒΕΔ΋ͷ
    ,..ͱ͸ʁಋೖͷಓͷΓɺԿ͕ಘΒΕΔͷ͔
    ,..ษڧձ8BOUFEMZºνʔϜϥϘ
    2021/04/06 - Masatoshi Kubode

    View Slide

  2. ©2021 Wantedly, Inc.
    XXXXBOUFEMZDPNJELVCPEF

    View Slide

  3. ©2021 Wantedly, Inc.
    ࠓ೔ͷൃදͷ໨త

    View Slide

  4. ϖʔδλΠτϧ ϖʔδαϒλΠτϧ
    ©2021 Wantedly, Inc.
    ,..ͷັྗΛ఻͑ͯ
    ಋೖͷྐʹͯ͠΋Β͏

    View Slide

  5. ©2021 Wantedly, Inc.
    "HFOEB

    View Slide

  6. ©2021 Wantedly, Inc.
    ,..ͱ͸ͳʹ͔ʁ
    ,..ͷಛ௃
    ಋೖ·ͰͷಓͷΓ
    ಋೖͯ͠ײͨ͡1SPT$POT
    "HFOEB

    View Slide

  7. ©2021 Wantedly, Inc.
    ,..ͱ͸ͳʹ͔ʁ

    View Slide

  8. ©2021 Wantedly, Inc.
    w ,PUMJO.VMUJQMBUGPSN.PCJMF ,..

    w J04ͱ"OESPJEͷϏδωεϩδοΫΛ୯ҰͷίʔυϕʔεͰڞ௨Խ͢ΔϞόΠϧ4%,
    w 6*͸ڞ௨Խͤͣɺ֤ϓϥοτϑΥʔϜͰ࣮૷
    ,..ͱ͸ʁ
    https://kotlinlang.org/lp/mobile/

    View Slide

  9. ©2021 Wantedly, Inc.
    w ୯ҰίʔυϕʔεͰෳ਺ͷϓϥοτϑΥʔ
    ϜΛαϙʔτ͢Δ࢓૊Έ
    w $PNNPOʹهड़ͨ͠ίʔυ͸͢΂ͯͷϓ
    ϥοτϑΥʔϜͰಈ࡞͢Δ
    w J04"OESPJEʹಛԽͨ͠෦෼͕,..
    ,PUMJO.VMUJQMBUGPSN
    Android
    iOS
    ☝Kotlin Multiplatform Mobile (KMM)
    Kotlin Multiplatform
    https://kotlinlang.org/docs/multiplatform.html

    View Slide

  10. ©2021 Wantedly, Inc.
    ,..ʹࢸΔྺ࢙
    1996೥ Java 1.0
    2016೥ Kotlin 1.0 Kotlin/JVM
    2016೥ Kotlin 1.1 Kotlin/JS
    2017೥ Kotlin 1.2 Kotlin Multiplatform Experimental
    2018೥ Kotlin 1.3 Kotlin/Native
    2020೥8݄ Kotlin 1.4
    Kotlin Multiplatform Alpha
    Kotlin Multiplatform Mobile (KMM)

    View Slide

  11. ©2021 Wantedly, Inc.
    w ೥ʹϦϦʔε
    w 8SJUFPODF SVOBOZXIFSF͕εϩʔΨϯ
    w +7.͕ͳ͍ͱಈ͔ͳ͍
    w ͭ·ΓJ04ͳͲͰ͸ಈ͔ͳ͍
    +BWB

    View Slide

  12. ©2021 Wantedly, Inc.
    w +7.ͱ"OESPJEͷϓϩάϥϛϯάݴޠ
    w +BWBDPNQBUJCJMJUZ
    ,PUMJO

    View Slide

  13. ©2021 Wantedly, Inc.
    w +BWB4DSJQU4VQQPSU
    w ·ͩίʔυڞ௨Խͷ࢓૊Έ͸ͳ͍
    w ޙʹ"OESPJEͷୈҰڃݴޠʹ
    ,PUMJO

    View Slide

  14. ©2021 Wantedly, Inc.
    w ,PUMJO.VMUJQMBUGPSN &YQFSJNFOUBM

    w $PNNPOͱ͍͏֓೦͕Ͱ͖Δ
    ,PUMJO

    View Slide

  15. ©2021 Wantedly, Inc.
    w ,PUMJO/BUJWF
    w J04
    w 8JOEPXT
    w -JOVY
    w FUD
    w 8SJUFPODF SVOBOZXIFSF
    ,PUMJO

    View Slide

  16. ©2021 Wantedly, Inc.
    w ,PUMJO.VMUJQMBUGPSN"MQIB
    w ,PUMJO.VMUJQMBUGPSN.PCJMF ,..

    ,PUMJO
    Android
    iOS
    ☝Kotlin Multiplatform Mobile (KMM)

    View Slide

  17. ©2021 Wantedly, Inc.
    ,..ͷಛ௃

    View Slide

  18. ©2021 Wantedly, Inc.
    w 6*͸ڞ௨Խ͠ͳ͍
    w ϓϥοτϑΥʔϜʹ࠷దͳܗ
    w ϓϥοτϑΥʔϜݻ༗ͷ"1*΋࢖͑Δ
    ,..ͷಛ௃

    View Slide

  19. ϖʔδλΠτϧ ϖʔδαϒλΠτϧ
    ©2021 Wantedly, Inc.
    6*͸ڞ௨Խ͠ͳ͍

    View Slide

  20. ©2021 Wantedly, Inc.
    ,..͸ϏδωεϩδοΫΛڞ௨Խ͢Δ
    ,..͸࠷దͳ69͸ϓϥοτϑΥʔϜʹωΠςΟϒͳ
    ΋ͷͰ͋Δ΂͖ͱߟ͍͑ͯΔɻ
    ͳͷͰ,..Ͱͷڞ௨Խ͸ਪ঑͠ͳ͍ɻ
    6*͸ڞ௨Խ͠ͳ͍

    View Slide

  21. ©2021 Wantedly, Inc.
    6*͸ڞ௨Խ͠ͳ͍
    طଘϓϩμΫτ΁ͷಋೖͰ͸ղ͘΂͖՝୊͕ݮΔ

    View Slide

  22. ©2021 Wantedly, Inc.
    6*͸ڞ௨Խ͠ͳ͍ ,..ΞʔΩςΫνϟΨΠυϥΠϯ
    Layer Recommendation on sharing
    Business logic Yes
    Platform access
    Yes/no. ϓϥοτϑΥʔϜݻ༗ͷAPI͸࢖͑Δ͕
    ڍಈ͸ڞ௨ԽͰ͖Δ
    Frontend behavior Yes/no. MVP, MVIͳͲͳΜͰ΋
    User interface No. ϓϥοτϑΥʔϜݻ༗Ͱ͋Δ΂͖
    https://kotlinlang.org/docs/mobile/architect-kmm-app.html

    View Slide

  23. ϖʔδλΠτϧ ϖʔδαϒλΠτϧ
    ©2021 Wantedly, Inc.
    ϓϥοτϑΥʔϜʹ࠷దͳܗ

    View Slide

  24. ©2021 Wantedly, Inc.
    ΤίγεςϜʹແཧͳ͘౷߹
    w J04
    w GSBNFXPSL
    w $PDPB1PET
    w "OESPJE
    w BBS
    w KBS
    w (SBEMFTVCNPEVMF
    ϓϥοτϑΥʔϜʹ࠷దͳܗ ґଘੑ

    View Slide

  25. ©2021 Wantedly, Inc.
    ϓϥοτϑΥʔϜʹ࠷దԽ͞ΕͨόΠφϦ
    ϓϥοτϑΥʔϜʹ࠷దͳܗ Φʔόʔϔουͷগͳ͞

    View Slide

  26. ϖʔδλΠτϧ ϖʔδαϒλΠτϧ
    ©2021 Wantedly, Inc.
    ϓϥοτϑΥʔϜݻ༗ͷ"1*΋࢖͑Δ

    View Slide

  27. ©2021 Wantedly, Inc.
    ,..಺Ͱ௚઀ϓϥοτϑΥʔϜݻ༗"1*Λ࢖͑Δ
    ϓϥοτϑΥʔϜݻ༗ͷ"1*΋࢖͑Δ FYQFDUBDUVBM
    https://kotlinlang.org/docs/mobile/connect-to-platform-specific-apis.html

    View Slide

  28. ©2021 Wantedly, Inc.
    ಋೖ·ͰͷಓͷΓ

    View Slide

  29. ©2021 Wantedly, Inc.
    νʔϜͷཧղ
    ,..ͷυΩϡϝϯτʹΨΠυϥΠϯ͕͋Δ͘Β͍ॏཁ
    w ϓϩδΣΫτͰಇ͘ਓʑΛཧղ͢Δ͜ͱ͕ɺ౷߹Λ੒ޭͤ͞ΔͨΊͷୈҰา
    w ্͔࢘Βͨ͠Β৽͍ٕ͠ज़ಋೖ͸ϦεΫ
    w J04ΤϯδχΞ͔Βͨ͠Βࠓ·ͰͱҟͳΔ؀ڥ
    w ,..͕Ͳ͏΍ͬͯಈ͍͍ͯΔͷ͔Λઆ໌
    w ,..ͷՁ஋Λײͯ͡΋Β͏
    ಋೖ΁ͷಓͷΓ
    https://kotlinlang.org/docs/mobile/introduce-your-team-to-kmm.html

    View Slide

  30. ©2021 Wantedly, Inc.
    ,..͸࠷దͳखஈ͔
    ϓϩμΫτͷϑΣʔζ΍νʔϜʹ߹ΘͤΔ
    w ҆ఆ͖ͯͨ͠ϓϩμΫτͰ͸ڪΒ͘࠷ద
    w Ծઆݕূஈ֊Ͱ͸ద੾ͱ͸ݴ͍ʹ͍͘
    w J04"OESPJEͰϦϦʔεαΠΫϧ͕ҧ͏
    w ϏδωεϩδοΫ΋ߴ଎ͰมΘΔ
    w 'MVUUFS΍3FBDU/BUJWFͷ΄͏͕ߴ଎
    w ϑϧϦχϡʔΞϧ༧ఆͳΒʁ
    w νʔϜͰ߹ҙΛͱͬͯ࠷దͳ΋ͷΛબͿ
    ಋೖ΁ͷಓͷΓ

    View Slide

  31. ©2021 Wantedly, Inc.
    J04"OESPJE྆ํͰ͖Δ
    w τϥϒϧγϡʔςΟϯά
    w ؀ڥߏங΍πʔϧνΣΠϯ
    w ͍ͳ͔ͬͨΒɺͳΓ·͠ΐ͏
    ಋೖ΁ͷಓͷΓ

    View Slide

  32. ©2021 Wantedly, Inc.
    ݕূ
    w J04"OESPJE྆ํͰݕূ͕ඞਢ
    w J04ʹ͓͚ΔϝϞϦϚωδϝϯτϞσϧͷҧ͍
    w J04ͷ0CKFDUJWF$4XJGUޓ׵ੑͷ੍ݶ
    w ΠϯλʔϑΣʔε͔ΒδΣωϦΫεফࣦ
    w ௚઀ݺΜͩTVTQFOEͷΩϟϯηϧ͕Ͱ͖ͳ͍
    w J04ΤϯδχΞͱҰॹʹݕূ͢Δ
    w 1P$΍ϓϩτλΠϓΛ࡞ͬͯখ͘͞ߴ଎ʹݕূ
    ಋೖ΁ͷಓͷΓ

    View Slide

  33. ©2021 Wantedly, Inc.
    ,B.1,JU
    ಋೖ΁ͷಓͷΓ
    https://github.com/touchlab/KaMPKit
    ,..ͷධՁΛ༰қʹ͢ΔελʔλʔΩοτ

    View Slide

  34. ©2021 Wantedly, Inc.
    ಋೖࣄྫ
    ಋೖ΁ͷಓͷΓ
    https://kotlinlang.org/lp/mobile/case-studies/

    View Slide

  35. ©2021 Wantedly, Inc.
    ಋೖͯ͠ײͨ͡1SPT$POT

    View Slide

  36. ©2021 Wantedly, Inc.
    w ௕ظతͳੜ࢈ੑ͸վળ͢Δ
    w ωΠςΟϒͷ6*69ΛఏڙͰ͖Δ
    w ΤϥʔϋϯυϦϯά΍ΩϟογϡͷڍಈͳͲɺඍົͳҧ͍΋ݮΔ
    w ޙ௥͍࣮૷͢ΔϓϥοτϑΥʔϜ͸ɺຊ౰ʹ6*࣮૷͚ͩͰࡁΉ
    w ωΠςΟϒͱͷڥքʹͳΔ,..ϨΠϠʔͷ࢓༷ܾ͑͞ΊΕ͹ɺ,..ͱωΠςΟϒͷ࣮૷͕
    ͋Δఔ౓ฒྻԽͰ͖Δ
    w ,..ʹ͸6*͕ͳ͍ͷͰɺඞવతʹςετΧόϨοδ͕ߴ͘ͳΔ
    1SPT

    View Slide

  37. ©2021 Wantedly, Inc.
    w "MQIBͱ͍͏εςʔλεɺϦεΫΛෛ͏͜ͱ
    w 8SJUFPODF UFTUFWFSZXIFSF
    w J04ΤϯδχΞͷֶशίετ͕ߴ͍
    w J04ͷ0CKFDUJWF$4XJGUޓ׵ੑ͕Ұ෦ඍົ
    $POT

    View Slide

  38. ©2021 Wantedly, Inc.
    ·ͱΊ

    View Slide

  39. ©2021 Wantedly, Inc.
    w ࠷దͳ6*69ͷఏڙͱڞ௨Խͷཱ͕྆Ͱ͖Δ
    w طଘϓϩμΫτΛڞ௨Խ͢Δʹ͸࠷ద
    ·ͱΊ

    View Slide

  40. ϖʔδλΠτϧ ϖʔδαϒλΠτϧ
    ©2021 Wantedly, Inc.
    🙇

    View Slide