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 x Realm
Search
USAMI Kosuke
September 29, 2015
Programming
0
260
RxSwift x Realm
Realm meetup #7
http://realm.connpass.com/event/19719/
USAMI Kosuke
September 29, 2015
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
690
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
240
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
370
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
540
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
790
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
710
UICollectionView Compositional Layout
usamik26
0
850
Coding Swift with Visual Studio Code and Docker
usamik26
0
550
Swift Extension for Visual Studio Code
usamik26
2
1.1k
Other Decks in Programming
See All in Programming
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
1.2k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
870
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
1.1k
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
Codex の「自走力」を高める
yorifuji
0
1.3k
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
350
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
530
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
150
AHC061解説
shun_pi
0
410
Claude Code Skill入門
mayahoney
0
410
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
530
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
480
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
210
We Are The Robots
honzajavorek
0
200
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
190
Measuring & Analyzing Core Web Vitals
bluesmoon
9
790
Documentation Writing (for coders)
carmenintech
77
5.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
400
Fireside Chat
paigeccino
42
3.8k
Become a Pro
speakerdeck
PRO
31
5.9k
Transcript
3Y4XJGUY3FBMN Ӊࠤݟެี 3FBMNNFFUVQ
ࣗݾհ w Ӊࠤݟެี !VTBNJL w େࡕࡖࢢࡏॅ w ϑΣϯϦϧגࣜձࣾ w
ΞϓϦέʔγϣϯڞಉ։ൃ෦ w J04ΞϓϦΤϯδχΞ ΞυϨεόʔ͢ΒऔΓͬͨ ڀۃͷઌతϒϥβ
ࠓͷ༰ w 3Y4XJGUͷհ w 3Y4XJGUͱ3FBMNͱͷ࿈ܞ
3Y4XJGU
None
3FBDUJWF1SPHSBNNJOH w ΠϕϯτͷؔΛهड़ w ҰํͷมԽΛଞํʹ w ϝοηʔδૹ৴ͷӅṭ w σʔλόΠϯσΟϯά3FBDUJWFͳΈͷҰछ
'VODUJPOBM3FBDUJWF1SPHSBNNJOH w ඇಉظσʔλετϦʔϜ w ࣌ؒ࣠ʹԊ͕ͬͯྲྀΕΔϦετ w ετϦʔϜʹର͢ΔϦετૢ࡞ w mapfilterͱ͍ͬͨؔܕͷΠσΟΦϜ
31'31ͷར w Πϕϯτۦಈॲཧ͕ॻ͖͍͢ w ඇಉظॲཧ͕ॻ͖͍͢ w ͕ͨͬͯ͠ɺ(6*ϓϩάϥϛϯάͱ૬ੑ͕Α͍
3FBDUJWF1SPHSBNNJOHGPSJ04 w 3FBDUJWF$PDPB w 3FBDU,JU w 3Y4XJGU w ͦΕͧΕʹྑ͕͋͞Δ
3FBDUJWF9ϑΝϛϦʔ w 3Y/&5 $ w 3Y+4 w 3Y+BWB w
3Y4XJGU w ɾɾɾͳͲ
3Y4XJGU w 4XJGUରԠ൛ w όʔδϣϯBMQIB w J04Ҏ߱ʢJ04Ҏ͕߱·͍͠ʣ w جຊతͳͱ͜Ζे͑Δঢ়ଶ w
࣮Ҋ݅Ͱ࠾༻த
3Y4XJGUͷ࣮ࡍ
3Y4XJGU3Y$PDPB w 3Y4XJGU w 0CTFSWBCMF֤छ0QFSBUPS4DIFEVMFSͳͲ w 3Y$PDPB w 6*,JU/463-4FTTJPO,70ͳͲ
0CTFSWBCMF w ඇಉظσʔλετϦʔϜΛ͋ΒΘ͢
ྫɿΠϕϯτॲཧ button.rx_tap .subscribeNext { _ in // ボタンがタップされたときの処理 } .addDisposableTo(disposeBag)
ྫɿඇಉظॲཧ URLSession.rx_response(request) .subscribeOn(sessionScheduler) .map { (data, response) in // バックグラウンド処理
} .observeOn(mainScheduler) .map { data in // UI処理 }
ྫɿετϦʔϜΛͭ͘Δɿ/463-3FTQPOTFͷ߹ func rx_response(request: NSURLRequest) -> Observable<NSData!, NSURLResponse!> { return create
{ observer in // request を送信してレスポンスを受け取る if 失敗 { observer.on(.Error(error)) } else { observer.on(.Next(data, response)) observer.on(.Completed) } return AnonymousDisposable { /* キャンセル処理 */ } } }
ྫɿετϦʔϜΛͭ͘Δɿผͷखஈ let items = PublishSubject<Item>() // Observable<Item> // データを流す items.on(.Next(item))
// 終了 items.on(.Completed) // エラー終了 items.on(.Error(error))
ྫɿ࡞ͬͨετϦʔϜΛ͏ items .filter { _ in // 不要なデータを捨てる } .subscribeNext
{ _ in // データに対する処理 } .addDisposableTo(disposeBag)
3Y4XJGUY3FBMN
3FBMNͷσʔλऔಘ w 3FBMNͷΫΤϦͰ͍͍͚Ͳɾɾɾ w 3YͰσʔλΛऔಘ͍ͨ͠ʢ0CTFSWBCMFͰѻ͍͍ͨʣ w %#ΞΫηεͱ3Yͷॲཧ͕ࠞࡏ͢Δͱհ w εϨουΛ·͙ͨ߹ΛͲ͏͢Δʁ
3Y+BWBͷέʔεΛࢀߟʹ͢Δ
ϞσϧΫϥεΛ͚Δ w ͻͱͭͷରʹରͯ͠ɺ;ͨͭͷϞσϧΫϥεΛͭ͘Δ w 3FBMNͷ0CKFDUܕͷϞσϧ w ඇ3FBMNͷϞσϧ w Ͱ͋Δ͜ͱ൱ఆͰ͖ͳ͍ɾɾɾ w
%#༻ͷϞσϧͱ7JFX༻ͷϞσϧɺͱࢥ͑ڐ༰ൣғ
հΛͭ͘Δ w 3FBMN%BUB4FSWJDF w 3FBMNͷΫΤϦ͔Β3FTVMUTΛಘΔ w 3FBMNͷ3FTVMUT͔Β7JFX༻ͷϞσϧʹม w 7JFX༻ͷϞσϧͷ0CTFSWBCMFΛग़ྗ
3FBMNͷΞΫηε w 3FBMN0CTFSWBCMF w 3FBMNͷΞΫηεॲཧΛҰՕॴʹ·ͱΊΔ w ʢલड़ͷ3FBMN%BUB4FSWJDFͰ3FBMNΞΫηε ͢Δ͜ͱՄೳ͕ͩɺࡶʹͳΔʣ
͍ํ RealmDataService.items .map { item in // モデルの処理 } .addDisposableTo(disposeBag)
3FBMNͷॻ͖ࠐΈ w ಉ༷ͷΈͰॻ͖ࠐΈʹରԠͰ͖Δ w 3FBMN%BUB4FSWJDFʹσʔλ࡞*'ΛՃ w 3FBMN0CTFSWBCMFΛτϥϯβΫγϣϯʹରԠ
·ͱΊ
·ͱΊ w 3Y4XJGUͷհ w 3Y4XJGUͷ࣮ࡍ w 3Y4XJGUͱ3FBMNͱͷ࿈ܞ w Ұ͍ΕΔͱΑ͍ w
3Yͱ3FBMNΛͪΌΜͱ͚ͯߟ͑Δͷ͕Α͍
None