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.6k
ちょうぜつ改め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
210
哲学史とモデリング
tanakahisateru
4
860
オブジェクト指向宗教史
tanakahisateru
32
18k
ほげ言語にあってPHPにない機能
tanakahisateru
6
3.4k
君たちはどうプログラミングするか
tanakahisateru
16
2.8k
デバッグ用ロガーの注入どうする?
tanakahisateru
2
650
アンドキュメンテッド ちょうぜつソフトウェア 設計入門 「オブジェクト指向に定義はない」のか?
tanakahisateru
25
9.7k
まんがのかきかた
tanakahisateru
8
730
10秒で衝突するUUIDの作り方
tanakahisateru
40
41k
Other Decks in Programming
See All in Programming
AI Agent 時代的開發者生存指南
eddie
4
2.1k
Webサーバーサイド言語としてのRustについて
kouyuume
1
4.2k
あなたとKaigi on Rails / Kaigi on Rails + You
shimoju
0
180
iOSでSVG画像を扱う
kishikawakatsumi
0
160
Catch Up: Go Style Guide Update
andpad
0
240
What's new in Spring Modulith?
olivergierke
1
160
理論と実務のギャップを超える
eycjur
0
170
Flutterで分数(Fraction)を表示する方法
koukimiura
0
140
Go言語はstack overflowの夢を見るか?
logica0419
0
520
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
320
Pythonに漸進的に型をつける
nealle
1
110
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
410
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
A better future with KSS
kneath
239
18k
Making Projects Easy
brettharned
120
6.4k
Six Lessons from altMBA
skipperchong
29
4k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Faster Mobile Websites
deanohume
310
31k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Scaling GitHub
holman
463
140k
Designing for Performance
lara
610
69k
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 ແͳਓΛ૬खʹࣝ֨ࠩΛചΔࣄʹ ͳͬͯ͠·͏ˠ"*ʹک͑ଓ͚Δ ͜͠ΜͳձࣾͩͬͨΒʜຊʹೖΓ͍ͨ
ੈلͷιϑτΣΞΤϯδχΞͱͯ͠ྑ͍ΩϟϦΞΛ ఏڙ