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
43
Designer's and Engineer's Thinking Styles
ninjinkun
0
120
Launchable Webinar テストを効率化して生産性を上げる方法
ninjinkun
2
500
ディープリンクの 設計と実装 - iOSDC2017
ninjinkun
18
9.8k
スマートフォンアプリ開発における共創的な開発チーム
ninjinkun
61
18k
ReSwiftでアプリの状態管理 / Reactive Swift Meetup
ninjinkun
9
16k
フリルのアプリ開発今昔物語
ninjinkun
3
2.2k
プロトタイピング合宿によるデザインリニューアル
ninjinkun
1
3k
デザイナーが仕事をしやすいアプリエンジニアを考える
ninjinkun
4
620
Other Decks in Programming
See All in Programming
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
190
シェーダーで魅せるMapLibreの動的ラスタータイル
satoshi7190
1
480
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
300
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
CSC509 Lecture 13
javiergs
PRO
0
110
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
960
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
ローコードSaaSのUXを向上させるためのTypeScript
taro28
1
630
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
How to Ace a Technical Interview
jacobian
276
23k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Statistics for Hackers
jakevdp
796
220k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
The Cult of Friendly URLs
andyhume
78
6k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
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 ΛΘͳ͘ͳΒͳ͚Ε͍͚ͳ͘ͳΔͷͰɺࠓͷ ͱ͜Ζ͍ͬͯͳ͍