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
370
0
Share
ReactiveCocoaで作る快適な登録フォーム
Melon.swiftの発表資料です。
http://fablic.connpass.com/event/35407/
shoby
July 11, 2016
More Decks by shoby
See All by shoby
フリルのCMを支える分析 (メディアバイイング編)
shoby
0
490
FirebaseとBigQueryによるアプリのKPI分析(CMの効果検証編)
shoby
2
2.7k
ユーザーに受け入れられ、問題を起こしづらい大規模リニューアルの進め方
shoby
60
14k
フリルの商品を色で検索できるようにした話
shoby
5
4.4k
Search fashion items by colors
shoby
0
220
iOS 7をサポート対象外にして開発を健全化する
shoby
3
4.1k
Apple Watch Tips
shoby
0
4.2k
WWDC 2015で 発表された新機能と サービスへの活かし方
shoby
2
7.5k
アプリにおける人力ぽちぽちテストの効率化
shoby
3
3.5k
Other Decks in Technology
See All in Technology
個人AIからチームAIへ:開発における品質と生産性の再設計
moongift
PRO
0
330
海外カンファレンス「JavaOne」参加レポート ユーザー系IT企業における目的・成果/JavaOne Report Purpose and Results in the User IT Company
muit
0
120
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
160
管理アカウント単一運用からAWS Organizationsに移行するの大変で滅
hiramax
0
360
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
2
490
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.8k
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
420
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
190
Javaで学ぶSOLID原則
negima
1
240
基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
cm_yasuhara
0
410
Oracle Cloud Infrastructure:2026年5月度サービス・アップデート
oracle4engineer
PRO
1
280
地元にいないローカルオーガナイザーの立ち回り
uvb_76
1
400
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
Designing for humans not robots
tammielis
254
26k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Why Our Code Smells
bkeepers
PRO
340
58k
WENDY [Excerpt]
tessaabrams
11
38k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
170
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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 ϑϦϧͷ߹ɺొϑΥʔϜվળͰొ͕ ্͕ͬͨ