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
360
KotlinにおけるFactoryメソッド実装パターン
doyaaaaaken
September 22, 2021
Tweet
Share
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.5k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.3k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
830
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
370
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
400
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
2.8k
考えることを仕組み化する
doyaaaaaken
1
690
プルリクへのセルフコメントという小技
doyaaaaaken
0
620
先取りKtor2.0
doyaaaaaken
1
640
Other Decks in Programming
See All in Programming
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
1.6k
SpringBootにおけるオブザーバビリティのなにか
irof
1
890
Proxmoxをまとめて管理できるコンソール作ってみました
karugamo
1
410
Cursor Meetup Tokyo ゲノミクスとCursor: 進化と制約のあいだ
koido
1
290
TSConfigからTypeScriptの世界を覗く
planck16
2
1.3k
💎 My RubyKaigi Effect in 2025: Top Ruby Companies 🌐
yasulab
PRO
1
130
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
5
1k
Passkeys for Java Developers
ynojima
0
130
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
540
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
280
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
4
480
TypeScript LSP の今までとこれから
quramy
0
110
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
1
79
Navigating Team Friction
lara
186
15k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Bash Introduction
62gerente
614
210k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Faster Mobile Websites
deanohume
307
31k
Rails Girls Zürich Keynote
gr2m
94
13k
Being A Developer After 40
akosma
91
590k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Gamification - CAS2011
davidbonilla
81
5.3k
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