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
6.5k
17
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DDD失敗談を話して学んだこと
関西Javaエンジニアの会(関ジャバ) '17 10月度 - connpass
https://kanjava.connpass.com/event/68169/
での発表資料です。
Kinoko
October 21, 2017
More Decks by Kinoko
See All by Kinoko
自作キーボードにチャレンジしてみた。 ver 2.0
sammy7th
0
2.2k
私が考える理想の開発チーム
sammy7th
0
730
ビジネスルールを軸とした ソフトウェア開発手法 「CCSR」
sammy7th
7
2.6k
お家に居れなくなって 3週間ゲストハウス暮らしをしていた話
sammy7th
2
530
家で仕事中にインターフォンに気づかず困っているのでIoTでなんとかしたい
sammy7th
1
230
ホットサンドメーカーで作るスイーツ
sammy7th
0
330
JVM入門 -Javaプログラムが動く仕組み-
sammy7th
35
15k
Udemyでプログラミング の動画講座を販売してみた
sammy7th
1
930
Git運用基礎
sammy7th
1
310
Other Decks in Technology
See All in Technology
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
800
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
140
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
320
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
400
Terraform 101 (初心者向け) 資料
shuadachi
0
160
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
270
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
210
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
Why is RC4 still being used?
tamaiyutaro
0
270
水を運ぶ人としてのリーダーシップ
izumii19
4
1.2k
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.2k
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
360
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.6k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
55k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
220
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
Designing Experiences People Love
moore
143
24k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
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ͰΔ • υϝΠϯʹ͍ͭͯ͠߹͏͜ͱʹΑΓ։ൃऀҎ֎ͷਓ։ൃʹר͖ࠐΉ • ΫϥΠΞϯτ͞Μͷதʹ͍ͬͯɺͪΌΜͱҰॹʹ͠߹͏
• ؔऀͷೝࣝΛυϝΠϯʹམͱ͠ࠐΈɺͦΕΛίʔυʹམͱ͠ࠐΉ • ಄ͷதͱίʔυΛҰகͤ͞Δ • ↑͜͜·ͰͰ͖Δͷ͕ཧͰ͋Δ͕ɺظؒతʹ͍͠߹ଥڠඞཁ
࠷ॳ͔Β͖Ε͍ͳͷΛ࡞Δ͜ͱ ʹͩ͜ΘΓ͗͢ͳ͍Α͏ʹ͢Δ • ࣗͷѱ͍บͩͱ͓͏
·ͱΊ • ॳɺ͕ࣗແ͗ͯؕͬͨ͢᠘͔ͱࢥͬͯ ͍ͨͷͰ͕͢ҙ֎ͱ͋Γ͕ͪͷΑ͏Ͱ͢ • ΈΜͳ͖Λ͚ͭͯʂ
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠