Slide 1

Slide 1 text

©2020 Wantedly, Inc. Feb 20, 2020 - Kazuki Chigita (@chigichan24) Room AppBars ܧଓతʹ
 ػೳ։ൃΛਐΊͳ͕Βߦ͏
 ϚϧνϞδϡʔϧԽ

Slide 2

Slide 2 text

©2020 Wantedly, Inc. A continuous process of modularization with feature development Feb 20, 2020 - Kazuki Chigita (@chigichan24) Room AppBars

Slide 3

Slide 3 text

©2020 Wantedly, Inc. Kazuki Chigita / @chigichan24 Graduate student at University of Tsukuba #Android #Kotlin #ApplicationArchitecture #BeyondLegacyCode #MobileInfra #ImageProcessing 1

Slide 4

Slide 4 text

©2020 Wantedly, Inc. Kazuki Chigita / @chigichan24 Graduate student at University of Tsukuba #Android #Kotlin #ApplicationArchitecture #BeyondLegacyCode #MobileInfra #ImageProcessing 2 Πϯλʔϯγοϓ
 Ͱͷ੒Ռ

Slide 5

Slide 5 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 3

Slide 6

Slide 6 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 4

Slide 7

Slide 7 text

©2020 Wantedly, Inc. Outline 5 Section2 Section3 Section4 Section5 Section6 Section 1

Slide 8

Slide 8 text

©2020 Wantedly, Inc. Outline 6 Section 1 ϚϧνϞδϡʔϧԽͱ͸ʁ ؆୯ʹ֓ཁ΍ར఺ʹ͍ͭͯ৮Ε·͢ɽ Section2 Section3 Section4 Section5 Section6

Slide 9

Slide 9 text

©2020 Wantedly, Inc. Section2 Outline 7 Section3 Section4 Section5 Section6 Section 1 ͸͡ΊͷҰา໨ ͜Ε͔Βͷൃలͷج൫ߗΊ

Slide 10

Slide 10 text

©2020 Wantedly, Inc. Section3 Outline 8 Section2 Section4 Section5 Section6 Section 1 ϚϧνϞδϡʔϧͰͷbuild.gradle implementationͷҧ͍΍ڞ௨Խʹ͍ͭͯ

Slide 11

Slide 11 text

©2020 Wantedly, Inc. Section4 Outline 9 Section5 ϚϧνϞδϡʔϧԽ͢ΔͨΊͷ ϦϑΝΫλϦϯάํ๏΍ࣄྫ Section2 Section3 Section6 Section 1

Slide 12

Slide 12 text

©2020 Wantedly, Inc. Section5 Outline 10 Section2 Section3 Section4 Section6 Section 1 JetPackΛಋೖͯ͠Έͨ࿩ NavigationΛಋೖ͢Δྫ

Slide 13

Slide 13 text

©2020 Wantedly, Inc. Section5 Section6 Outline 11 Section2 Section3 Section4 Section 1 ػೳ։ൃΛਐΊͳ͕Β Ͳ͏ϞδϡʔϧԽ͢Δ͔ʁ

Slide 14

Slide 14 text

©2020 Wantedly, Inc. Outline 12 Section2 Section3 Section4 Section5 Section6 Section 1 શମͷ࿩ͷྲྀΕͱͯ͜͠ͷΑ͏ͳϑϩʔΛ
 ҙࣝ͢Δͱશମͱͯ͠εοΩϦ͠·͢ɽ

Slide 15

Slide 15 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 13

Slide 16

Slide 16 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 14

Slide 17

Slide 17 text

©2020 Wantedly, Inc. 1. What is a multi-module app? ϚϧνϞδϡʔϧԽͱ͸ʁ

Slide 18

Slide 18 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ :app 15

Slide 19

Slide 19 text

©2020 Wantedly, Inc. :app ✂ ✂ ✂ ✂ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 16

Slide 20

Slide 20 text

©2020 Wantedly, Inc. ✂ ✂ ✂ :app ✂ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 17

Slide 21

Slide 21 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 18

Slide 22

Slide 22 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 19

Slide 23

Slide 23 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 20

Slide 24

Slide 24 text

©2020 Wantedly, Inc. :feature A App module / ΞϓϦϞδϡʔϧ :app Library module / ϥΠϒϥϦϞδϡʔϧ [1] [1] https://developer.android.com/studio/projects/android-library layout΍navigation౳ͷres/ҎԼͷϑΝΠϧٴͼιʔείʔυΛ
 ؚΉ͜ͱ͕Ͱ͖Δ AAR (Android Archive) Ͱ͋Δɽ ࡉ͔ͳ੍໿͸͋Δ͕ɼجຊతʹ͸:appͱಉ༷ʹ࢖͏͜ͱ͕Ͱ͖Δɽ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 21

Slide 25

Slide 25 text

©2020 Wantedly, Inc. Why? / ͳͥ΍Δͷ͔ʁ

Slide 26

Slide 26 text

©2020 Wantedly, Inc. 1. ϞϊϦγοΫͳ؀ڥͰ͸Ͱ͖ͳ͍͜ͱ͕૿͍͑ͯΔ 2. Ϗϧυ͕͔͔࣌ؒΔ 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 22

Slide 27

Slide 27 text

©2020 Wantedly, Inc. 1. ϞϊϦγοΫͳ؀ڥͰ͸Ͱ͖ͳ͍͜ͱ͕૿͍͑ͯΔ 2. Ϗϧυ͕͔͔࣌ؒΔ 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 23

Slide 28

Slide 28 text

©2020 Wantedly, Inc. 1. ϞϊϦγοΫͳ؀ڥͰ͸Ͱ͖ͳ͍͜ͱ͕૿͍͑ͯΔ :app :feature A :feature C Instant App ͷ্ݶ͸10MBͰ͋Δɽ ػೳͷҰ෦Λମݧͤ͞Δ͜ͱ͸UXΛ޲্ͤ͞Δ͜ͱʹܨ͕Δɽ ϚϧνϞδϡʔϧԽ͞Ε͍ͯͳ͍ͱ؆୯ʹࢼ͢͜ͱ͸೉͍͠ɽ Under 4MB ← ࠷௿ݶඞཁͳϞδϡʔϧͷΈΛinclude͢Δɽ ← application Id౳ base ͱͯ͠ඞؚͣΉඞཁ͕͋Δɽ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 24

Slide 29

Slide 29 text

©2020 Wantedly, Inc. 1. ϞϊϦγοΫͳ؀ڥͰ͸Ͱ͖ͳ͍͜ͱ͕૿͍͑ͯΔ 2. Ϗϧυ͕͔͔࣌ؒΔ 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 25

Slide 30

Slide 30 text

©2020 Wantedly, Inc. 2. Ϗϧυ͕͔͔࣌ؒΔ mainframerͷΑ͏ͳ֎෦Ϗϧυ؀ڥΛ࡞ͬͯϚγϯεϖοΫʹΑͬͯղܾ͢Δ → ݶք͕͋Δ → ମݧͱͯ͠ѱ͍ɾมͳϋϚΓํΛ͢Δ͜ͱ΋͋Δɽ ΄ͱΜͲมߋͷͳ͍΋ͷʹରͯ͠Ϟδϡʔϧ·Δ͝ͱϏϧυ͢Δͷ͸΋͍ͬͨͳ͍ɽ (ͱ͍ͬͯ΋cache͸͋Δఔ౓ޮ͍͍ͯΔ) ಠཱ͍ͯ͠ΔϞδϡʔϧ͸ฒྻʹϏϧυ͕Ͱ͖Δ͸ͣͳͷʹɼ
 γϯάϧΞϓϦέʔγϣϯͩͱͰ͖ͳ͍ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 26

Slide 31

Slide 31 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 2. Ϗϧυ͕͔͔࣌ؒΔ :hogeΛมߋ͢Δ͚ͩͷͱ͖มߋΛड͚Δͷ͸ ͦΕʹؔ࿈͢Δ΋ͷ͚ͩɽ શؔ͘࿈ͷͳ͍΋ͷ͸ӨڹΛड͚ͣϏϧυ͕૸Βͳ͍ͨΊɼ Ϗϧυ͕࣌ؒૣ͘ͳΔͷ͕جຊతͳݪཧ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 27

Slide 32

Slide 32 text

©2020 Wantedly, Inc. 2. Ϗϧυ͕͔͔࣌ؒΔ :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :hogeΛมߋ͢Δ͚ͩͷͱ͖มߋΛड͚Δͷ͸ ͦΕʹؔ࿈͢Δ΋ͷ͚ͩɽ શؔ͘࿈ͷͳ͍΋ͷ͸ӨڹΛड͚ͣϏϧυ͕૸Βͳ͍ͨΊɼ Ϗϧυ͕࣌ؒૣ͘ͳΔͷ͕جຊతͳݪཧ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 28

Slide 33

Slide 33 text

©2020 Wantedly, Inc. 1. ϞϊϦγοΫͳ؀ڥͰ͸Ͱ͖ͳ͍͜ͱ͕૿͍͑ͯΔ 2. Ϗϧυ͕͔͔࣌ؒΔ 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 29

Slide 34

Slide 34 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ ModuleΛϊʔυɼdependencyΛΤοδͱͯ͠ݟͨ࣌ʹ DAGͰ͋Δɽ(Moduleͷ॥؀ࢀর͕ͳ͍) ҙਤ͠ͳ͍ݺͼग़͠Λߏ଄తʹະવʹ๷͙͜ͱ͕Ͱ͖Δ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 30

Slide 35

Slide 35 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ ModuleΛϊʔυɼdependencyΛΤοδͱͯ͠ݟͨ࣌ʹ DAGͰ͋Δɽ(Moduleͷ॥؀ࢀর͕ͳ͍) ҙਤ͠ͳ͍ݺͼग़͠Λߏ଄తʹະવʹ๷͙͜ͱ͕Ͱ͖Δ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 31

Slide 36

Slide 36 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ ModuleΛϊʔυɼdependencyΛΤοδͱͯ͠ݟͨ࣌ʹ DAGͰ͋Δɽ(Moduleͷ॥؀ࢀর͕ͳ͍) ҙਤ͠ͳ͍ݺͼग़͠Λߏ଄తʹະવʹ๷͙͜ͱ͕Ͱ͖Δ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 32

Slide 37

Slide 37 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 3. ΑΓڧ੍͍໿Λ͔͚͍ͨ ModuleΛϊʔυɼdependencyΛΤοδͱͯ͠ݟͨ࣌ʹ DAGͰ͋Δɽ(Moduleͷ॥؀ࢀর͕ͳ͍) ҙਤ͠ͳ͍ݺͼग़͠Λߏ଄తʹະવʹ๷͙͜ͱ͕Ͱ͖Δ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 33

Slide 38

Slide 38 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 34

Slide 39

Slide 39 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app Ͳ͏΍ͬͯϚϧνϞδϡʔϧԽ͢Δͷ͔ʁ 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 35

Slide 40

Slide 40 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app Ͳ͏΍ͬͯϚϧνϞδϡʔϧԽ͢Δͷ͔ʁ ܧଓతʹػೳ։ൃΛਐΊͳ͕Β 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 36

Slide 41

Slide 41 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app Ͳ͏΍ͬͯϚϧνϞδϡʔϧԽ͢Δͷ͔ʁ ܧଓతʹػೳ։ൃΛਐΊͳ͕Β 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 37

Slide 42

Slide 42 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 38

Slide 43

Slide 43 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 39

Slide 44

Slide 44 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy ͸͡ΊͷҰา͸:app͔Β:legacy΁

Slide 45

Slide 45 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app 40

Slide 46

Slide 46 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app ΞϓϦͷΤϯτϦʔϙΠϯτ͚ͩΛ :app ʹ࡞੒͠ɼ શͯͷػೳΛ library_module ʹಈ͔͢ɽ ͸͡Ί͔Β͖Ε͍ʹ෼ׂ͢Δ͜ͱ͸೉͍͠ 41

Slide 47

Slide 47 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app ΞϓϦͷΤϯτϦʔϙΠϯτ͚ͩΛ :app ʹ࡞੒͠ɼ શͯͷػೳΛ library_module ʹಈ͔͢ɽ ࠓޙ͸খ͍ͯ͘͘͞͠ͱ͍͏ࢥ͍ΛࠐΊͯ :legacyͱ໋໊ ͸͡Ί͔Β͖Ε͍ʹ෼ׂ͢Δ͜ͱ͸೉͍͠ 42

Slide 48

Slide 48 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app ͸͡Ί͔Β͖Ε͍ʹ෼ׂ͢Δ͜ͱ͸೉͍͠ ΞϓϦͷΤϯτϦʔϙΠϯτ͚ͩΛ :app ʹ࡞੒͠ɼ શͯͷػೳΛ library_module ʹಈ͔͢ɽ ࠓޙ͸খ͍ͯ͘͘͞͠ͱ͍͏ࢥ͍ΛࠐΊͯ :legacyͱ໋໊ ͳͥ੾Γग़͢ͷ͔ʁ 1. ੾Γग़ͨ͠moduleؒΛભҠ͢ΔͨΊͷ
 ࢓૊Έ͕࡞Γ΍͍͢ɽ(্Ґmodule͕ཉ͍͠) 2. Ϗϧυ࣌͸ϞδϡʔϧΛෳ਺ʹ੾Γग़͠ ͯ΋ɼඞͣ:appΛ௨ΔͷͰେ͖͍ͱ
 ߴ଎Խʹد༩͠ʹ͍͘ 43

Slide 49

Slide 49 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app :app :legacy 44

Slide 50

Slide 50 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app :app :legacy ҰےೄͰ͸ߦ͔ͳ͍ ଟ͘ͷ᠘͕ 45

Slide 51

Slide 51 text

©2020 Wantedly, Inc. ੎͍Ͱ΍ͬͨΒࣦഊͨ͠ :app to :legacy ࣄނू

Slide 52

Slide 52 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 1. Android Library͔ΒpackageΛ
 ࡞ͬͯ:appͷϑΝΠϧΛcopy & paste ͢Δͱ൵ࢂʹͳΔɽ 46

Slide 53

Slide 53 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ srcͷมߋཤྺ͕ফ͑ͯ͠·͏ɽ Last Modified͕શͯchigichan24ʹ 47

Slide 54

Slide 54 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ build.gradleΛฤू͢ΔΑ͏ʹ͠Α͏ʂ 48

Slide 55

Slide 55 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ build.gradleΛฤू͢ΔΑ͏ʹ͠Α͏ʂ 49

Slide 56

Slide 56 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ build.gradleΛฤू͢ΔΑ͏ʹ͠Α͏ʂ 50

Slide 57

Slide 57 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 51

Slide 58

Slide 58 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ ৽͍͠ϞδϡʔϧΛ৽نʹ࡞Δ࣌ طଘ:app moduleΛ Lib moduleʹҠߦ͢Δ࣌ 52

Slide 59

Slide 59 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 2. Epoxyͷ @EpoxyDataBindingLayouts({ })ʹ
 ࣦഊ͢Δɽ 53

Slide 60

Slide 60 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͱ͸ʁ RecyclerViewͷϨΠΞ΢τ૊ΈΛ ؆қʹ͢Δ΋ͷ Groupie ͱ͔͕ྨࣅ @EpoxyDataBindingLayouts ͸ Epoxyʹରͯ͠resourceΛඥ෇͚ɼ BindingModelΫϥεΛ
 ࣗಈੜ੒ͤ͞ΔͨΊͷΞϊςʔγϣϯ 54

Slide 61

Slide 61 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 2. Epoxyͷ @EpoxyDataBindingLayouts({ }) ʹ
 ࣦഊ͢Δɽ 55

Slide 62

Slide 62 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 2. Epoxyͷ @EpoxyDataBindingLayouts({ }) ʹ
 ࣦഊ͢Δɽ :app͔Β:legacyʹ
 ಈ͔͚ͨͩ͠ͳͷʹɽɽɽɽ 56

Slide 63

Slide 63 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 2. Epoxyͷ @EpoxyDataBindingLayouts({ }) ʹ
 ࣦഊ͢Δɽ :app͔Β:legacyʹ
 ಈ͔͚ͨͩ͠ͳͷʹɽɽɽɽ -JCSBSZ.PEVMFͰͷSFTPVSDFTͷ࢓૊ΈΛ
 ਖ਼͘͠ཧղ͍ͯ͠Δඞཁ͕͋Δʂ 57

Slide 64

Slide 64 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :appͷR.java :library-moduleͷR.java 58

Slide 65

Slide 65 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :appͷR.java :library-moduleͷR.java 59

Slide 66

Slide 66 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :library moduleͷresource͸finalఆٛ͞Εͳ͍ (ޙʹϏϧυ࣌ʹ֤ϞδϡʔϧͷresourceͷmergeΛߦ͏ͨΊ) ↓ Javaͷ࢓༷ͷ໰୊ͳͷͰɼϥΠϒϥϦଆ͔Β͸Ͳ͏ʹ΋Ͱ͖ͳ͍ ↓ ίϯύΠϧΤϥʔͷൃੜ 60

Slide 67

Slide 67 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͷղܾ๏[2] [2] https://github.com/airbnb/epoxy/blob/master/README.md 61

Slide 68

Slide 68 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͷղܾ๏[2] [2] https://github.com/airbnb/epoxy/blob/master/README.md R2.javaΛੜ੒͢Δ butterknfie-gradle-plugin ΛೖΕΔ͜ͱͰղܾͰ͖Δʂ 62

Slide 69

Slide 69 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͷղܾ๏[2] [2] https://github.com/airbnb/epoxy/blob/master/README.md R2.javaΛੜ੒͢Δ butterknfie-gradle-plugin ΛೖΕΔ͜ͱͰղܾͰ͖Δʂ ↓ AndroidͷഎܠΛ஌Δͱ “ͳͥ ͜ͷΑ͏ͳղܾࡦ͔”
 ΛཧղͰ͖Δ 63

Slide 70

Slide 70 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͷղܾ๏[2] [2] https://github.com/airbnb/epoxy/blob/master/README.md R2.javaΛੜ੒͢Δ butterknfie-gradle-plugin ΛೖΕΔ͜ͱͰղܾͰ͖Δʂ ↓ AndroidͷഎܠΛ஌Δͱ “ͳͥ ͜ͷΑ͏ͳղܾࡦ͔”
 ΛཧղͰ͖Δ ྨࣅͷ໰୊ʹɼ-JCSBSZ.PEVMFͰͷ SFTPVSDFTͷ+BWB4XJUDIจ͕࢖༻Ͱ͖ͳ͍
 ໰୊͕͋Δɽ 64

Slide 71

Slide 71 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͷղܾ๏[2] [2] https://github.com/airbnb/epoxy/blob/master/README.md R2.javaΛੜ੒͢Δ butterknfie-gradle-plugin ΛೖΕΔ͜ͱͰղܾͰ͖Δʂ ↓ AndroidͷഎܠΛ஌Δͱ “ͳͥ ͜ͷΑ͏ͳղܾࡦ͔”
 ΛཧղͰ͖Δ ྨࣅͷ໰୊ʹɼ-JCSBSZ.PEVMFͰͷ SFTPVSDFTͷ+BWB4XJUDIจ͕࢖༻Ͱ͖ͳ͍
 ໰୊͕͋Δɽ → if-elseͰஔ͖׵͑Δ 65

Slide 72

Slide 72 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ Epoxyͷղܾ๏[2] [2] https://github.com/airbnb/epoxy/blob/master/README.md R2.javaΛੜ੒͢Δ butterknfie-gradle-plugin ΛೖΕΔ͜ͱͰղܾͰ͖Δʂ ↓ AndroidͷഎܠΛ஌Δͱ “ͳͥ ͜ͷΑ͏ͳղܾࡦ͔”
 ΛཧղͰ͖Δ ྨࣅͷ໰୊ʹɼ-JCSBSZ.PEVMFͰͷ SFTPVSDFTͷ+BWB4XJUDI͕ࣜ࢖༻Ͱ͖ͳ͍
 ໰୊͕͋Δɽ → if-elseͰஔ͖׵͑Δ 66

Slide 73

Slide 73 text

©2020 Wantedly, Inc. খ·ͱΊ

Slide 74

Slide 74 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 2. Epoxyͷ@EpoxyDataBindingLayouts({ })ʹ
 ࣦഊ͢Δɽ 1. Android Library͔ΒpackageΛ࡞ͬͯ
 :appͷϑΝΠϧΛmove͢Δͱ൵ࢂʹͳΔɽ ΞϓϦέʔγϣϯϞδϡʔϧͱ ϥΠϒϥϦϞδϡʔϧͷࡉ͔ͳҧ͍ʹ ஫ҙ͠ͳ͕ΒҠͦ͏ʂ 67

Slide 75

Slide 75 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app :app :legacy 68

Slide 76

Slide 76 text

©2020 Wantedly, Inc. 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ :app :app :legacy ඞཁ࠷௿ݶͷapplication ͜Ε·Ͱ:appͩͬͨ΋ͷ 69

Slide 77

Slide 77 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 70

Slide 78

Slide 78 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ • AndroidΛਖ਼͘͠ཧղ͠ͳ͍ͱϋϚΔ࿩ • ࣄྫ঺հ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ • Flavor / BuildTypeपΓ͸͜͏͠Α͏ • Α͘࢖͏ઃఆͷڞ༗Λߦ͏ Outline ( 1 / 2 ) 71

Slide 79

Slide 79 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app ϚϧνϞδϡʔϧͱGradleઓུ

Slide 80

Slide 80 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy ͳʹΛมߋ͍ͯ͜͠͏ 72

Slide 81

Slide 81 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy 1. BuildConfigͱͷ޲͖߹͍ํ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ 3. ֤moduleͷbuild.gradleΛ
 ηϚϯςΟΫεͰڞ௨Խ͢Δ 73

Slide 82

Slide 82 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy 1. BuildConfigͱͷ޲͖߹͍ํ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ 3. ֤moduleͷbuild.gradleΛ
 ηϚϯςΟΫεͰڞ௨Խ͢Δ 74

Slide 83

Slide 83 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy BuildConfigͱͲ͏޲͖߹͏ʁ 1. BuildConfigͱͷ޲͖߹͍ํ 75

Slide 84

Slide 84 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy BuildConfigͱͲ͏޲͖߹͏ʁ ର৅ͷΞϓϦέʔγϣϯͰ͸ɼ BuildType + FlavorʹΑͬͯ ༷ʑͳ؀ڥม਺Λ੍ޚ͍ͯͨ͠ 1. BuildConfigͱͷ޲͖߹͍ํ 76

Slide 85

Slide 85 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy BuildConfigͱͲ͏޲͖߹͏ʁ ର৅ͷΞϓϦέʔγϣϯͰ͸ɼ BuildType + FlavorʹΑͬͯ ༷ʑͳ؀ڥม਺Λ੍ޚ͍ͯͨ͠ Ϟδϡʔϧ͝ͱʹBuildConfig.java͕ੜ੒
 ͞ΕΔͨΊɼڞ௨ͯ͠࢖͏ʹ͸޻෉͕ඞཁʂ 1. BuildConfigͱͷ޲͖߹͍ํ 77

Slide 86

Slide 86 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ ڞ௨ͷ:appʹ͋ΔBuildConfigΛ࢖͍͍ͨʂ ͕:legacy -> :appͷࢀর͕Ͱ͖ͳ͍ɽ :legacy :app BuildConfig.java 1. BuildConfigͱͷ޲͖߹͍ํ 78

Slide 87

Slide 87 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ ڞ௨ͷ:appʹ͋ΔBuildConfigΛ࢖͍͍ͨʂ ͕:legacy -> :appͷࢀর͕Ͱ͖ͳ͍ɽ :legacy :app BuildConfig.java 1. BuildConfigͱͷ޲͖߹͍ํ 79

Slide 88

Slide 88 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ ڞ௨ͷ:appʹ͋ΔBuildConfigΛ࢖͍͍ͨʂ ͕:legacy -> :appͷࢀর͕Ͱ͖ͳ͍ɽ :legacy :app BuildConfig.java 1. BuildConfigͱͷ޲͖߹͍ํ 80

Slide 89

Slide 89 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ ڞ௨ͷ:appʹ͋ΔBuildConfigΛ࢖͍͍ͨʂ ͕:legacy -> :appͷࢀর͕Ͱ͖ͳ͍ɽ :legacy :app BuildConfig.java Θͨ͠ʮ͑ͬɽશ෦ͷbuild.gradleʹॻ͔ͳ͖Ό͍͚ͳ͍ͷʁʯ 1. BuildConfigͱͷ޲͖߹͍ํ 81

Slide 90

Slide 90 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ ڞ௨ͷ:appʹ͋ΔBuildConfigΛ࢖͍͍ͨʂ ͕:legacy -> :appͷࢀর͕Ͱ͖ͳ͍ɽ :legacy :app BuildConfig.java Θͨ͠ʮ͑ͬɽશ෦ͷbuild.gradleʹॻ͔ͳ͖Ό͍͚ͳ͍ͷʁʯ ໰୊ͷղܾͷجຊΞΠσΞ $POpHΛ֨ೲ͢ΔϞδϡʔϧΛ࡞Δ 1. BuildConfigͱͷ޲͖߹͍ํ 82

Slide 91

Slide 91 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy :BuildConfig 1. BuildConfigͱͷ޲͖߹͍ํ 83

Slide 92

Slide 92 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy :BuildConfig BuildConfigͷinterface͚ͩఏڙ͢Δɽ 1. BuildConfigͱͷ޲͖߹͍ํ 84

Slide 93

Slide 93 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy :BuildConfig BuildConfigͷinterface͚ͩఏڙ͢Δɽ ۩ମతͳ஋͸:appͷapplication಺ͰॳظԽ/஫ೖ 1. BuildConfigͱͷ޲͖߹͍ํ 85

Slide 94

Slide 94 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy :BuildConfig BuildConfigͷinterface͚ͩఏڙ͢Δɽ ۩ମతͳ஋͸:appͷapplication಺ͰॳظԽ/஫ೖ :legacy͔Β͸:BuildConfigΛࢀর͢Δ͚ͩ 1. BuildConfigͱͷ޲͖߹͍ํ 86

Slide 95

Slide 95 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy :BuildConfig BuildConfigͷinterface͚ͩఏڙ͢Δɽ ۩ମతͳ஋͸:appͷapplication಺ͰॳظԽ/஫ೖ :legacy͔Β͸:BuildConfigΛࢀর͢Δ͚ͩ module͕૿͑ͯ΋:BuildConfigΛࢀর͢Δ͚ͩ 1. BuildConfigͱͷ޲͖߹͍ํ 87

Slide 96

Slide 96 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy :BuildConfig BuildConfigͷinterface͚ͩఏڙ͢Δɽ ۩ମతͳ஋͸:appͷapplication಺ͰॳظԽ/஫ೖ :legacy͔Β͸:BuildConfigΛࢀর͢Δ͚ͩ module͕૿͑ͯ΋:BuildConfigΛࢀর͢Δ͚ͩ 1. BuildConfigͱͷ޲͖߹͍ํ ޙʹ΋঺հ͢Δ %*1ͱ͍͏ख๏ σβΠϯύλʔϯ 88

Slide 97

Slide 97 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy 1. BuildConfigͱͷ޲͖߹͍ํ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ 3. ֤moduleͷbuild.gradleΛ
 ηϚϯςΟΫεͰڞ௨Խ͢Δ 89

Slide 98

Slide 98 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ api project(‘:legacy’) implementation project(‘:legacy’) :app :legacy :app :legacy 90

Slide 99

Slide 99 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ api project(‘:legacy’) implementation project(‘:legacy’) :app :legacy :app :legacy 91

Slide 100

Slide 100 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ ҧ͍͸ ϞδϡʔϧΛލ͍Ͱ ਪҠతʹ ݺͼग़͠Λڐ༰͢Δ͔ʁ 92

Slide 101

Slide 101 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :A :B :C implementation implementation 93

Slide 102

Slide 102 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :A :B :C implementation implementation :AͰ:CͷΫϥεΛݺͼग़ͤΔ 94

Slide 103

Slide 103 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :A :B :C implementation implementation :AͰ:CͷΫϥεΛݺͼग़ͤΔ 95

Slide 104

Slide 104 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :A :C implementation implementation :AͰ:CͷΫϥεΛݺͼग़ͤΔ 96

Slide 105

Slide 105 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C implementation implementation :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ 97

Slide 106

Slide 106 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C implementation implementation :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ 98

Slide 107

Slide 107 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C implementation implementation :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ 99

Slide 108

Slide 108 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C api api :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ 100

Slide 109

Slide 109 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C api api :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ 101

Slide 110

Slide 110 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C api api :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ ҧ͍͸ ϞδϡʔϧΛލ͍Ͱ ਪҠతʹ ݺͼग़͠Λڐ༰͢Δ͔ʁ 102

Slide 111

Slide 111 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C api api :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ ҧ͍͸ ϞδϡʔϧΛލ͍Ͱ ਪҠతʹ ݺͼग़͠Λڐ༰͢Δ͔ʁ Yes → api No → implementation 103

Slide 112

Slide 112 text

©2020 Wantedly, Inc. :B 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ :AͰ:BͷΫϥεΛݺͼग़ͤΔ :BͰ:CͷΫϥεΛݺͼग़ͤΔ :C api api :A :AͰ:CͷΫϥεΛݺͼग़ͤΔ ҧ͍͸ ϞδϡʔϧΛލ͍Ͱ ਪҠతʹ ݺͼग़͠Λڐ༰͢Δ͔ʁ Yes → api No → implementation ໬΋ͳཧ༝͕ͳ͍ݶΓ implementationΛ࢖͏΄͏͕ࠞཚΛੜΈʹ͍͘ 104

Slide 113

Slide 113 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ :app :legacy 1. BuildConfigͱͷ޲͖߹͍ํ 2. ֤moduleΛͲ͏΍ͬͯͭͳ͙͔ 3. ֤moduleͷbuild.gradleΛ
 ηϚϯςΟΫεͰڞ௨Խ͢Δ 105

Slide 114

Slide 114 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 3. ֤moduleͷbuild.gradleΛηϚϯςΟΫεͰڞ௨Խ͢Δ ϞδϡʔϧΛ෼͚͍ͯ͘ͱɼԿ౓΋ಉ͡هड़Λ܁Γฦ͢͜ͱ͕͋Δ - minSdkVersion - sourceSets 106

Slide 115

Slide 115 text

©2020 Wantedly, Inc. 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 3. ֤moduleͷbuild.gradleΛηϚϯςΟΫεͰڞ௨Խ͢Δ ϞδϡʔϧΛ෼͚͍ͯ͘ͱɼԿ౓΋ಉ͡هड़Λ܁Γฦ͢͜ͱ͕͋Δ - minSdkVersion - sourceSets Gradle task ΍ pluginͱͯ͠੾Γग़͢ͱɼ࢖͍·ΘͤΔɽ 107

Slide 116

Slide 116 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 108

Slide 117

Slide 117 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 109

Slide 118

Slide 118 text

©2020 Wantedly, Inc. 4. Modularization as refactoring ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ

Slide 119

Slide 119 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 110

Slide 120

Slide 120 text

©2020 Wantedly, Inc. 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 111

Slide 121

Slide 121 text

©2020 Wantedly, Inc. :app :legacy core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़ͦ͏ͱࢼΈͨɽ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 112

Slide 122

Slide 122 text

©2020 Wantedly, Inc. :app :legacy :core :util core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़ͦ͏ͱࢼΈͨɽ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 113

Slide 123

Slide 123 text

©2020 Wantedly, Inc. :app :legacy :legacy2 :legacy3 core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़ͦ͏ͱࢼΈͨɽ ʹͳͬͯ͠·ͬͨɽ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 114

Slide 124

Slide 124 text

©2020 Wantedly, Inc. :app :legacy :legacy2 :legacy3 core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़ͦ͏ͱࢼΈͨɽ ͳͥʁ ʹͳͬͯ͠·ͬͨɽ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 115

Slide 125

Slide 125 text

©2020 Wantedly, Inc. :app :legacy :legacy2 :legacy3 core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़ͦ͏ͱࢼΈͨɽ ͳͥʁ ʹͳͬͯ͠·ͬͨɽ ͳͥʁ طଘίʔυΛ
 ͦͷ··Ҡ২͠Α͏ͱ͔ͨ͠Βɽ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 116

Slide 126

Slide 126 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 117

Slide 127

Slide 127 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 118

Slide 128

Slide 128 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 119

Slide 129

Slide 129 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 120

Slide 130

Slide 130 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 121

Slide 131

Slide 131 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ Class J,H,I͚͕ͩཉ͍͠ͷʹɼ ༨ܭʹD,F,G΋੾Γग़͢Ӌ໨ʹ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 122

Slide 132

Slide 132 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ Class J,H,I͚͕ͩཉ͍͠ͷʹɼ ༨ܭʹD,F,G΋੾Γग़͢Ӌ໨ʹ ҶͮΔࣜʹ૿৩ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 123

Slide 133

Slide 133 text

©2020 Wantedly, Inc. ղܾࡦ͸2ͭ 1. ໌֬ͳarchitectureΛࡦఆ͢Δ 2. DIPΛۦ࢖͢Δ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 124

Slide 134

Slide 134 text

©2020 Wantedly, Inc. 1. ໌֬ͳarchitectureΛࡦఆ͢Δ 2. DIPΛۦ࢖͢Δ ྫ͑͹MVVMͷΑ͏ͳΞʔΩςΫνϟΛఆΊɼͦΕʹԊ࣮ͬͯ૷ ݺͼग़͠ͷํ޲Λ੍ݶ͢Δ͜ͱͰɼ Ϟδϡʔϧ෼཭Λଅਐͤ͞Δɽ ΋ͱͷ࣮૷ʹΑͬͯ͸վमίετ૿ ղܾࡦ͸2ͭ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 125

Slide 135

Slide 135 text

©2020 Wantedly, Inc. 1. ໌֬ͳarchitectureΛࡦఆ͢Δ 2. DIPΛۦ࢖͢Δ ղܾࡦ͸2ͭ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 126

Slide 136

Slide 136 text

©2020 Wantedly, Inc. 1. ໌֬ͳarchitectureΛࡦఆ͢Δ 2. DIPΛۦ࢖͢Δ DIP(Dependency Inversion Principle, ґଘੑٯసͷ๏ଇ)͸
 ந৅ʹґଘͤ͞Δ͜ͱͰɼґଘํ޲Λٯʹ͢Δɽ ۩৅ͷ஫ೖ͸DIίϯςφΛ༻͍Δ͜ͱ͕AndroidͰ͸ଟ͍(ҹ৅)ɽ ղܾࡦ͸2ͭ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 127

Slide 137

Slide 137 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 128

Slide 138

Slide 138 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ * * * … Interface 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 129

Slide 139

Slide 139 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ * * * … Interface 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 130

Slide 140

Slide 140 text

©2020 Wantedly, Inc. $MBTT# $MBTT% $MBTT& $MBTT* $MBTT' $MBTT$ $MBTT" $MBTT+ $MBTT) $MBTT( coreͬΆ͍෦෼Λ ੾Γग़ͦ͏ʂ * * ֎ͷmodule΁ͷґଘ͕ ͳ͘ͳΓ੾Γग़͠Մೳʹʂ * … Interface 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 131

Slide 141

Slide 141 text

©2020 Wantedly, Inc. 1. core΍utilͷΑ͏ͳ΋ͷΛҾͬுΓग़͢ͱ͖ͷϦϑΝΫλϦϯά 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 132

Slide 142

Slide 142 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 133

Slide 143

Slide 143 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 134

Slide 144

Slide 144 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " DeepLink DeepLink 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 135

Slide 145

Slide 145 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " Feature X Feature Y DeepLink DeepLink 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 136

Slide 146

Slide 146 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " Feature X Feature Y ಛผͳinterfaceΛ༻ҙ͢Δ͜ͱͳ͘ભҠΛߦ͍ͬͯΔͱɼ Ϟδϡʔϧ෼ׂΛߦ͓͏ͱ͢Δͱ͖ʹোนͱͳΔɽ DeepLink DeepLink 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 137

Slide 147

Slide 147 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " Feature X Feature Y ಛผͳinterfaceΛ༻ҙ͢Δ͜ͱͳ͘ભҠΛߦ͍ͬͯΔͱɼ Ϟδϡʔϧ෼ׂΛߦ͓͏ͱ͢Δͱ͖ʹোนͱͳΔɽ DeepLink DeepLink → Routing༻ͷmoduleΛ௥Ճ͢Δͱྑ͍ 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 138

Slide 148

Slide 148 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " Feature X Feature Y 3PVUJOH *OUFSGBDF *OUFSGBDF 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 139

Slide 149

Slide 149 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " Feature X Feature Y 3PVUJOH *OUFSGBDF *OUFSGBDF ΋͠΋ಠࣗͷભҠϩδοΫ͕͋ͬͯ΋ɼ Navigation Component౳ʹ৐Γ׵͑ΒΕΔɽ 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 140

Slide 150

Slide 150 text

©2020 Wantedly, Inc. 2. ը໘ؒભҠͷͨΊͷϦϑΝΫλϦϯά 'SBHNFOU # 'SBHNFOU % 'SBHNFOU & 'SBHNFOU $ 'SBHNFOU " Feature X Feature Y 3PVUJOH *OUFSGBDF *OUFSGBDF ΋͠΋ಠࣗͷભҠϩδοΫ͕͋ͬͯ΋ɼ Navigation Component౳ʹ৐Γ׵͑ΒΕΔɽ ͜͜Ͱ΋DIPΛ׆༻͍ͯ͠Δʂ 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ 141

Slide 151

Slide 151 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 142

Slide 152

Slide 152 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 143

Slide 153

Slide 153 text

©2020 Wantedly, Inc. 5. Modularization and Android Jetpack Android JetpackͱϚϧνϞδϡʔϧ

Slide 154

Slide 154 text

©2020 Wantedly, Inc. 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component 144

Slide 155

Slide 155 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component 145 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 156

Slide 156 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component 146 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 157

Slide 157 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component ը໘ભҠΛAS্Ͱ άϥϑΟΧϧʹදݱͰ͖Δɽ 147 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 158

Slide 158 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component ը໘ભҠΛAS্Ͱ άϥϑΟΧϧʹදݱͰ͖Δɽ xmlͰهड़͞ΕΔ 148 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 159

Slide 159 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component ը໘ભҠΛAS্Ͱ άϥϑΟΧϧʹදݱͰ͖Δɽ xmlͰهड़͞ΕΔ ભҠ࣌ʹ஋Λ ஋Λ౉͢͜ͱ͕Ͱ͖Δ 149 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 160

Slide 160 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component ը໘ભҠΛAS্Ͱ άϥϑΟΧϧʹදݱͰ͖Δɽ xmlͰهड़͞ΕΔ ભҠ࣌ʹ஋Λ ஋Λ౉͢͜ͱ͕Ͱ͖Δ 150 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 161

Slide 161 text

©2020 Wantedly, Inc. ϚϧνϞδϡʔϧͱ૬ੑ͕ྑ͍ͱߟ͑Δͷ͸ Navigation Component ৄ͘͠͸ɽɽɽ ͪ͜Βͷηογϣϯ͕ ྑͦ͞͏ 151 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 162

Slide 162 text

©2020 Wantedly, Inc. Nested NavGraphͱϚϧνϞδϡʔϧΛ͏·͘׆༻͢Δ 152 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 163

Slide 163 text

©2020 Wantedly, Inc. Nested NavGraphͱ͸ʁ 153 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 164

Slide 164 text

©2020 Wantedly, Inc. Nested NavGraphͱ͸ʁ NavGraphͷதʹNavGraph͕͋Δߏ଄ 154 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 165

Slide 165 text

©2020 Wantedly, Inc. Nested NavGraphͱ͸ʁ @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me NavGraphͷதʹNavGraph͕͋Δߏ଄ 155 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 166

Slide 166 text

©2020 Wantedly, Inc. Nested NavGraphͱ͸ʁ NavGraphͷதʹNavGraph͕͋Δߏ଄ @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me Ϟδϡʔϧͷߏ੒ͱ/BW(SBQIΛ
 ରԠͤ͞Δࣄ͕Ͱ͖Δʂ 156 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 167

Slide 167 text

©2020 Wantedly, Inc. @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me :app :feature A :feature B :feature C :feature D 157 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 168

Slide 168 text

©2020 Wantedly, Inc. @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me :app :feature A :feature B :feature C :feature D ରԠ 158 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 169

Slide 169 text

©2020 Wantedly, Inc. @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me :app :feature A :feature B :feature C :feature D ରԠ ରԠ 159 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 170

Slide 170 text

©2020 Wantedly, Inc. @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me :app :feature A :feature B :feature C :feature D ରԠ ରԠ ରԠ 160 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 171

Slide 171 text

©2020 Wantedly, Inc. @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me :app :feature A :feature B :feature C :feature D ରԠ ରԠ ରԠ ɾ ɾ ɾ 161 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 172

Slide 172 text

©2020 Wantedly, Inc. @id/navigatoin_graph @id/navigatoin_home @id/navigatoin_register @id/navigatoin_me :app :feature A :feature B :feature C :feature D ରԠ ରԠ ରԠ ɾ ɾ ɾ /BW(SBQIΛ௨ͯ͠ɼ
 GFBUVSFϞδϡʔϧͷؔ܎͕͸͖ͬΓͱ͢Δʂ 162 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ

Slide 173

Slide 173 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 163

Slide 174

Slide 174 text

©2020 Wantedly, Inc. 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ • བྷΈ߹ͬͨෳࡶͳؔ܎Λղ͖΄͙ͨ͢ΊʹͰ͖Δ͜ͱ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ • NavigationͷಋೖͱޮՌ • ࣄྫ঺հ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ • ҰาҰาਐΊΔϞδϡʔϧԽ
 Outline ( 2 / 2 ) 164

Slide 175

Slide 175 text

©2020 Wantedly, Inc. 6. A continuous process of modularization with feature development ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ

Slide 176

Slide 176 text

©2020 Wantedly, Inc. 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ ͦ͏͸͍ͬͯ΋ɼػೳ։ൃ΋ฒߦͯ͠ଓ͚Δඞཁ͕͋Δɽ ϚϧνϞδϡʔϧԽ͚ͩʹઐ೦Ͱ͖ΔΘ͚Ͱ͸ͳ͍…. 165

Slide 177

Slide 177 text

©2020 Wantedly, Inc. ͳΜͷͨΊʹ :legacy moduleΛ࡞ͬͨͷ͔ʁ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 166

Slide 178

Slide 178 text

©2020 Wantedly, Inc. :legacyʹػೳΛ௥Ճ͢Δͷ͸΄ͱΜͲ
 ͜Ε·ͰͱมΘΒͳ͍։ൃମݧͰ͋Δɽ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 167

Slide 179

Slide 179 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 
 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 168

Slide 180

Slide 180 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 
 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 169

Slide 181

Slide 181 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 
 ͜ͷ4UFQ͑͞৐Γ੾Ε͹ɼ
 جຊతʹ͸ฒߦ։ൃ͕Մೳʂ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 170

Slide 182

Slide 182 text

©2020 Wantedly, Inc. 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 171 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 


Slide 183

Slide 183 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 
 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 172

Slide 184

Slide 184 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 
 ͜Ε͸ஈ֊తʹϞδϡʔϧΛ෼ׂ͍ͯ͘͠ ख๏ͷྫɽ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 173

Slide 185

Slide 185 text

©2020 Wantedly, Inc. 1. What is a multi-module app? / ϚϧνϞδϡʔϧԽͱ͸ʁ 2. The first step is :app to :legacy / ͸͡ΊͷҰา͸:app͔Β:legacy΁ 3. A strategy of Gradle in multi-module app / ϚϧνϞδϡʔϧͱGradleઓུ 4. Modularization as refactoring / ϦϑΝΫλϦϯάͱͯ͠ͷϚϧνϞδϡʔϧԽ 5. Modularization and Android Jetpack / JetpackͱϚϧνϞδϡʔϧ 6. A continuous process of modularization with feature development
 / ܧଓతʹػೳ։ൃΛߦ͍ͳ͕ΒਐΊΔͨΊʹ 
 ͜Ε͸ஈ֊తʹϞδϡʔϧΛ෼ׂ͍ͯ͘͠ ख๏ͷྫɽ ͜ΕΒΛ౷߹ͨ͠ҠߦखॱྫΛࣔ͢ɽ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 174

Slide 186

Slide 186 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 175

Slide 187

Slide 187 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 176

Slide 188

Slide 188 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ ΛਐΊΔ 1. ໌֬ͳarchitectureΛࡦఆ͢Δ 2. DIPΛۦ࢖͢Δ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 177

Slide 189

Slide 189 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 1. ໌֬ͳarchitectureΛࡦఆ͢Δ 2. DIPΛۦ࢖͢Δ ͜͜Ͱɼ৽ͨͳarchitectureʹଇͬͨ৔߹͸ PackageΛ෼͚Δͱྑ͍ɽ ΛਐΊΔ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 178 4. Modularization as refactoring / ϦϑΝΫλͱͯ͠ͷϚϧνϞδϡʔϧԽ

Slide 190

Slide 190 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 179

Slide 191

Slide 191 text

©2020 Wantedly, Inc. 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ - internalम০ࢠΛ͚ͭΔ͜ͱͰείʔϓͷՄࢹൣғΛ੍ݶ͢Δɽ - ಉ͡Ϟδϡʔϧʹ੾Γग़͍ͨ͠΋ͷಉ࢜͸ಉ͡package໊Ͱ੾Γग़͢ɽ - :legacyʹ௥Ճͤͣʹ࣮ݱͰ͖ͦ͏ͳΒੵۃతʹϞδϡʔϧΛ࡞ͬͯΈΔɽ ػցతʹ஄͘ͷ͕ͳ͔ͳ͔೉͍͠ͷͰPRͷϨϏϡʔͳͲͰҙࣝ͢Δɽ νʔϜͱͯ͠ϞδϡʔϧԽʹऔΓ૊ΜͰ͍Δ͜ͱΛҙࣝ͢Δʂ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 180

Slide 192

Slide 192 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 181

Slide 193

Slide 193 text

©2020 Wantedly, Inc. 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 182

Slide 194

Slide 194 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ :app :legacy 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 183

Slide 195

Slide 195 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app :legacy 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 184

Slide 196

Slide 196 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app :legacy 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ ԼҐͷϨΠϠʔ͔ΒϞδϡʔϧ෼͚Λߦ͏ ͜ͱͰɼMFHBDZΛ΋ͭඞཁ͕ͳ͍ʂ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 185

Slide 197

Slide 197 text

©2020 Wantedly, Inc. :app :feature A :feature B :feature C :feature D :library X :library Y :library Z :core :constants :hoge :piyo :app :legacy 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ ԼҐͷϨΠϠʔ͔ΒϞδϡʔϧ෼͚Λߦ͏ ͜ͱͰɼMFHBDZΛ΋ͭඞཁ͕ͳ͍ʂ "OESPJE"1*Ҏ֎ͷΈͰߏ੒͞ΕΔॴ ΍DPOTU஋ͳͲҠߦ͠΍͍͢ʂ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 186

Slide 198

Slide 198 text

©2020 Wantedly, Inc. 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 187

Slide 199

Slide 199 text

©2020 Wantedly, Inc. 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ MFHBDZ΁ͷґଘ͸ɼࠩ෼Ϗϧυ࣌ʹڊେͳ
 Ϟδϡʔϧ΁ͷࢀরΛੜΉ͜ͱʹͳΔͷͰආ͚Δ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 188

Slide 200

Slide 200 text

©2020 Wantedly, Inc. 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 189

Slide 201

Slide 201 text

©2020 Wantedly, Inc. 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 5. Modularization and Android Jetpack / Android JetpackͱϚϧνϞδϡʔϧ ΛਐΊΔ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 190

Slide 202

Slide 202 text

©2020 Wantedly, Inc. 1. :legacy -> :legacy΁ͷΞʔΩςΫνϟվม΍ϦϑΝΫλϦϯά 2. ੾Γग़͞ΕΔ૝ఆͰ࣮૷ΛਐΊΔ 3. ԼͷϨΠϠʔͱͳΔϞδϡʔϧ͔ΒҠߦ 5. ը໘ؒͷભҠγεςϜ͕׬੒͔ͯ͠ΒfeatureΛ෼ׂ 4. :legacy΁ͷdependencyΛ࣋ͨͳ͍Α͏ʹ࣮૷ 6. A continuous process of modularization with feature development / 
 ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ͨΊʹ 191

Slide 203

Slide 203 text

©2020 Wantedly, Inc. Conclusion / ·ͱΊ 1. :app → :legacyʹಈ͔͢ͷ͕େ੾ͳୈҰา 2. ϦϑΝΫλϦϯάͱͯ͠ͷจ຺͕ͱͯ΋େ͖͍ɽ 3. νʔϜͰίϛϡχέʔγϣϯΛద੾ʹऔΓͳ͕ΒਐΊΑ͏ 192