Slide 1

Slide 1 text

FizzBuzzͰֶͿOCP Reboot kansai.ts #4 2023/11/22 Nokogiri

Slide 2

Slide 2 text

Nokogiri(@nkgrnkgr) αΠϘ΢ζגࣜձࣾ | ϑϩϯτΤϯυΤϯδχΞ KintoneͷϑϩϯτΤϯυͷج൫࡮৽ϓϩδΣΫτͰ ϑϩϯτΤϯυΤϯδχΞΛ͍ͯ͠·͢ɻ ϙέϞϯରઓΨν੎ʢϙέιϧͷμϝܭࢉπʔϧͷ։ ൃʣɺೋࣇͷ෕

Slide 3

Slide 3 text

FizzBuzzͱ͸ʁ • ϓϩάϥϛϯάͨ͜͠ͱ͕͋ΔਓͳΒҰ౓͸ฉ͍ͨ͜ͱ͕͋Δݴ༿༡ ͼͰ͢ɻ • ྫʣ̏ͷഒ਺Ͱ Fizzɺ̑ͷഒ਺ͰBuzzɺ̏ͱ̑ͷഒ਺ͷͱ͖ʹ FizzBuzzͱ͍͏ • ϓϩάϥϛϯάͷ࿅शͱͯ͠Α͘࢖ΘΕ·͢ɻ • ࠓ೔͸͜ͷFizzBuzzΛ࢖ͬͯOCPʹ͍ͭͯઆ໌͠·͢ɻ

Slide 4

Slide 4 text

OCPͬͯͳʹʁ • ΦϒδΣΫτࢦ޲ͷݪଇ SOLIDͷҰ෦ • ։์ด࠯ݪଇOpen Closed PrincipleʢOCPʣͷུ • ֦ுʹରͯ͠Φʔϓϯ • มߋʹରͯ͠Ϋϩʔζυ

Slide 5

Slide 5 text

γϯϓϧͳ FizzBuzz // 3ͷഒ਺ͷ৔߹͸Fizz // 5ͷഒ਺ͷ৔߹͸Buzz // 3ͱ5ͷഒ਺ͷ৔߹͸FizzBuzz // ͱදࣔ͢Δ export const fizzBuzz = (num: number): string => { if (num % 3 === 0 && num % 5 === 0) { return "FizzBuzz"; } if (num % 3 === 0) { return "Fizz"; } if (num % 5 === 0) { return "Buzz"; } return ""; }; 3ͷഒ਺ͷ৔߹͸Fizz 5ͷഒ਺ͷ৔߹͸Buzz 3ͱ5ͷഒ਺ͷ৔߹͸FizzBuzz ͦΕҎ֎ͷ৔߹͸"" Λฦ͢

Slide 6

Slide 6 text

͜Εͬͯ࢓༷มߋʹڧ͍ʁ

Slide 7

Slide 7 text

͜Εͬͯ࢓༷มߋʹڧ͍ʁ • ഒ਺͸̏΍̑Ͱ͸ͳ͍͔΋͠Εͳ͍ʁ • ϧʔϧ͸௥Ճ͞ΕΔ͔΋͠Εͳ͍ʁ • ฦ͢จࣈྻ͸ʮFizzʯʮBuzzʯ ͔ΒʮΘΜʯʮʹΌΜʯʹมΘΔ͔΋ʁ → ͜ͷͨͼʹ fi zzBuzzؔ਺Λमਖ਼͢Δͷ͸ෆ۩ ߹ͷݪҼʹͳΔͷͰ͸ʁ

Slide 8

Slide 8 text

࢓༷ͷຊ࣭ // 3ͷഒ਺ͷ৔߹͸Fizz // 5ͷഒ਺ͷ৔߹͸Buzz // 3ͱ5ͷഒ਺ͷ৔߹͸FizzBuzz // ͱදࣔ͢Δ export const fizzBuzz = (num: number): string => { if (num % 3 === 0 && num % 5 === 0) { return "FizzBuzz"; } if (num % 3 === 0) { return "Fizz"; } if (num % 5 === 0) { return "Buzz"; } return ""; }; ੔਺Λೖྗ͢ΔͱจࣈྻΛฦ ͢ ೚ҙͷม׵ϧʔϧΛෳ਺ఆٛͰ ͖Δ ม׵ϧʔϧ͸ԿΒ͔ͷ൑ఆ৚݅ Λຬͨͨ͠ͱ͖ʹదԠ͞ΕΔ

Slide 9

Slide 9 text

֦ுʹରͯ͠Φʔϓϯ มߋʹରͯ͠Ϋϩʔζυ ʹͯ͠ΈΔ

Slide 10

Slide 10 text

ίʔυҊ // 3ͷഒ਺ͷ৔߹͸Fizz // 5ͷഒ਺ͷ৔߹͸Buzz // 3ͱ5ͷഒ਺ͷ৔߹͸FizzBuzz // ͱදࣔ͢Δ export const fizzBuzz = (num: number): string => { if (num % 3 === 0 && num % 5 === 0) { return "FizzBuzz"; } if (num % 3 === 0) { return "Fizz"; } if (num % 5 === 0) { return "Buzz"; } return ""; }; RuleΛ࡞Δ Matchɿೖྗʹ߹க͢Δ৚ ݅Λදݱ͢Δ apply: ৚݅ʹ߹கͨ͠৔߹ ͷॲཧΛදݱ͢Δ RULE_SETS: దԠ͞ΕΔ ϧʔϧͱॱ൪Λදݱ͢Δ

Slide 11

Slide 11 text

ίʔυҊ // 3ͷഒ਺ͷ৔߹͸Fizz // 5ͷഒ਺ͷ৔߹͸Buzz // 3ͱ5ͷഒ਺ͷ৔߹͸FizzBuzz // ͱදࣔ͢Δ export const fizzBuzz = (num: number): string => { if (num % 3 === 0 && num % 5 === 0) { return "FizzBuzz"; } if (num % 3 === 0) { return "Fizz"; } if (num % 5 === 0) { return "Buzz"; } return ""; }; ֦ுʹΦʔϓϯɿϧʔϧΛ௥ Ճ͢Δ৔߹͸৽͘͠ϧʔϧΛ ఆٛͯ͠RULE_STESʹ௥Ճ ͢Δ͚ͩ มߋʹΫϩʔζυɿϝΠϯͷ ॲཧͰ͋Δ fi zzBuzzʹ͸Өڹ Λ༩͑ͳ͍ɻมߋର৅ͷϧʔ ϧͷΈमਖ਼Ͱ͖Δ

Slide 12

Slide 12 text

·ͱΊ • ίʔυͷຊ࣭తͳ࢓༷ʹண໨ͯ͠Ͳ͕֦͜ுɾมߋ͞Ε΍͍͢ͷ͔ߟ ͑Δ • FizzBuzz͸αϯϓϧͰ͍ΖΜͳॲཧʹԠ༻Մೳ • ྫʣೖྗͷHTML/JSON/Text ʹ߹ΘͤͯύʔαʔͷॲཧΛ੾Γସ͑ Δ • ࢓༷ͷ௥Ճɾมߋ͕ϝΠϯͷॲཧʹӨڹΛ༩͑ͳ͍Α͏ʹ͢Δͷ͕େ ࣄ

Slide 13

Slide 13 text

αΠϘ΢ζͰ͸ΤϯδχΞΛืू͍ͯ͠·͢ʂ

Slide 14

Slide 14 text

͝ࢼௌ͋Γ͕ͱ͏͍͟͝·ͨ͠😊