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
0
390
KotlinにおけるFactoryメソッド実装パターン
doyaaaaaken
September 22, 2021
Tweet
Share
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.6k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.4k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
910
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
410
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
450
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
2.9k
考えることを仕組み化する
doyaaaaaken
1
730
プルリクへのセルフコメントという小技
doyaaaaaken
0
650
先取りKtor2.0
doyaaaaaken
1
680
Other Decks in Programming
See All in Programming
ゲームの物理 剛体編
fadis
0
390
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
460
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
230
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
180
Graviton と Nitro と私
maroon1st
0
160
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
0
1.4k
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
120
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
930
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Crafting Experiences
bethany
0
25
The Limits of Empathy - UXLibs8
cassininazir
1
200
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Six Lessons from altMBA
skipperchong
29
4.1k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
140
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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