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
技術同人誌をMCP Serverにしてみた
74th
1
660
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
5
1.1k
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1k
Goで作る、開発・CI環境
sin392
0
240
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
270
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
180
#QiitaBash MCPのセキュリティ
ryosukedtomita
1
1.4k
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
300
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
160
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Embracing the Ebb and Flow
colly
86
4.7k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Docker and Python
trallard
44
3.5k
What's in a price? How to price your products and services
michaelherold
246
12k
Side Projects
sachag
455
42k
Faster Mobile Websites
deanohume
307
31k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
970
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Bash Introduction
62gerente
613
210k
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 ແͳਓΛ૬खʹࣝ֨ࠩΛചΔࣄʹ ͳͬͯ͠·͏ˠ"*ʹک͑ଓ͚Δ ͜͠ΜͳձࣾͩͬͨΒʜຊʹೖΓ͍ͨ
ੈلͷιϑτΣΞΤϯδχΞͱͯ͠ྑ͍ΩϟϦΞΛ ఏڙ