Slide 1

Slide 1 text

第8章 視野を広げる 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ

Slide 2

Slide 2 text

Կͷࢹ໺Λ޿͛ͯΔΜͩΖ͏Ͷʂʁ • ΦϒδΣΫτࢦ޲(ΧϓηϧԽ)ͷ3ͭͷجຊత֓೦ • ΦϒδΣΫτɺΧϓηϧԽɺந৅Ϋϥε • ͜ΕΒ͕ʮͲ͏΍ͬͯ໾ʹཱ͍͔ͬͯ͘ͳʂʁҙٛਂͬ͞ ͯͲΜͳ΋ͷʂʁʯ͔ͳʔ • ͪΐͬͱݪཧݪଇͷࢹ఺͔Βߟ͑ͯΈΑ͏͔ʂతͳ • σβύλɺΞδϟΠϧ։ൃͱ͍ͬͨ෼໺ͱͷܨ͕Γʹ΋ݴ ٴͯ͠ΈΔΑʂ

Slide 3

Slide 3 text

͜ͷষͷΩʔϫʔυ • ΦϒδΣΫτ • ΧϓηϧԽɾӅṭ • ܧঝɾಛघԽ • ࠶ར༻ • ྲྀಈੑ • ڞ௨ੑ(෼ੳ) • Մมੑ(෼ੳ) • ந৅ɺ֓೦ɾ࢓༷ɾ࣮૷

Slide 4

Slide 4 text

従来からの考え⽅と新たな考え⽅ 8.2 オブジェクト: 従来の考え⽅と新たな考え⽅ 8.3 カプセル化

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

※ ͪΐͬͱ͓஌Βͤ ʮ੹೚Ͱߟ͑ΔͱԿ͕ྑ͍Μ͚ͩͬʁʯʹ͍ͭͯ͸1ষΛ͓ ͞Β͍ͯ͠ΈͯͶʂ • 1.5 ཁٻͷมߋʹऔΓ૊Ή • 1.6 ΦϒδΣΫτࢦ޲ύϥμΠϜ 参考: オブジェクト指向のこころ: 第1章 / DESIGN PATTERNS EXPLAINED: chapter-1 - Speaker Deck https://speakerdeck.com/o0h/design-patterns-explained-chapter-1?slide=22

Slide 10

Slide 10 text

ΦϒδΣΫτΛʮ੹೚ʯͰߟ͑Δ • ֓೦্ͷ؍఺ʹج͍ͮͯோΊΔͱɺΦϒδΣΫτͱ͸੹೚Λ උ࣮͑ͨମͰ͋Δͱଊ͑ΒΕΔ • ʮ੹೚ΛՌͨ͢ʯͨΊʹσʔλ΍ৼΔ෣͍Λ͍࣋ͬͯΔ • ݺͼग़͠ଆʹରͯ͠੹೚ΛՌͨ͢ओମͰ͋Γɺʮ಺෦͕Ͳ ͏ͳ͍ͬͯΔ͔ʯ͸ݺͼग़͠ଆʹ࿐ఄͤ͞ͳ͍ͰOK • ద੾ͳ੹೚ΛՌͨͤΔΑ͏ʹઃܭͯ͠ɺࣗ෼ͷ੹೚Λ୭͔ʹ όϥࢃ͔ͳ͍ଘࡏͰ͋Γ͍ͨͳ͊(ߴڽूɾ௿݁߹)

Slide 11

Slide 11 text

ͲʔΏʔ͜ͱͳͷ͔ͳ ྫ͑͹ʮਤܗඳըʯΫϥεͰߟ͑ͯΈΔ • ΦϒδΣΫτͱ͸σʔλʴৼΔ෣͍ • ௖఺ͷ࠲ඪ৘ใ(ଐੑ)ͱඳըɾදࣔ(ૢ࡞)Λ࣋ͭԿ͔ • ΦϒδΣΫτͱ͸੹຿Λඋ࣮͑ͨମ • ਤܗΛඳ͖͍ͨ࣌ʹྑ͍ײ͡ʹ΍ͬͯ͘ΕΔԿ͔

Slide 12

Slide 12 text

֓೦ͷ؍఺ʹج͍ͮͨઃܭ • ʮ֓೦͚ͩͰઃܭΛਐΊΒΕΔʯͱ͍͏ײ͕֮େࣄʂ • ઃܭͷஈ֊ͰʮৄࡉΛ੾Γ཭͠ʯͯߟ͑΍͘͢ͳΔ 従来的な考え⽅ 新しい考え⽅ 「座標データ」が必要 で、「描画・表⽰の⼿続き」も考 える必要があるな・・・ 図形を描きたいな・・ それ⽤の描画できる何かを 作っておこう ৄࡉͱີʹͳΓ΍͍͢ ৄࡉ͸੾Γ཭͞ΕΔ ࣮૷؍఺Ά͍ ֓೦্ͷ؍఺Ά͍

Slide 13

Slide 13 text

ΦϒδΣΫτʹର͢Δଊ͑ํͷϙΠϯτ • ৽͍͠ߟ͑ํʹΑͬͯɺʮͲ͏࣮૷͞ΕΔ͔ʯΑΓʮԿΛ࣮ߦ͢ Δͷ͔(໨త)ʯʹؔ৺ΛूதͰ͖Δ • ʮ࣮૷Ͱ͸ͳ͘ಈػʹண໨͢Δʯ͸σβύλʹසग़ͷ؍఺ • ৄࡉΑΓઌʹ༧උతͳઃܭΛߦ͑ΔΑ͏ʹͳΔ • શͯ(ৄࡉ)Λચ͍ग़͞ͳͯ͘΋ઃܭͰ͖Δ • “࣮૷ΛΠϯλʔϑΣʔεͷഎޙʹӅṭ͢Δ͜ͱͰɺ࣮૷ͱͦΕ Λ࢖༻͢ΔΦϒδΣΫτΛ෼཭͢Δ͜ͱʹͳΔΘ͚Ͱ͢(P106)” • ʮखଓ͖తͳߟ͑ํʯ͔ΒʮΦϒδΣΫτࢦ޲ʯ΁ʂ

Slide 14

Slide 14 text

ʮैདྷతʯͳΧϓηϧԽͷ෺଍Γͳ͞ • ʮΧϓηϧԽͱ͸σʔλӅṭʯͰ͸ͳ͘ɾɾɾ • σʔλͷӅṭ͸ʮΧϓηϧԽͷݶΒΕͨҰ໘ʯ • ΧϓηϧԽͱ͸ʮ͋ΒΏΔ΋ͷͷӅṭʯͱଊ͑Δ΂͖ • ͜͜ͷ”ࢹ໺͕ڱ͘”ͳͬͯ͠·͏ͱɺຊ࣭͔Βԕ͔͟Δ • σʔλɺ࣮૷ɺ೿ੜΫϥεɺઃܭͷৄࡉɺ࣮ମԽͷنଇ etc.

Slide 15

Slide 15 text

ͳΜͰʮσʔλͷӅṭʯ͚ͩ͡Ό෺଍ΓΜͷ͡ΌΖ • ຊॻͰΧϓηϧԽͱݴ͍ͬͯΔͷ͸ɺʮݺͼग़͠ݩʹରͯ͠Ӆṭ ͢Δʯʮ௚઀৮ΕΒΕͳ͘͢Δʯ͜ͱΛ௨ͯ͡ʮҙࣝͰ͖ͳ͘͢ Δʯͱ͍͏χϡΞϯε͕ڧ͍ؾ͕͢Δ • ͜ΕʹΑͬͯɺ࣍ͷར఺(ڧΈ)͕֫ಘ͞Εͦ͏ • ௿݁߹Խ͠΍͘͢ͳΔ • ʮந৅ʹରͯ͠ϓϩάϥϛϯά͠ΖʯݪଇΛୡ੒ͨ͠Γɺʮϙ ϦϞʔϑΟζϜΛ׆͔͢ʯͱ͍͏ςΫχοΫ͕࢖͍΍͘͢ͳΔ • ʮ֓೦ͷ؍఺Ͱߟ͑Δʯ্ͰɺʮΧϓηϧԽʯͷύϫʔ͕͔ܽͤ ͳ͍ʂ(ͱ͍͏ߟ͑ํͳΜ͡Όͳ͍͔ͳ͊)

Slide 16

Slide 16 text

σʔλͷΧϓηϧԽ • ʮσʔλΛ֎෦͔ΒӅṭ͢Δʯͱ͏ͷ͸Ͳ͏΍Δ͔ʁͱ͍ ͏ͷ͸ɺΠϝʔδ͕༙͖΍͍͢ͱࢥ͍·͢ͷͰʂ • ͜͜Ͱ͸঺հΛׂѪ͠·͢

Slide 17

Slide 17 text

ϝιουͷΧϓηϧԽ • ʮந৅(abstract,interface)ʹରͯ͠ϝοηʔδϯάΛͯ͠ ΋ɺ۩৅(concrete)ͷϝιου͕࣮ߦ͞Ε͍ͯΔ(΋͘͠͸ ͦͷٯ)ʯͱ͍͏Մೳੑ͕͋Δɾɾͱ͍͏Ӆṭ • ͕ɺ࣮ࡍͷॴ͸ݺͼख͕ʮͲ͕࣮ͬͪߦ͞ΕΔ͔ʯ͸ҙ ࣝ͠ͳͯ͘ྑ͍ 関連: リスコフの置換原則 - Wikipedia https://ja.wikipedia.org/wiki/リスコフの置換原則

Slide 18

Slide 18 text

ϝιουͷΧϓηϧԽ • alignShape()͸Shape::setLocation()Λ ࣮ߦ͍ͯ͠Δ͕ɺ࣮ࡍͷॲཧ͸ Circle::setLocation()ʹͳ͍ͬͯΔ • ॏཁͳͷ͸ʮݺͼग़͠ଆ͕ɺͦͷϝιο υͷଘࡏͱ࢖͍ํΛ஌͍ͬͯΔ͜ͱʯͰ ͋Γɺ͔ͦ͜Βઌ͸ΦϒδΣΫτͷ੹೚ ͱͳΔ

Slide 19

Slide 19 text

ܕͷΧϓηϧԽ • ݺͼग़͠ଆʹରͯ͠ɺϨγʔό(ݺͼग़͞Εͨଆ)͕ʮԿͷΫϥε ͷΦϒδΣΫτͳͷ͔ʯ͸Ӆṭ͞ΕΔ • ΦϒδΣΫτXͳͷ͔ɺͦΕͱ΋αϒΫϥεͷΦϒδΣΫτY ͳͷ͔ɾɾʁ • “ܕͷΧϓηϧԽ͸ɺϙϦϞʔϑΟζϜΛ࢖༻͢Δந৅Ϋϥεͱ ͦͷ೿ੜΫϥε(·ͨ͸ΠϯλʔϑΣʔεͱͦͷ࣮૷)ʹΑͬͯੜ Έग़͞Ε·͢(P107)”

Slide 20

Slide 20 text

ܕͷΧϓηϧԽ • $shape͕Shapeͷੑ࣭Λ࣋ͭΦϒ δΣΫτ(is-a)Ͱ͋Δ͜ͱ͸෼͔ͬͯ ͍Δ͕ɺͦͷ࣮ମ͕ԿͰ͋Δ͔ʹͭ ͍ͯ͸ؔ৺͕ͳ͍(Կ͕དྷͯ΋ಈ͘) • Circle͔΋஌Εͳ͍͠ɺ Rectangle͔΋஌Εͳ͍ɾɾɾ • ͜ͷΑ͏ͳʮಉؔ͡ΘΓํʯͰ΋ ʮঢ়گʹԠͯ͡ଟ༷ͳಈ͖ํΛ͢ Δʯͷ͕ϙϦϞʔϑΟζϜ

Slide 21

Slide 21 text

֓೦ͱͯ͠ͷܧঝvs࠶ར༻ͷͨΊͷܧঝ • ͔ͭͯܧঝʹ͍ͭͯड़΂ΒΕ͍ͯͨ͜ͱ • ίʔυͷ࠶ར༻(࿪ΜͩҙຯͰͷDRYతͳ)ͷͨΊʹɺ ʮݩʑ͋ͬͨΫϥε͔Βɺಛఆͷঢ়گʹରԠ(ಛԽ)͢΂͘ ར༻Ͱ͖Δʯͱ͍͏ํ๏ • ΑΓ֓೦తͳΞϓϩʔνํ๏ͱͯ͠ѻ͏͜ͱͰɺརӹΛੜ Ή͜ͱ͕Ͱ͖Δ͸ͣ • ΋ͬͱʮࢹ໺Λ޿͛ͯʯΦϒδΣΫτ΍ΧϓηϧԽɺܧ ঝΛѻ͏͜ͱͰɺ֦ுੑͷߴ͍ίʔυΛ࡞ΕΔ

Slide 22

Slide 22 text

࠶ར༻ͷͨΊͷܧঝͷ᠘ ʮޒ֯ܗΛಛԽ͠ɺಛघͳԑͷޒ֯ܗʯΛ࡞ͬͨྫɻ͜Ε͸࣍ͷ໰୊Λ͸ΒΉ 1. ڽूੑͷ௿Լ • ʮಛԽʯͤ͞Δࡍʹɺຊདྷͱ͸ҧ͏ྨͷ࢓ࣄΛר͖ࠐΜͰ͠·͍ͬͯΔ (ʮԑΛѻ͏ʯͱ͍͏෦෼ɻShapeͰ͸ͳ͘Pengtagonͷ࢓ࣄͰ͍͍ͷʁ) 2. ࠶ར༻ੑͷ௿Լ • ʮಛघͳԑʯ͚ͩΛѻ͍ͨͯ͘΋ɺʮಛघͳԑͷޒ֯ܗʯʹ͸ʮޒ֯ܗʯ ػೳ͕༊ண͍ͯ͠ΔͷͰɺ֎͔Β͸ར༻Ͱ͖ͳ͍ 3. มԽʹ௥ैͰ͖ͳ͍ • ཁٻͷมԽɾ૿େʹԠͯ͡ඞཁͳόϦΤʔγϣϯ͕૿͑ଓ͚Δ΋ͷͷɺʮಛ ԽʯͰରԠ͠Α͏ͱͨ͠৔߹ɺΫϥε͕૿͑·ͬͯ͘ݫ͘͠ͳΔ

Slide 23

Slide 23 text

֓೦ͱͯ͠ͷܧঝ • ”ಉ͡ৼΔ෣͍Λڞ༗͢Δ΋ͷʹண໨͠”ͬͯɺʮ࠶ར༻ͷͨ Ίͷܧঝʯͱҧ͏ͷ͔ʁ • (͜Ε͸ଟ෼8.5અΛݟͨ΄͏͕෼͔Γ΍ͦ͢͏ • ͬ͘͟Γ͍͏ͱ • ʮ۩৅ˠߋʹಛԽʯతͳͷ͕ʮ࠶ར༻ͷͨΊͷʙʯͱ͍͏ ؍఺ • ʮҰൠੑɾࠎࢠʯʹண໨ͯ͠ʮಉଐΛද֓͢೦Λ෼ྨ͢Δ (൚Խ͢Δ)ʯతͳͷ͕ʮ֓೦ͷͨΊͷʙʯͱ͍͏؍఺

Slide 24

Slide 24 text

ΧϓηϧԽʹର͢Δଊ͑ํͷϙΠϯτ • σʔλ͚ͩͰͳ͍ɺ͋ΒΏΔ΋ͷͷӅṭ͕ͦ͜ΧϓηϧԽ ͷೳྗ • GoF͕ΧϓηϧԽʹ͍ͭͯݴٴ͍ͯ͠Δࡍʹ͸ɺେମ͕ܕ ͷΧϓηϧԽͷ͜ͱ(ͱ͍͏͘Β͍ॏཁʂ) • ୯ͳΔʮ࣮૷ࡁΈͷίʔυͷ࠶ར༻ʯͷͨΊͰ͸ͳ͘ɺ ࢹ໺Λ޿͛ͯʮܧঝͷҙຯʯΛଊ͍͑ͯ͘ͷ͕େࣄ

Slide 25

Slide 25 text

変わること、変わらないこと、差分 8.4 流動的要素を⾒つけ出し、それをカプセル化する 8.5 共通性/可変性分析と抽象クラス

Slide 26

Slide 26 text

͋ͳͨͷઃܭʹ͓͍ͯɺԿΛྲྀಈతཁૉͱ͢Δ΂͖͔Λߟ࡯ͯ͠ ͍ͩ͘͞ɻ ͜ͷΞϓϩʔν͸ɺ࠶ઃܭͷݪҼʹண໨͢Δͱ͍͏΋ͷͱ͸ਖ਼൓ରͱͳͬͯ ͍·͢ɻઃܭมߋΛڧ͍ΔՄೳੑͷ͋Δ΋ͷ͕Կ͔Λߟ͑ΔͷͰ͸ͳ͘ɺ࠶ ઃܭͤͣʹԿΛมߋՄೳʹ͢Δͷ͔Λߟ͑ΔͷͰ͢ɻ͜͜Ͱண໨͍ͯ͠Δͷ ͸ɺྲྀಈత֓೦ͷΧϓηϧԽͰ͋Γɺଟ͘ͷσβΠϯύλʔϯͷςʔϚͱ΋ ͳ͍ͬͯΔ΋ͷͰ͢ɻ 1 “

Slide 27

Slide 27 text

ͪΐͬͱدΓಓ: ݪஶͩͱ͜Μͳײ͡ • ʮͲͷΑ͏ʹύλʔϯΛબ୒͢Δ ͔ʯͱ͍͏จ຺Ͱग़ͯ͘Δ • ࠶ઃܭͷݪҼʹয఺ΛߜΔ = ʮ֦ுੑɾมߋੑΛ௿Լͤ͞ΔΑ ͏ͳઃܭΛ͍ͯ͠ͳ͍͔Λ୳Δʯ • ٯͷΞϓϩʔν = ʮมߋ͕ൃੜ ͦ͠͏ͳՕॴΛ༧ݟ͠ɺ༧Ίઃܭ ʹ৫ΓࠐΜͰ͓͘ʯ オブジェクト指向における再利⽤のためのデザインパターン 改訂版 P41

Slide 28

Slide 28 text

ͪΐͬͱدΓಓ: ࠶ઃܭͷݪҼ ʮ࠶ઃܭΛ༨ّͳͤ͘͞ΔݪҼʯͱͯ͠8ͭͷ఺Λྻڍ 1. Ϋϥε໊Λ໌നʹنఆͯ͠Φ ϒδΣΫτΛੜ੒͢Δ 2. ಛఆͷΦϖϨʔγϣϯ΁ͷґ ଘ 3. ϋʔυ΢ΣΞ΍ιϑτ΢ΣΞ ϓϥοτϑΥʔϜ΁ͷґଘ 4. ΦϒδΣΫτͷදݱ͋Δ͍͸ ࣮૷΁ͷґଘ 5. ΞϧΰϦζϜ΁ͷґଘ 6. ີͳ݁߹ 7. αϒΫϥεԽʹΑΔػೳͷ֦ ு 8. ؆୯ͳΫϥεมߋ͕ෆՄೳͰ ͋Δ͜ͱ

Slide 29

Slide 29 text

͋ͳͨͷઃܭʹ͓͍ͯɺԿΛྲྀಈతཁૉͱ͢Δ΂͖͔Λߟ࡯ͯ͠ ͍ͩ͘͞ɻ ͜ͷΞϓϩʔν͸ɺ࠶ઃܭͷݪҼʹண໨͢Δͱ͍͏΋ͷͱ͸ਖ਼൓ରͱͳͬͯ ͍·͢ɻઃܭมߋΛڧ͍ΔՄೳੑͷ͋Δ΋ͷ͕Կ͔Λߟ͑ΔͷͰ͸ͳ͘ɺ࠶ ઃܭͤͣʹԿΛมߋՄೳʹ͢Δͷ͔Λߟ͑ΔͷͰ͢ɻ͜͜Ͱண໨͍ͯ͠Δͷ ͸ɺྲྀಈత֓೦ͷΧϓηϧԽͰ͋Γɺଟ͘ͷσβΠϯύλʔϯͷςʔϚͱ΋ ͳ͍ͬͯΔ΋ͷͰ͢ɻ 1 “ ཁ఺Λૡ͍ఠΉͱɺ ʮྲྀಈతཁૉΛݟ͚ͭग़͠ɺͦΕΛΧϓηϧԽ͢Δʯͷ͕ॏཁͱ͍͏͜ͱ

Slide 30

Slide 30 text

ྲྀಈੑ(มಈੑ)ͬͯԿʁ • ʮมΘΓͦ͏ͳ෦෼ʯͱ͍͏ͱܦ࣌తมԽͬΆ͍ʁ • ࣮ࡍʹ͸ɺೖΕସ͑ΔϞϊͰ͋Εಉ࣌ظʹଘࡏ͢ΔόϦΤʔγϣϯͰ ͋ΕʮྲྀಈੑʯͱΈͳ͢ • ྫ͑͹ɾɾɾ • ૿͑ͦ͏ͳ΋ͷ΍ݮΓͦ͏ͳ΋ͷ • (ઌͷྫ)ਤܗͷछྨ͕૿͑ͨɺʮࣗసंʯʹʮϩʔυόΠΫʯ͕௥Ճ • มΘΓͦ͏ͳ΋ͷ • ΞϧΰϦζϜΛม͍͑ͨɺσʔλ͕૿͖͔͑ͯͨΒετϨʔδΛม ͍͑ͨɺAPI͕ഇࢭ͞Εͨ

Slide 31

Slide 31 text

ྲྀಈੑͱΧϓηϧԽ • ʮมԽ͠ʹ͍͘෦෼ʯͱʮྲྀಈతཁૉʯΛൃݟ͠ɺ ʮ໨త(֓೦ɾந৅)ʯ͔Β੾Γ཭ͯ͠ʮৄࡉ(࣮૷ɾ۩৅)ʯͱ۠ ผͰ͖Δͱ˕ • ྫ͑͹Facade͸ʮαϒγεςϜ(ৄࡉ)ͱ͍͏ྲྀಈੑʯΛΫϥΠ Ξϯτ(্ྲྀ)͔ΒӅṭ͢Δ΋ͷ ※ʮܕͷӅṭʹ͍ͭͯߟ͑Δ͜ͱͷҙٛʯΈ͍ͨͳͷ͸ɺ͜ͷઅͰ ཱͪࢭ·Βͣʹ࣍અ(ڞ௨ੑͱՄมੑ)Λཧղ͢Δํ͕ڞײͰ͖ͦ͏

Slide 32

Slide 32 text

ڞ௨ੑ/Մมੑ • ڞ௨ੑ/Մมੑ෼ੳ: ڞ௨ੑͱՄมੑΛ෼ੳʹΑͬͯൃݟ͢Δ • ྲྀಈతཁૉ => Մมੑ • ඇྲྀಈతཁૉ => ڞ௨ੑ • ڞ௨ੑΛ͍࣋ͬͯΔཁૉ: ϑΝϛϦ • ڞ௨ੑ(ϑΝϛϦ)͸֓೦্ͷ؍఺ΛɺՄมੑ(ϑΝϛϦߏ੒һ) ͸࣮૷্ͷ؍఺ʹؔ࿈͢Δ

Slide 33

Slide 33 text

;Θ;Θͨ͠ྫ • ʮຯḩϥʔϝϯʯʮে༉ϥʔϝϯʯʮಲࠎϥʔϝϯʯʮਏ ຯḩϥʔϝϯʯʮւଽνϟʔγϡʔϥʔϝϯʯʮে༉ϥʔ ϝϯʯͱ͍ͬͨΦϒδΣΫτ͕ɺͱ͋ΔγεςϜͷ࣮૷ʹ ඞཁͩͬͨͱ͠·͢ • ͜ͷதͰɺʮօ͕͍࣋ͬͯΔ΋ͷʯʮօ͕͍࣋ͬͯΔ͕಺ ༰͕ҟͳΔ΋ͷʯΛߟ͑ΔͷͰ͢

Slide 34

Slide 34 text

;Θ;Θͨ͠ྫ • ͜ΕΒͷʮશͯʯʹؚ·ΕΔ΋ͷ͸ʁ • ໙Λ࣋ͭ • εʔϓΛ࣋ͭ • ثΛ࣋ͭ • τοϐϯάΛ࣋ͭ • ඒຯ͍͠ • ͜ΕΒͷʮࠩ෼͕͋Δʯ΋ͷ͸ʁ • εʔϓ • τοϐϯά

Slide 35

Slide 35 text

;Θ;Θͨ͠ྫ • ڞ௨ੑʹண໨ͯ͠ʮϑΝϛϦ: ϥʔϝϯʯ͕ߏ੒͞ΕΔ • ϥʔϝϯͱ͍͏֓೦͕ੜ·ΕΔ • ্ख͍͚͘͹ίϨ͸ͦͷ··ʮυϝΠϯʯʹͳΔ • ্ख͍͚͘͹ίϨ͸ͦͷ··ʮந৅(Ϋϥε)ʯʹͳΔ • ʮεʔϓʯʮτοϐϯάʯ͸ɺʮϝϯόͱͳΔ͕಺༰͕ҟͳ Δʯ΋ͷͰʮՄมύϥϝʔλʯͱݺ͹ΕΔ • ڞ௨ੑ͸ɺϑΝϛϦ಺ͷ͢΂ͯͷߏ੒һʹରͯ͠ʮਅʯͱͳΔ • ͜͜ΛޡΔͱʮྑ͍ந৅ԽʯʹࢸΒͳ͍

Slide 36

Slide 36 text

;Θ;Θͨ͠ྫ • ໙ͷߗ͞ͱ͔ྔͱ͔ҧΘͶʁͬͯ͜ͱ͸Մมੑʁ • ͦ͜Βล͕มΘͬͯ΋ে༉ϥʔϝϯ͸ে༉ϥʔϝϯͳײ͡ • Ramen::$menϝϯόʔʹMenΠϯελϯεΛ࣋ͨͤͪΌ͏ͳͲ • ͳ͓Ramenʹ໙ͷදݱΛʮ໙ͷྔʯͰ࣋ͨͤΔͱਏ͘ͳΔ • ৼΔ෣͍෇͖ͷΦϒδΣΫτʹ͓͚ͯ͠͹ʮϥʔϝϯυϝΠϯʯʹର͠ ͯʮ໙αϒυϝΠϯʯͷ஌ࣝΛ੾Γ཭ͤΔՄೳੑ • νϟʔγϡʔ໙͕ʮνϟʔγϡʔτοϐϯάͷে༉ϥʔϝϯʯ͔͸෼͔ΒΜ • ʮঢ়ଶʯͱͯ͠දݱ͢Δ͔ʮΦϒδΣΫτʯͱͯ͠දݱ͢Δ͔͸ઃܭ࣍ୈ • (ͦ΋ͦ΋ʮϥʔϝϯʯͰ୯Ұ(۩৅)ΫϥεͰࡁΉՄೳੑ΋͋Δ

Slide 37

Slide 37 text

;Θ;Θͨ͠ྫ • શͯͷϥʔϝϯͨͪ͸ʮϑΝϛϦߏ੒һʯͱͳΔ • ʮಉ͡ϑΝϛϦʯͷதͰɺߏ੒һΛݸผԽ͢Δͷ͸ʮՄมੑͷத਎ʯ • ʮεʔϓ(Մมύϥϝʔλ) = ຯḩʯͰʮ ຯḩϥʔϝϯʯΈ͍ͨͳ • ՄมੑʹΑͬͯɺϑΝϛϦͷதͷ͢΂ͯͷߏ੒һ͕දݱͰ͖Δ(͢΂ͯͷߏ੒һΛ໢ ཏ͢Δ)͔ʁ • ʮثʹ໙ͱεʔϓ͕ೖ͍ͬͯͯτοϐϯά͕৐͍ͬͯͯඒຯ͍͠ʯͱͨ͠Βɺ ϥʔϝϯͱݴ͑ΔʁϑΝϛϦΛఆٛ͢Δ(ͦͷϑΝϛϦͨΒ͠Ί͍ͯΔ)΋ͷ͸ʁ • ʮՄมੑͰઆ໌͕͔ͭͳ͍ߏ੒һʯ΍ʮҰ෦ͷߏ੒һͷͨΊ͚ͩͷՄมੑʯͳͲ • ِͰ͋Δ৔߹ɺޡͬͨؔ࿈෇͚(෼ྨʹಉ͡ϑΝϛϦͱΈͳ͢)͕ߦΘΕ͍ͯΔՄ ೳੑ͕͋Δ => ௿ڽू

Slide 38

Slide 38 text

ͳͥʮ֓೦ʯతʹߟ͑΍͘͢ͳΔͷ͔ʁ • චऀͷओு • ैདྷతͳʮ໊ࢺͱಈࢺΛநग़͠ɺΦϒδΣΫτΛ࡞Δʯ ͱ͍͏Ξϓϩʔν͸ʮਂ͍Ϋϥε֊૚͕࡞ΒΕͯ͠·͍ ͕ͪʯ • ڞ௨ੑ/Մมੑʹ஫໨͢Δͱʮڞ௨͢Δ֓೦ʹ͓͚Δྲྀಈ తཁૉʯ͕ݦΕ΍͘͢ͳΔ

Slide 39

Slide 39 text

ͳͥʮ֓೦ʯతʹߟ͑΍͘͢ͳΔͷ͔ʁ • Ͳ͜ʹมԽ͕͋Δͷ͔ʁ • CoplienͷΞϓϩʔν΋ʮ࠷ॳʹυϝΠϯࣙॻΛ࡞Δʯ͜ͱ ͔ΒೖΔͷͰɺͦ͜͸ࣅ͍ͯΔͱ΋ݴ͑Δ • ͦͷޙʹʮڞ௨ੑɾՄมੑΛݟ͚ͭΔʯͱ͍͏෼ੳ޻ఔ͕ೖ Δ఺ • ͜͜Ͱந৅Խ = ֓೦্ͷ؍఺͔Βͷ࠶੔ཧ͕ߦΘΕΔ • ऄ଍: ෼ੳͷࡍʹ͸ڞ௨ੑͱՄมੑ͸ʮಉ࣌ʹߟ͑Δʯͷ͕Φ εεϝ(by Coplien)

Slide 40

Slide 40 text

ͳͥʮ֓೦ʯతʹߟ͑΍͘͢ͳΔͷ͔ʁ • ʮഅ͸૸ΓɺӉ஦ધ͸ඈͿʯͱ͍͏৘ใ͔Β • ʮ৐Γ෺͸ҠಈखஈΛ࣋ͭʯͱ͍͏ந৅ԽΛߦ͏ • ʮҠಈखஈ͸৐Γ෺ʹΑΓҟͳΔʯͱ͍͏ࠩ෼ͷఆٛΛߦ͏ • walk/flyϝιουΛఆٛ͢ΔͷͰ͸ͳ͘ɺந৅ϝιουmove͕ ൃ૝͞Εͦ͏ • ந৅-ଟ༷ͷੈք؍ʹΞϓϩʔν͠΍͍͢ • ʮ۩৅͕ݻ༗ͷೳྗΛ࣋ͭʯͷͰ͸ͳ͘ʮந৅ͷՄมੑΛ࣋ ͭʯͱ͍͏؍఺

Slide 41

Slide 41 text

ʮྲྀಈੑʹண໨͢Δʯ͜ͱͷϙΠϯτ • ΍Γ͍ͨ͜ͱ͸ʮมΘΓʹ͍͘෦෼ʯΛʮมΘΓ΍͍͢෦ ෼ʯ͔Βอޢ͢Δ͜ͱ • มΘΓ΍͍͢ = όϦΤʔγϣϯ͕͋Δɺ͕࣌ؒܦͭͱ෗Δ • ੾Γ཭͓ͯ͘͜͠ͱͰɺʮ࠶ઃܭ͕ඞཁͳ͍ʯίʔυΛੜ Έ΍͘͢ͳΔ • ʮྲྀಈੑ(Մมੑ)ʯΛʮಛԽʯͰɺʮ҆ఆͨ͠෦෼(ڞ௨ ੑ)ʯΛʮந৅ʯ΁͍࣋ͬͯ͜͏ͱ͍͏ൃ૝ • ৄࡉͳʮࠩ෼ʯΛࣺ૾ͯ͠ʮ֓೦ʯϨϕϧͰϞσϦϯά͢Δ

Slide 42

Slide 42 text

事前設計 vs 適応的な開発 8.6 アジャイル開発における品質

Slide 43

Slide 43 text

ΞδϟΠϧͱσβύλ͸஥ѱ͍ͷʁ • ͦΜͳίτͳ͍Αʂʂ • σβΠϯύλʔϯ͸ʮࣄલͷઃܭʯͱݺ͹ΕΔ͜ͱ΋͋Δ • ʮΧλϩά͔ΒબΜͰιϑτ΢ΣΞΛ૊ΈཱͯΔʯతͳ • ଞํͰΞδϟΠϧ͸ʮแׅతͳυΩϡϝϯτΑΓ΋ಈ͘ι ϑτ΢ΣΞΛʯ • ʮࣄલͷઃܭΛߦΘͳ͍Α͏ʹઆ͘΋ͷʯͳͷ͔ʁ

Slide 44

Slide 44 text

ιϑτ΢ΣΞͷ඼࣭ • GoF͸ʮ࠶ઃܭΛߦΘͳͯ͘ࡁΉΑ͏ʹʯɺΞδϟΠϧ͸ ʮదԠతͳ։ൃΛଓ͚͍ͯ͘ʯ͜ͱͰɺιϑτ΢ΣΞͷՁ ஋ΛߴΊΑ͏ͱ͢Δ • ྆ऀ͸ಉ༷ͷ඼࣭ΛٻΊ͍ͯΔ(ͱචऀ͸ؾ෇͘) • ௿͍৑௕ੑɺՄಡੑɺςετՄೳੑ • ※͜͜Ͱݴ͍ͬͯΔͷ͸XP(ͷٕज़తϓϥΫςΟε)