Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ちょうぜつ改め21世紀ふつうのソフトウェア設計
Search
Hisateru Tanaka
January 25, 2023
Programming
14
8.5k
ちょうぜつ改め21世紀ふつうのソフトウェア設計
Forkwell Library #14 2023.1.25 のスライドです。
https://forkwell.connpass.com/event/271212/
Hisateru Tanaka
January 25, 2023
Tweet
Share
More Decks by Hisateru Tanaka
See All by Hisateru Tanaka
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
2
200
哲学史とモデリング
tanakahisateru
4
820
オブジェクト指向宗教史
tanakahisateru
32
17k
ほげ言語にあってPHPにない機能
tanakahisateru
6
3.3k
君たちはどうプログラミングするか
tanakahisateru
16
2.7k
デバッグ用ロガーの注入どうする?
tanakahisateru
2
630
アンドキュメンテッド ちょうぜつソフトウェア 設計入門 「オブジェクト指向に定義はない」のか?
tanakahisateru
25
9.6k
まんがのかきかた
tanakahisateru
8
720
10秒で衝突するUUIDの作り方
tanakahisateru
40
40k
Other Decks in Programming
See All in Programming
GPUを計算資源として使おう!
primenumber
1
170
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
930
PicoRuby on Rails
makicamel
2
130
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
410
生成AI時代のコンポーネントライブラリの作り方
touyou
1
250
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.7k
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
180
Goで作る、開発・CI環境
sin392
0
240
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
940
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
120
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.2k
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
660
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
77
9.5k
A Tale of Four Properties
chriscoyier
160
23k
Gamification - CAS2011
davidbonilla
81
5.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
970
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
A better future with KSS
kneath
238
17k
Making Projects Easy
brettharned
116
6.3k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Designing for Performance
lara
610
69k
Docker and Python
trallard
44
3.5k
Code Review Best Practice
trishagee
69
19k
Transcript
ͪΐ͏ͥͭվΊੈل;ͭ ͏ͷιϑτΣΞઃܭೖ
w ओʹ1)1Λ͓ͬͯࣄͯ͠·͢ w ͪΐ͏ͥͭΤϯδχΞΊΓʔͪ ΌΜ w ͷʹຊ͕ग़·ͨ͠ ాதͻͯ͞Δ
ੈلͷίϯϐϡʔλʔ Մಈ෦ͳ͠ܭࢉػͷੜ &/*"$
ੈلͷίϯϐϡʔλʔ τϥϯδελूੵԽˠιϑτΣΞͷෳࡶԽ 4ZTUFN
w ޙʹΥʔλʔϑΥʔϧͱ ݺΕΔΑ͏ʹͳͬͨͷ w ͏ਓݶΒΕΔˠΓͨ ͍͜ͱ͔͕ͨΕ͍ͯΔ w ओߴՁ͗͢Δϋʔυ ΣΞΛແବͳ͑͘Δ͔ w
ઃܭ༧ଌՄೳɻϓϩάϥ ϛϯάҎલʹਓ͕ؒۤ࿑͢ Δํ͕Α͍݁ՌΛੜΉ ࣌ͷ;ͭ͏ ΉΛ͑ͣ IUUQXXXTDGVTDFEVdDTDJMFDUVSFT-FDUVSFSPZDFQEG
w ࣮4ZTUFNͷ։ൃޙه ग़൛ w ϒϧοΫεͷ๏ଇʮޙఔͷ૿ һੜ࢈ੑΛԼ͛Δʯ w ιϑτΣΞʹରͯ͠ʮΞʔΩς Ϋνϟʯͱ͍͏ݴ༿ΛॳΊͯ༻
w ʮ֎Պखज़νʔϜʯͷൺᄻ w ͳͥ͜͏ͳΒͳ͔ͬͨͷ͔ ਓ݄ͷਆ ;ͭ͏ʹͳΔ͖ͩͬͨ͜ͱ
w ͲΕ͚ͩେ͖ͯ͘ڧ͍ͷΛ࡞ΕΔ͔ w ࡞ΔͨΊͷ৫ΛͲΕ͚ͩେ͖͘Ͱ͖Δ͔ w ৫ϐϥϛου֊ʹΑΔେنԽ w ্ͷΠϯςϦগͰࡁΉ w Լຌ༱ͳ࿑ಇऀΛޏ͏͖
w ࿑ಇऀϚχϡΞϧ௨Γਖ਼֬ʹಈ͘ػց Μ ͳʹ͔ົͩͧʜ ੈل·Ͱʹൃୡͨ͠ࢥ
ੈلͷίϯϐϡʔλʔ ύʔιφϧίϯϐϡʔλʔͷ͡·Γ "QQMF*
ੈلͷίϯϐϡʔλʔ શਓྨنͷύʔιφϧίϯϐϡʔλʔීٴ /&4
ϜʔΞͷ๏ଇ࢝·͍ͬͯͨ ܭࢉػͷूੵͰഒҎ্ʹ
;ͭ͏ͷײ͕֮มΘͬͨ ശϞϊͱίϯϐϡʔλʔͷҧ͍ ࢢൢιϑτΣΞ
w ߴߍੜͷύιίϯগ w ిλμ͕͚ϋοΧʔ w ΦϯϥΠϯͷύιίϯήʔϜͩͱ ࢥ͍ͬͯͨͷ͕/03"% Ξ ϝϦΧߤۭӉӴ࢘ྩ෦ ͷγ
εςϜͩͬͨ w "QQMF*͔Βͱܦͨͣʹɺ ͜Μͳөը͕ʮΘ͔Δʙʯͱ έΔ࣌ʹ 8BS(BNFT ύιίϯগWT֩ཧγεςϜ
ੈلͷίϯϐϡʔλʔ ύιίϯͱຊ֨తͳίϯϐϡʔλʔͷڥ͕ͳ͘ͳΔ 8JOEPXT
w 8JOEPXTରԠɺ1$"5ޓͷσό Πεɻཧ͕ΞʔΩςΫνϟʹґଘ w ػցͷݴޠͰϓϩάϥϛϯά͠ͳ͘ ͯΤΫηϧͰՁͳܭࢉ͕Ͱ͖Δ w ΤϯυϢʔβʔίϯϐϡʔςΟϯ ά8:4*8:(1MVH1MBZ w
ιϑτΣΞϋʔυΣΞʹର͠ ͯΧϦΧϦʹ࠷దԽ͢ΔΑΓɺແବ ͕͋ͬͯਓ͕͍ؒ͘͢ ͬͱΤΩαΠςΟϯάͳ࣌ ੈքιϑτΣΞͷ࣌
ͱ͜Ζ͕ιϑτΣΞ։ൃʜ ॏްͳϓϩδΣΫτཧɾϛυϧΣΞͷංେԽ ʮιϑτΣΞͷ࣌ʯͬͯͦ͏͍͏͜ͱͳΜʜ
w ਓͷࢥߟͭͶʹݱ࣮͔ΒԿ ͔ΕΔ w ถ܉͜Ε͕͍͍ͱݴͬͯͨ ͡Όͳ͍͔ w ύιίϯήʔϜػͳΜͯຊ ͷίϯϐϡʔλʔ͡Όͳ͍ Μ
w େاۀϚωʔ͕ܦࡁ্ࢧత ͳͷݱ࣮Ͱ͋ͬͨΑͶʜ લ࣌తͳࢥ͍ࠐΈ͕ͨ͠ʮ͋ͬͯ΄͍͠ܗʯ ͍·ͩ߹ͷྑ͔ͬͨϞσϧ ͑Β͍ ୭ͰͰ͖Δ ͣͳΜͩ ͜ͱʹͳͬͯΔ
w σβΠϯύλʔϯΦϒδΣΫτࢦͷ࠶ w &OUFSQSJTF+BWB#FBOTˠܰշͳ+BWB 10+0 w Φʔϓϯιʔε-".1 -JOVY"QBDIF.Z42-1)1
w ϙʔϧɾάϨΞϜʮϋοΧʔͱըՈʯz#FBUJOH5IF"WFSBHFTz w 91ΤΫετϦʔϜɾϓϩάϥϛϯά 5%%෮গਫ਼Ӷ w ΞδϟΠϧιϑτΣΞ։ൃએݴ ैདྷܕιϑτΣΞ։ൃͷΞϯνςʔθ ੈل͔Βੈل
ੈلͷίϯϐϡʔλʔ ମͷҰ෦ɾຊ࣭ΫϥυαʔϏε
ιϑτΣΞ։ൃͷൺॏ ʮϞϊͷѻ͍ʯ͕εΩϧɻ ͲΕ͚ͩଟ͘ͷఆܕతͳ ૢ࡞͕಄ʹೖ͍ͬͯΔ͔ɻ ʮͲΜͳαʔϏε͕ศར͔ʯ ͱ͍͏͑ͷͳ͍͕ ιϑτΣΞ։ൃͷओʹɻ ίϯϐϡʔλʔݸਓͰ͏ಓ۩ ઐΦϖϨʔλʔ͕ඞཁ ੈل
ੈل
͚ΕͲٕज़͘͠ͳ͍ͬͯΔͷͰ ΑΓෳࡶͰେ͖ͳߏΛͲ͏ͬͯ࡞Δͷ͔
ͦͦڊେϞϊϦε͕ ͏͓ͯ͠Δͷ͡Ό
w ʮΦϯαΠτސ٬ʯͱʮϖΞϓϩάϥϛϯάʯͷ݁ w ςετۦಈ։ൃ͕ݪଇ 91ϚωδϝϯτͰͳ͍ w 5%%҉ʹʮ୯ମςετՄೳͳཻͷղ͕લఏʯΛҙ ຯ͍ͯ͠Δˠ࠷ॳʹ࡞ΒΕͨͷ46OJU 4NBMMUBML༻
ͩΑ w ΦϒδΣΫτࢦͱͱʮখ͞ͳܭࢉػ͕ϝοηʔδΛհ͠ ͯωοτϫʔΫΛͨ͠࠶ؼతߏʯΈ͍ͨͳҙຯͩͬͨ w ࠓͰݴ͏ϚΠΫϩαʔϏε ଏʹݴ͏ϞδϡϥϞϊϦε 91 ݩΞδϟΠϧ
ΞδϟΠϧখنϓϩδΣΫ τ༻ͷํ๏ͱݴΘΕ͕ͨʜ
ׂɾ෮ɾ෦ςετɾࣗݾ݁ ΑΓεέʔϦϯά༨͕͋ΔͷͲͪΒͰ͠ΐ͏ ։ൃऀ͕ϢʔβʔͰ͋ΔΑ
ઃܭ༧ଌՄೳͳػցͷ͔Β ༧ଌෆೳͳਓͷʹͳ͍ͬͯΔ ͪͳΈʹ͜ΕͷϩΠεจͷ݁ͷਤͰ͢ IUUQXXXTDGVTDFEVdDTDJMFDUVSFT-FDUVSFSPZDFQEG
ϢʔβʔχʔζͷॊೈੑΛࢧ͑Δ ͔ͬ͠Γͨ͠ΞʔΩςΫνϟ
ιϑτΣΞઃܭࣗసंͷ྆ྠ ͲͪΒ͕͚ܽͯ͏·͘Βͳ͍ υϝΠϯϞσϧ গ͖ͮͭ͠Λม͑ΒΕΔ ΞʔΩςΫνϟ ࣗసंલʹਐΉ͔ΒΕͳ͍ ΠςϨʔγϣϯ υϝΠϯ ސ٬͕ຊʹཉ͔ͬͨ͠ͷ 🤔
֤ιϑτΣΞʹݻ༗ͷ ॏཁ͕ͩڞ௨ͨ͠ҰൠԽͰ͖ͳ͍ Ͳ͏ͬͯεΩϧΛ্ୡͤ͞Εʜ ˠ෮܇࿅͔͠ͳ͍ ཁ݅ఆٛʹख़࿅͕ඞཁ ϓϩδΣΫτͷதͰ෮Ͱ͢Α
ڞ௨ͨ͠جຊݪଇ͕͋ΔྖҬ ෮తͳ։ൃͷۦಈޮΛߴΊΔํ๏ ूத͖͢Λখ͘͞ด͡ΒΕΔ࡞Γ ߴʹςετۦಈΛճͤΔ ˠྑ͍ઃܭͷൃݟνϟϯεΛ૿ͯ͠ҭͯΔ
ઃܭೖ͗͜ग़ͤΓΌͳΜͱ͔ͳΔ ৄ͍ٕ͠๏ຊͷதͰʜ
ʮ·ͣΦϒδΣΫτࢦ ΛཧղͤΑʯ/( ਖ਼͍͠ํ๏͑͋͞Εԋ៷తʹਖ਼͍͠ࣄʹͳΔͷݬ ॊೈੑΛࢧ͑ΔݸʑͷΛ௨ͯ͡ઌਓͷҙਤΛೝࣝ͢͠ ʮΦϒδΣΫτࢦͷ׆༻ʯͬͯʜ ͲΜͳ͜ͱ͕ॻ͍ͯ͋Δຊͳͷʁ
w ͝ΖΞϥϯɾέΠ͕ݴ͍ग़ͨ͠Β͍͠ w 4JNVMBΛ͍ͳ͕Βࢥ͍͍ͭͯɺ4NBMMUBML ͰΞΠ σΞΛܗʹ͍ͯͬͨ͠ w ൴Ͱ͢ΒखΛಈ͔͠ͳ͕Β௫Μͩײ֮Λɺઆ໌͚ͩͰΘ͔ͬͨΑ͏ ͳؾʹͳΕΔͷͩΖ͏͔
ͦͷޙΑΓෳࡶͳࣄΛ๊͑ͨͷʹ w ؆୯ͳݴ༿ σʔλܕʹϝιου͕ੜ͍͑ͯΔͱศར ͰΘ͔ͬͨ ؾʹͤ͞ΔݴઆΛ৴͡ΒΕΔͩΖ͏͔ w ʮਓ݄ͷਆʯୈ̎൛ʙ ʹຊ֨తʹ࠶͞ Εɺ౫ଡ͞Εͣੈلʹੜ͖ͬͨϓϥΫςΟεͷ࣮ફ͕ઌ ΦϒδΣΫτࢦ͚ͩΘ͔Δͳ͍
τϨϯυٕज़㱠࿑ಇࢿ֨ ΦϒδΣΫτࢦͰ͖·͢ ࣄΛΒ͑Δ
࿑ಇࢿ֨ͱରՁˠਓʹಧ͚ͨՁ ੈل ੈل 💰 💰 = ϓϩάϥϛϯάݴޠ ϑϨʔϜϫʔΫ"1* ͔͍͍ͬ͜ίʔσΟϯά ͕ܾ͑·͍ͬͯΔ͜ͱ
͑ͷͳ͍ ݱ࣮తͳՌ ίίͰ
w 7JBXFC #"4&Έ͍ͨͳͷ Λ-JTQ Ͱॻ͍ͨϙʔϧɾάϨΞϜͷຊ w ·ͩ8FC͕ϒϧʔΦʔγϟϯͩͬ ͨ࣌ɺͣൈ͚ٕͨज़͕Ξυόϯ ςʔδʹͳͬͯڝ߹Λग़͠ൈ͚ͨ w
ੈք࠷৽ٕज़ͱ༏लͳΤϯδχΞ Λͧͬͯ͜ٻΊΔΑ͏ʹͳͬͨ w ຊ࣭తʹ͍͍͜ͱॻ͍ͯ͋Δ͚ Ͳɺ۩ମ͏લͷՁ؍ ੈل͔Βੈلͷγϑτظ
w (PݴޠͷίʔυͰ͢ w ͜Μͳίʔυهड़͕Ͱ͖Δ͜ͱΛ͝ଘͰ͔ͨ͠ʁ w ͜ͷߦ͍͍ͬͨԿΛ͍ͯ͠ΔͰ͠ΐ͏͔ w ࢲͲ͏ͬͯ͜ͷίʔυΛॻ͍ͨͰ͠ΐ͏͔ ಥવͰ͕͢ΫΠζͰ͢
ͨ͑͜"*ʹྻΛٯʹ͢Δํ๏Λฉ͍ͨ طͷΞΠσΞͳΒจ๏Τϥʔͷͳ͍ίʔυΛ͙͢ग़ͤΔ
ͬͱߴͳ͜ͱฉ͍ͯΈͨ ʮ%PDLFSͰ8PSE1SFTTΓ͍ͨʯ
͕͢͞ʹ͜ΕΒͳ͍ͩΖʜ 1ZUIPOͷϨτϩήʔϜΤϯδϯͩͥ ͍͍ͦͦ݁͜͜Ռग़ͯ͘͠Δ͡ΌͶʔ͔ʜ
͏͙͢͜Ε͕ʮී௨ͷ ͭΒʯʹͳΔΜͰ͠ΐ ୭ΑΓૣ͘࠷৽ٕज़ͷ͍ํΛϚελʔ͢Δ͚ͩͰɺ ͜Ε·ͰͷΞυόϯςʔδʹͳΒͳ͍ʜ ϋοΧʔͱըՈͷʮී௨ͷ্ʯผͷͱ͜Ζʹγϑτͨ͠
ϋοΧʔըՈʜ ಉ͡ඨͰڝ͍߹͏૬ख͡Όͳ͍Α͜Μͳͷ IUUQTXXXDIJDIJQVJDPN
ԼखͰ͍ͭ͜Β͕࡞Εͳ͍ ϢχʔΫͳՁΛ࡞ΕΔ͔͕ উෛͳͷͰ͢ ݴ͍༁
࠶ ࿑ಇࢿ֨ͱରՁˠਓʹಧ͚ͨՁ ී௨ ҎԼͷੈلత࿑ಇ WTී௨ ੈلͷৗࣝײ
ඞਢεΩϧ+BWB։ൃܦݧ ʢҎ্ʣ🤔 ͜͏͍͏ͷͬͯɺٕज़ͷ͍ํΛٻΊΒΕ͍ͯΔͷͰ Ͱʜ
ސ٬͕ຊʹཉ͔ͬͨ͠ਓࡐ
w ڞ௨ͷޠኮ͕ͳ͍ͷͰܦݧԿͱ ͍͏ݴ͍ํʹͳͬͯ͠·͏ w ʮͷܦݧʯͱݴͬͨͱ͖ຊ ʹٻΊΒΕ͍ͯΔͷࣈͦͷ ͷͰͳ͍ w ʮจ๏"1*ͷࣝྔʯͰͳ ͘ɺͦΕΛͬͨʮղܾͷۤ
࿑ޭମݧʯͷ΄͏͕ཉ͍͠ ސ٬ͷઆ໌ͨ͠εΩϧཁ݅
w ͱʮӦۀͷઆ໌ʯͷֆ w ݴΘΕͨ͜ͱΑΓʮ͍͢͝ʯΛ ग़͢ͷ͕ചΓࠐΈͩͱࢥ͍ͬͯΔ w ͚͢͝Ε͍͢͝΄Ͳɺ͓ۚΛͨ ͘͞ΜΒ͑Δʹ͕͍ͪͳ͍ͱ͍ ͬͨࡨ֮ w
૬खͷؾ࣋ͪΛߟ͑ͯΈ ͕ۚཉ͍͠ΤϯδχΞͷࣗݾΞϐʔϧ
w ຊૉʹ͜ΕΛࢥ͍͚Δਓ͕ ٻΊ͍ͯΔͷͩͱͨ͠Βʜ w ͢Ͱʹ৫ʮͪΐ͏Ͳ͍͍ιϑτ ΣΞʯΛΘ͔͍ͬͯΔ w ແବʹΦʔόʔεϖοΫ͞ΛΞϐͬ ͯͦΜͳਓࡐϚον͠ͳ͍ w
ʮ ݱͷ ;ͭ͏ʯΛͪΌΜͱͰ͖ Δਓࡐ͕͍͍ w ͜͏͍͏࠾༻͢ΔͳΒɺձࣾͱͯ͠ ͷͷͼ͠Ζ͋Γͦ͏ˠ༗ ސ٬͕ຊʹཉ͔ͬͨ͠ਓࡐ
ੈلͷ;ͭ͏ະຬ ·ͩ͜ͷײ֮ ੈلͷ;ͭ͏Ҏ্ ͬͪ͜ʹͳͬͯΔ ϨΠϠʔߴϨΠϠʔͱ͍͏Ͱͳ͍Ͱ͢ɻʮۂܳͦΕࣗମ͕ՁͰͳ͍ʯͷҙຯͰ͢
w ͠ϗϯτʹʮͰ͖Δਓ͕ଞʹ୭͍ͳ ͍͔Βʯͱ͍͏ཧ༝ͰɺݴΘΕͨͱ͓Γ ͷ࡞ۀΛͤ͞ΒΕΔࣄͩͬͨΒͲ͏͔ w ͍͘ΒεΩϧ͕͋ͬͯ͋·Γ׆͔ͤ ͣɺεϖοΫͷແବ w ༨࣮ͬͨྗཧղධՁ͞Εͣɺ۰ਾ
͑ஔ͖ɻΘ͔ͬͯΒ͑ͳ͍ݽಠײ w ͜ͷ࣌ͦΜͳΜ͡Όɺ͍͍͕࡞Ε ΔΘ͚ͳ͍ͷͰձࣾͷকདྷੑͳ͠ w ແͳਓΛ૬खʹࣝ֨ࠩΛചΔࣄʹ ͳͬͯ͠·͏ˠ"*ʹک͑ଓ͚Δ ͜͠ΜͳձࣾͩͬͨΒʜຊʹೖΓ͍ͨ
ੈلͷιϑτΣΞΤϯδχΞͱͯ͠ྑ͍ΩϟϦΞΛ ఏڙ