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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Akira Suenami
May 12, 2022
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
値と属性の話
Akira Suenami
May 12, 2022
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.7k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.7k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7.2k
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.5k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4.1k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.6k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5.1k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
610
It's Worth the Effort
3n
188
29k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Practical Orchestrator
shlominoach
192
12k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Everyday Curiosity
cassininazir
0
360
30 Presentation Tips
portentint
PRO
1
440
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Chasing Engaging Ingredients in Design
codingconduct
0
370
Discover your Explorer Soul
emna__ayadi
2
1.3k
Transcript
値と属性 2022/05/12 第1回なんでもわちゃわちゃLT会 末並 晃 @a_suenami
自己紹介 • 末並 晃 @a_suenami • 生息している界隈: DDDとか、TDDとか、RDBとか • お仕事で使ってる技術スタック:
Rails, React, Java ◦ 最近は terraform おじさんです • 好きな RDBMS: PostgreSQL • 好きな制約: チェック制約 • 好きな焼肉の部位: ハラミ • 好きな(ry
インターネット上での立場
インターネット上での立場 ひたすら焼肉をタカられるという エンターテイメントをインターネットに提供し ています。 (焼肉を奢るとは言ってない)
今日話すこと • 「みんな、何でも値オブジェクトって言いすぎじゃない?」 • 値オブジェクトとは何か • 属性とは区別しようねという話 • アランケイとリッチヒッキーの議論は興味深い
None
値オブジェクト enum Currency { JPY, USD } class Money {
private Currency currency; private int amount; Money(final Currency currency, final int amount) { this.currency = currency; this.amount = amount; } Currency getCurrency() { return this.currency; } int getAmount() { return this.amount; } Money add(Money another) { if (this.currency != another.getCurrency()) { throw new IllegalArgumentException("通貨が異なります"); } return new Money(this.currency, this.amount + another.getAmount()); } }
値オブジェクト? class ProductUnitPrice { private Currency currency; private int amount;
ProductUnitPrice(final Currency currency, final int amount) { this.currency = currency; this.amount = amount; } Currency getCurrency() { return this.currency; } int getAmount() { return this.amount; } }
どうせこうなる ProductUnitPrice productUnitPrice = new ProductUnitPrice(Currency.JPY, 100); int quantity =
10; int totalPrice = productUnitPrice.getAmount() * quantity;
値と属性 識別子(ID) 値 属性
アランケイとリッチヒッキー
アランケイとリッチヒッキー https://news.ycombinator.com/item?id=11945722
ご清聴ありがとうございました。