Slide 1

Slide 1 text

gatosyocora pixivΞϓϦͰϚϧνϞδϡʔϧΛ࣮ݱ͢Δ·Ͱ

Slide 2

Slide 2 text

ΞδΣϯμ 1. ϚϧνϞδϡʔϧͱ͸ 2. pixivΞϓϦͷϚϧνϞδϡʔϧ 3. pixivΞϓϦνʔϜͰͷϚϧνϞδϡʔϧԽͷਐΊํ

Slide 3

Slide 3 text

ࣗݾ঺հ • 2021೥৽ଔೖࣾ • AndroidΤϯδχΞ • pixiv AndroidΞϓϦ gatosyocora

Slide 4

Slide 4 text

ϚϧνϞδϡʔϧͱ͸

Slide 5

Slide 5 text

ϞδϡʔϧԽ • ίʔυϕʔεͷ݁ͼ͖ͭΛऑΊɺࣗݾ׬݁ܕͷ෦෼ͷฤ੒ʹ͢Δ͜ͱ https://developer.android.com/topic/modularization

Slide 6

Slide 6 text

ϞδϡʔϧԽͷར఺ • ࠶ར༻ੑ • ݫີͳදࣔઃఆ؅ཧ • ΧελϚΠζՄೳͳ഑৴ • ֦ுੑ • Φʔφʔγοϓ • Ϗϧυ࣌ؒ https://developer.android.com/topic/modularization

Slide 7

Slide 7 text

ϞδϡʔϧԽͷར఺ ࠶ར༻ੑ : ಉ͡Ϟδϡʔϧ͔Βෳ਺ͷΞϓϦΛ࡞੒Ͱ͖Δ • Ұ෦ػೳΛϓϩτλΠϓΞϓϦͱͯ͠ฒߦͯ͠։ൃͰ͖Δ ݫີͳදࣔઃఆ؅ཧ : ଞͷϞδϡʔϧʹެ։͢ΔൣғΛ੍ޚͰ͖Δ • IDEͷิ׬ʹग़͢΂͖ީิΛߜΕɺ։ൃମݧ͕޲্͞ΕΔ Φʔφʔγοϓ : ίʔυͷอकɺมߋͷϨϏϡʔͳͲΛ୲౰͢ΔΦʔφʔΛࢦఆ • νʔϜ͝ͱʹͲͷϞδϡʔϧΛ৮Ε͹ྑ͍͔໌֬ʹͳΓɺ 
 ਝ଎ͳ։ൃʹܨ͕Δ

Slide 8

Slide 8 text

pixivΞϓϦͷϚϧνϞδϡʔϧ

Slide 9

Slide 9 text

pixivΞϓϦ • ΠϥετɾϚϯΨɾখઆͷӾཡ΍౤ߘ͕Ͱ͖Δ • ৽ணɺݕࡧɺίϨΫγϣϯͳͲ༷ʑͳը໘΍ػೳ • MVVMΞʔΩςΫνϟ / ϨΠϠʔυΞʔΩςΫνϟ • DIϥΠϒϥϦ Dagger HiltΛಋೖ

Slide 10

Slide 10 text

pixivΞϓϦͷϞδϡʔϧߏ੒

Slide 11

Slide 11 text

ެࣜਪ঑ͷΞϓϦΞʔΩςΫνϟ https://developer.android.com/topic/architecture#recommended-app-arch

Slide 12

Slide 12 text

pixivΞϓϦͷϞδϡʔϧߏ੒ • appɿϧʔτͷϞδϡʔϧ • featureɿpresentation૚ͷ࣮૷ • domainɿϏδωεϩδοΫ΍σʔλϞσϧ • dataɿAPIΞΫηε΍DBॲཧͱDTO • coreɿڞ௨࣮૷

Slide 13

Slide 13 text

ґଘੑͷٯస • ந৅ԽΛ۩ମతͳ࣮૷͔Β෼཭ͤ͞Δ • HiltͰinterfaceܦ༝Ͱ࢖༻Մೳʹ pixivΞϓϦͷϞδϡʔϧߏ੒ @Binds @Singleton abstract fun bindSampleRepository( sampleRepositoryImpl: SampleRepositoryImpl ): SampleRepository

Slide 14

Slide 14 text

pixivΞϓϦͷϞδϡʔϧͷ޻෉఺ • Resource Pre fi xΛઃఆ • Ϟδϡʔϧͷৄࡉ΍Φʔφʔγοϓͷ໌֬Խ

Slide 15

Slide 15 text

Resource Pre fi xΛઃఆ • Ϟδϡʔϧ಺ͷϦιʔεʹpre fi xΛཁٻ • Ϧιʔεͷ഑ஔ৔ॴ͕໌֬ʹͳΔ • Ϧιʔε໊ͷিಥ͕ͳ͘ͳΔ pixivΞϓϦͷϞδϡʔϧͷ޻෉఺ android { namespace ‘com.sample.app.feature.post’ resoursePre fi x ‘feature_post_’ 
 } build.gradle

Slide 16

Slide 16 text

Ϟδϡʔϧͷৄࡉ΍Φʔφʔγοϓͷ໌֬Խ • ୭͕؅ཧ͢Δ͔Λهࡌ • ෳ਺νʔϜͰΞϓϦ։ൃ͢Δମ੍ʹରԠ pixivΞϓϦͷϞδϡʔϧͷ޻෉఺ # :feature:post ## ໾ׂ ౤ߘը໘ͷUIΛఏڙ͢Δ ## ίʔυΦʔφʔ pixiv ΞϓϦνʔϜ ## มߋ࣌ͷ஫ҙ఺ ಈ࡞͕มΘΔ৔߹͸A νʔϜʹڞ༗͢Δ͜ͱ README.md

Slide 17

Slide 17 text

pixivΞϓϦνʔϜͰͷ ϚϧνϞδϡʔϧԽͷਐΊํ

Slide 18

Slide 18 text

pixivΞϓϦͷϞδϡʔϧߏ੒ͷਪҠ

Slide 19

Slide 19 text

pixivΞϓϦͷϚϧνϞδϡʔϧԽͷਐΊํ 1. ϦϑΝϨϯε࣮૷Λ࡞੒ 2. υΩϡϝϯτԽ 3. νʔϜϝϯόʔͰ֤ࣗରԠ͍ͯ͘͠ • ϞδϡʔϧԽͷͨΊͷπʔϧ • νʔϜ໨ඪʹڍ͛ͯਐΊΔ

Slide 20

Slide 20 text

pixivΞϓϦͷϞδϡʔϧԽΛνʔϜͰਐΊΔ ϞδϡʔϧԽͷͨΊͷπʔϧ • Ϟδϡʔϧ࡞੒πʔϧ • ϑΝΠϧͷ࡞੒΍ґଘΛ௥Ճ • settings.gradleʹ௥Ճ • resource pre fi xͷઃఆ • string, drawableϦιʔεҠಈπʔϧ $ruby create_module.rb feature post

Slide 21

Slide 21 text

pixivΞϓϦͷϞδϡʔϧԽΛνʔϜͰਐΊΔ νʔϜ໨ඪʹڍ͛ͯਐΊΔ • ϞδϡʔϧԽ͢ΔϑΝΠϧͷ݅਺ͷ໨ඪΛཱͯΔ • ఆྫͰϞδϡʔϧԽͰ͖ͨ݅਺Λ֬ೝ͢Δ • ຖिϞδϡʔϧԽͷ࡞ۀΛ͢Δ࣌ؒΛઃ͚ͯਐΊΔ

Slide 22

Slide 22 text

·ͱΊ • ϚϧνϞδϡʔϧԽʹΑͬͯνʔϜ։ൃ͕ḿΔ • ϓϩτλΠϓΞϓϦ, IDEิ׬ީิ͔Βআ֎, ίʔυͷΦʔφʔγοϓ • pixivΞϓϦ͸feature, domain, data, coreϞδϡʔϧͰߏ੒͞Ε͍ͯΔ • ໨ඪઃఆ, ਐḿͷܭଌ, ิॿπʔϧͳͲͰνʔϜͰண࣮ʹਐΊͨ https://developer.android.com/topic/modularization https://developer.android.com/topic/modularization/patterns