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
ninjinkun
August 03, 2014
Programming
8
4.7k
ゆるやかなReactiveCocoaの導入
Fablic社でのReactiveCocoaの(ゆるい)導入事例
ninjinkun
August 03, 2014
Tweet
Share
More Decks by ninjinkun
See All by ninjinkun
買収から2ヶ月でシステム統合した話
ninjinkun
0
59
Designer's and Engineer's Thinking Styles
ninjinkun
0
160
Launchable Webinar テストを効率化して生産性を上げる方法
ninjinkun
2
520
ディープリンクの 設計と実装 - iOSDC2017
ninjinkun
18
10k
スマートフォンアプリ開発における共創的な開発チーム
ninjinkun
61
18k
ReSwiftでアプリの状態管理 / Reactive Swift Meetup
ninjinkun
9
16k
フリルのアプリ開発今昔物語
ninjinkun
3
2.2k
プロトタイピング合宿によるデザインリニューアル
ninjinkun
1
3k
デザイナーが仕事をしやすいアプリエンジニアを考える
ninjinkun
4
640
Other Decks in Programming
See All in Programming
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
47
17k
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
470
Unity Android XR入門
sakutama_11
0
160
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
2
410
Pulsar2 を雰囲気で使ってみよう
anoken
0
240
Introduction to kotlinx.rpc
arawn
0
700
Formの複雑さに立ち向かう
bmthd
1
850
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
10
3.6k
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
130
sappoRo.R #12 初心者セッション
kosugitti
0
250
ソフトウェアエンジニアの成長
masuda220
PRO
10
1.1k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
330
A designer walks into a library…
pauljervisheath
205
24k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Become a Pro
speakerdeck
PRO
26
5.1k
4 Signs Your Business is Dying
shpigford
182
22k
Designing Experiences People Love
moore
140
23k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
440
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
550
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Optimizing for Happiness
mojombo
376
70k
Transcript
ΏΔ͔ͳ 3FBDUJWF$PDPBͷಋೖ OJOKJOLVO
ΞδΣϯμ w ͳͥࠓ3FBDUJWF$PDPB 3"$ ͔ w 3FBDUJWF$PDPBͷஈ֊తͳ࠾༻ w .77.ͷ؇͔ͳҠߦ
ҙ w ษڧ͠ͳ͕Βࢿྉ࡞͍ͬͯ·͢ w ݴ༿ͷఆ͍ٛํ͕ਖ਼͘͠ͳ͍Մೳੑ͕͋Γ·͢
ͳͥࠓ3FBDUJWF$PDPB͔ w ΞϓϦͷෳࡶԽ w 8FCαʔϏε࿈ܞΞϓϦͷ૿Ճ w ඇಉظॲཧͷଟ༻
ͳͥࠓ3FBDUJWF$PDPB͔ w ΞϓϦ͕ඇৗʹଟ͘ͷzঢ়ଶzͱzඇಉظॲཧzΛ࣋ͬ ͍ͯΔ w ଟͷ"1*ͱඇಉظʹ௨৴͠ɺঢ়ଶΛదʹߋ৽ ͠ɺϢʔβʔʹදࣔ͢Δ
ͳͥࠓ3FBDUJWF$PDPB͔ w 'SJMͷ-JLF "1*ίʔϧ Ϟσϧͷ-JLF ὑΞΠίϯస ͍͍Ͷͷߋ৽ -JLFͷߋ৽Λ௨ $FMMΛϦϩʔυ
.PEFMΛͯ͠ ৄࡉϏϡʔΛදࣔ ˞σʔλ։ൃػͷͷͰ͢
ͳͥࠓ3FBDUJWF$PDPB͔
ͳͥࠓ3FBDUJWF$PDPB͔ w .PEFMͷߋ৽ɺ௨ɺ7JFXͷߋ৽ w EFMFHBUFϝιουPS/4/PUJpDBUJPO$FOUFS w ίϝϯτɺϢʔβʔͷϑΥϩʔͳͲಉ͡ w खͰঢ়ଶΛಉظ͢ΔϝιουΛॻ͖ଓ͚ΔͷʹݶքΛײ͡Δ w
ΈΜͳ͕ΜͬͯͬͯΔ͚Ͳ w ঢ়ଶͷཧͱඇಉظॲཧΛநԽ͍ͨ͠
ؔܕϦΞΫςΟϒϓϩάϥϛϯά '31 w l'31JTQSPHSBNNJOHXJUIBTZODISPOPVTEBUB TUSFBNTz w 4USFBN w ϢʔβʔͷΫϦοΫ 5XJUUFSͷGFFE
FUDʜ
ؔܕϦΞΫςΟϒϓϩάϥϛϯά '31 w ؔܕݴޠͷύϥμΠϜ͔Β༝དྷ w .JDSPTPGU͕/FUͰ(6*ք۾ʹΊͨ w ༷ʑͳ࣮͕͋Δ w 3FBDUJWF
(SBQFGSVJU :BNQB BLLB w 3Y&YUFOUJPOT 3"$ 3Y+BWB 3Y+4 SFBDU
'31ͷಛ w 5IF3FBDUJWF.BOJGFTUPΑΓ w &WFOU%SJWFOΠϕϯτۦಈ w 4DBMBCMF֦ுੑ w 3FTJMJFOUোͷੑ w
3FTQPOTJWFԠੑ
'31ͷ༻్ w αʔόʔͰΫϥΠΞϯτͰ͑Δ֓೦ w ͕ࣗࢥ͍ͭ͘'31ͷ༻్ w αʔόʔ w νϟοτɺಈը৴ɺΦϯϥΠϯήʔϜͳͲԠੑ͕ٻ ΊΒΕΔͷ
w ΫϥΠΞϯτ w 4/4ɺνϟοτͳͲ"1*Λଟίʔϧ͢ΔΞϓϦɺήʔϜ
εϚϑΥΞϓϦΠϕϯτͩΒ͚ w (6*ͷΠϕϯτ w λοϓɺδΣενϟ w ϋʔυΣΞͷΠϕϯτ w (14ใɺϞʔγϣϯ w
௨৴ͷΠϕϯτ w "1*ίʔϧͱϨεϙϯεड৴ɺΤϥʔॲཧ
εϚϑΥΞϓϦͱ'31 w ΞϓϦ͕ංେԽͯ͘͠ΔͱΠϕϯτͩΒ͚ʹͳΔ w ಛʹ8FCαʔϏεͷΫϥΠΞϯτͰݦஶ w 8FCαʔϏε֤͕ࣾ'31Λར༻࢝͠Ί͍ͯΔ w (JUIVC /FUqJY
αʔόʔ 'BDFCPPL +4 w $IBUXPSL 'SFFF 'BCMJD *ODSFNFOUT
3"$ͷஈ֊తͳ࠾༻
'BCMJDͷ3"$ར༻ϙϦγʔ w 3"$ʹϩοΫΠϯ͞ΕΔΑ͏ͳ࣮ආ͚Δ w 3"$ΦϒδΣΫτΛϞδϡʔϧؒͷΠϯλʔϑΣ Πεʹ༻͠ͳ͍ w ·ͩͪΌΜͱ3"$ΛཧղͰ͖͍ͯͳ͍ͷͰʜ
3FBDUJWF$PDPBͷஈ֊తͳ࠾༻ w 'BCMJDͰͷ3"$ͷ༻్ w ςΩετͷ7BMJEBUJPO w %FMFHBUFϥούʔ w ,70ϥούʔ w
.77.ͷͱ͜ΖͰޙड़
ςΩετͷ7BMJEBUJPO w όϦσʔγϣϯͯ͠ϘλϯΛFOBCMFʹ͢Δ w 3"$ͷ3&"%.&ʹྫ͕͋ΔͷͰͱΓ͋͑ͣಋೖ ͢Δʹ͏͚ͬͯͭ w ྫ͑͜ΕۜߦͷࢧళΛೖྗͤ͞Δίʔυ RAC(self.navigationItem.rightBarButtonItem, enabled)
= [_branchCodeTextField.rac_textSignal map:^id(NSString *text) { return @(text && [ValidatioUtil isValidBranchCode:text]); }];
EFMFHBUFϥούʔ w EFMFHBUFϝιουΛΘͣʹͦͷͰCMPDLΛͤ Δ w #MPDLT,JUͱಉ͡༻్ UIAlertView *alertView = [[UIAlertView
alloc] initWith…]; [[alertView rac_buttonClickedSignal] subscribeNext:^(NSNumber *buttonIndex) { switch ([buttonIndex integerValue]) { case 1: do some thing… break; case 2: do something … break; default: break; } }]; [alertView show];
.77.ͷ ؇͔ͳҠߦ
.77.ͱ w .PEFM7JFX7JFX.PEFM w 7JFX.PEFM w 7JFXΛඳը͢ΔͨΊͷঢ়ଶอ࣋ w 7JFXΠϕϯτͷ݁ՌΛ.PEFMୡ 7JFX
7JFX.PEFM .PEFM
3"$Ͱ.77. w 7JFX7JFX.PEFMؒΛCJOEJOH w 7JFX.PEFMͷߋ৽ࣗಈతʹ7JFXʹө 7JFX 7JFX.PEFM .PEFM 6*7JFX 6*7JFX$POUSPMMFS
3"$ͰCJOEJOH RAC(self.detailMessageLabel, text) = [RACObserve(self, detailMessage) filter:^BOOL(NSString *message) { return message.length; }];
ͳͥ.77.͕ඞཁ͔ w -JLFͷྫ 7JFX.PEFMͷ -JLF 7JFX.PEFMͷߋ৽Λݕ ࣗಈతʹ$FMMΛߋ৽ 7JFX.PEFMΛ ͯ͠ৄࡉϏϡʔΛදࣔ
ͳͥ.77.͕ඞཁ͔ w 4/4ΞϓϦͰঢ়ଶΛ7JFX$POUSPMMFSؒͰڞ༗͢ Δ͜ͱ͕ଟ͍ w -JLF w ίϝϯτ w ΤϯτϦใͷՃɺฤूɺআ
w 7JFX.PEFMΛCJOE͢Ε7JFXࣗಈߋ৽ʹ͍ͨ͠
3FBDUJWF$PDPBຊͷ.77. w 3"$7JFX.PEFMΛܧঝͯ͠7.Λ࣮ w )551ϦΫΤετͷ։࢝·Ͱ7.͕࣋ͭ w 7JFX$POUSPMMFSʹ3"$4JHOBMΛฦͯ͠ ॲཧͷޭɺࣦഊΛड͚ͱΔ w 3"$4JHOBMґଘͷઃܭʹͳΔͷͰࠓͷͱ
͜Ζෆ࠾༻
ͷߟ͑ΔΏΔ͍.77. w ͱʹ͔͘.VUBCMFͳͷ7.ʹूΊΔ w +40/͔Βੜ͞Εͨ/40CKFDU*NNVUBCMFʹ w 7.ʹର͢ΔϢχοτςετΛॻ͘ w 3"$CJOEͷΈʹ͏ FLItem
*item = self.items[indexPath.item]; ! __weak typeof(self) weakSelf = self; // ৄࡉͰLikeΛ֎ͨ͠ΒҰཡͰLike͕֎ΕΔΑ͏ʹ͢Δ [RACObserve(item, liked) subscribeNext:^(id x) { [weakSelf.collectionView reloadItemsAtIndexPaths:@[indexPath]]; }];
'SJMͷ7. w ෳͷ+40/༝དྷ/40CKFDUΛ͍࣋ͬͯΔ w λΠϜϥΠϯͱৄࡉϏϡʔͷ"1*͝ͱʹऔΕΔใ ͷৄࡉ͕ҧ͏ͷͰɺ߹ͯ͠܅͚ͩͷ.PEFMΛ࡞ Δඞཁ͕͋Δ
'SJMͷ7. λΠϜϥΠϯ"1* ৄࡉ"1* αΠζ ૹྉ ૹํ๏ ίϝϯτ ໊ ϒϥϯυ
Ձ֨ αΠζ ૹྉ ૹํ๏ ίϝϯτ ໊ ϒϥϯυ Ձ֨ 7JFX.PEFM
'SJMͷ7. w 7JFX.PEFMΛ3"$ͰCJOE w 7JFX.PEFMΛߋ৽͢Δ w 7JFXʹࣗಈతʹঢ়ଶ͕ө͞ΕΔ w +40/ͷू ঢ়ଶͷू
7JFXͷಉظ αΠζ ૹྉ ૹํ๏ ίϝϯτ ໊ ϒϥϯυ Ձ֨ 7JFX.PEFM
'31ͷڭࡐ
5IFJOUSPEVDUJPOUP3FBDUJWF 1SPHSBNNJOHZPVWFCFFONJTTJOH w IUUQTHJTUHJUIVCDPNTUBMU[ FFCDBCDG w ϦΞΫςΟϒ·ͱΊ w ೖฤͱͯ͠Ұ൪ྑ͍ͱࢥ͏
1SJODJQMFTPG3FBDUJWF 1SPHSBNNJOH w $PVSTFSB w 4DBMBͱBLLBΛͬͨ'31ͷߨٛ w .BSUJO0EFSTLZઌੜ͔Βश͑Δ w '31ͷجૅΛஸೡʹղઆ
w ΫϥΠΞϯτΞϓϦͷͳ͍ w 3"$Λ͍͍͚ͨͩͳΒΦʔόʔεϖοΫ͔
3FBDUJWF1SPHSBNNJOHJOJ04 w 3FBDUJWF$PDPBͷຊ w ϖʔδ͘Β͍ w .77.ͷΓํॻ͍ͯ͋Δ w 3"$ͷυΩϡϝϯτͰॆઆ͋Γ w
ݸਓతʹಡΜͰଛͳ͔ͬͨ
·ͩΑ͘ཧղͰ͖ͯͳ͍͜ͱ w ଞͷ'31ϑϨʔϜϫʔΫͱ3"$ͷ༻ޠରԠ w $MBTTJD'31 4JHOBM'VODUJPO w Ξχϝʔγϣϯͱͷ૬ੑ͕ѱ͍આ
·ͱΊ w '31ͱεϚʔτϑΥϯΞϓϦͷؔʹ͍ͭͯઆ໌͠ ·ͨ͠ w 3FBDUJWF$PDPBͷஈ֊తͳ࠾༻ w 7BMJEBUJPOͰͷ༻ɺEFMFHBUFϥούʔ w .77.ͷ؇͔ͳҠߦ
w զʑ·ͩ3"$தಟͰͳ͍ʜ
࣭ٙԠ w .77.ͷղऍ͕ҧ͏ͷͰͳ͍͔ɺωοτϫʔΫ ॲཧ·Ͱ7.ʹ࣋ͨͤΔํ͕ࣗવͩͱࢥ͏ w 7.ʹ࣋ͨͤͨํ͕ΑΓ៉ྷʹॻ͚Δͷཧղ͠ ͍ͯΔ͕ɺ7.ͷΠϯλʔϑΣΠεʹ3"$4JHOBM ΛΘͳ͘ͳΒͳ͚Ε͍͚ͳ͘ͳΔͷͰɺࠓͷ ͱ͜Ζ͍ͬͯͳ͍