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

移りゆくデファクトスタンダードにチームとしてどう追従するか

tk-masuda
October 06, 2022

 移りゆくデファクトスタンダードにチームとしてどう追従するか

DroidKaigi 2022
移りゆくデファクトスタンダードにチームとしてどう追従するか tk-masuda

tk-masuda

October 06, 2022
Tweet

Other Decks in Programming

Transcript

  1. ҠΓΏ͘σϑΝΫτελϯμʔυ
    ʹνʔϜͱͯ͠Ͳ͏௥ै͢Δ͔
    Taikai Masuda / tk-masuda
    Oisix ra daichi inc.
    Android Developer
    1

    View Slide

  2. ຊηογϣϯͷΰʔϧ
    σϑΝΫτελϯμʔυͱ൑அ͢Δج४ΛνʔϜͰ࣋ͯΔΑ͏ʹͳΔ
    ໨తʹର͢ΔҰͭͷखஈͱͯ͠σϑΝΫτελϯμʔυʹ௥ै͢Δબ୒Λߦ͑
    ΔΑ͏ʹͳΔ
    Ͳ͜·Ͱ௥ै͢Δ͔ͷબ୒
    ௥ै͠ͳ͍બ୒
    2

    View Slide

  3. Agenda
    3
    01 σϑΝΫτελϯμʔυͱ͸
    02 ͲͷΑ͏ʹ൑அ͢Δ͔
    03 ௥ै͍ͯͨ͘͠Ίʹ
    04 ࣮ମݧɺtips

    View Slide

  4. Agenda
    4
    01 σϑΝΫτελϯμʔυͱ͸
    02 ͲͷΑ͏ʹ൑அ͢Δ͔
    03 ௥ै͍ͯͨ͘͠Ίʹ
    04 ࣮ମݧɺtips

    View Slide

  5. “ެతͳඪ४ظ͔ؒΒͷೝূͰ͸ͳ͘ɺࢢ৔
    ʹ͓͚Δاۀؒͷڝ૪ʹΑͬͯɺۀքͷඪ४
    ͱͯ͠ೝΊΒΕΔΑ͏ʹͳͬͨن֨ͷ͜ͱ”
    5
    σϑΝΫτελϯμʔυ
    ΢ΟΩϖσΟΞʢWikipediaʣ:ϑϦʔඦՊࣄయ

    View Slide

  6. ֤༻ޠͷΠϝʔδ
    6
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  7. ֤༻ޠͷΠϝʔδ
    Ϟμϯ
    7
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  8. ֤༻ޠͷΠϝʔδ
    Ϟμϯ
    ࠷৽ٕज़͕ͩ࢖༻࣮੷͕গͳ͍
    8
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  9. ֤༻ޠͷΠϝʔδ
    Ϟμϯ
    ࠷৽ٕज़͕ͩ࢖༻࣮੷͕গͳ͍
    Experimentalͳ΋ͷͰ͸ͳ͍
    9
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  10. ֤༻ޠͷΠϝʔδ
    Ϟμϯ
    ࠷৽ٕज़͕ͩ࢖༻࣮੷͕গͳ͍
    Experimentalͳ΋ͷͰ͸ͳ͍
    Ver 1.xҎ্ͰϦϦʔε͞Ε͍ͯΔΑ͏ͳ΋ͷ
    10
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  11. ֤༻ޠͷΠϝʔδ
    Ϟμϯ
    ࠷৽ٕज़͕ͩ࢖༻࣮੷͕গͳ͍
    Experimentalͳ΋ͷͰ͸ͳ͍
    Ver 1.xҎ্ͰϦϦʔε͞Ε͍ͯΔΑ͏ͳ΋ͷ
    →ϓϩμΫτ࠾༻͕ݟૹΒΕΔ܏޲
    11
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  12. ֤༻ޠͷΠϝʔδ
    ϨΨγʔ
    12
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  13. ֤༻ޠͷΠϝʔδ
    ϨΨγʔ
    ୅ସٕज़͕͋Δ
    13
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  14. ֤༻ޠͷΠϝʔδ
    ϨΨγʔ
    ୅ସٕज़͕͋Δ
    ࢖ΘΕͳ͘ͳٕͬͨज़
    14
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  15. ֤༻ޠͷΠϝʔδ
    ϨΨγʔ
    ୅ସٕज़͕͋Δ
    ࢖ΘΕͳ͘ͳٕͬͨज़
    ߋ৽͞Εͳ͘ͳٕͬͨज़
    15
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  16. ֤༻ޠͷΠϝʔδ
    ϨΨγʔ
    ୅ସٕज़͕͋Δ
    ࢖ΘΕͳ͘ͳٕͬͨज़
    ߋ৽͞Εͳ͘ͳٕͬͨज़
    →ϓϩμΫτ࠾༻͕ݟૹΒΕΔ܏޲
    16
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  17. ֤༻ޠͷΠϝʔδ
    σϑΝΫτελϯμʔυ
    17
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  18. ֤༻ޠͷΠϝʔδ
    σϑΝΫτελϯμʔυ
    ޿͘࢖ΘΕ͍ͯΔ΋ͷ
    18
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  19. ֤༻ޠͷΠϝʔδ
    σϑΝΫτελϯμʔυ
    ޿͘࢖ΘΕ͍ͯΔ΋ͷ
    ࢖͏ʹ͋ͨͬͯݱࡏ࣌఺Ͱ՝୊ײ͕࠷΋গͳ͍΋ͷ
    19
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  20. ֤༻ޠͷΠϝʔδ
    σϑΝΫτελϯμʔυ
    ޿͘࢖ΘΕ͍ͯΔ΋ͷ
    ࢖͏ʹ͋ͨͬͯݱࡏ࣌఺Ͱ՝୊ײ͕࠷΋গͳ͍΋ͷ
    ޷ح৺͔Β͘Δ࢖ͬͯΈ͍ͨɺͰ͸ͳ͍
    20
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  21. ֤༻ޠͷΠϝʔδ
    σϑΝΫτελϯμʔυ
    ޿͘࢖ΘΕ͍ͯΔ΋ͷ
    ࢖͏ʹ͋ͨͬͯݱࡏ࣌఺Ͱ՝୊ײ͕࠷΋গͳ͍΋ͷ
    ޷ح৺͔Β͘Δ࢖ͬͯΈ͍ͨɺͰ͸ͳ͍
    →ϓϩμΫτ࠾༻͞ΕΔ܏޲
    21
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  22. 22
    Ϟμϯ
    ϨΨγʔ
    ̓
    ֤༻ޠͷΠϝʔδ
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  23. 23
    Ϟμϯ
    ϨΨγʔ
    σϑΝΫτ
    ελϯμʔυ
    ̓
    ֤༻ޠͷΠϝʔδ
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  24. 24
    Ϟμϯ
    ϨΨγʔ
    σϑΝΫτ
    ελϯμʔυ
    ̓
    ֤༻ޠͷΠϝʔδ
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  25. 25
    Ϟμϯ
    ϨΨγʔ
    σϑΝΫτ
    ελϯμʔυ
    ̓
    ֤༻ޠͷΠϝʔδ
    ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ

    View Slide

  26. “ެతͳඪ४ظ͔ؒΒͷೝূͰ͸ͳ͘ɺࢢ৔
    ʹ͓͚Δاۀؒͷڝ૪ʹΑͬͯɺۀքͷඪ४
    ͱͯ͠ೝΊΒΕΔΑ͏ʹͳͬͨن֨ͷ͜ͱ”
    26
    σϑΝΫτελϯμʔυ
    ΢ΟΩϖσΟΞʢWikipediaʣ:ϑϦʔඦՊࣄయ

    View Slide

  27. “ެతͳඪ४ظ͔ؒΒͷೝূͰ͸ͳ͘ɺࢢ৔
    ʹ͓͚Δاۀؒͷڝ૪ʹΑͬͯɺۀքͷඪ४
    ͱͯ͠ೝΊΒΕΔΑ͏ʹͳͬͨن֨ͷ͜ͱ”
    σϑΝΫτελϯμʔυ
    ΢ΟΩϖσΟΞʢWikipediaʣ:ϑϦʔඦՊࣄయ
    27

    View Slide

  28. Android։ൃͷඪ४
    28

    View Slide

  29. 29
    ݴޠ
    Java
    Kotlin
    https://kotlinlang.org/

    View Slide

  30. 30
    πʔϧ
    AndroidStudio
    Gradle

    View Slide

  31. 31
    ઃܭ
    MVVMɺMVPɺFluxɺRedux
    Repositoryύλʔϯ
    https://developer.android.com/topic/
    architecture/ui-layer


    https://developer.android.com/topic/
    architecture/data-layer

    View Slide

  32. 32
    ։ൃ؀ڥ
    CI/CD
    Linter
    Formatter

    View Slide

  33. 33
    ςετ
    JUnit
    Truth
    Espresso
    Robolectric
    Mockito

    View Slide

  34. 34
    ओཁϥΠϒϥϦ
    ௨৴
    Retrofit
    UI
    JetpackComposeɺCoil
    DI
    daggerɺKoin
    https://developer.android.com/jetpack/compose?
    hl=ja

    View Slide

  35. Android։ൃͷඪ४
    ݴޠ
    πʔϧ
    ઃܭ
    ։ൃ؀ڥ
    ςετ
    ओཁϥΠϒϥϦ
    35

    View Slide

  36. Agenda
    36
    01 σϑΝΫτελϯμʔυͱ͸
    02 ͲͷΑ͏ʹ൑அ͢Δ͔
    03 ௥ै͍ͯͨ͘͠Ίʹ
    04 ࣮ମݧɺtips

    View Slide

  37. σϑΝΫτελϯμʔυͷ൑அج४
    37
    Ϟμϯ
    ϨΨγʔ
    σϑΝΫτ
    ελϯμʔυ
    ̓

    View Slide

  38. σϑΝΫτελϯμʔυͷ൑அج४
    38
    ϞμϯˠσϑΝΫτελϯμʔυ
    Ϟμϯ
    σϑΝΫτ
    ελϯμʔυ
    ̓

    View Slide

  39. σϑΝΫτελϯμʔυͷ൑அج४
    39
    σϑΝΫτελϯμʔυˠϨΨγʔ
    ϨΨγʔ
    σϑΝΫτ
    ελϯμʔυ
    ̓

    View Slide

  40. ൑அ͢Δࡐྉ
    40

    View Slide

  41. 41
    χϡʔειʔε
    Android Developers Blog Japan
    Android Developers Blog

    View Slide

  42. 42
    χϡʔειʔε
    Android Developers Blog Japan
    Android Developers Blog
    Android Developers - Medium

    View Slide

  43. 43
    χϡʔειʔε
    Android Developers Blog Japan
    Android Developers Blog
    Android Developers - Medium
    PRO ANDROID DEV

    View Slide

  44. 44
    χϡʔειʔε
    Android Developers Blog Japan
    Android Developers Blog
    Android Developers - Medium
    PRO ANDROID DEV
    Android Dagashi

    View Slide

  45. 45
    ͦͷଞ
    ษڧձ
    ΧϯϑΝϨϯε

    View Slide

  46. 46
    ͦͷଞ
    ษڧձ
    ΧϯϑΝϨϯε
    ٕज़ॻ

    View Slide

  47. 47
    ͦͷଞ
    ษڧձ
    ΧϯϑΝϨϯε
    ٕज़ॻ
    པΕΔਓΛݟ͚ͭΔ
    SNS
    ٕज़ސ໰

    View Slide

  48. ൑அج४
    48

    View Slide

  49. ൑அج४
    ໌֬ͳఆྔͰ͸൑அͰ͖ͳ͍
    49

    View Slide

  50. ൑அج४
    ໌֬ͳఆྔͰ͸൑அͰ͖ͳ͍
    ʮ࢖ͬͯΈͨʯ͸·ͩϞμϯ
    50

    View Slide

  51. ൑அج४
    ໌֬ͳఆྔͰ͸൑அͰ͖ͳ͍
    ʮ࢖ͬͯΈͨʯ͸·ͩϞμϯ
    Ή͠Ζهࣄ͕ग़ͳ͘ͳ͖ͬͯͨ͋ͨΓ
    ʮ͑ʁ౰ͨΓલͩΑͶʁʯ
    51

    View Slide

  52. ൑அج४
    ໌֬ͳఆྔͰ͸൑அͰ͖ͳ͍
    ʮ࢖ͬͯΈͨʯ͸·ͩϞμϯ
    Ή͠Ζهࣄ͕ग़ͳ͘ͳ͖ͬͯͨ͋ͨΓ
    ʮ͑ʁ౰ͨΓલͩΑͶʁʯ
    Ԡื৚݅΍࠾༻໘઀Ͱʮxxx͸࢖͑·͔͢ʁʯͱฉ͔ΕΔΑ͏ͳ΋ͷ
    52

    View Slide

  53. ۃ࿦ɺओ؍
    53

    View Slide

  54. ൑அج४
    54
    σϑΝΫτελϯμʔυͱࢥΘΕΔྫ

    View Slide

  55. ൑அج४
    JetpackCompose
    55
    σϑΝΫτελϯμʔυͱࢥΘΕΔྫ
    https://developer.android.com/jetpack/compose?hl=ja

    View Slide

  56. ൑அج४
    Modularization
    56
    σϑΝΫτελϯμʔυͱࢥΘΕΔྫ
    https://developer.android.com/topic/modularization

    View Slide

  57. ൑அج४
    57
    ϞμϯͱࢥΘΕΔྫ

    View Slide

  58. ൑அج४
    StableͰ͸ͳ͍ϥΠϒϥϦ
    Alpha
    Beta
    RC
    58
    ϞμϯͱࢥΘΕΔྫ

    View Slide

  59. ൑அج४
    59
    ఆྔͰ൑அΛޡΔྫ

    View Slide

  60. ൑அج४
    Agera
    60
    ఆྔͰ൑அΛޡΔྫ

    View Slide

  61. ൑அج४
    Agera
    Star਺ଟΊ
    ౰࣌ϞμϯͰʮ࢖ͬͯΈͨʯهࣄ͕େྔ
    61
    ఆྔͰ൑அΛޡΔྫ

    View Slide

  62. ൑அج४
    Agera
    Star਺ଟΊ
    ౰࣌ϞμϯͰʮ࢖ͬͯΈͨʯهࣄ͕େྔ
    ϞμϯˠϨΨγʔ
    ϞμϯˠσϑΝΫτελϯμʔυʹͳΒͳ͔ͬͨྫ
    62
    ఆྔͰ൑அΛޡΔྫ

    View Slide

  63. Agenda
    63
    01 σϑΝΫτελϯμʔυͱ͸
    02 ͲͷΑ͏ʹ൑அ͢Δ͔
    03 ௥ै͍ͯͨ͘͠Ίʹ
    04 ࣮ମݧɺtips

    View Slide

  64. ඞཁੑΛߟ͑Δ
    64
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  65. ඞཁੑΛߟ͑Δ
    deprecatedʢඇਪ঑ʣ
    65
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  66. ඞཁੑΛߟ͑Δ
    deprecatedʢඇਪ঑ʣ
    ະདྷతʹ࢖͑ͳ͘ͳΔ
    66
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  67. ඞཁੑΛߟ͑Δ
    deprecatedʢඇਪ঑ʣ
    ະདྷతʹ࢖͑ͳ͘ͳΔ
    ΞοϓσʔτͰ͖ͳ͘ͳΔ
    67
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  68. ඞཁੑΛߟ͑Δ
    ՝୊ͷ์ஔ
    68
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  69. ඞཁੑΛߟ͑Δ
    ՝୊ͷ์ஔ
    ৽͍ٕ͠ज़͸ࠓ·Ͱೝ஌͞Ε͍ͯͳ͔ͬͨ՝୊Λղܾ͢Δ΋ͷͰ͋Δ͜ͱ͕
    ଟ͍
    69
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  70. ඞཁੑΛߟ͑Δ
    ՝୊ͷ์ஔ
    ৽͍ٕ͠ज़͸ࠓ·Ͱೝ஌͞Ε͍ͯͳ͔ͬͨ՝୊Λղܾ͢Δ΋ͷͰ͋Δ͜ͱ͕
    ଟ͍
    ʮ௥ै͠ͳ͍ʯͱ͍͏͜ͱ͸ɺੈؒҰൠͰ՝୊ͱ͞Ε͍ͯΔ΋ͷΛ์ஔ͢Δ
    ͜ͱʹ΄͔ͳΒͳ͍
    70
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  71. ඞཁੑΛߟ͑Δ
    ະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ
    71
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  72. ඞཁੑΛߟ͑Δ
    ະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ
    ࠾༻Ͱ͖ͳ͍
    72
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  73. ඞཁੑΛߟ͑Δ
    ະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ
    ࠾༻Ͱ͖ͳ͍
    طଘϝϯόʔͷ཭୤ͷՄೳੑ
    73
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  74. ඞཁੑΛߟ͑Δ
    ະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ
    ࠾༻Ͱ͖ͳ͍
    طଘϝϯόʔͷ཭୤ͷՄೳੑ
    ϝϯόʔ཭୤ˍ࠾༻Ͱ͖ͳ͍ͱɺɺɺ
    ࣄۀܧଓੑʹѱӨڹ
    74
    ௥ै͠ͳ͍͜ͱʹΑΔෆརӹ

    View Slide

  75. ඞཁੑΛߟ͑Δ
    75
    ௥ै͢Δ͜ͱʹΑΔརӹ

    View Slide

  76. ඞཁੑΛߟ͑Δ
    ਪ঑͞Ε͍ͯΔ࣮૷Λ࠾༻Ͱ͖Δ
    76
    ௥ै͢Δ͜ͱʹΑΔརӹ

    View Slide

  77. ඞཁੑΛߟ͑Δ
    ਪ঑͞Ε͍ͯΔ࣮૷Λ࠾༻Ͱ͖Δ
    ೝ஌Ͱ͖Δ՝୊͸ղܾ͞Ε͍ͯ͘
    77
    ௥ै͢Δ͜ͱʹΑΔརӹ

    View Slide

  78. ඞཁੑΛߟ͑Δ
    ਪ঑͞Ε͍ͯΔ࣮૷Λ࠾༻Ͱ͖Δ
    ೝ஌Ͱ͖Δ՝୊͸ղܾ͞Ε͍ͯ͘
    ݱࡏ·ͨ͸ະདྷͷϝϯόʔͷϞνϕʔγϣϯ͸อͨΕΔ
    78
    ௥ै͢Δ͜ͱʹΑΔརӹ

    View Slide

  79. ௥ै͠Α͏
    79

    View Slide

  80. ௥ै͠Α͏
    80

    View Slide

  81. શͯ௥ै͢΂͖ͳͷ͔ʁ
    81

    View Slide

  82. શͯ௥ै͢΂͖ͳͷ͔ʁ
    શͯΛ௥ै͢Δඞཁ͸ͳ͍
    82

    View Slide

  83. શͯ௥ै͢΂͖ͳͷ͔ʁ
    શͯΛ௥ै͢Δඞཁ͸ͳ͍
    ϓϩμΫτʹΑΔ
    83

    View Slide

  84. શͯ௥ै͢΂͖ͳͷ͔ʁ
    શͯΛ௥ै͢Δඞཁ͸ͳ͍
    ϓϩμΫτʹΑΔ
    ՝୊͕֘౰͠ͳ͍ͱ͖
    84

    View Slide

  85. શͯ௥ै͢΂͖ͳͷ͔ʁ
    શͯΛ௥ै͢Δඞཁ͸ͳ͍
    ϓϩμΫτʹΑΔ
    ՝୊͕֘౰͠ͳ͍ͱ͖
    ՝୊͕ແࢹͰ͖Δ΄Ͳখ͍࣌͞
    85

    View Slide

  86. શͯ௥ै͢΂͖ͳͷ͔ʁ
    શͯΛ௥ै͢Δඞཁ͸ͳ͍
    ϓϩμΫτʹΑΔ
    ՝୊͕֘౰͠ͳ͍ͱ͖
    ՝୊͕ແࢹͰ͖Δ΄Ͳখ͍࣌͞
    ༏ઌॱҐ͕௿͍ͱ͖
    86

    View Slide

  87. શͯ௥ै͢΂͖ͳͷ͔ʁ
    87
    ௥ै͠ͳ͍ྫ

    View Slide

  88. શͯ௥ै͢΂͖ͳͷ͔ʁ
    Modularization
    88
    ௥ै͠ͳ͍ྫ

    View Slide

  89. શͯ௥ै͢΂͖ͳͷ͔ʁ
    Modularization
    ػೳ͕ͻͱ͔ͭ͠ͳ͍Α͏ͳͱͯ΋γϯϓϧͳΞϓϦ
    Layered Architectureͷ࿩Ͱ͸ͳ͘ɺίϯςΩετ෼ׂͷ࿩
    89
    ௥ै͠ͳ͍ྫ

    View Slide

  90. શͯ௥ै͢΂͖ͳͷ͔ʁ
    Room
    90
    ௥ै͠ͳ͍ྫ

    View Slide

  91. શͯ௥ै͢΂͖ͳͷ͔ʁ
    Room
    ͦ΋ͦ΋ϩʔΧϧDB͕ඞཁ͔
    91
    ௥ै͠ͳ͍ྫ

    View Slide

  92. શͯ௥ै͢΂͖ͳͷ͔ʁ
    Room
    ͦ΋ͦ΋ϩʔΧϧDB͕ඞཁ͔
    ϑΝΠϧอଘ
    SharedPreferences
    92
    ௥ै͠ͳ͍ྫ

    View Slide

  93. શͯ௥ै͢΂͖ͳͷ͔ʁ
    Room
    ͦ΋ͦ΋ϩʔΧϧDB͕ඞཁ͔
    ϑΝΠϧอଘ
    SharedPreferences
    ௥ैͨ݁͠Ռɺmigration࣌ʹ࡞ۀྔ૿େͷݒ೦
    93
    ௥ै͠ͳ͍ྫ

    View Slide

  94. ͲΕʹ௥ै͢Δ͔
    94

    View Slide

  95. ͲΕʹ௥ै͢Δ͔
    ՝୊ղܾͷखஈͱͯ͠࠾༻͢Δ
    95

    View Slide

  96. ͲΕʹ௥ै͢Δ͔
    ՝୊ղܾͷखஈͱͯ͠࠾༻͢Δ
    ՝୊ೝࣝͷҰக͕ෆՄܽ
    96

    View Slide

  97. ͲΕʹ௥ै͢Δ͔
    ՝୊ղܾͷखஈͱͯ͠࠾༻͢Δ
    ՝୊ೝࣝͷҰக͕ෆՄܽ
    νʔϜ಺Ͱͷ߹ҙ
    97

    View Slide

  98. ͲΕʹ௥ै͢Δ͔
    ՝୊ղܾͷखஈͱͯ͠࠾༻͢Δ
    ՝୊ೝࣝͷҰக͕ෆՄܽ
    νʔϜ಺Ͱͷ߹ҙ
    ΧʔΰɾΧϧτɾϓϩάϥϛϯά͸΍ΊΑ͏
    98

    View Slide

  99. ͲΕʹ௥ै͢Δ͔
    99
    ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ

    View Slide

  100. ͲΕʹ௥ै͢Δ͔
    ࣮ࡍʹඞཁͰ͸ͳ͍΋ͷΛϓϩάϥϛϯά͢Δ͜ͱ
    100
    ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ

    View Slide

  101. ͲΕʹ௥ै͢Δ͔
    ࣮ࡍʹඞཁͰ͸ͳ͍΋ͷΛϓϩάϥϛϯά͢Δ͜ͱ
    ෺ࣄΛཧղ͍ͯ͠ͳ͍৔߹ʹى͜Γ͕ͪ
    ໨త
    खஈ
    101
    ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ

    View Slide

  102. ͲΕʹ௥ै͢Δ͔
    ࣮ࡍʹ͸ඞཁͳ΋ͷͰ͸ͳ͍΋ͷΛϓϩάϥϛϯά͢Δ͜ͱ
    ෺ࣄΛཧղ͍ͯ͠ͳ͍৔߹ʹى͜Γ͕ͪ
    ໨త
    खஈ
    ΍ΊΑ͏
    102
    ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ

    View Slide

  103. ௥ै͢Δྫ
    103

    View Slide

  104. ͲΕʹ௥ै͢Δ͔
    104
    Architecture

    View Slide

  105. ͲΕʹ௥ै͢Δ͔
    ઃܭͱݴ͑ΔΑ͏ͳ΋ͷ͕ͳ͘ɺUIૢ࡞΍ϩδοΫ͕ͻͱ·ͱ·Γʹࠞࡏ
    105
    Architecture

    View Slide

  106. ͲΕʹ௥ै͢Δ͔
    ઃܭͱݴ͑ΔΑ͏ͳ΋ͷ͕ͳ͘ɺUIૢ࡞΍ϩδοΫ͕ͻͱ·ͱ·Γʹࠞࡏ
    SRPݪଇɺDRYݪଇͷҧ൓
    มߋ࣌ͷӨڹൣғ͕޿͍
    106
    Architecture

    View Slide

  107. ͲΕʹ௥ै͢Δ͔
    ઃܭͱݴ͑ΔΑ͏ͳ΋ͷ͕ͳ͘ɺUIૢ࡞΍ϩδοΫ͕ͻͱ·ͱ·Γʹࠞࡏ
    SRPݪଇɺDRYݪଇͷҧ൓
    มߋ࣌ͷӨڹൣғ͕޿͍
    ࠓޙ΋֘౰ϑΝΠϧͷมߋՄೳੑ͕ߴ͍
    107
    Architecture

    View Slide

  108. ͲΕʹ௥ै͢Δ͔
    108
    Modularization

    View Slide

  109. ͲΕʹ௥ै͢Δ͔
    ಉҰϞδϡʔϧ಺Ͱෳ਺ίϯςΩετ͕ࠞࡏ͢Δ
    109
    Modularization

    View Slide

  110. ͲΕʹ௥ै͢Δ͔
    ಉҰϞδϡʔϧ಺Ͱෳ਺ίϯςΩετ͕ࠞࡏ͢Δ
    SRPݪଇҧ൓
    110
    Modularization

    View Slide

  111. ͲΕʹ௥ै͢Δ͔
    ಉҰϞδϡʔϧ಺Ͱෳ਺ίϯςΩετ͕ࠞࡏ͢Δ
    SRPݪଇҧ൓
    υϝΠϯ෼ׂ
    111
    Modularization

    View Slide

  112. ͲΕʹ௥ै͢Δ͔
    ಉҰϞδϡʔϧ಺Ͱෳ਺ίϯςΩετ͕ࠞࡏ͢Δ
    SRPݪଇҧ൓
    υϝΠϯ෼ׂ
    ϨΠϠʔ෼ׂ
    112
    Modularization

    View Slide

  113. ͲΕʹ௥ै͢Δ͔
    ಉҰϞδϡʔϧ಺Ͱෳ਺ίϯςΩετ͕ࠞࡏ͢Δ
    SRPݪଇҧ൓
    υϝΠϯ෼ׂ
    ϨΠϠʔ෼ׂ
    ґଘํ޲ͷڧ੍
    DIPݪଇ९क
    113
    Modularization

    View Slide

  114. ͲΕʹ௥ै͢Δ͔
    114
    JetpackCompose

    View Slide

  115. ͲΕʹ௥ै͢Δ͔
    ίϯϙʔωϯτ୯ҐͰUI͕ଘࡏͤͣ࠶ར༻ੑ͕௿͍
    Atomic Design
    115
    JetpackCompose

    View Slide

  116. ͲΕʹ௥ै͢Δ͔
    ίϯϙʔωϯτ୯ҐͰUI͕ଘࡏͤͣ࠶ར༻ੑ͕௿͍
    Atomic Design
    σʔλͱUIͷ݁ͼ͖͕ͭ෼͔ΓͮΒ͍
    116
    JetpackCompose

    View Slide

  117. ௥ै͢ΔλΠϛϯά
    117

    View Slide

  118. ௥ै͢ΔλΠϛϯά
    ௥ै͢΂͖͕ͩɺࠓ͙࣮͢ߦʹҠͤͳ͍͜ͱ΋͋Δ
    118

    View Slide

  119. ௥ै͢ΔλΠϛϯά
    ௥ै͢΂͖͕ͩɺࠓ͙࣮͢ߦʹҠͤͳ͍͜ͱ΋͋Δ
    ίετɾϦεΫɾϦλʔϯͷόϥϯε
    ࡞ۀྔ
    Өڹൣғ
    ະདྷతͳίετͱϦεΫͷ௿ݮ
    119

    View Slide

  120. ௥ै͢ΔλΠϛϯά
    120
    Coroutine

    View Slide

  121. ௥ै͢ΔλΠϛϯά
    RxJava͔Βͷஔ͖׵͑
    121
    Coroutine

    View Slide

  122. ௥ै͢ΔλΠϛϯά
    RxJava͔Βͷஔ͖׵͑
    ࣮ࢪͷࡍ͸Ϟδϡʔϧ୯Ґ૝ఆ
    શମͷ૯ίετͱ௥ैͨ݁͠ՌͷϦλʔϯΛൺֱ
    122
    Coroutine

    View Slide

  123. ͪͳΈʹ
    123

    View Slide

  124. Ϟμϯ࠾༻ͷੋඇ
    124

    View Slide

  125. Ϟμϯ࠾༻ͷੋඇ
    ʮϞμϯٕज़Λ࠾༻ͯ͠͸ବ໨ʯͱ͍͏Θ͚Ͱ͸ͳ͍
    Өڹ౓ͷখ͍͞Ϟδϡʔϧ΍ίʔυͰ࠾༻͢Δͷ͸ΞϦ
    125

    View Slide

  126. Agenda
    126
    01 σϑΝΫτελϯμʔυͱ͸
    02 ͲͷΑ͏ʹ൑அ͢Δ͔
    03 ௥ै͍ͯͨ͘͠Ίʹ
    04 ࣮ମݧɺtips

    View Slide

  127. ฐࣾͷ๊͍͑ͯͨ՝୊
    Կ΋͔΋Fat
    ίϯςΩετࠞࡏ
    ϨΠϠʔͰ෼͚Δ΂͖ϩδοΫࠞࡏ
    σʔλϑϩʔઓུ͕ᐆດ
    ςελϏϦςΟ͕௿͍
    127

    View Slide

  128. ߟ͑ΒΕͨखஈ
    Layered Architecture
    MVVM
    Modularization
    128

    View Slide

  129. 129
    ๊͍͑ͯͨ՝୊
    Կ΋͔΋Fat
    ίϯςΩετ
    ෼͚Δ΂͖੹຿
    σʔλϑϩʔઓུ͕ᐆດ
    ςελϏϦςΟ͕௿͍
    ߟ͑ΒΕͨखஈ
    ✓ Layered Architecture
    ✓ MVVM
    ✓ Modularization

    View Slide

  130. 130
    ๊͍͑ͯͨ՝୊
    Կ΋͔΋Fat
    ίϯςΩετ
    ෼͚Δ΂͖੹຿
    σʔλϑϩʔઓུ͕ᐆດ
    ςελϏϦςΟ͕௿͍
    ߟ͑ΒΕͨखஈ
    ✓ Layered Architecture
    ✓ MVVM
    ✓ Modularization

    View Slide

  131. 131
    ๊͍͑ͯͨ՝୊
    Կ΋͔΋Fat
    ίϯςΩετ
    ෼͚Δ΂͖੹຿
    σʔλϑϩʔઓུ͕ᐆດ
    ςελϏϦςΟ͕௿͍
    ߟ͑ΒΕͨखஈ
    ✓ Layered Architecture
    ✓ MVVM
    ✓ Modularization

    View Slide

  132. 132
    ๊͍͑ͯͨ՝୊
    Կ΋͔΋Fat
    ίϯςΩετ
    ෼͚Δ΂͖੹຿
    σʔλϑϩʔઓུ͕ᐆດ
    ςελϏϦςΟ͕௿͍
    ߟ͑ΒΕͨखஈ
    ✓ Layered Architecture
    ✓ MVVM
    ✓ Modularization

    View Slide

  133. ؾΛ͚ͭΔ΂͖͜ͱ
    খ͍͞ͱ͜Ζ͔Β΍Δ
    Өڹ౓
    ϦεΫ
    ՝୊͸ಛఆͷखஈͷΈͰ͸ղܾ͠ͳ͍
    खஈA͚ͩͰղܾ͠ͳ͍ɺɺɺ
    खஈAͱखஈBͷ྆ํͰΑ͏΍͘ղܾ
    133

    View Slide

  134. 134
    खॱ1
    υϝΠϯϞσϦϯά
    ঎඼
    ͓ؾʹೖΓ
    ஫จཤྺ
    Ϣʔβʔ

    View Slide

  135. 135
    खॱ1
    υϝΠϯϞσϦϯά
    ӨڹൣғΛߟྀͨ͠ର৅Λܾఆ
    ίετ
    ϦεΫ
    ঎඼
    ͓ؾʹೖΓ
    ஫จཤྺ
    Ϣʔβʔ

    View Slide

  136. 136
    खॱ1
    υϝΠϯϞσϦϯά
    ӨڹൣғΛߟྀͨ͠ର৅Λܾఆ
    ίετ
    ϦεΫ
    ʮྑ͍ίʔυʯͷݴޠԽ
    SOLIDݪଇͳͲ
    ঎඼
    ͓ؾʹೖΓ
    ஫จཤྺ
    Ϣʔβʔ

    View Slide

  137. 137
    खॱ2
    υϝΠϯϩδοΫͷ੾Γग़͠

    View Slide

  138. 138
    खॱ2
    υϝΠϯϩδοΫͷ੾Γग़͠
    Layered Architecture
    UI͸ͦͷ··

    View Slide

  139. 139
    खॱ2
    υϝΠϯϩδοΫͷ੾Γग़͠
    Layered Architecture
    UI͸ͦͷ··
    ॱ൪
    DomainɺInfraɺUseCaseɺ
    UI(Host Service)

    View Slide

  140. 140
    खॱ2
    υϝΠϯϩδοΫͷ੾Γग़͠
    Layered Architecture
    UI͸ͦͷ··
    ॱ൪
    DomainɺInfraɺUseCaseɺ
    UI(Host Service)

    View Slide

  141. 141
    खॱ3
    UI૚ͷϦϑΝΫλϦϯά

    View Slide

  142. 142
    खॱ3
    UI૚ͷϦϑΝΫλϦϯά
    MVVM
    JetpackCompose

    View Slide

  143. 143
    खॱ3
    UI૚ͷϦϑΝΫλϦϯά
    MVVM
    JetpackCompose

    View Slide

  144. ͦͷଞtips
    Google Codelabs࠷ڧ
    େ·͔ͳ֓ཁͱ΍ΓํΛֶͿ
    طଘϓϩδΣΫτΛϛχϚϜʹ࡟ͬͨαϯϓϧϓϩδΣΫτ͕͋Δͱศར
    UI͸ൺֱత࠷ޙʹɺJetpackCompose͸ཁૉٴͼϩδοΫ͕࠷খͳ΋ͷ͔Β
    σβΠϯΨΠυϥΠϯࡦఆ͢Δͱ໾ཱͭ
    144

    View Slide

  145. ·ͱΊ
    σϑΝΫτελϯμʔυ͸՝୊Λղܾ͢ΔखஈͰ͋Δ
    νʔϜ๊͕͑Δ՝୊Λ໌֬ʹ͢Δ
    खஈΛ஌Βͳ͍ͱ՝୊ʹؾ͚ͮͳ͍͜ͱ͕͋ΔͷͰΩϟονΞοϓ͸େࣄ
    ΧʔΰɾΧϧτɾϓϩάϥϛϯά͸΍ΊΑ͏
    145

    View Slide

  146. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝
    ·ͨ͠ʂ
    Taikai Masuda / tk-masuda
    Oisix ra daichi inc.
    Android Developer
    146
    ΧδϡΞϧ໘ஊੋඇʹʂ

    View Slide