Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FizzBuzzで学ぶOCP
Search
Nokogiri
December 24, 2023
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FizzBuzzで学ぶOCP
Nokogiri
December 24, 2023
More Decks by Nokogiri
See All by Nokogiri
Zustandを用いた実践的状態管理
undefined_name
3
920
React Testing Libraryでの WAI-ARIAロールの活用事例
undefined_name
1
220
自動テストは何の役に立つのか そして役に立たないのか
undefined_name
5
1.8k
Pipe Operator (|>) の紹介
undefined_name
2
410
エンジニアとQAでコラボするフロントエンドリアーキテクチャ開発の事例
undefined_name
4
3.2k
オブジェクト指向のプラクティスをフロントエンドで活用する
undefined_name
7
1.8k
モププロ@kintone開発チーム
undefined_name
1
670
勉強会で登壇者に 質問しづらい課題を解決する サービスをリリースしました🎉
undefined_name
2
1.4k
Usefull GitLens
undefined_name
3
920
Other Decks in Technology
See All in Technology
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
160
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.5k
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
6
2.8k
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
190
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
250
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
160
Spring BootからQuarkusへの移行
tatsuya1bm
2
120
20260912_スクラムにジェネラリストは必要か
ryugen04
0
420
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
1
230
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
110
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
368
27k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
GraphQLとの向き合い方2022年版
quramy
50
15k
Designing for humans not robots
tammielis
254
26k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Technical Leadership for Architectural Decision Making
baasie
3
570
Designing for Timeless Needs
cassininazir
1
480
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Transcript
FizzBuzzͰֶͿOCP Reboot kansai.ts #4 2023/11/22 Nokogiri
Nokogiri(@nkgrnkgr) αΠϘζגࣜձࣾ | ϑϩϯτΤϯυΤϯδχΞ KintoneͷϑϩϯτΤϯυͷج൫৽ϓϩδΣΫτͰ ϑϩϯτΤϯυΤϯδχΞΛ͍ͯ͠·͢ɻ ϙέϞϯରઓΨνʢϙέιϧͷμϝܭࢉπʔϧͷ։ ൃʣɺೋࣇͷ
FizzBuzzͱʁ • ϓϩάϥϛϯάͨ͜͠ͱ͕͋ΔਓͳΒҰฉ͍ͨ͜ͱ͕͋Δݴ༿༡ ͼͰ͢ɻ • ྫʣ̏ͷഒͰ Fizzɺ̑ͷഒͰBuzzɺ̏ͱ̑ͷഒͷͱ͖ʹ FizzBuzzͱ͍͏ • ϓϩάϥϛϯάͷ࿅शͱͯ͠Α͘ΘΕ·͢ɻ
• ࠓ͜ͷFizzBuzzΛͬͯOCPʹ͍ͭͯઆ໌͠·͢ɻ
OCPͬͯͳʹʁ • ΦϒδΣΫτࢦͷݪଇ SOLIDͷҰ෦ • ։์ดݪଇOpen Closed PrincipleʢOCPʣͷུ • ֦ுʹରͯ͠Φʔϓϯ
• มߋʹରͯ͠Ϋϩʔζυ
γϯϓϧͳ 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 ͦΕҎ֎ͷ߹"" Λฦ͢
͜Ε༷ͬͯมߋʹڧ͍ʁ
͜Ε༷ͬͯมߋʹڧ͍ʁ • ഒ̏̑Ͱͳ͍͔͠Εͳ͍ʁ • ϧʔϧՃ͞ΕΔ͔͠Εͳ͍ʁ • ฦ͢จࣈྻʮFizzʯʮBuzzʯ ͔ΒʮΘΜʯʮʹΌΜʯʹมΘΔ͔ʁ → ͜ͷͨͼʹ
fi zzBuzzؔΛमਖ਼͢Δͷෆ۩ ߹ͷݪҼʹͳΔͷͰʁ
༷ͷຊ࣭ // 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 // ͱදࣔ͢Δ 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: దԠ͞ΕΔ ϧʔϧͱॱ൪Λදݱ͢Δ
ίʔυҊ // 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ʹӨڹ Λ༩͑ͳ͍ɻมߋରͷϧʔ ϧͷΈमਖ਼Ͱ͖Δ
·ͱΊ • ίʔυͷຊ࣭తͳ༷ʹணͯ͠Ͳ͕֦͜ுɾมߋ͞Ε͍͢ͷ͔ߟ ͑Δ • FizzBuzzαϯϓϧͰ͍ΖΜͳॲཧʹԠ༻Մೳ • ྫʣೖྗͷHTML/JSON/Text ʹ߹ΘͤͯύʔαʔͷॲཧΛΓସ͑ Δ
• ༷ͷՃɾมߋ͕ϝΠϯͷॲཧʹӨڹΛ༩͑ͳ͍Α͏ʹ͢Δͷ͕େ ࣄ
αΠϘζͰΤϯδχΞΛืू͍ͯ͠·͢ʂ
͝ࢼௌ͋Γ͕ͱ͏͍͟͝·ͨ͠😊