DroidKaigi 2022 移りゆくデファクトスタンダードにチームとしてどう追従するか tk-masuda
ҠΓΏ͘σϑΝΫτελϯμʔυʹνʔϜͱͯ͠Ͳ͏ै͢Δ͔Taikai Masuda / tk-masudaOisix ra daichi inc.Android Developer1
View Slide
ຊηογϣϯͷΰʔϧσϑΝΫτελϯμʔυͱஅ͢Δج४ΛνʔϜͰ࣋ͯΔΑ͏ʹͳΔతʹର͢ΔҰͭͷखஈͱͯ͠σϑΝΫτελϯμʔυʹै͢ΔબΛߦ͑ΔΑ͏ʹͳΔͲ͜·Ͱै͢Δ͔ͷબै͠ͳ͍બ2
Agenda301 σϑΝΫτελϯμʔυͱ02 ͲͷΑ͏ʹஅ͢Δ͔03 ै͍ͯͨ͘͠Ίʹ04 ࣮ମݧɺtips
Agenda401 σϑΝΫτελϯμʔυͱ02 ͲͷΑ͏ʹஅ͢Δ͔03 ै͍ͯͨ͘͠Ίʹ04 ࣮ମݧɺtips
“ެతͳඪ४ظ͔ؒΒͷೝূͰͳ͘ɺࢢʹ͓͚Δاۀؒͷڝ૪ʹΑͬͯɺۀքͷඪ४ͱͯ͠ೝΊΒΕΔΑ͏ʹͳͬͨن֨ͷ͜ͱ”5σϑΝΫτελϯμʔυΟΩϖσΟΞʢWikipediaʣ:ϑϦʔඦՊࣄయ
֤༻ޠͷΠϝʔδ6ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϞμϯ7ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϞμϯ࠷৽ٕज़͕ͩ༻࣮͕গͳ͍8ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϞμϯ࠷৽ٕज़͕ͩ༻࣮͕গͳ͍ExperimentalͳͷͰͳ͍9ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϞμϯ࠷৽ٕज़͕ͩ༻࣮͕গͳ͍ExperimentalͳͷͰͳ͍Ver 1.xҎ্ͰϦϦʔε͞Ε͍ͯΔΑ͏ͳͷ10ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϞμϯ࠷৽ٕज़͕ͩ༻࣮͕গͳ͍ExperimentalͳͷͰͳ͍Ver 1.xҎ্ͰϦϦʔε͞Ε͍ͯΔΑ͏ͳͷ→ϓϩμΫτ࠾༻͕ݟૹΒΕΔ11ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϨΨγʔ12ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϨΨγʔସٕज़͕͋Δ13ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϨΨγʔସٕज़͕͋ΔΘΕͳ͘ͳٕͬͨज़14ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϨΨγʔସٕज़͕͋ΔΘΕͳ͘ͳٕͬͨज़ߋ৽͞Εͳ͘ͳٕͬͨज़15ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδϨΨγʔସٕज़͕͋ΔΘΕͳ͘ͳٕͬͨज़ߋ৽͞Εͳ͘ͳٕͬͨज़→ϓϩμΫτ࠾༻͕ݟૹΒΕΔ16ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδσϑΝΫτελϯμʔυ17ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδσϑΝΫτελϯμʔυ͘ΘΕ͍ͯΔͷ18ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδσϑΝΫτελϯμʔυ͘ΘΕ͍ͯΔͷ͏ʹ͋ͨͬͯݱࡏ࣌Ͱ՝ײ͕࠷গͳ͍ͷ19ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδσϑΝΫτελϯμʔυ͘ΘΕ͍ͯΔͷ͏ʹ͋ͨͬͯݱࡏ࣌Ͱ՝ײ͕࠷গͳ͍ͷح৺͔Β͘ΔͬͯΈ͍ͨɺͰͳ͍20ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
֤༻ޠͷΠϝʔδσϑΝΫτελϯμʔυ͘ΘΕ͍ͯΔͷ͏ʹ͋ͨͬͯݱࡏ࣌Ͱ՝ײ͕࠷গͳ͍ͷح৺͔Β͘ΔͬͯΈ͍ͨɺͰͳ͍→ϓϩμΫτ࠾༻͞ΕΔ21ϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
22ϞμϯϨΨγʔ֤̓༻ޠͷΠϝʔδϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
23ϞμϯϨΨγʔσϑΝΫτελϯμʔὐ֤༻ޠͷΠϝʔδϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
24ϞμϯϨΨγʔσϑΝΫτελϯμʔὐ֤༻ޠͷΠϝʔδϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
25ϞμϯϨΨγʔσϑΝΫτελϯμʔὐ֤༻ޠͷΠϝʔδϞμϯɺϨΨγʔɺσϑΝΫτελϯμʔυ
“ެతͳඪ४ظ͔ؒΒͷೝূͰͳ͘ɺࢢʹ͓͚Δاۀؒͷڝ૪ʹΑͬͯɺۀքͷඪ४ͱͯ͠ೝΊΒΕΔΑ͏ʹͳͬͨن֨ͷ͜ͱ”26σϑΝΫτελϯμʔυΟΩϖσΟΞʢWikipediaʣ:ϑϦʔඦՊࣄయ
“ެతͳඪ४ظ͔ؒΒͷೝূͰͳ͘ɺࢢʹ͓͚Δاۀؒͷڝ૪ʹΑͬͯɺۀքͷඪ४ͱͯ͠ೝΊΒΕΔΑ͏ʹͳͬͨن֨ͷ͜ͱ”σϑΝΫτελϯμʔυΟΩϖσΟΞʢWikipediaʣ:ϑϦʔඦՊࣄయ27
Android։ൃͷඪ४28
29ݴޠJavaKotlinhttps://kotlinlang.org/
30πʔϧAndroidStudioGradle
31ઃܭMVVMɺMVPɺFluxɺReduxRepositoryύλʔϯhttps://developer.android.com/topic/architecture/ui-layerhttps://developer.android.com/topic/architecture/data-layer
32։ൃڥCI/CDLinterFormatter
33ςετJUnitTruthEspressoRobolectricMockito
34ओཁϥΠϒϥϦ௨৴RetrofitUIJetpackComposeɺCoilDIdaggerɺKoinhttps://developer.android.com/jetpack/compose?hl=ja
Android։ൃͷඪ४ݴޠπʔϧઃܭ։ൃڥςετओཁϥΠϒϥϦ35
Agenda3601 σϑΝΫτελϯμʔυͱ02 ͲͷΑ͏ʹஅ͢Δ͔03 ै͍ͯͨ͘͠Ίʹ04 ࣮ମݧɺtips
σϑΝΫτελϯμʔυͷஅج४37ϞμϯϨΨγʔσϑΝΫτελϯμʔὐ
σϑΝΫτελϯμʔυͷஅج४38ϞμϯˠσϑΝΫτελϯμʔυϞμϯσϑΝΫτελϯμʔὐ
σϑΝΫτελϯμʔυͷஅج४39σϑΝΫτελϯμʔυˠϨΨγʔϨΨγʔσϑΝΫτελϯμʔὐ
அ͢Δࡐྉ40
41χϡʔειʔεAndroid Developers Blog JapanAndroid Developers Blog
42χϡʔειʔεAndroid Developers Blog JapanAndroid Developers BlogAndroid Developers - Medium
43χϡʔειʔεAndroid Developers Blog JapanAndroid Developers BlogAndroid Developers - MediumPRO ANDROID DEV
44χϡʔειʔεAndroid Developers Blog JapanAndroid Developers BlogAndroid Developers - MediumPRO ANDROID DEVAndroid Dagashi
45ͦͷଞษڧձΧϯϑΝϨϯε
46ͦͷଞษڧձΧϯϑΝϨϯεٕज़ॻ
47ͦͷଞษڧձΧϯϑΝϨϯεٕज़ॻཔΕΔਓΛݟ͚ͭΔSNSٕज़ސ
அج४48
அج४໌֬ͳఆྔͰஅͰ͖ͳ͍49
அج४໌֬ͳఆྔͰஅͰ͖ͳ͍ʮͬͯΈͨʯ·ͩϞμϯ50
அج४໌֬ͳఆྔͰஅͰ͖ͳ͍ʮͬͯΈͨʯ·ͩϞμϯΉ͠Ζهࣄ͕ग़ͳ͘ͳ͖ͬͯͨ͋ͨΓʮ͑ʁͨΓલͩΑͶʁʯ51
அج४໌֬ͳఆྔͰஅͰ͖ͳ͍ʮͬͯΈͨʯ·ͩϞμϯΉ͠Ζهࣄ͕ग़ͳ͘ͳ͖ͬͯͨ͋ͨΓʮ͑ʁͨΓલͩΑͶʁʯԠื݅࠾༻໘Ͱʮxxx͑·͔͢ʁʯͱฉ͔ΕΔΑ͏ͳͷ52
ۃɺओ؍53
அج४54σϑΝΫτελϯμʔυͱࢥΘΕΔྫ
அج४JetpackCompose55σϑΝΫτελϯμʔυͱࢥΘΕΔྫhttps://developer.android.com/jetpack/compose?hl=ja
அج४Modularization56σϑΝΫτελϯμʔυͱࢥΘΕΔྫhttps://developer.android.com/topic/modularization
அج४57ϞμϯͱࢥΘΕΔྫ
அج४StableͰͳ͍ϥΠϒϥϦAlphaBetaRC58ϞμϯͱࢥΘΕΔྫ
அج४59ఆྔͰஅΛޡΔྫ
அج४Agera60ఆྔͰஅΛޡΔྫ
அج४AgeraStarଟΊ࣌ϞμϯͰʮͬͯΈͨʯهࣄ͕େྔ61ఆྔͰஅΛޡΔྫ
அج४AgeraStarଟΊ࣌ϞμϯͰʮͬͯΈͨʯهࣄ͕େྔϞμϯˠϨΨγʔϞμϯˠσϑΝΫτελϯμʔυʹͳΒͳ͔ͬͨྫ62ఆྔͰஅΛޡΔྫ
Agenda6301 σϑΝΫτελϯμʔυͱ02 ͲͷΑ͏ʹஅ͢Δ͔03 ै͍ͯͨ͘͠Ίʹ04 ࣮ମݧɺtips
ඞཁੑΛߟ͑Δ64ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δdeprecatedʢඇਪʣ65ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δdeprecatedʢඇਪʣະདྷతʹ͑ͳ͘ͳΔ66ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δdeprecatedʢඇਪʣະདྷతʹ͑ͳ͘ͳΔΞοϓσʔτͰ͖ͳ͘ͳΔ67ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δ՝ͷ์ஔ68ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δ՝ͷ์ஔ৽͍ٕ͠ज़ࠓ·Ͱೝ͞Ε͍ͯͳ͔ͬͨ՝Λղܾ͢ΔͷͰ͋Δ͜ͱ͕ଟ͍69ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δ՝ͷ์ஔ৽͍ٕ͠ज़ࠓ·Ͱೝ͞Ε͍ͯͳ͔ͬͨ՝Λղܾ͢ΔͷͰ͋Δ͜ͱ͕ଟ͍ʮै͠ͳ͍ʯͱ͍͏͜ͱɺੈؒҰൠͰ՝ͱ͞Ε͍ͯΔͷΛ์ஔ͢Δ͜ͱʹ΄͔ͳΒͳ͍70ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑ΔະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ71ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑ΔະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ࠾༻Ͱ͖ͳ͍72ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑ΔະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ࠾༻Ͱ͖ͳ͍طଘϝϯόʔͷͷՄೳੑ73ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑ΔະདྷɺطଘνʔϜϝϯόʔͷϞνϕʔγϣϯ࠾༻Ͱ͖ͳ͍طଘϝϯόʔͷͷՄೳੑϝϯόʔˍ࠾༻Ͱ͖ͳ͍ͱɺɺɺࣄۀܧଓੑʹѱӨڹ74ै͠ͳ͍͜ͱʹΑΔෆརӹ
ඞཁੑΛߟ͑Δ75ै͢Δ͜ͱʹΑΔརӹ
ඞཁੑΛߟ͑Δਪ͞Ε͍ͯΔ࣮Λ࠾༻Ͱ͖Δ76ै͢Δ͜ͱʹΑΔརӹ
ඞཁੑΛߟ͑Δਪ͞Ε͍ͯΔ࣮Λ࠾༻Ͱ͖ΔೝͰ͖Δ՝ղܾ͞Ε͍ͯ͘77ै͢Δ͜ͱʹΑΔརӹ
ඞཁੑΛߟ͑Δਪ͞Ε͍ͯΔ࣮Λ࠾༻Ͱ͖ΔೝͰ͖Δ՝ղܾ͞Ε͍ͯ͘ݱࡏ·ͨະདྷͷϝϯόʔͷϞνϕʔγϣϯอͨΕΔ78ै͢Δ͜ͱʹΑΔརӹ
ै͠Α͏79
ै͠Α͏80
શͯै͖͢ͳͷ͔ʁ81
શͯै͖͢ͳͷ͔ʁશͯΛै͢Δඞཁͳ͍82
શͯै͖͢ͳͷ͔ʁશͯΛै͢Δඞཁͳ͍ϓϩμΫτʹΑΔ83
શͯै͖͢ͳͷ͔ʁશͯΛै͢Δඞཁͳ͍ϓϩμΫτʹΑΔ՝͕֘͠ͳ͍ͱ͖84
શͯै͖͢ͳͷ͔ʁશͯΛै͢Δඞཁͳ͍ϓϩμΫτʹΑΔ՝͕֘͠ͳ͍ͱ͖՝͕ແࢹͰ͖Δ΄Ͳখ͍࣌͞85
શͯै͖͢ͳͷ͔ʁશͯΛै͢Δඞཁͳ͍ϓϩμΫτʹΑΔ՝͕֘͠ͳ͍ͱ͖՝͕ແࢹͰ͖Δ΄Ͳখ͍࣌͞༏ઌॱҐ͕͍ͱ͖86
શͯै͖͢ͳͷ͔ʁ87ै͠ͳ͍ྫ
શͯै͖͢ͳͷ͔ʁModularization88ै͠ͳ͍ྫ
શͯै͖͢ͳͷ͔ʁModularizationػೳ͕ͻͱ͔ͭ͠ͳ͍Α͏ͳͱͯγϯϓϧͳΞϓϦLayered ArchitectureͷͰͳ͘ɺίϯςΩετׂͷ89ै͠ͳ͍ྫ
શͯै͖͢ͳͷ͔ʁRoom90ै͠ͳ͍ྫ
શͯै͖͢ͳͷ͔ʁRoomͦͦϩʔΧϧDB͕ඞཁ͔91ै͠ͳ͍ྫ
શͯै͖͢ͳͷ͔ʁRoomͦͦϩʔΧϧDB͕ඞཁ͔ϑΝΠϧอଘSharedPreferences92ै͠ͳ͍ྫ
શͯै͖͢ͳͷ͔ʁRoomͦͦϩʔΧϧDB͕ඞཁ͔ϑΝΠϧอଘSharedPreferencesैͨ݁͠Ռɺmigration࣌ʹ࡞ۀྔ૿େͷݒ೦93ै͠ͳ͍ྫ
ͲΕʹै͢Δ͔94
ͲΕʹै͢Δ͔՝ղܾͷखஈͱͯ͠࠾༻͢Δ95
ͲΕʹै͢Δ͔՝ղܾͷखஈͱͯ͠࠾༻͢Δ՝ೝࣝͷҰக͕ෆՄܽ96
ͲΕʹै͢Δ͔՝ղܾͷखஈͱͯ͠࠾༻͢Δ՝ೝࣝͷҰக͕ෆՄܽνʔϜͰͷ߹ҙ97
ͲΕʹै͢Δ͔՝ղܾͷखஈͱͯ͠࠾༻͢Δ՝ೝࣝͷҰக͕ෆՄܽνʔϜͰͷ߹ҙΧʔΰɾΧϧτɾϓϩάϥϛϯάΊΑ͏98
ͲΕʹै͢Δ͔99ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ
ͲΕʹै͢Δ͔࣮ࡍʹඞཁͰͳ͍ͷΛϓϩάϥϛϯά͢Δ͜ͱ100ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ
ͲΕʹै͢Δ͔࣮ࡍʹඞཁͰͳ͍ͷΛϓϩάϥϛϯά͢Δ͜ͱࣄΛཧղ͍ͯ͠ͳ͍߹ʹى͜Γ͕ͪతखஈ101ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ
ͲΕʹै͢Δ͔࣮ࡍʹඞཁͳͷͰͳ͍ͷΛϓϩάϥϛϯά͢Δ͜ͱࣄΛཧղ͍ͯ͠ͳ͍߹ʹى͜Γ͕ͪతखஈΊΑ͏102ΧʔΰɾΧϧτɾϓϩάϥϛϯάʁ
ै͢Δྫ103
ͲΕʹै͢Δ͔104Architecture
ͲΕʹै͢Δ͔ઃܭͱݴ͑ΔΑ͏ͳͷ͕ͳ͘ɺUIૢ࡞ϩδοΫ͕ͻͱ·ͱ·Γʹࠞࡏ105Architecture
ͲΕʹै͢Δ͔ઃܭͱݴ͑ΔΑ͏ͳͷ͕ͳ͘ɺUIૢ࡞ϩδοΫ͕ͻͱ·ͱ·ΓʹࠞࡏSRPݪଇɺDRYݪଇͷҧมߋ࣌ͷӨڹൣғ͕͍106Architecture
ͲΕʹै͢Δ͔ઃܭͱݴ͑ΔΑ͏ͳͷ͕ͳ͘ɺUIૢ࡞ϩδοΫ͕ͻͱ·ͱ·ΓʹࠞࡏSRPݪଇɺDRYݪଇͷҧมߋ࣌ͷӨڹൣғ͕͍ࠓޙ֘ϑΝΠϧͷมߋՄೳੑ͕ߴ͍107Architecture
ͲΕʹै͢Δ͔108Modularization
ͲΕʹै͢Δ͔ಉҰϞδϡʔϧͰෳίϯςΩετ͕ࠞࡏ͢Δ109Modularization
ͲΕʹै͢Δ͔ಉҰϞδϡʔϧͰෳίϯςΩετ͕ࠞࡏ͢ΔSRPݪଇҧ110Modularization
ͲΕʹै͢Δ͔ಉҰϞδϡʔϧͰෳίϯςΩετ͕ࠞࡏ͢ΔSRPݪଇҧυϝΠϯׂ111Modularization
ͲΕʹै͢Δ͔ಉҰϞδϡʔϧͰෳίϯςΩετ͕ࠞࡏ͢ΔSRPݪଇҧυϝΠϯׂϨΠϠʔׂ112Modularization
ͲΕʹै͢Δ͔ಉҰϞδϡʔϧͰෳίϯςΩετ͕ࠞࡏ͢ΔSRPݪଇҧυϝΠϯׂϨΠϠʔׂґଘํͷڧ੍DIPݪଇ९क113Modularization
ͲΕʹै͢Δ͔114JetpackCompose
ͲΕʹै͢Δ͔ίϯϙʔωϯτ୯ҐͰUI͕ଘࡏͤͣ࠶ར༻ੑ͕͍Atomic Design115JetpackCompose
ͲΕʹै͢Δ͔ίϯϙʔωϯτ୯ҐͰUI͕ଘࡏͤͣ࠶ར༻ੑ͕͍Atomic DesignσʔλͱUIͷ݁ͼ͖͕͔ͭΓͮΒ͍116JetpackCompose
ै͢ΔλΠϛϯά117
ै͢ΔλΠϛϯάै͖͕ͩ͢ɺࠓ͙࣮͢ߦʹҠͤͳ͍͜ͱ͋Δ118
ै͢ΔλΠϛϯάै͖͕ͩ͢ɺࠓ͙࣮͢ߦʹҠͤͳ͍͜ͱ͋ΔίετɾϦεΫɾϦλʔϯͷόϥϯε࡞ۀྔӨڹൣғະདྷతͳίετͱϦεΫͷݮ119
ै͢ΔλΠϛϯά120Coroutine
ै͢ΔλΠϛϯάRxJava͔Βͷஔ͖͑121Coroutine
ै͢ΔλΠϛϯάRxJava͔Βͷஔ͖࣮͑ࢪͷࡍϞδϡʔϧ୯Ґఆશମͷ૯ίετͱैͨ݁͠ՌͷϦλʔϯΛൺֱ122Coroutine
ͪͳΈʹ123
Ϟμϯ࠾༻ͷੋඇ124
Ϟμϯ࠾༻ͷੋඇʮϞμϯٕज़Λ࠾༻ͯ͠ବʯͱ͍͏Θ͚Ͱͳ͍Өڹͷখ͍͞ϞδϡʔϧίʔυͰ࠾༻͢ΔͷΞϦ125
Agenda12601 σϑΝΫτελϯμʔυͱ02 ͲͷΑ͏ʹஅ͢Δ͔03 ै͍ͯͨ͘͠Ίʹ04 ࣮ମݧɺtips
ฐࣾͷ๊͍͑ͯͨ՝Կ͔FatίϯςΩετࠞࡏϨΠϠʔͰ͚Δ͖ϩδοΫࠞࡏσʔλϑϩʔઓུ͕ᐆດςελϏϦςΟ͕͍127
ߟ͑ΒΕͨखஈLayered ArchitectureMVVMModularization128
129๊͍͑ͯͨ՝Կ͔FatίϯςΩετ͚Δ͖σʔλϑϩʔઓུ͕ᐆດςελϏϦςΟ͕͍ߟ͑ΒΕͨखஈ✓ Layered Architecture✓ MVVM✓ Modularization
130๊͍͑ͯͨ՝Կ͔FatίϯςΩετ͚Δ͖σʔλϑϩʔઓུ͕ᐆດςελϏϦςΟ͕͍ߟ͑ΒΕͨखஈ✓ Layered Architecture✓ MVVM✓ Modularization
131๊͍͑ͯͨ՝Կ͔FatίϯςΩετ͚Δ͖σʔλϑϩʔઓུ͕ᐆດςελϏϦςΟ͕͍ߟ͑ΒΕͨखஈ✓ Layered Architecture✓ MVVM✓ Modularization
132๊͍͑ͯͨ՝Կ͔FatίϯςΩετ͚Δ͖σʔλϑϩʔઓུ͕ᐆດςελϏϦςΟ͕͍ߟ͑ΒΕͨखஈ✓ Layered Architecture✓ MVVM✓ Modularization
ؾΛ͚ͭΔ͖͜ͱখ͍͞ͱ͜Ζ͔ΒΔӨڹϦεΫ՝ಛఆͷखஈͷΈͰղܾ͠ͳ͍खஈA͚ͩͰղܾ͠ͳ͍ɺɺɺखஈAͱखஈBͷ྆ํͰΑ͏͘ղܾ133
134खॱ1υϝΠϯϞσϦϯά͓ؾʹೖΓจཤྺϢʔβʔ
135खॱ1υϝΠϯϞσϦϯάӨڹൣғΛߟྀͨ͠ରΛܾఆίετϦεΫ͓ؾʹೖΓจཤྺϢʔβʔ
136खॱ1υϝΠϯϞσϦϯάӨڹൣғΛߟྀͨ͠ରΛܾఆίετϦεΫʮྑ͍ίʔυʯͷݴޠԽSOLIDݪଇͳͲ͓ؾʹೖΓจཤྺϢʔβʔ
137खॱ2υϝΠϯϩδοΫͷΓग़͠
138खॱ2υϝΠϯϩδοΫͷΓग़͠Layered ArchitectureUIͦͷ··
139खॱ2υϝΠϯϩδοΫͷΓग़͠Layered ArchitectureUIͦͷ··ॱ൪DomainɺInfraɺUseCaseɺUI(Host Service)
140खॱ2υϝΠϯϩδοΫͷΓग़͠Layered ArchitectureUIͦͷ··ॱ൪DomainɺInfraɺUseCaseɺUI(Host Service)
141खॱ3UIͷϦϑΝΫλϦϯά
142खॱ3UIͷϦϑΝΫλϦϯάMVVMJetpackCompose
143खॱ3UIͷϦϑΝΫλϦϯάMVVMJetpackCompose
ͦͷଞtipsGoogle Codelabs࠷ڧେ·͔ͳ֓ཁͱΓํΛֶͿطଘϓϩδΣΫτΛϛχϚϜʹͬͨαϯϓϧϓϩδΣΫτ͕͋ΔͱศརUIൺֱత࠷ޙʹɺJetpackComposeཁૉٴͼϩδοΫ͕࠷খͳͷ͔ΒσβΠϯΨΠυϥΠϯࡦఆ͢Δͱཱͭ144
·ͱΊσϑΝΫτελϯμʔυ՝Λղܾ͢ΔखஈͰ͋ΔνʔϜ๊͕͑Δ՝Λ໌֬ʹ͢ΔखஈΛΒͳ͍ͱ՝ʹؾ͚ͮͳ͍͜ͱ͕͋ΔͷͰΩϟονΞοϓେࣄΧʔΰɾΧϧτɾϓϩάϥϛϯάΊΑ͏145
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂTaikai Masuda / tk-masudaOisix ra daichi inc.Android Developer146ΧδϡΞϧ໘ஊੋඇʹʂ