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
DDD失敗談を話して学んだこと
Search
Kinoko
October 21, 2017
Technology
17
6.4k
DDD失敗談を話して学んだこと
関西Javaエンジニアの会(関ジャバ) '17 10月度 - connpass
https://kanjava.connpass.com/event/68169/
での発表資料です。
Kinoko
October 21, 2017
Tweet
Share
More Decks by Kinoko
See All by Kinoko
自作キーボードにチャレンジしてみた。 ver 2.0
sammy7th
0
2k
私が考える理想の開発チーム
sammy7th
0
650
ビジネスルールを軸とした ソフトウェア開発手法 「CCSR」
sammy7th
7
2.5k
お家に居れなくなって 3週間ゲストハウス暮らしをしていた話
sammy7th
2
500
家で仕事中にインターフォンに気づかず困っているのでIoTでなんとかしたい
sammy7th
1
180
ホットサンドメーカーで作るスイーツ
sammy7th
0
270
JVM入門 -Javaプログラムが動く仕組み-
sammy7th
35
14k
Udemyでプログラミング の動画講座を販売してみた
sammy7th
1
870
Git運用基礎
sammy7th
1
280
Other Decks in Technology
See All in Technology
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
2.2k
Flutterでキャッチしないエラーはどこに行く
taiju59
0
210
Kubernetes における cgroup v2 でのOut-Of-Memory 問題の解決
pfn
PRO
0
450
モバイルアプリ研修
recruitengineers
PRO
5
1.7k
【 LLMエンジニアがヒューマノイド開発に挑んでみた 】 - 第104回 Machine Learning 15minutes! Hybrid
soneo1127
0
250
DuckDB-Wasmを使って ブラウザ上でRDBMSを動かす
hacusk
1
140
生成AI時代のデータ基盤
shibuiwilliam
4
2.4k
DDD集約とサービスコンテキスト境界との関係性
pandayumi
2
230
カミナシ社の『ID管理基盤』製品内製 - その意思決定背景と2年間の進化 #AWSUnicornDay / Kaminashi ID - The Big Whys
kaminashi
3
720
Vault meets Kubernetes
mochizuki875
0
170
RSCの時代にReactとフレームワークの境界を探る
uhyo
8
1.9k
Grafana Meetup Japan Vol. 6
kaedemalu
1
200
Featured
See All Featured
For a Future-Friendly Web
brad_frost
179
9.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Building Adaptive Systems
keathley
43
2.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
How GitHub (no longer) Works
holman
315
140k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
910
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Transcript
DDDࣦഊஊΛͯ͠ ֶΜͩ͜ͱ Abe Asami
ࣗݾհ "CF"TBNJl͖ͷࢠz େࡕͷϑϦʔϥϯεϓϩάϥϚ IUUQOPDPOPOFU !BBUI 4DBMBɺ"OESPJE +BWB,PUMJO
ࠓͷ༰ • ͱ͋ΔϓϩδΣΫτΛDDDͰΔͧʂͱҙؾ ࠐΜͰ͡ΊͨͷͷԿ͔͏·͍͔͘ͳ͔ͬ ͨ • ͱ͍͏ΛScalaMatsuri(2017/02)ͷΞϯΧϯ ϑΝϨϯεͰͬͨͱ͜Ζ৭ΜͳҙݟΛΒͬ ͨͷͰɺͦΕΛ͍·͞Β·ͱΊͯΈ·ͨ͠
ϓϩδΣΫτ֓ཁ
ΫϥΠΞϯτ͞Μ͔Βͷཁ • AirB̋bΈ͍ͨͳͭΛ࡞ͬͯ΄͍͠
ิࣄ߲ • ΫϥΠΞϯτ͞ΜITʹৄ͘͠ͳ͍ • ·ͣʮ࠷ݶʯͷػೳͰβ൛ΛϦϦʔε͠ɺ৭ΜͳਓʹҙݟΛฉ͖ͳ͕Βվળ͠ ͍ͯ͜͏ͱ͍͏ํ • ͍ͣΕେ͖͍αʔϏεʹ͍͖͍ͯͨ͠ • ظؒ3ϲ݄ఔɻͷͭΓͩͬͨ
• 1ϲ݄͙Β͍Φʔόʔ͠·͕ͨ͠ɺҰԠແࣄೲ͠·ͨ͠ • PlayFramework2+ScalaͰ࣮ • ࣮ऀࢲ1ਓ
ϓϩδΣΫτ։࢝࣌ͷࢲ ʮΑʔ͠DDDͰΔͧʂʯ
ओͳཧ༝
ͬͯΈ͔ͨͬͨ • ࢲͷDDDཧղϨϕϧ • ʮϢʔβʔઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃΛۃྗͳ ͘͢ʯͷ͕తͱ͍͏ཧղ • աڈʹ࡞ͨ͠ࢿྉʮDDDͬͯͳΜͩΖ͏ʁʯ • https://speakerdeck.com/sammy7th/
dddtutenandarou • ΤϦοΫɾΤϰΝϯεͷຊະಡ
ཧ༝ɾͦͷଞ • ༷ͱίʔυͷണΛগͳ͘Ͱ͖ΔͳΒͦͷ ํ͕Α͍ͱ͓ͬͨɻ • DDDͷϓϩδΣΫτͷ͓ख͍Λͨ͠ܦݧ͕ ͋ͬͨ • ಉ͡Α͏ͳߏ(ΫϦʔϯΞʔΩςΫνϟ) ͰΕ͍͚Δͱ͓ͬͨ
͔ͯ͘͠Play2+DDDͰ։ൃ ͕։࢝͞Εͨʂ
ͦͯ͠ ͏·͍͔͘ͳ͔ͬͨʂʂʂ
Ͳ͏͍͏͜ͱʁ • ࣮ίετ͕ߴ͘ɺ3िؒఔͰํస
Before
After
αʔϏεͰ༻͢Δݴ༿͕શવܾ ·Βͣɺίʔυͱͷണൃੜ͠·͘Γ • ྫ) ෦Λି͠ग़͢ਓΛԿͱݺͿ͔ͳͲ͕ͳ͔ ͳ͔ܾ·Βͳ͍ɻܾ·ͬͯมΘΔɻ • ϢϏΩλεݴޠࣙయ͕શવػೳ͠ͳ͔ͬ ͨɾɾɾ
ͱ͍͏Λ ScalaMatsuri(2017/02) ͷΞϯΧϯϑΝϨϯεͰ ൸࿐ͨ͠ͱ͜Ζ ৭ΜͳҙݟΛ͍͖ͨͩ·ͨ͠
ɹ͍ͨҙݟʢൈਮʣ
ͦͦɺ៉ྷʹϞσϦϯά͔ͨͬͨ͠ͷʁ ΫϦʔϯΞʔΩςΫνϟͰ࡞Γ͔ͨͬͨ ͷʁʁ • ࢲ͕Γ͍ͨͷɺࠓޙͷ͜ͱߟ͑ͯػೳ ֦ு͍͢͠ݟ௨͠ͷ͍͍ίʔυΛ͔͘͜ͱ • ͦͷͨΊʹΫϦʔϯΞʔΩςΫνϟͰͭ͘ Γ͔ͨͬͨ •
ͦͷͨΊʹϞσϦϯά͕ඞཁͩͱ͓ͬ ͨ
࠷ॳ͔Β͖Ε͍ͳϞσϦϯάΛ͠ Α͏ͱͨ͠ͷ͕ѱ͔ͬͨͷͰʁ • Ϟσϧগͣͭ͠ਐา͍ͯ͘͠ͷ • εέʔϧͷ͜ͱ࠷ॳΕ͍͍ͯΜ͡Όͳ ͍ʁ • Ϟσϧ୳ٻӔר͖
ϞσϦϯάʹࣝͷטΈࡅ͖ ͷϑΣʔζ͕ඞཁ • 1ਓͰͰ͖Δ͜ͱͰͳ͍ • ͪΌΜͱΫϥΠΞϯτ͞Μͷதʹ͍͍ͬͯͬͯɺ ͔ͬ͠ΓΛ͠ͳ͍ͱμϝ • ΫϥΠΞϯτ͞Μ͕ཧղͰ͖ΔΑ͏ʹɺֆʹ͢Δ ͳͲͯ͠ͱʹ͔͘טΈࡅ͘
• ΞΠίχοΫϓϩηεͱ͍͏ͷ͕͋ΔΑ
ೲظίετͩͱݫ͍͠ͷͰ • ͪΌΜͱϞσϦϯά͢Δͷ͕͔͔࣌ؒΔ • ϞσϦϯά͚ͩͰԿϲ݄ͬͪΌ͏ • ͓٬͞ΜͱϞσϧΛͭΊΔͷ͍͠ • DDD͡Όͳͯ͘୯७ͳCRUDʹམͱ͠ࠐΜͩ
ํ͕͍͍߹͋Δ
DDD༷ͱίʔυ͡Όͳͯ͘ɺ಄ͷத ͱίʔυΛҰகͤ͞Δͱ͍͏͜ͱͰʁ • ͳΔ΄Ͳʂ
Βͬͨҙݟ͔Β Θ͔ͬͨ͜ͱ
DDDΛ࣮ફ͢Δ͜ͱͱΫϦʔϯΞʔΩς ΫνϟͰ࡞Δ͜ͱΛͬͪ͝Όʹ͍ͯͨ͠ • DDDΛ࣮ફ͢ΔͱΫϦʔϯΞʔΩςΫνϟͰ ࡞Δ͜ͱʹͳΔͱ͍͏ࢥ͍ࠐΈ͕͋ͬͯɺͦ Ε͕ͦͦצҧ͍ͩͬͨ
ΫϥΠΞϯτ͞Μͱͷͷ٧Ί ํ͕ѹతʹ͔ͬͨ • ఆظMTGߦ͍͕ͬͯͨɺMTGͰܾ·Βͳ͍ࣄ߲ʹͭ ͍ͯʮܾΊ͓͍͍ͯͯͩ͘͞ʯͱ͛ͯ͠·͍ͬͯͨ • PJཧπʔϧνϟοτπʔϧͰͷΦϯϥΠϯͰͷΓ ͱΓ͕͏·͘ػೳͤͣɺີͳΓͱΓ͕Ͱ͖͍ͯͳ͔ͬ ͨ •
ૣ͍ஈ֊ͰΦϑϥΠϯͰͷΓͱΓΛ૿͖͢ ͩͬͨ
࣍ʹྨࣅͷҊ͕݅͋Ε ࣮ફ͍ͨ͜͠ͱ
DDD͕͍͍ͯΔ͔Ͳ͏͔ݕ౼ ͢Δ • Ҋ݅ͷنظؒతʹίετʹݟ߹͏͔Ͳ͏ ͔ • ϞσϦϯάͷίετ • ࣮ίετ
DDDΛ࣮ફ͢Δ߹ɺຊ࣭Λ ݟޡΒͳ͍Α͏ʹ͍ͨ͠ • ៉ྷͳઃܭͰ࡞ΔͨΊʹDDDͰΔ • ϢʔβʔઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃΛۃྗͳͨ͘͢ΊʹDDDͰΔ • υϝΠϯʹ͍ͭͯ͠߹͏͜ͱʹΑΓ։ൃऀҎ֎ͷਓ։ൃʹר͖ࠐΉ • ΫϥΠΞϯτ͞Μͷதʹ͍ͬͯɺͪΌΜͱҰॹʹ͠߹͏
• ؔऀͷೝࣝΛυϝΠϯʹམͱ͠ࠐΈɺͦΕΛίʔυʹམͱ͠ࠐΉ • ಄ͷதͱίʔυΛҰகͤ͞Δ • ↑͜͜·ͰͰ͖Δͷ͕ཧͰ͋Δ͕ɺظؒతʹ͍͠߹ଥڠඞཁ
࠷ॳ͔Β͖Ε͍ͳͷΛ࡞Δ͜ͱ ʹͩ͜ΘΓ͗͢ͳ͍Α͏ʹ͢Δ • ࣗͷѱ͍บͩͱ͓͏
·ͱΊ • ॳɺ͕ࣗແ͗ͯؕͬͨ͢᠘͔ͱࢥͬͯ ͍ͨͷͰ͕͢ҙ֎ͱ͋Γ͕ͪͷΑ͏Ͱ͢ • ΈΜͳ͖Λ͚ͭͯʂ
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠