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
RxSwiftに対応したバリデーションをGenericなProtocolで実装してみた / G...
Search
Yuto Yazaki
February 28, 2019
Programming
3
1.2k
RxSwiftに対応したバリデーションをGenericなProtocolで実装してみた / Generic Validation Protocol with RxSwift
https://github.com/yutoyazaki/RxValidationSample
Yuto Yazaki
February 28, 2019
Tweet
Share
More Decks by Yuto Yazaki
See All by Yuto Yazaki
デザインシステム上の画像リソースを 自動エクスポートする / Automate image export from Figma to iOS and Android using figma-export
yutoyazaki
0
840
Firebase Remote Config ベストプラクティス
yutoyazaki
0
800
Other Decks in Programming
See All in Programming
Go 1.24でジェネリックになった型エイリアスの紹介
syumai
2
300
SwiftUI Viewの責務分離
elmetal
PRO
2
280
Jakarta EE meets AI
ivargrimstad
0
640
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
14
4.8k
JAWS Days 2025のインフラ
komakichi
1
260
kintone開発を効率化するためにチームで試した施策とその結果を大放出!
oguemon
0
320
Domain-Driven Design (Tutorial)
hschwentner
13
22k
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
350
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
5
1.1k
PEPCは何を変えようとしていたのか
ken7253
3
300
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
420
GoとPHPのインターフェイスの違い
shimabox
2
210
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
336
57k
Gamification - CAS2011
davidbonilla
80
5.2k
Designing for Performance
lara
605
68k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Side Projects
sachag
452
42k
Optimizing for Happiness
mojombo
377
70k
How to Ace a Technical Interview
jacobian
276
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
The Cult of Friendly URLs
andyhume
78
6.2k
Transcript
3Y4XJGUʹରԠͨ͠όϦσʔγϣϯΛ (FOFSJDͳ1SPUPDPMͰ࣮ͯ͠Έͨ QPUBUPUJQT 㟒༤ਓ:B[BLJ:VUP
ࣗݾհ w ͓͍͍͠ʂΛ࡞ΔϨγϐಈըϝσΟΞʮNPHVOBʯͷJ04ΤϯδχΞ w ৽ଔ✨ w ֶੜ࣌ʹษڧձӡӦͯ͠·ͨ͠ʢࣾձਓʹͳͬͯൃදॳΊͯʣ άϦʔגࣜձࣾ ࠂɾϝσΟΞࣄۀຊ෦ϥΠϑελΠϧࣄۀ෦ ϝσΟΞάϧʔϓ։ൃνʔϜ
㟒༤ਓ:B[BLJ:VUP
3Y4XJGUʹରԠͨ͠όϦσʔγϣϯΛ (FOFSJDͳ1SPUPDPMͰ࣮ͯ͠Έͨ
3Y4XJGUʹରԠͨ͠όϦσʔγϣϯΛ࡞Γ͍ͨ w Ϣʔβͷೖྗ༰ΛόϦσʔγϣϯ͍ͨ͠ w ྫOจࣈҎ ෆਖ਼ͳॻࣜͷνΣοΫ FUD w Τϥʔͷཧ༝Λఏࣔͯ͠Ϣʔβʹमਖ਼ͯ͠Β͏ w
3Y4XJGUͰόΠϯυ͍ͤͨ͞ w δΣωϦΫεͰ͍͍ײ͡ʹ w όϦσʔγϣϯ͢Δ044ϥΠϒϥϦ͋Δ͕ w ϥΠϒϥϦಋೖ͢Δ΄ͲͰͳ͍͠ w 3Y4XJGUʹରԠͯ͠ͳ͍͠ (FOFSJDͳ1SPUPDPMͰ 3Y4XJGUʹରԠͨ͠7BMJEBUPSΛ࣮͠Α͏
Πϝʔδ Ϣʔβͷೖྗͨ͠จࣈྻ͕ ༗ޮͳͰ͋Ε ૹ৴ϘλϯΛԡͤΔΑ͏ʹ͢Δ
7BMJEBUPSϓϩτίϧ ValueTypeɿόϦσʔγϣϯ͢Δͷܕ ErrorType ɿෆਖ਼ͳͷ߹ͷΤϥʔ validate() ɿόϦσʔγϣϯ݁ՌΛฦ͢
7BMJEBUJPO3FTVMU όϦσʔγϣϯͷਖ਼ޡΛද͢FOVN
7BMJEBUPSͷ࣮ྫ Ϣʔβ໊ͷೖྗཝΛఆͯ͠ ΤϥʔΛఆٛ͢Δ όϦσʔγϣϯͷϩδοΫΛॻ͘ 4USJOH Λೖྗʹ͢Δ
7BMJEBUPSͷ༻ྫ ୯ମͰಈ͘Α͏ʹͳͬͨ ͜ΕΛ3Y4XJGUʹରԠͤ͞Δ
3Y4XJGUͷ0CTFSWBCMF5ZQFʹ WBMJEBUFΦϖϨʔλΛੜ͢ Ҿʹ7BMJEBUPSΛͯ͠ɺ ετϦʔϜʹྲྀΕ͖ͯͨΛόϦσʔγϣϯ͠ɺ ݁ՌΛ7BMJEBUJPO3FTVMUܕͰฦ͢ɻ
ͬͯΈΔ όϦσʔγϣϯʹҾ͔͔ͬͬͨΒˠΤϥʔ༰Λදࣔ ༗ޮͳͰ͋Εˠ4VCNJUϘλϯ͕ԡͤΔΑ͏ʹͳΔ
None
·ͱΊ w όϦσʔγϣϯ͢ΔϓϩτίϧΛఆٛ w Ϣχοτςετ͕ॻ͖͍͢ w 3Y4XJGUʹόϦσʔγϣϯͷΦϖϨʔλΛੜ͢ w γϯϓϧͳهड़Ͱݟ௨͠ͷΑ͍ίʔυʹͳΔ w
δΣωϦΫεͷษڧʹͳͬͨ w αϯϓϧίʔυ w IUUQTHJUIVCDPNZVUPZB[BLJ3Y7BMJEBUJPO4BNQMF
5IBOLT