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
350
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
810
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
350
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
390
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
2.8k
考えることを仕組み化する
doyaaaaaken
1
670
プルリクへのセルフコメントという小技
doyaaaaaken
0
600
先取りKtor2.0
doyaaaaaken
1
630
Other Decks in Programming
See All in Programming
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
120
パスキーのすべて / 20250324 iddance Lesson.5
kuralab
0
130
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
5
830
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
130
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
710
CRE Meetup!ユーザー信頼性を支えるエンジニアリング実践例の発表資料です
tmnb
0
360
Return of the Full-Stack Developer
simas
PRO
1
320
令和トラベルにおけるコンテンツ生成AIアプリケーション開発の実践
ippo012
1
260
20250326_生成AIによる_レビュー承認システムの実現.pdf
takahiromatsui
17
5.6k
Going Structural with Named Tuples
bishabosha
0
170
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
240
PHPer's Guide to Daemon Crafting Taming and Summoning
uzulla
2
1.1k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
620
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
12
610
A Philosophy of Restraint
colly
203
16k
RailsConf 2023
tenderlove
29
1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.4k
Into the Great Unknown - MozCon
thekraken
36
1.7k
The World Runs on Bad Software
bkeepers
PRO
67
11k
A better future with KSS
kneath
238
17k
Visualization
eitanlees
146
16k
4 Signs Your Business is Dying
shpigford
183
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
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