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
ReactiveCocoaで作る快適な登録フォーム
Search
shoby
July 11, 2016
Technology
0
310
ReactiveCocoaで作る快適な登録フォーム
Melon.swiftの発表資料です。
http://fablic.connpass.com/event/35407/
shoby
July 11, 2016
Tweet
Share
More Decks by shoby
See All by shoby
フリルのCMを支える分析 (メディアバイイング編)
shoby
0
400
FirebaseとBigQueryによるアプリのKPI分析(CMの効果検証編)
shoby
2
2.5k
ユーザーに受け入れられ、問題を起こしづらい大規模リニューアルの進め方
shoby
60
13k
フリルの商品を色で検索できるようにした話
shoby
5
4.2k
Search fashion items by colors
shoby
0
140
iOS 7をサポート対象外にして開発を健全化する
shoby
3
3.9k
Apple Watch Tips
shoby
0
3.9k
WWDC 2015で 発表された新機能と サービスへの活かし方
shoby
2
7.3k
アプリにおける人力ぽちぽちテストの効率化
shoby
3
3.1k
Other Decks in Technology
See All in Technology
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
110
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
630
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
UI State設計とテスト方針
rmakiyama
2
320
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
270
CustomCopを使ってMongoidのコーディングルールを整えてみた
jinoketani
0
220
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
1
230
Storage Browser for Amazon S3
miu_crescent
1
130
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
3
1.4k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
How to Ace a Technical Interview
jacobian
276
23k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
510
What's in a price? How to price your products and services
michaelherold
243
12k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
Embracing the Ebb and Flow
colly
84
4.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Done Done
chrislema
181
16k
Unsuck your backbone
ammeep
669
57k
Visualization
eitanlees
146
15k
Transcript
3FBDUJWF$PDPBͰ࡞Δ շదͳొϑΥʔϜ גࣜձࣾ'BCMJD TIPCZ
ࣗݾհ
ࣗݾհ w TIPCZ w 'BCMJD JOD w J043VCZPO3BJMTը૾ॲཧ w ϝϩϯՈͷଉࢠ
֓ཁ
֓ཁ w շదͳొϑΥʔϜͱ w ೖྗͷϦΞϧλΠϜόϦσʔγϣϯ w 3FBDUJWF$PDPBʹΑΔ5FYUมԽͷݕ w TUSVDUʹΑΔΤϥʔͷදݱ w
ϑϦϧͰͷվળͷ݁Ռ
շదͳొϑΥʔϜͱ
շదͳొϑΥʔϜͱ w গͳ͍ೖྗͰࡁΉ w ༣ศ൪߸͔ΒॅॴΛิ w ೖྗܗ͕͔ࣜΔ w 6*1JDLFS7JFX6*%BUF1JDLFS w
,FZCPBSE5ZQF w ೖྗ͕ϦΞϧλΠϜͰνΣοΫ͞ΕΔ
շదͳొϑΥʔϜͱ w গͳ͍ೖྗͰࡁΉ w ༣ศ൪߸͔ΒॅॴΛิ w ೖྗܗ͕͔ࣜΔ w 6*1JDLFS7JFX6*%BUF1JDLFS w
,FZCPBSE5ZQF w ೖྗ͕ϦΞϧλΠϜͰνΣοΫ͞ΕΔ
5FYU'JFMEͷ ϦΞϧλΠϜόϦσʔγϣϯ
5FYU'JFMEͷϦΞϧλΠϜόϦσʔγϣϯ w ঢ়ଶҎԼͷͭ w ະೖྗʢ1MBDF)PMEFSΛදࣔ͢Δʣ w ೖྗதʢԿදࣔ͠ͳ͍ʣ w 0,ʢ✅Λදࣔʣ w
Τϥʔʢ⚠Λදࣔʣ w 5FYUͷมԽͱɺೖྗྃͰόϦσʔγϣϯ
5FYU'JFMEͷϦΞϧλΠϜόϦσʔγϣϯ ະೖྗ ೖྗத Τϥʔ ⚠ 0, ✅ ೖྗ։࢝ 5FYUͷมԽ
ೖྗ։࢝ όϦσʔγϣϯ Τϥʔ ਖ਼ৗʹྃ 5FYUͷมԽ
5FYU'JFMEͷϦΞϧλΠϜόϦσʔγϣϯ w ೖྗऴྃˠUFYU'JFME%JE&OE&EJUJOH w 5FYUͷมԽˠ3FBDUJWF$PDPB w UFYU'JFMETIPVME$IBOHF$IBSBDUFST*O3BOHFSFQMB DFNFOU4USJOHͰϋϯυϦϯά͠ΜͲ͍
3FBDUJWF$PDPBʹΑΔ 5FYUมԽͷݕ
3FBDUJWF$PDPBʹΑΔ5FYUมԽͷݕ var disposables: [Disposable] = [] textFields.forEach { textField in
let disposable = textField.rac_textSignal().toSignalProducer().skip(1).startWithNext { text in do { try self.validate(text: text, textField: textField) } catch let error { // ΤϥʔϋϯυϦϯά } } disposables.append(disposable) }
3FBDUJWF$PDPBʹΑΔ5FYUมԽͷݕ var disposables: [Disposable] = [] textFields.forEach { textField in
let disposable = textField.rac_textSignal().toSignalProducer().skip(1).startWithNext { text in do { try self.validate(text: text, textField: textField) } catch let error { // ΤϥʔϋϯυϦϯά } } disposables.append(disposable) } ॳճͷTJHOBMΛແࢹ͢Δ͜ͱͰ ະೖྗͱೖྗதΛ۠ผ
TUSVDUʹΑΔΤϥʔͷදݱ
TUSVDUʹΑΔΤϥʔͷදݱ w &SSPS5ZQF1SPUPDPMͳͷͰTUSVDUͰ0, w DMBTT͑Δ w όϦσʔγϣϯΤϥʔʹTUSVDU͕ศར w ΤϥʔͷछྨΛ۠ผ͢Δඞཁ͕ͳ͍ w
ΤϥʔϝοηʔδͱՃใ͚ͩ
TUSVDUʹΑΔΤϥʔͷදݱ struct ValidationError: ErrorType { let message: String let showWhileEditing:
Bool } ϝοηʔδͱ ฤूதදࣔ͢Δ͔Ͳ͏͔ͷϑϥάͷΈ
ϑϦϧͰͷվળͷ݁Ռ
ϑϦϧͰͷվળͷ݁Ռ w ΞΧϯτొ͕Ξοϓ
·ͱΊ
·ͱΊ w গͳ͍ೖྗͰࡁΈɺೖྗܗ͕͔ࣜΓɺϦΞ ϧλΠϜͰνΣοΫ͞ΕΔϑΥʔϜշద w ϦΞϧλΠϜνΣοΫʹ5FYUͷมԽͱೖྗ ྃͷλΠϛϯάͰόϦσʔγϣϯ͢Δ w 3FBDUJWF$PDPBΛ͏ͱ5FYUมԽͷݕָ͕ w
όϦσʔγϣϯΤϥʔTUSVDUΛ͏ͱྑ͍ w ϑϦϧͷ߹ɺొϑΥʔϜվળͰొ͕ ্͕ͬͨ