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
KotlinにおけるFactoryメソッド実装パターン
Search
doyaaaaaken
September 22, 2021
Programming
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KotlinにおけるFactoryメソッド実装パターン
doyaaaaaken
September 22, 2021
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.7k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.5k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
980
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
450
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
480
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
3k
考えることを仕組み化する
doyaaaaaken
1
760
プルリクへのセルフコメントという小技
doyaaaaaken
0
680
先取りKtor2.0
doyaaaaaken
1
720
Other Decks in Programming
See All in Programming
Oxlintのカスタムルールの現況
syumai
6
1.2k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.3k
Inside Stream API
skrb
1
770
ふつうのFeature Flag実践入門
irof
8
4.2k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
300
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
The NotImplementedError Problem in Ruby
koic
1
920
AI 輔助遺留系統現代化的經驗分享
jame2408
1
990
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
13
6.3k
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
140
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
220
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
300
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
800
So, you think you're a good person
axbom
PRO
2
2.1k
Test your architecture with Archunit
thirion
1
2.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
Thoughts on Productivity
jonyablonski
76
5.2k
A designer walks into a library…
pauljervisheath
211
24k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Become a Pro
speakerdeck
PRO
31
6k
We Have a Design System, Now What?
morganepeng
55
8.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Transcript
Kotlinʹ͓͚ΔFactoryϝιουͷ ࣮ύλʔϯ Server-Side Kotlin Study #2 2021/09/22 খࢁ݈ଠ(Kenta Koyama) @doyaaaaaaken
ࣗݾհ • ࣄ • גࣜձࣾsmartround ۀϝϯόʔ / CTO • αʔόαΠυKotlinʢKtorʣɾVueJSΛࠓΑ͘ॻ͍͍ͯ·͢
• OSS׆ಈ • kotlin-csvͷ࡞ऀʢ⭐: 300overʣ • KtorɾExposedɾkotestͷίϯτϦϏϡʔτ
͢༰ Kotlinʹ͓͚ΔFactoryϝιουͷ࣮ύλʔϯ ʹ͍ͭͯհ ࢀߟɿEffective Kotlin ɹɹɹItem33: Consider factory functions instead
of constructors
͜ͷൃදʹ͓͚Δ”Factoryϝιου”ͷఆٛ ʰΠϯελϯεੜΛߦ͏ͨΊͷϝιουʱͱ͍͏ఆٛͰଊ͍͑ͯͩ͘͞ ※ GoFʹΑΔσβΠϯύλʔϯͷ”Factoryύλʔϯ”ͱҟͳΓ·͢ ʰίϯετϥΫλͷݺͼग़͠ʹΑΔΠϯελϯεੜʱͰͳ͘ ʰϝιουܦ༝ͰͷΠϯελϯεੜํ๏ʢʹFactoryϝιουʣʱΛ ͏͖࣌ɾ͍ํʹ͍ͭͯͷհͰ͢
࣍ 1. ίϯετϥΫλΑΓFactoryϝιου͕༏Ε͍ͯΔ 5ͭ 2. KotlinͰͷFactoryϝιου࣮ͷॻ͖ํ 5ύλʔϯ
࣍ 1. ίϯετϥΫλΑΓFactoryϝιου͕༏Ε͍ͯΔ 5ͭ 2. KotlinͰͷFactoryϝιου࣮ͷॻ͖ํ 5ύλʔϯ
ᶃ: ϝιουʹ໊લ͕͚ͭΒΕΔ
ᶄ: ฦΓΛαϒλΠϓʹͰ͖Δ
ᶅ: ඞͣ͠Πϯελϯεੜ͠ͳͯ͘ྑ͍
ᶆ: ՄࢹੑΛॊೈʹ੍ޚͰ͖Δ
ᶇ: ҾΛ͖ʹఆٛͰ͖Δ
͜͜·Ͱͷ·ͱΊ FactoryϝιουίϯετϥΫλͱൺֱͯ͠ॊೈੑ͕ߴ͍ͨΊ έʔεʹԠͯ͡͏͜ͱΛݕ౼͢Δͱྑ͍ <ݸਓతݟղ> • ίϯετϥΫλΛ͏ͱྑ͍έʔε • γϯϓϧ͞Λٻ͍ͨ͠έʔεʢdata classͰDTO࡞Δ͚ͩͷ࣌ͱ͔యܕྫʣ •
FactoryϝιουΛ͏ͱྑ͍έʔε • ॊೈੑΛ͍ͨͤͨέʔε • Πϯελϯεੜํ๏͕ෳύλʔϯ͋ΔέʔεʢηΧϯμϦίϯετϥΫλ͏ΑΓFactoryϝιουͷ΄͏໊͕લͱ ͔͔Βҙਤ͕Θ͔Γ͍͢ʣ • ΠϯελϯεੜϩδοΫ͕ෳࡶͳέʔεʢͦͦίϯετϥΫλͩͱ࣮ݱͰ͖ͳ͍έʔεʣ • Πϯελϯεੜํ๏Λ͋Δఔ੍ݶ͍ͨ͠έʔεʢίϯετϥΫλͩͱࣗ༝͕ߴ͗͢Δͱײ͡Δέʔεʣ
࣍ 1. ίϯετϥΫλΑΓFactoryϝιου͕༏Ε͍ͯΔ 5ͭ 2. KotlinͰͷFactoryϝιου࣮ͷॻ͖ํ 5ύλʔϯ
ᶃ Companion Object Factory Function • Javaͷstaticؔͱࣅ͍ͯΔҰ൪ΦʔιυοΫεͳॻ͖ํ
ᶄ Top-Level Factory Function • listOf, mapOfͱ͔͜ͷύλʔϯ • publicʹͯ͠ϓϩδΣΫτશମͰ͏utilityؔʹ •
privateʹͯ͠ϑΝΠϧͰͷΈ༗ޮͳFactoryؔʹ
ᶅ Extension Factory Function • companion object͕ʢྫ͑ϥΠϒϥϦʹ͋ΔͳͲͯ͠ʣमਖ਼Ͱ͖ͳ͍ ͱ͖ʹ༗༻
ᶆ Fake Constructors
ᶇ Methods on Factory Class • ͍ΘΏΔBuilderύλʔϯ • KotlinͩͱBuilderύλʔϯΛ͏͖έʔεগͳ͍ʢ໊લ͖ҾɾσϑΥϧτҾͰସՄೳʣ
ݸਓతݟղ • جຊతʹύλʔϯᶃɾᶄͷΈͰे • ଞͷύλʔϯ಄ͷମૢ • ʰͲͷύλʔϯʹ͢Δ͔ʱΑΓ ʰίϯετϥΫλʹ͢Δ͔Factoryϝιουʹ͢Δ͔ʱͷ΄͏͕େࣄ
ձࣾએ smartroundͰݱࡏΤϯδχΞΛઈࢍืू͍ͯ͠·͢ʂʢ˞෭ۀՄɾϑϧϦϞʔτʣ ͚ͩฉ͖͍ͨํେܴͳͷͰWantedlyɾTwitter DM͔Β͓ؾܰʹ͝Ԡื͍ͩ͘͞ʂ ɾελʔτΞοϓ1,800ࣾɾࢿՈ100͕ࣾར༻ ɾKotlinɾVue.jsɾAWSΛར༻ ɾࣾһ10໊ͷϑΣʔζͰݱࡏੵۃ࠾༻த
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ @doyaaaaaken