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
ソフトウェア設計のすすめ
Search
Soichiro Yoshimura
September 27, 2023
Technology
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ソフトウェア設計のすすめ
社内LTでソフトウェア設計のすゝめを比較的新しいエンジニア向けにしたので、その資料を公開します。
----
slideshareより移行
Soichiro Yoshimura
September 27, 2023
More Decks by Soichiro Yoshimura
See All by Soichiro Yoshimura
プログラミング教育する大学、ZEN大学
sifue
1
760
いちソフトウェアエンジニアが プログラミング教育をはじめるのに読んで良かった本
sifue
0
270
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
sifue
0
310
チームの目標への柔軟な対応
sifue
0
150
並行処理初心者のためのAkka入門
sifue
0
71
2013年末カウントダウン番組におけるAkamai活用事例
sifue
0
140
失敗の話
sifue
0
140
6000名以上の高校生に行われた VR教育の実践と課題
sifue
0
6.4k
N高等学校でのSlackの活用
sifue
0
1.3k
Other Decks in Technology
See All in Technology
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
720
エージェントはローカル、検証はMicroVM — Lambda MicroVMsでつくるServerless CI
fujioka6789
3
810
Goodbye ShellScript, Hello File-based App
shunsock
0
1.1k
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
200
音声コミュニティを守るAI監視基盤_ 90%以上の入力削減を支えたServerless設計と運用判断
shuheioka123
0
110
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
750
GitHub Agentic Workflows を触ってみる
htkym
2
680
データ_AIの事業の勝敗をわけるもの
nek0128
1
480
AIは推し活である。
kurazuuuuuu
2
980
DORA_Metrics.pdf
wagnerfusca
1
110
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
170
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
620
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
For a Future-Friendly Web
brad_frost
183
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
The World Runs on Bad Software
bkeepers
PRO
72
12k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
330
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
540
Designing for humans not robots
tammielis
254
26k
Transcript
ιϑτΣΞઃܭͷ͢ʍΊ גࣜձࣾυϫϯΰ ٢ଜ૯Ұ (@sifue)
ιϑτΣΞઃܭΛ ͳͥ͢Δͷ͔ʁ
ͦͦઃܭͬͯ ඞཁͳͷʁ
ϓϩτλΠϐϯά͠ͳ͕Β࡞ͬͯ ͍͘ͳΒඞཁͳ͍Μ͡Όͳ͍ͷʁ
ͦ͏͡Όͳ͍߹͋Δ
ྫ͑ͲΜͳ͔࣌ ෳࡶͳཁ݅ΛѻΘͳͯ͘ͳΒͳ͍࣌ ߟྀͷൈ͚࿙Εͷ͍͠ෳࡶͳۀ༻݅ ແఀࢭϝϯςφϯεͳͲͷӡ༻ োੑ ֦ுੑ ଟ͘ͷγεςϜͱ࿈ܞ
ෳࡶͳཁ݅Λ࣋ͭγεςϜɺ ݐஙͰݴ͑ߴϏϧͷΑ͏ͳͷ େͳݐங๏ ిؾ Ψε ۭௐ ؒऔΓͷ͍উख (τΠϨͷʁ)
ෳࡶͳཁ݅ͷߟྀ͕ൈ͚͍ͯΔ߹ʹ େ͖ͳίετΛ͏͜ͱʹͳΔ͜ͱ͋Δ
ݘখΛϓϩτλΠϐϯάͰ࡞ͬͯ ͦΕΛ֦ுɺվम͠ଓ͚ΕߴϏϧʹͳΔ͔ʁ
ͳΒͳ͍ ॳݘখͰྑ͔ͬͨͷ͕ཁٻͷมߋͰ ߴϏϧ͕ٻΊΒΕΔ൵͕ܶͦ͜ʹ͋Δ͕...
Ͱ͖Δͷϋϧͷಈ͘
க໋తͳʹͿͪͨΕ࡞Γ͕͠ඞཁ ͋Δಥવߟྀ࿙Εͷཁ݅ʹͿͪͨͬͯγεςϜఀࢭʹؕΔ͜ͱ
ɹͨͩٯʹཁ݅ͷিಥ͕ى͜Βͳ͍Α͏ͳ γϯϓϧͳཁ݅ͷϓϩμΫτͳΒ ϓϩτλΠϐϯάΛར༻ͨ͠ ΠϯΫϦϝϯτͳ։ൃ͔ͳΓ༗ޮ
ͱ͍͑ෳࡶͦ͏ͳͷ ઃܭΛߟ͑Α͏
ͰಥવιϑτΣΞઃܭ͠ΖͱݴΘ ΕͯԿΛ͢Δ͔Α͘Θ͔Βͳ͍…
ͦΜͳํʹ͓͢͢ΊͷୈҰา
ਤΛॻ͍ͯΈΑ͏
ਤͱ͍ͬͯ ॻ͖ํ͕Θ͔Βͳ͍…
ͦΜͳ͋ͳͨʹ ͓͢͢Ίͷه๏
UML
UMLͱ ౷ҰϞσϦϯάݴޠ (Unified Modeling Language)ͱ͍͏ɺ1997 ʹબఆ͞Εͨੈքతʹར༻ Ͱ͖ΔιϑτΣΞͷͨΊ ͷઃܭਤͷॻ͖ํ ݱࡏɺUML 2.4.1͕࠷৽
Ͱ͋Γɺ13छྨͷਤͷॻ͖ ํΛར༻͢Δ͜ͱ͕Ͱ͖Δ
UML͕ͳ͍߹ͷਤ ͲΜͳײ͔͡ʁ
࣮ಉ͡ͷΛද͍ͯ͠Δͷʹɺه๏͕ҧ͏ͨΊʹ࢛͕֯Ͳ ͏͍͏ҙຯͰɺؙ͕Ͳ͏͍͏ҙຯͰͱ͔ɺͷઢ͕͋ΕͰɺ ੨͍ઢ͕͋Εͱ͔Λຖճઆ໌͠ͳ͍͚ͯ͘ͳ͍ มಈඅ ࢧग़ ݻఆඅ ݄࣍ूܭαʔϏε ՈܭΞϓϦͷઃܭͷྫ
ͭΒ͍ ઃܭϨϏϡʔΛ͢Δલʹશһ͕ਤͷه๏Λཧղ͢Δ ͱ͜Ζ͔Β࢝·ΔɻઃܭϨϏϡʔʹ్த͔Βͬͯ ͖ͨਓ͕ਤͷه๏͕Θ͔Βͳ͍...ɻ৽ͨʹjoinͨ͠ ϝϯόʔࢿྉΛݟͯҙຯ͕Θ͔Βͳ͍ɻ
UMLͦ͏͍͏Λ ղܾͯ͘͠Ε·͢ʂ
ͲΜͳਤ͕͋Δͷ͔ʁΑ͘͏ͩΖ͏5ͭΛհ Ϣʔεέʔεਤ: ཁ݅ͷߏΛදݱ ίϯϙʔωϯτਤ: γεςϜߏΛදݱ ύοέʔδਤ: ύοέʔδͷߏΛදݱ Ϋϥεਤ: Ϋϥεͷؔ࿈Λදݱ ΞΫςΟϏςΟਤ:
ϑϩʔνϟʔτͷΑ͏ͳͷ
Ϣʔεέʔεਤ ՈܭΞϓϦͷઃܭ
ίϯϙʔωϯτਤ ՈܭΞϓϦͷઃܭ
ύοέʔδਤ ՈܭΞϓϦͷઃܭ
Ϋϥεਤ ՈܭΞϓϦͷઃܭ
ΞΫςΟϏςΟਤ ՈܭΞϓϦͷઃܭ
͜Μͳ;͏ʹهड़Ͱ͖·͢
ਤΘ͔͚ͬͯͲ ԿͰॻ͚ྑ͍ͷʁ
͓͢͢ΊͷUMLϞσϦϯάπʔϧ Gliffy Astah Community PlantUML
Gliffy ConfluenceͷϓϥάΠϯ ݁ߏ͖Ε͍ ਤ͕େ͖͘ͳΔͱॏ͍ ੍͕؇ΊͰUMLҎ֎ͷه ๏Ͱ͖Δ Ϋϥεਤͷྫ
Astah Community MacͱWinͰಈ͘Javaͷσ εΫτοϓΞϓϦ ϖʔδʹఴ͢Δͱ ConfluenceͰਤΛදࣔͰ ͖Δ UMLʹҧͯ͠Δਤॻ͖ ʹ͍͘ Ϋϥεਤͷྫ
PlantUML ςΩετϕʔεͰUMLॻ͚ Δ(<|-- ͕ܧঝͱ͔) ࠷ۙྲྀߦͬͯΔ ConfluenceͰهड़Մೳ GUIͷαϙʔτͳ͍ͷͰ UMLͷ༷Λ͍ͬͯΔ ඞཁ͕͋Δ Ϋϥεਤͷྫ
Ҏ্հͨ͠πʔϧΛͬͯιϑ τΣΞͷઃܭઃܭϨϏϡʔΛ ͍͖ͬͯ·͠ΐ͏ʂ
͓͢͢Ίຊ UMLͷຊͱ͍͏ΑΓ૯߹తͳιϑτΣΞ։ൃͷຊ
ઃܭͷΓํΘ͔͚ͬͨ Ͳɺ۩ମతʹԿ͢Δͷʁ
ઃܭͷతͬͯԿʁ
ઃܭͱɺ ཁٻʹରͯ͠ɺૂͬͨཁ݅ΛઃఆͰ ͖ΔΑ͏ʹ͢Δ͜ͱɻਖ਼ղͳ͍ɻ
Α͘ग़ͯ͘Δઃܭϊϋ γεςϜߏΛϨΠϠʔԽ͢Δ/͠ͳ͍ ϞδϡʔϧԽ͢Δ/͠ͳ͍ ϞδϡʔϧΛϨΠϠʔԽ͢Δ/͠ͳ͍ SOLIDݪଇΛकΔ/कΒͳ͍
γεςϜߏΛϨΠϠʔԽ͢Δ/͠ͳ͍ ଟΞʔΩςΫνϟ ϨΠϠ͝ͱૄ݁߹ʹ͢Δ ӈ3+LBͷྫ ϨΠϠຖʹ࠶ىಈߋ৽Ͱ͖Δ ϨΠϠ͝ͱͰΛ૿͠ෛՙΛί ϯτϩʔϧͰ͖Δ ϨΠϠ͕૿͑Δͱཧίετ૿͑ Δ
ϞδϡʔϧԽ͢Δ/͠ͳ͍ ൚༻αϒϞδϡʔϧΛ͘͘Γग़ ͤɺॏෳ͕ݮͬͯอकίετ͕ Լ͕Δ Ϟδϡʔϧ͝ͱͰਓΛׂΓͯ ΔͷͰߋ৽িಥ͕গͳ͘ͳΔ ϞδϡʔϧԽ͢Δ͜ͱͰ։ൃί ετ૿͑Δ
ϞδϡʔϧΛϨΠϠʔԽ͢Δ/͠ͳ͍ DDDͷϨΠϠʔԽΞʔΩςΫ νϟͷྫ ϏδωεϩδοΫ(domain) ͕applicationuiͷϑ ϨʔϜϫʔΫͷVerUPͷมߋ Λ͏͚ͳ͍ ґଘؔͷڧ੍ΛकΔͨΊʹґ ଘؔͷٯసଇͱ͔ΛΘͳ͘ ͍͚ͯͳ͍ͳͲߴίετ
SOLIDݪଇΛकΔ/कΒͳ͍ ҎԼɺίετͱ࠶ར༻ੑͷτϨʔυΦϑͱͳΔ ୯Ұͷݪଇ: ͍Ζ͍ΖΔΫϥεΛ࡞Βͳ͍ ΦʔϓϯΫϩʔζυͷݪଇ: ঢ়ଶͷมߋ͔ΒकΓɺΫϥε ͷࣗମͷ֦ுΛఏڙ͢Δ Ϧείϑͷஔݪଇ: ܧঝҙຯͱͯ͠ͱࢠͷަՄೳͰ ͋ΔΑ͏ͳΫϥεઃܭʹ͢Δ
ґଘؔٯసͷݪଇ: ΠϯλʔϑΣʔεΛͬͯϨΠϠؒͷ ґଘؔΛҰํʹ͢Δ ΠϯλʔϑΣʔεͷͷݪଇ: ෦࣮ΛӅ͍͢Δ
ґଘؔٯసͷݪଇͷྫ ΠϯλʔϑΣʔεΛ࡞ͬͯͦΕΛґଘઌͰ࣮͢Δ
దͳઃܭͷతΛՌͨͨ͢Ίͷ ৭ʑͳύλʔϯ͕͋ΔͷͰͥͻ୳ͯ͠Έ͍ͯͩ͘͞ ϚʔνϯɾϑΝϥʔͷϦϑΝΫλϦϯά GoFͷσβΠϯύλʔϯ PoEAA ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ Lean architecture Microservices
ཁ݅࿙Ε/িಥ͕ى͜Βͳ͍Α͏ɺ։ൃऀ ͷૂ͍௨Γʹ։ൃ͍͚ͯ͠ΔΑ͏͔ͬ͠Γ ϨϏϡʔ͠ͳ͕Βߟ͍͖͑ͯ·͠ΐ͏ʂ
Ҏ্ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠