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
Introduction Differ/differ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
corin8823
October 25, 2017
Technology
3.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction Differ/differ
corin8823
October 25, 2017
More Decks by corin8823
See All by corin8823
検証と資産化を形にするプロダクト組織へ/tapple_pmconf2024
corin8823
2
17k
経済学の知見を活かしたユーザに行動変容を促す仕掛け - タップルでの共同研究プロジェクトを例として
corin8823
1
170
新しい恋愛様式への挑戦/engineer_career_design_week
corin8823
0
200
安心安全な開発にむけて/matching-dev-meetup-5
corin8823
0
470
Bad practice for tax hike handling
corin8823
0
620
Practice of build and CI/CD at tapple/practice_of_build_at_tapple
corin8823
1
280
「タップル誕生」における開発の変化 / change_development
corin8823
1
480
明日から使えるViewControllerの Memory Leak検出/iOSDC-2018-Memory-Leak
corin8823
6
2.8k
マッチングアプリにつきまとう状態管理のつらさ/torte_state
corin8823
9
7.4k
Other Decks in Technology
See All in Technology
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
400
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
410
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
Introduction to Bill One Development Engineer
sansan33
PRO
0
470
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
780
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
0
190
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
190
コーチングの奥義 何もしないテクニック
jinwatanabe
0
160
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
700
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
130
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
480
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
Mobile First: as difficult as doing things right
swwweet
225
10k
Designing for Timeless Needs
cassininazir
1
450
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Tell your own story through comics
letsgokoyo
1
1k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
480
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
710
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
RailsConf 2023
tenderlove
30
1.5k
Transcript
INTRODUCTION DIFFER ߴڮ ༏հ @corin8823 2017.10.25 POTATOTIPS #44
ߴڮ ༏հ yusuke takahashi corin8823 @corin8823 ࣗݾհ
IUUQTGBDFCPPLHJUIVCJPqVYEPDTJOEFQUIPWFSWJFXIUNMDPOUFOU 'MVY
'MVYྫ final class TopViewController: UIViewController { @IBOutlet weak var tableView:
UITableView! private let store = TopStore() private let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() self.store.items .asObservable() .bind { [weak self] _ in self?.tableView.reloadData() } .disposed(by: self.disposeBag) } }
'MVYྫ final class TopViewController: UIViewController { @IBOutlet weak var tableView:
UITableView! private let store = TopStore() private let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() self.store.items .asObservable() .bind { [weak self] _ in self?.tableView.reloadData() } .disposed(by: self.disposeBag) } }
%FNP
w UBCMF7JFXΛSFMPBE%BUB͢Δ͚ͩ w Ξχϝʔγϣϯ͞Εͳ͍ ɾТɾʆ w ݅আ͚ͩͳͷʹSFMPBEͱ͔ɻɻɻ ɾТɾʆ
w 7JSUVBM%0.ͷࡶͳཧղ w EJ⒎Λऔಘ w QBUDI͢ΔBDUJPO w ࠷খͷίετͰঢ়ଶભҠΛදݱ 8FCϑϩϯτΤϯυͷ'MVY3FEVYͩͱ IUUQTRJJUBDPNNJ[DIJJUFNTECDEFGEF
w ී௨ͷ7JFXCJOE͢Δ͚ͩ ͔͠ͳ͍ w UBCMF7JFXDPMMFDUJPO7JFX·͍͠ w CFHJO6QEBUFTFOE6QEBUFT w JOEFY1BUIͷࢦఆ͕ඞཁɻɻɻ
w JOEFY1BUIΛ4UPSFʹ͑ͯɻɻɻ J04ͩͱ
UPOZBSOPME%J⒎FS IUUQTHJUIVCDPNUPOZBSOPME%J⒎FS
w XPLBMTLJ%J⒎TXJGU͕ͱͱ w 0 / . % w /ͱ.͕ྻͷ͞ɺ%͕ࠩ
w ྻͷҧ͍Λੜ w UBCMF7JFXͱ$PMMFDUJPO7JFXͷ&YUFOTJPO UPOZBSOPME%J⒎FS IUUQDPOTUFMMBUJPOIBUFOBCMPHDPNFOUSZ IUUQTHJUIVCDPNXPLBMTLJ%J⒎TXJGU
UPOZBSOPME%J⒎FS IUUQTHJUIVCDPNKqJOUFS%XJ⒎U w KqJOUFS%XJ⒎U͋Δ w UPOZBSOPME%J⒎1FSGPSNBODF4VJUF w BOJNBUF3PX$IBOHFT PME%BUBPME OFX%BUBOFX
w BOJNBUF3PX"OE4FDUJPO$IBOHFT PME%BUBPME OFX%BUBOFX IUUQTHJUIVCDPNUPOZBSOPME%J⒎1FSGPSNBODF4VJUF
%FNP
w ϥϯμϜͳจࣈྻΛྻʹ"EE w ͦͷதྻ͔ΒͭΛ%FMFUF %FNP IUUQTHJUIVCDPNDPSJO%J⒎FS%FNP
/PSNBM
%J⒎FS
'MVYXJUI%J⒎FS final class TopViewController: UIViewController { @IBOutlet weak var tableView:
UITableView! private let store = TopStore() private let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() self.store.items .asObservable() .scan([]) { [weak self] (old, new) -> [String] in self?.tableView.animateRowChanges( oldData: old, newData: new) return new }.bind { [weak self] _ in } .disposed(by: self.disposeBag) } }
·ͱΊ
ઃܭͱύϑΥʔϚϯεͷ ཱ͕͍͍྆ײ͡ʹ
5)"/,:06