Slide 1

Slide 1 text

ಡΈ΍͍͢-ίʔυͷॻ͖ํ / ୈ-8-ճ ϨϏϡʔ #8

Slide 2

Slide 2 text

લճɾલʑճͷ͓͞Β͍: ґଘؔ܎ ݁߹౓: ಺༰ɾ֎෦ɾڞ௨ɾ੍ޚ݁߹Λ؇࿨͢Δ ํ޲: Ұํ޲ʹ͢Δɾ८ճΛখ͍͞ൣғʹ੍ݶ͢Δ ॏෳ: ਺चͭͳ͗ͷґଘ΍ηοτͷॏෳΛආ͚Δ ໌ࣔੑ: ΫϥεͷఆٛͰཧղͰ͖Δґଘؔ܎Λ࢖͏

Slide 3

Slide 3 text

ߨٛͷߏ੒ - ಋೖͱݪଇ - ࣗવݴޠ: ໋໊, ίϝϯτ - ܕͷߏ଄: ঢ়ଶ, ؔ਺ - ܕؒͷߏ଄: ґଘؔ܎I, ґଘؔ܎II - ϨϏϡʔ ίʔυϨϏϡʔ > ಋೖ

Slide 4

Slide 4 text

ίʔυϨϏϡʔ͕ඞཁͳཧ༝ ಡΈ΍͢͞ͷվળ - ଞͷਓͷࢹ఺Ͱ֬ೝ͢Δ ϩδοΫͷਖ਼͠͞ͷ֬ೝ - ΤοδέʔεɾΤϥʔ/ྫ֎ॲཧɾڝ߹ঢ়ଶ... - جຊతʹ͸ϓϧϦΫΤετΛ࡞ͬͨਓ͕੹೚Λ࣋ͭ ίʔυϨϏϡʔ > ಋೖ

Slide 5

Slide 5 text

ίʔυϨϏϡʔͷޮ཰ ϨϏϡʔͦͷ΋ͷͷޮ཰΋ॏཁ - ಡΈ΍͢͞͸ੜ࢈ੑͷͨΊ - ϨϏϡʔ͕ඇޮ཰తͩͱຊ຤స౗ ίʔυϨϏϡʔ > ಋೖ

Slide 6

Slide 6 text

ࠓճͷ಺༰ ϨϏϡʔΠʢϨϏϡʔΛड͚Δଆʣ: - ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ίϝϯτͷద༻ͷ࢓ํ ϨϏϡʔΞʢϨϏϡʔΛ͢Δଆʣ: - ݪଇ - ίϝϯτͷ಺༰ ίʔυϨϏϡʔ > ಋೖ

Slide 7

Slide 7 text

ࠓճͷ಺༰ ϨϏϡʔΠʢϨϏϡʔΛड͚Δଆʣ: - ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ίϝϯτͷద༻ͷ࢓ํ ϨϏϡʔΞʢϨϏϡʔΛ͢Δଆʣ: - ݪଇ - ίϝϯτͷ಺༰ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ

Slide 8

Slide 8 text

ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ੹೚ൣғΛ໌ࣔ͢Δ - αΠζΛখ͘͞อͭ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ

Slide 9

Slide 9 text

ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ੹೚ൣғΛ໌ࣔ͢Δ - αΠζΛখ͘͞อͭ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > ੹೚ൣғͷ໌ࣔ

Slide 10

Slide 10 text

ϓϧϦΫΤετͷ੹೚ൣғͷ໌ࣔ ϓϧϦΫΤετͦͷ΋ͷͷઆ໌Λॻ͘ - ओͳ໨తɾୡ੒͍ͨ͜͠ͱ ϓϧϦΫΤετͷ੹೚ͷڥքΛ໌֬ʹ͢Δ - ߦΘͳ͍͜ͱ (out-of-scope) - ࠓޙͷܭը ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > ੹೚ൣғͷ໌ࣔ

Slide 11

Slide 11 text

੹೚ൣғͷ໌ࣔͷॏཁੑ 1/2 ϨϏϡʔΞͷ੹೚: - վળՄೳͳ఺͕͋Ε͹มߋͷཁٻ/ఏҊΛ͢Δ ࡍݶͷͳ͍มߋͷཁٻ͕ߦΘΕΔՄೳੑ͕͋Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > ੹೚ൣғͷ໌ࣔ

Slide 12

Slide 12 text

੹೚ൣғͷ໌ࣔͷॏཁੑ 2/2 ߹ҙΛऔΓ΍͘͢͢Δ - վળΛͲͷϓϧϦΫΤετͰߦ͏͔ - ݱࡏͷมߋ͸࠷ऴతͳઃܭʹ߹͍ͬͯΔ͔ σβΠϯυΩϡϝϯτ౳΋ซ༻͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > ੹೚ൣғͷ໌ࣔ

Slide 13

Slide 13 text

ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ໨తΛ໌ࣔ͢Δ - αΠζΛখ͘͞อͭ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ

Slide 14

Slide 14 text

ϓϧϦΫΤετͷαΠζͱϨϏϡʔͷޮ཰ େ͖ͳϓϧϦΫΤετͷϨϏϡʔ͸ඇޮ཰ - ཧղΛ͢Δ·Ͱʹ͕͔͔࣌ؒΔ - ϨϏϡʔͷΠςϨʔγϣϯ͕௕͘ͳΔ Ұ೔ͷλεΫΛෳ਺ͷϓϧϦΫΤετʹ෼ׂ͢Δ ʮࠓिͷϓϧϦΫΤετʯΛ࡞Βͳ͍ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ

Slide 15

Slide 15 text

ϓϧϦΫΤετͷ෼ׂํ๏ - େ͖ͳػೳ࣮૷ʹରͯ͠ - ௥Ճ࡞ۀʹରͯ͠ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ

Slide 16

Slide 16 text

ϓϧϦΫΤετͷ෼ׂํ๏ - େ͖ͳػೳ࣮૷ʹରͯ͠ - ௥Ճ࡞ۀʹରͯ͠ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > େ͖ͳػೳ࣮૷࣌

Slide 17

Slide 17 text

େ͖ͳػೳ࣮૷ʹର͢Δ෼ׂ๏ ػೳͷ։ൃ͸਺ि͔ؒΒ਺ϲ݄͔͔Δ͜ͱ΋ - 1 ͭͷϓϧϦΫΤετʹ͸·ͱΊΒΕͳ͍ - ࡞੒్தͷػೳΛϚʔδ͢Δඞཁ͕͋Δ τοϓμ΢ϯํࣜͱϘτϜΞοϓํࣜ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > େ͖ͳػೳ࣮૷࣌

Slide 18

Slide 18 text

τοϓμ΢ϯํࣜ ߏ଄͚ͩΛ࡞ΓɺޙͰ࣮૷ΛຒΊΔ 1. ߏ଄Λઆ໌͢ΔͨΊͷεέϧτϯΫϥεΛ࡞Δ 2. ࠓޙͷϓϥϯΛ TODO ΍ϓϧϦΫΤετͷίϝϯτͰઆ໌͢Δ class UserProfilePresenter( val userProfileUseCase: UseCase val profileRootView: View ) { fun showProfileImage() = TODO("#12345: ...") ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > େ͖ͳػೳ࣮૷࣌

Slide 19

Slide 19 text

ϘτϜΞοϓํࣜ ෦඼Λઌʹ࡞Δ 1. ʮ࢖͏ଆʯ͕ͳ͍ঢ়ଶͰ୯७ͳΫϥεɾؔ਺Λ࣮૷͢Δ 2. কདྷͲ͏࢖͏͔Λ TODO ΍ϓϧϦΫΤετͷίϝϯτͰઆ໌͢Δ data class UserProfileData(val ..., val ...) // TODO(#12346): ... object UserNameStringUtils { @Suppress("unused") // TODO(#12347): ... fun normalizeEmoji(userName: String): String = ... ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > େ͖ͳػೳ࣮૷࣌

Slide 20

Slide 20 text

ϓϧϦΫΤετͷ෼ׂํ๏ - େ͖ͳػೳ࣮૷ʹରͯ͠ - ௥Ճ࡞ۀʹରͯ͠ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 21

Slide 21 text

௥Ճ࡞ۀͷൃੜྫ 1/3 લఏ 1: ࣌ࠁදࣔͷػೳΛ࣮૷ class CurrentClockIndicator(...) { fun showCurrentTime() { val clockText = toClockText(...) // ... } companion object { private fun toClockText(...: Long): String = ... } } ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 22

Slide 22 text

௥Ճ࡞ۀͷൃੜྫ 2/3 ࣮૷࣌ͷίϛοτϦετ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 2: ϓϥΠϕʔτϢʔςΟϦςΟؔ਺ `toClockText` ࣮૷ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 23

Slide 23 text

௥Ճ࡞ۀͷൃੜྫ 3/3 લఏ 2: toClockText ͷίϐʔ͕طଘΫϥεʹ͋Δ͜ͱ͕ൃ֮ DateTimeTextFormatter ͱͯ͠ڞ௨ίʔυΛநग़͍ͨ͠ object DateTimeTextFormatter { fun toClockText(...: Long): String = ... } class CurrentClockIndicator(...) { fun showCurrentTime() { val clockText = DateTimeTextFormatter.toClockText(...) // ... ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 24

Slide 24 text

௥Ճ࡞ۀͷϓϧϦΫΤετͷऔΓѻ͍ ໰୊: ͲͷΑ͏ͳϓϧϦΫΤετΛ࡞੒͢Ε͹Α͍͔ - Ξϯνύλʔϯ 1: 1ͭͷϓϧϦΫΤετʹ·ͱΊΔ - Ξϯνύλʔϯ 2: ࣌ܥྻͰϓϧϦΫΤετΛ෼ׂ - ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ - ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 25

Slide 25 text

௥Ճ࡞ۀͷϓϧϦΫΤετͷऔΓѻ͍ ໰୊: ͲͷΑ͏ͳϓϧϦΫΤετΛ࡞੒͢Ε͹Α͍͔ - Ξϯνύλʔϯ 1: 1ͭͷϓϧϦΫΤετʹ·ͱΊΔ - Ξϯνύλʔϯ 2: ࣌ܥྻͰϓϧϦΫΤετΛ෼ׂ - ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ - ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 26

Slide 26 text

Ξϯνύλʔϯ 1: 1ͭͷϓϧϦΫΤετʹ·ͱΊΔ ϓϧϦΫΤετͷίϛοτ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 2: ϓϥΠϕʔτϢʔςΟϦςΟؔ਺ `toClockText` ࣮૷ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ Commit 4: `toClockText` Λ `DateTimeTextFormatter` ͱͯ͠நग़ Commit 4 ͷ໾ׂ͕ҟͳΔ && มߋ͕ڊେʹͳΔ ʮநग़࿙Ε͕ͳ͍͔ʯͳͲͷ֬ೝࣄ߲͕૿͑Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 27

Slide 27 text

௥Ճ࡞ۀͷϓϧϦΫΤετͷऔΓѻ͍ ໰୊: ͲͷΑ͏ͳϓϧϦΫΤετΛ࡞੒͢Ε͹Α͍͔ - Ξϯνύλʔϯ 1: 1ͭͷϓϧϦΫΤετʹ·ͱΊΔ - Ξϯνύλʔϯ 2: ࣌ܥྻͰϓϧϦΫΤετΛ෼ׂ͢Δ - ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ - ղܾҊ 2: ίϛοτΛ෼ׂɾฒ΂ସ͑ɾ౷߹͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 28

Slide 28 text

Ξϯνύλʔϯ 2: ࣌ܥྻͰ෼ׂ͢Δ 1/2 ϓϧϦΫΤετ A ͷίϛοτ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 2: ϓϥΠϕʔτϢʔςΟϦςΟؔ਺ `toClockText` ࣮૷ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ ϓϧϦΫΤετ B ͷίϛοτ Commit 4: `toClockText` Λ `DateTimeTextFormatter` ͱͯ͠நग़ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 29

Slide 29 text

Ξϯνύλʔϯ 2: ࣌ܥྻͰ෼ׂ͢Δ 2/2 ϓϧϦΫΤετ A ͷϚʔδޙʹ ϓϧϦΫΤετ B ΛϚʔδ ٕज़తෛ࠴Λট͘ - Ұ࣌తʹίʔυͷίϐʔ͕ߦΘΕΔ - ࡞ۀͷׂΓࠐΈ౳Ͱ ϓϧϦΫΤετ B ͕์ஔ͞Εͯ͠·͏ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 30

Slide 30 text

௥Ճ࡞ۀͷϓϧϦΫΤετͷऔΓѻ͍ ໰୊: ͲͷΑ͏ͳϓϧϦΫΤετΛ࡞੒͢Ε͹Α͍͔ - Ξϯνύλʔϯ 1: 1ͭͷϓϧϦΫΤετʹ·ͱΊΔ - Ξϯνύλʔϯ 2: ࣌ܥྻͰϓϧϦΫΤετΛ෼ׂ͢Δ - ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ - ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 31

Slide 31 text

ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ 1/2 ฒߦͯ͠ DateTimeTextFormatter ͷϓϧϦΫΤετΛ࡞Δ ద༻৚݅: toClockText ࣮૷લʹίʔυͷॏෳʹؾ͕͍ͭ৔߹ ϓϧϦΫΤετ A ͷίϛοτ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ ϓϧϦΫΤετ B ͷίϛοτ Commit 4: `toClockText` Λ `DateTimeTextFormatter` ͱͯ͠நग़ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 32

Slide 32 text

ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ 2/2 ϓϧϦΫΤετ B ͷϚʔδޙ ϓϧϦΫΤετ A ΛϦϕʔε நग़ޙͷ toClockText Λ࢖ͬͯϓϧϦΫΤετ A Λ࡞੒Մೳ ϓϧϦΫΤετ A ͷίϛοτ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 33

Slide 33 text

௥Ճ࡞ۀͷϓϧϦΫΤετͷऔΓѻ͍ ໰୊: ͲͷΑ͏ͳϓϧϦΫΤετΛ࡞੒͢Ε͹Α͍͔ - Ξϯνύλʔϯ 1: 1ͭͷϓϧϦΫΤετʹ·ͱΊΔ - Ξϯνύλʔϯ 2: ࣌ܥྻͰϓϧϦΫΤετΛ෼ׂ͢Δ - ղܾҊ 1: ௥Ճ࡞ۀΛઌʹ׬ྃͤ͞Δ - ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 34

Slide 34 text

ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ ίϛοτΛ෼ׂɾฒ΂ସ͑ɾ౷߹͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 35

Slide 35 text

ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ 1/4 Step 1: Commit 4 Λ෼ׂ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 2: ϓϥΠϕʔτϢʔςΟϦςΟؔ਺ `toClockText` ࣮૷ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ Commit 4_EXISTING: طଘίʔυͷ `toClockText` Λநग़ Commit 4_NEW: `CurrentTimeIndicator` ͷ `toClockText` Λநग़ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 36

Slide 36 text

ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ 1/4 Step 2: ίϛοτΛฒ΂ସ͑Δ Commit 4_EXISTING: طଘίʔυͷ `toClockText` Λநग़ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 2: ϓϥΠϕʔτϢʔςΟϦςΟؔ਺ `toClockText` ࣮૷ Commit 4_NEW: `CurrentTimeIndicator` ͷ `toClockText` Λநग़ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 37

Slide 37 text

ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ 1/4 Step 3: த 3 ͭͷίϛοτΛ౷߹͢Δ Commit 4_EXISTING: طଘίʔυͷ `toClockText` Λநग़ Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ --squashed--ɹ --squashed--ɹ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 38

Slide 38 text

ղܾҊ 2: ίϛοτΛ࠶ߏ੒͢Δ 1/4 Step 4: 2 ͭͷϓϧϦΫΤετΛ࡞੒͢Δ ϓϧϦΫΤετ B Commit 4_EXISTING: طଘίʔυͷ `toClockText` Λநग़ ϓϧϦΫΤετ A Commit 1: `CurrentTimeIndicator` ͷεέϧτϯΫϥε࡞੒ Commit 3: `CurrentTimeIndicator` ͷ `showCurrentTime` ࣮૷ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ > ௥Ճ࡞ۀʹର͢ΔରԠ

Slide 39

Slide 39 text

ϓϧϦΫΤετΛখ͘͞อͭͨΊʹ: ิ଍ ࣮૷લʹܭըʹ͍ͭͯ߹ҙΛͱΔ - Ͳͷ࡞ۀΛ͍ͭɺͲͷϓϧϦΫΤετͰߦ͏͔ - Ұ࣌తͳෛ࠴Λڐ͢ͷ͔ɺͲ͏ղফ͢Δͷ͔ มߋ͕ൃੜͨ͠ΒૣΊʹٞ࿦͢Δ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > খ͍͞ϓϧϦΫΤετ

Slide 40

Slide 40 text

ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ: ·ͱΊ ϓϧϦΫΤετͷ੹೚ൣғΛ໌ࣔ͢Δ - ओͳ໨తɾୡ੒͍ͨ͜͠ͱ - ߦΘͳ͍͜ͱɾࠓޙͷܭը ϓϧϦΫΤετΛখ͘͢͞Δ - େ͖ͳػೳ࣮૷࣌: τοϓμ΢ϯɾϘτϜΞοϓ - ௥Ճ࡞ۀ࣌: ฒྻ࡞ۀɾίϛοτͷ࠶ߏ੒ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > ·ͱΊ

Slide 41

Slide 41 text

༨ஊ: ίϛοτ΁ͷద༻ ಉ͡ߟ͑ํΛίϛοτʹ΋ద༻͢Δ - ίϛοτͷ੹೚ൣғ - ίϛοτͷ෼ׂͷ࢓ํ ίʔυϨϏϡʔ > ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετ > ·ͱΊ

Slide 42

Slide 42 text

ࠓճͷ಺༰ ϨϏϡʔΠʢϨϏϡʔΛड͚Δଆʣ: - ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ίϝϯτͷద༻ͷ࢓ํ ϨϏϡʔΞʢϨϏϡʔΛ͢Δଆʣ: - ݪଇ - ίϝϯτͷ಺༰ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 43

Slide 43 text

ίϝϯτΛద༻͢Δ্Ͱॏཁͳ఺ ίϝϯτΛػցతʹద༻͠ͳ͍ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 44

Slide 44 text

ίϝϯτΛػցతʹద༻͠ͳ͍ - ίϝϯτͷҙਤΛཧղ͢Δ - ͳ࣭ͥ໰͞Ε͔ͨɾޡղ͞Ε͔ͨΛߟ͑Δ - ଞͷ৔ॴʹ΋ಉ͡ίϝϯτΛద༻͢Δ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 45

Slide 45 text

ίϝϯτΛػցతʹద༻͠ͳ͍ - ίϝϯτͷҙਤΛཧղ͢Δ - ͳ࣭ͥ໰͞Ε͔ͨɾޡղ͞Ε͔ͨΛߟ͑Δ - ଞͷ৔ॴʹ΋ಉ͡ίϝϯτΛద༻͢Δ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 46

Slide 46 text

ίϝϯτͷҙਤΛཧղ͢Δ ఏҊ͞ΕͨίʔυΛͦͷ··ϖʔετ͠ͳ͍ - ओʹͲͷ෦෼ͷվળͳͷ͔Λཧղ͢Δ - ߋͳΔվળΛࢼΈΔ - ʮਖ਼͠͞ʯΛݕূ͢Δ: Τοδέʔεɾྫ֎ɾڝ߹ঢ়ଶ... ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 47

Slide 47 text

ίϝϯτΛػցతʹద༻͠ͳ͍ - ίϝϯτͷҙਤΛཧղ͢Δ - ͳ࣭ͥ໰͞Ε͔ͨɾޡղ͞Ε͔ͨΛߟ͑Δ - ଞͷ৔ॴʹ΋ಉ͡ίϝϯτΛద༻͢Δ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 48

Slide 48 text

ͳ࣭ͥ໰͞Ε͔ͨɾޡղ͞Ε͔ͨΛߟ͑Δ ࣭໰ɾޡղ͸ίʔυͷಡΈʹ͘͞ʹΑͬͯҾ͖ى͜͞ΕΔ ίϝϯτͷྫ: "͜͜Ͱ null νΣοΫ͍ͯ͠Δͷ͸ͳͥͰ͔͢ʁ" - νΣοΫ͕ෆཁͳΒऔΓআ͘ - ίʔυͷίϝϯτͰཧ༝Λઆ໌͢Δ - ཧ༝͕Θ͔Γ΍͘͢ͳΔΑ͏ʹม਺Λ࢖͏ (isUserExpired ౳) ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 49

Slide 49 text

ίϝϯτΛػցతʹద༻͠ͳ͍ - ίϝϯτͷҙਤΛཧղ͢Δ - ͳ࣭ͥ໰͞Ε͔ͨɾޡղ͞Ε͔ͨΛߟ͑Δ - ଞͷ৔ॴʹ΋ಉ͡ίϝϯτΛద༻͢Δ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 50

Slide 50 text

ଞͷ৔ॴʹ΋ಉ͡ίϝϯτΛద༻͢Δ ྨࣅͨ͠৔ॴ͕ͳ͍͔Λ֬ೝ͢Δ ίϝϯτͷྫ: "@Nullable Λ͜ͷҾ਺ʹ͚͍ͭͯͩ͘͞ɻ": - ଞͷҾ਺ɾ໭Γ஋ʹ΋ඞཁͰͳ͍͔Λߟ͑Δ - มߋ͞Εͨଞͷؔ਺ʹ΋ඞཁͰͳ͍͔Λߟ͑Δ - ʮࠓޙͷϓϧϦΫΤετʯʹ΋൓ө͢Δ ίʔυϨϏϡʔ > ίϝϯτͷద༻

Slide 51

Slide 51 text

ϨϏϡʔίϝϯτͷద༻: ·ͱΊ ϨϏϡʔίϝϯτͷҙਤΛཧղ͢Δ - ͦͷίϝϯτ͕ॻ͔Εͨཧ༝ɾഎܠΛߟ͑Δ - ߋͳΔվળΛࢼΈΔ - ଞͷίʔυɾϓϧϦΫΤετʹ΋ద༻͢Δ ίʔυϨϏϡʔ > ίϝϯτͷద༻ > ·ͱΊ

Slide 52

Slide 52 text

ࠓճͷ಺༰ ϨϏϡʔΠʢϨϏϡʔΛड͚Δଆʣ: - ϨϏϡʔ͠΍͍͢ϓϧϦΫΤετͷ࡞Γํ - ίϝϯτͷద༻ͷ࢓ํ ϨϏϡʔΞʢϨϏϡʔΛ͢Δଆʣ: - ݪଇ - ίϝϯτͷ಺༰ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ

Slide 53

Slide 53 text

ϨϏϡʔΞͱͯ͠ͷݪଇ ϨϏϡʔΠΛϦεϖΫτ͢Δ - ઈରʹ๫ݴΛు͔ͳ͍ɺਓ֨൱ఆΛ͠ͳ͍ - ϨϏϡʔͷର৅: ίʔυɾ࢓༷ɾϓϩηεͳͲ (!= ϨϏϡʔΠ) ޮ཰తͳϨϏϡʔΛߦ͏ - ϦιʔεΛແݶʹ࢖ͬͯ͸ͳΒͳ͍ - ඞཁͳ࣌ؒΛ΋࡟Βͳ͍Α͏ʹ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ

Slide 54

Slide 54 text

ϦεϖΫτͱޮ཰ͷͨΊͷݪଇ - ϨϏϡʔϦΫΤετΛແࢹ͠ͳ͍ - ໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ - కΊ੾ΓΛҙࣝ͗͢͠ͳ͍ - ʮఏҊʯҎ֎ͷํ๏Λߟྀ͢Δ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ

Slide 55

Slide 55 text

ϦεϖΫτͱޮ཰ͷͨΊͷݪଇ - ϨϏϡʔϦΫΤετΛແࢹ͠ͳ͍ - ໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ - కΊ੾ΓΛҙࣝ͗͢͠ͳ͍ - ʮఏҊʯҎ֎ͷํ๏Λߟྀ͢Δ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ແࢹ͠ͳ͍

Slide 56

Slide 56 text

ϨϏϡʔϦΫΤετΛແࢹ͠ͳ͍ ʮ͍ͭ·Ͱʹฦ৴Λ͢Δ͔ʯϧʔϧΛܾΊΔ - ྫ: ϦΫΤετ͔Βۈ຿೔׵ࢉͰ 24 ࣌ؒҎ಺ ໰୊: ϨϏϡʔͷظݶʹ͍ͭͯ࠷΋ʮΑ͘ͳ͍ʯߦಈ͸ʁ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ແࢹ͠ͳ͍

Slide 57

Slide 57 text

ϨϏϡʔϦΫΤετ΁ͷରԠ Α͍: - ظݶ಺ʹϨϏϡʔ͢Δ - ଞͷਓʹϦμΠϨΫτ͢Δ - ʮϨϏϡʔ͕೉͍͠ʯ ͱฦ৴͢Δ ͋·ΓΑ͘ͳ͍: ϨϏϡʔϦΫΤετΛແࢹ͢Δ ͔ͳΓΑ͘ͳ͍: ʮϨϏϡʔ͢Δʯͱݴ࣮ͬͯࡍʹ͸ϨϏϡʔ͠ͳ͍ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ແࢹ͠ͳ͍

Slide 58

Slide 58 text

ϨϏϡʔ͕೉͍͠ͱ͖ ๩͍͠ͳΒɺʮࠓ๩͍͠ʯͱฦ৴͢Δ ϨϏϡʔΠͷऔΕΔߦಈ: - ଞͷλεΫΛϒϩοΫ͠ͳ͍ͳΒɺ୯ʹϨϏϡʔΛ଴ͯΔ - ۓٸੑ͕ߴ͍ͳΒɺଞͷϨϏϡʔΞΛ୳ͤΔ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ແࢹ͠ͳ͍

Slide 59

Slide 59 text

ϦεϖΫτͱޮ཰ͷͨΊͷݪଇ - ϨϏϡʔϦΫΤετΛແࢹ͠ͳ͍ - ໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ - కΊ੾ΓΛҙࣝ͗͢͠ͳ͍ - ʮఏҊʯҎ֎ͷํ๏Λߟྀ͢Δ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ໰୊ͷ͋ΔϓϧϦΫΤετͷڋ൱

Slide 60

Slide 60 text

໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ 1/2 ໰୊ͷଟ͍ϓϧϦΫΤετʹ࣌ؒΛ͔͚͗͢ͳ͍ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ໰୊ͷ͋ΔϓϧϦΫΤετͷڋ൱

Slide 61

Slide 61 text

໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ 2/2 ৄࡉΛಡΉΑΓ΋ɺϓϧϦΫΤετΛ࡞Γ௚ͯ͠΋Β͏ େ͖͗͢ΔϓϧϦΫΤετ: - খ͍͞ϓϧϦΫΤετʹ෼ׂͯ͠΋Β͏ ໨తɾલఏɾߏ଄ʹॏେͳؒҧ͍͕͋ΔϓϧϦΫΤετ: - εέϧτϯΫϥεΛ࡞ͬͯ΋ΒͬͨΓɺܰٞ͘࿦Λͯ͠ΈΔ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ໰୊ͷ͋ΔϓϧϦΫΤετͷڋ൱

Slide 62

Slide 62 text

ϦεϖΫτͱޮ཰ͷͨΊͷݪଇ - ϨϏϡʔϦΫΤετΛແࢹ͠ͳ͍ - ໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ - కΊ੾ΓΛҙࣝ͗͢͠ͳ͍ - ʮఏҊʯҎ֎ͷํ๏Λߟྀ͢Δ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > కΊ੾ΓΛҙࣝ͗͢͠ͳ͍

Slide 63

Slide 63 text

కΊ੾ΓΛҙࣝ͗͢͠ͳ͍ క੾͕͍ۙͱ͍͏ཧ༝ͰϨϏϡʔͷج४ΛԼ͛ͳ͍ - ٸ͍Ͱ͍Δ৔߹͸ͦͷཧ༝Λઆ໌ͯ͠΋Β͏ - ୅ସҊΛ୳͢ʢ࢓༷ͷ؆ུԽɾϦεέδϡʔϧʣ ྫ֎: ܦӦઓུͰॏཁͳػೳɾଟେͳӨڹͷ͋Δόά - ςετɾࠓޙͷվળํ๏ͷ߹ҙͱλεΫνέοτ͕ඞਢ - ϨϏϡʔΞ͸ϨϏϡʔΠΑΓৗʹྫྷ੩Ͱ͋Ε ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > కΊ੾ΓΛҙࣝ͗͢͠ͳ͍

Slide 64

Slide 64 text

ϦεϖΫτͱޮ཰ͷͨΊͷݪଇ - ϨϏϡʔϦΫΤετΛແࢹ͠ͳ͍ - ໰୊ͷ͋ΔϓϧϦΫΤετΛڋ൱͢Δ - కΊ੾ΓΛߟྀ͠ͳ͍ - ʮఏҊʯҎ֎ͷํ๏Λߟྀ͢Δ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ఏҊҎ֎ͷίϝϯτ

Slide 65

Slide 65 text

ఏҊҎ֎ͷํ๏ ίϝϯτͷ಺༰͸ඞͣ͠΋ʮఏҊʯͰ͋Δඞཁ͸ͳ͍ ෛՙͷόϥϯεɾϨϏϡʔΠͷ੒௕: - Θ͔Βͳ͍৔߹ɺղಡʹ࣌ؒΛ͔͚ΔΑΓ΋࣭໰͢Δ - ໰୊ͷࢦఠʹͱͲΊɺݪҼ΍ৄࡉΛௐ΂ͯ΋Β͏ - ୯ͳΔʮ஌ࣝڞ༗ʯͷίϝϯτΛॻ͍ͯΈΔ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ఏҊҎ֎ͷίϝϯτ

Slide 66

Slide 66 text

ϨϏϡʔΞͱͯ͠ͷݪଇ: ·ͱΊ ϦεϖΫτΛͭͭ͠ɺޮ཰ͷΑ͍ϨϏϡʔΛ͢Δ - ϨϏϡʔ͕Ͱ͖ͳ͍৔߹͸ͦ͏ฦ৴͢Δ - ໰୊ͷ͋ΔϓϧϦΫΤετʹ࣌ؒΛ͔͚͗͢ͳ͍ - ޮ཰తͰޮՌతͳίϝϯτͱ͸Կ͔Λߟ͑Δ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ > ·ͱΊ

Slide 67

Slide 67 text

ࠓճͷ಺༰ ϨϏϡʔΠʢϨϏϡʔΛड͚Δଆʣ: - ϓϧϦΫΤετͷ࡞Γํ - ίϝϯτͷద༻ͷ࢓ํ ϨϏϡʔΞʢϨϏϡʔΛ͢Δଆʣ: - ݪଇ - ίϝϯτͷ಺༰ ίʔυϨϏϡʔ > ϨϏϡʔΞͷݪଇ

Slide 68

Slide 68 text

ίϝϯτͷ಺༰ 1/3 ؾ͍ͮͨ͜ͱͳΒԿͰ΋ʢղੳπʔϧ͕͋ΔͳΒͦΕʹ೚ͤΔʣ - ίʔσΟϯάελΠϧɾن໿ - ݴޠ΍ϓϥοτϑΥʔϜݻ༗ͷΠσΟΦϜ - ςετίʔυɾಈ࡞֬ೝͷ಺༰ - ϓϧϦΫΤετ΍ίϛοτͷେ͖͞ɾߏ଄ ίʔυϨϏϡʔ > ίϝϯτͷ಺༰

Slide 69

Slide 69 text

ίϝϯτͷ಺༰ 2/3 ؾ͍ͮͨ͜ͱͳΒԿͰ΋ - ϓϩδΣΫτ΍λεΫͷ໨తɾൣғ - ίʔυͷෳࡶੑͱୡ੒͍ͨ͜͠ͱͷόϥϯε - όά΍ηΩϡϦςΟ্ͷܽؕ - ύϑΥʔϚϯε΍ϑοτϓϦϯτͷมԽ ίʔυϨϏϡʔ > ίϝϯτͷ಺༰

Slide 70

Slide 70 text

ίϝϯτͷ಺༰ 3/3 ͜ͷϓϨθϯςʔγϣϯͰղઆͨ͠಺༰ ݪଇɾ໋໊ɾίϝϯτɾঢ়ଶɾؔ਺ɾґଘؔ܎ ίʔυϨϏϡʔ > ίϝϯτͷ಺༰

Slide 71

Slide 71 text

ίϝϯτͷέʔεελσΟ ؔ਺ʹԾҾ਺Λ௥Ճ͢Δྫ fun showPhotoView( photoData: PhotoData ) { if (!photoData.isValid) { return } ... ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 72

Slide 72 text

ίϝϯτͷέʔεελσΟ ؔ਺ʹԾҾ਺Λ௥Ճ͢Δྫ fun showPhotoView( photoData: PhotoData, isInEditScreen: Boolean ) { if (!photoData.isValid) { if (isInEditScreen) { showDialog() } return } ... ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 73

Slide 73 text

ίϝϯτͷέʔεελσΟ ໋໊: ʮͲ͜Ͱʯݺ͹ΕΔ͔ΑΓ΋ʮԿΛ͢Δ͔ʯΛઆ໌͢Δ isInEditScreen → showsDialogOnError ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 74

Slide 74 text

ίϝϯτͷέʔεελσΟ ໋໊: ʮͲ͜Ͱʯݺ͹ΕΔ͔ΑΓ΋ʮԿΛ͢Δ͔ʯΛઆ໌͢Δ fun showPhotoView( photoData: PhotoData, isInEditScreen: Boolean ) { if (!photoData.isValid) { if (isInEditScreen) { showDialog() } return } ... ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 75

Slide 75 text

ίϝϯτͷέʔεελσΟ ໋໊: ʮͲ͜Ͱʯݺ͹ΕΔ͔ΑΓ΋ʮԿΛ͢Δ͔ʯΛઆ໌͢Δ fun showPhotoView( photoData: PhotoData, showsDialogOnError: Boolean ) { if (!photoData.isValid) { if (showsDialogOnError) { showDialog() } return } ... ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 76

Slide 76 text

ίϝϯτͷέʔεελσΟ ґଘؔ܎: ਅِ஋ʹΑΔ੍ޚ݁߹Λղফ͢Δ - showDialog ͷݺͼग़͠Λநग़͢Δ - showPhotoView ͸੒൱Λਅِ஋Ͱฦ͢ ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 77

Slide 77 text

ίϝϯτͷέʔεελσΟ ґଘؔ܎: ਅِ஋ʹΑΔ੍ޚ݁߹Λղফ͢Δ fun showPhotoView( photoData: PhotoData, showsDialogOnError: Boolean ) { if (!photoData.isValid) { if (showsDialogOnError) { showDialog() } return } ... ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 78

Slide 78 text

ίϝϯτͷέʔεελσΟ ґଘؔ܎: ਅِ஋ʹΑΔ੍ޚ݁߹Λղফ͢Δ fun showPhotoView( photoData: PhotoData ): Boolean { if (!photoData.isValid) { return false } ... ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 79

Slide 79 text

ίϝϯτͷέʔεελσΟ ґଘؔ܎: ਅِ஋ʹΑΔ੍ޚ݁߹Λղফ͢Δ fun showPhotoView(photoData: PhotoData): Boolean { if (!photoData.isValid) { return false } ... return true ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 80

Slide 80 text

ίϝϯτͷέʔεελσΟ ґଘؔ܎: ਅِ஋ʹΑΔ੍ޚ݁߹Λղফ͢Δ ฤूը໘: val isViewShown = showPhotoView(...) if (!isViewShown) { showErrorDialog(...) } ͦΕҎ֎ͷը໘: showPhotoView(...) ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 81

Slide 81 text

ίϝϯτͷέʔεελσΟ ίϝϯτ: ؔ਺໊͕໭Γ஋Λઆ໌͍ͯ͠ͳ͍৔߹ɺίϝϯτΛॻ͘ /** * Shows a photo at the center if the given photo data is ..., * and returns true. * Otherwise, this returns false without showing the view. */ fun showPhotoView(photoData: PhotoData): Boolean { if (!photoData.isValid) { return false } ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > έʔεελσΟ

Slide 82

Slide 82 text

ίϝϯτͷ಺༰: ·ͱΊ ؾ͍ͮͨ͜ͱ͸ԿͰ΋ॻ͘ - ελΠϧ͔ΒϓϩδΣΫτͷ໨త·Ͱ - ҰճͷࢦఠͰ͸ؾ͔ͮͳ͍͜ͱ΋͋Δ ʮಡΈ΍͍͢ίʔυͷॻ͖ํʯΛಡΈฦͯ͠ΈΔ ίʔυϨϏϡʔ > ίϝϯτͷ಺༰ > ·ͱΊ

Slide 83

Slide 83 text

·ͱΊ ಡΈ΍͢͞ͷվળʹϨϏϡʔ͸ॏཁ ϨϏϡʔΠ: - ϓϧϦΫΤετ͸খ͘͞ߏ଄తʹ࡞Δ - ϨϏϡʔίϝϯτͷҙਤΛཧղ͢Δ ϨϏϡʔΞ: - ϦεϖΫτͱޮ཰Λཱ྆͢Δ ίʔυϨϏϡʔ > ·ͱΊ