Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
DN
Uploaded by
Daisuke Nagata
646 views
Sansan様 登壇資料
Reactive Extensions
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 67
2
/ 67
3
/ 67
4
/ 67
5
/ 67
6
/ 67
7
/ 67
8
/ 67
9
/ 67
10
/ 67
11
/ 67
12
/ 67
13
/ 67
14
/ 67
15
/ 67
16
/ 67
17
/ 67
18
/ 67
19
/ 67
20
/ 67
21
/ 67
22
/ 67
23
/ 67
24
/ 67
25
/ 67
26
/ 67
27
/ 67
28
/ 67
29
/ 67
30
/ 67
31
/ 67
32
/ 67
33
/ 67
34
/ 67
35
/ 67
36
/ 67
37
/ 67
38
/ 67
39
/ 67
40
/ 67
41
/ 67
42
/ 67
43
/ 67
44
/ 67
45
/ 67
46
/ 67
47
/ 67
48
/ 67
49
/ 67
50
/ 67
51
/ 67
52
/ 67
53
/ 67
54
/ 67
55
/ 67
56
/ 67
57
/ 67
58
/ 67
59
/ 67
60
/ 67
61
/ 67
62
/ 67
63
/ 67
64
/ 67
65
/ 67
66
/ 67
67
/ 67
More Related Content
PDF
Rx swift,Repro framewolrk
by
Daisuke Nagata
PDF
クラスメソッド第4回登壇資料 RxRealm
by
Daisuke Nagata
PDF
RxSwift
by
Kosuke Usami
PDF
RxSwift x APIKit
by
Kosuke Usami
PDF
RxSwift x Realm
by
Kosuke Usami
PDF
RxSwiftのデータバインディングだけ
by
Hironytic
PDF
RxSwift
by
Kosuke Usami
PDF
Ruby風Swift NSOperation編
by
Hisakuni Fujimoto
Rx swift,Repro framewolrk
by
Daisuke Nagata
クラスメソッド第4回登壇資料 RxRealm
by
Daisuke Nagata
RxSwift
by
Kosuke Usami
RxSwift x APIKit
by
Kosuke Usami
RxSwift x Realm
by
Kosuke Usami
RxSwiftのデータバインディングだけ
by
Hironytic
RxSwift
by
Kosuke Usami
Ruby風Swift NSOperation編
by
Hisakuni Fujimoto
What's hot
PDF
freee社でのReactiveCocoa活用例
by
yo_waka
PDF
Serverless apps on aws using scala
by
Yoshitaka Fujii
PPTX
Scala.jsはじめました?
by
K Kinzal
PPTX
Scala.jsはじめました!
by
K Kinzal
PDF
ECMAScript6による関数型プログラミング
by
TanUkkii
PDF
Reactive Systems と Back Pressure
by
Akihiro Ikezoe
KEY
Starting java fx
by
Kazuhiro Eguchi
PDF
The Next Generation for C# Developers
by
Takayoshi Tanaka
PPT
Rubyize
by
Akio Tajima
PDF
scala-kaigi1-sbt
by
Kenji Yoshida
PDF
react_rails
by
Shigeru Kondoh
PDF
Elixir Meetup #1 Loggerの構造と拡張
by
Sugawara Genki
PDF
Introduction to Kanagawa Ruby Kaigi01 #kana01
by
Aki Ariga
PDF
Miyazaki Resistanceを作ってみたよ
by
Tsukasa Oishi
PPTX
20160927 reactmeetup
by
Naoki Kurosawa
PDF
EC2の天井を超える
by
Sugawara Genki
PDF
NoSQL and JavaScript 2013-02-09
by
WakandaJA
PDF
AWSをコードで定義する
by
Sugawara Genki
PPT
20090121 J QueryからはじめるJava Script~初級編~
by
Hiromu Shioya
PPTX
Reactive
by
Akihiro Ikezoe
freee社でのReactiveCocoa活用例
by
yo_waka
Serverless apps on aws using scala
by
Yoshitaka Fujii
Scala.jsはじめました?
by
K Kinzal
Scala.jsはじめました!
by
K Kinzal
ECMAScript6による関数型プログラミング
by
TanUkkii
Reactive Systems と Back Pressure
by
Akihiro Ikezoe
Starting java fx
by
Kazuhiro Eguchi
The Next Generation for C# Developers
by
Takayoshi Tanaka
Rubyize
by
Akio Tajima
scala-kaigi1-sbt
by
Kenji Yoshida
react_rails
by
Shigeru Kondoh
Elixir Meetup #1 Loggerの構造と拡張
by
Sugawara Genki
Introduction to Kanagawa Ruby Kaigi01 #kana01
by
Aki Ariga
Miyazaki Resistanceを作ってみたよ
by
Tsukasa Oishi
20160927 reactmeetup
by
Naoki Kurosawa
EC2の天井を超える
by
Sugawara Genki
NoSQL and JavaScript 2013-02-09
by
WakandaJA
AWSをコードで定義する
by
Sugawara Genki
20090121 J QueryからはじめるJava Script~初級編~
by
Hiromu Shioya
Reactive
by
Akihiro Ikezoe
Viewers also liked
DOCX
SHERRI'S RESUME REVISED##
by
Sherri Allen
PDF
สัตว์สวยงามใกล้สูนย์พันธุ์
by
Fluke Mak
PPTX
Trabajo práctico copia
by
Marcelaalejandra De Arias
DOCX
Gender inequality in media
by
aluxbaiya
PPTX
Umiko - Présentation pour concours levier de-ton-idée
by
Therence Bois
PPTX
Bittarget digital marketing-campaign in noida
by
bittarget1
PPTX
Chignahuapan
by
maria griselda de jesus narcizo
PDF
5. all published paper
by
Halei Zhai
PPTX
Mecanografía
by
Genesis Carolina Aguero Mendez
PDF
พศิน โครงงาน
by
Fluke Mak
DOCX
Caso solucionado electiva vi coaching luis armas
by
luis armas
PDF
Preso RB engl 2016
by
Research Band
PPTX
La ergonomía en la organización de la empresa
by
Genesis Carolina Aguero Mendez
DOCX
Tugas sim kurniawan
by
parimalangkurniawan
DOC
CV T Mooi June 2016
by
Trevor Mooi
PDF
The Hover: Software for building web and mobile apps
by
The Hover Cloud Programming Engine
PPTX
ESCUELA 213
by
MÓNICA Ristori
SHERRI'S RESUME REVISED##
by
Sherri Allen
สัตว์สวยงามใกล้สูนย์พันธุ์
by
Fluke Mak
Trabajo práctico copia
by
Marcelaalejandra De Arias
Gender inequality in media
by
aluxbaiya
Umiko - Présentation pour concours levier de-ton-idée
by
Therence Bois
Bittarget digital marketing-campaign in noida
by
bittarget1
Chignahuapan
by
maria griselda de jesus narcizo
5. all published paper
by
Halei Zhai
Mecanografía
by
Genesis Carolina Aguero Mendez
พศิน โครงงาน
by
Fluke Mak
Caso solucionado electiva vi coaching luis armas
by
luis armas
Preso RB engl 2016
by
Research Band
La ergonomía en la organización de la empresa
by
Genesis Carolina Aguero Mendez
Tugas sim kurniawan
by
parimalangkurniawan
CV T Mooi June 2016
by
Trevor Mooi
The Hover: Software for building web and mobile apps
by
The Hover Cloud Programming Engine
ESCUELA 213
by
MÓNICA Ristori
Similar to Sansan様 登壇資料
PDF
Reactive Extensionの紹介
by
Dev Ogiwara
PPTX
Rxに入門しようとしている
by
onotchi_
PDF
MlnagoyaRx
by
Shoichi Kakamu
PPTX
今日から始めるRxSwift
by
Kaoru Hotate
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
PPTX
オブジェクト指向な人がRx swiftを試してみた
by
小林 弘明
PPTX
Reactive extensions
by
yone64
PDF
RxShowcase -for ignote & i-Jupiter-
by
Takaaki Suzuki
PDF
Rx入門
by
Takaaki Suzuki
PDF
RxSwiftをバインディングツールとして使ってみる
by
Hironytic
PPTX
ReactiveProperty
by
一希 大田
PDF
Clean Architectureで設計してRxJSを使った話
by
_kondei
PDF
Reactive Extensions v2.0
by
Yoshifumi Kawai
PDF
Reactive Extensionsはじめました
by
一希 大田
PDF
Xamarin で ReactiveUI を使ってみた
by
Hironov OKUYAMA
PDF
MlnagoyaRx02
by
mega80b
PDF
RxSwiftを“チーム開発に”導入する話
by
LINE Corporation
PDF
Rx Showcase
by
Takaaki Suzuki
PPTX
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
by
Hironori Suzuki
PPTX
UniRxことはじめ
by
Shoichi Yasui
Reactive Extensionの紹介
by
Dev Ogiwara
Rxに入門しようとしている
by
onotchi_
MlnagoyaRx
by
Shoichi Kakamu
今日から始めるRxSwift
by
Kaoru Hotate
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
オブジェクト指向な人がRx swiftを試してみた
by
小林 弘明
Reactive extensions
by
yone64
RxShowcase -for ignote & i-Jupiter-
by
Takaaki Suzuki
Rx入門
by
Takaaki Suzuki
RxSwiftをバインディングツールとして使ってみる
by
Hironytic
ReactiveProperty
by
一希 大田
Clean Architectureで設計してRxJSを使った話
by
_kondei
Reactive Extensions v2.0
by
Yoshifumi Kawai
Reactive Extensionsはじめました
by
一希 大田
Xamarin で ReactiveUI を使ってみた
by
Hironov OKUYAMA
MlnagoyaRx02
by
mega80b
RxSwiftを“チーム開発に”導入する話
by
LINE Corporation
Rx Showcase
by
Takaaki Suzuki
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
by
Hironori Suzuki
UniRxことはじめ
by
Shoichi Yasui
More from Daisuke Nagata
PDF
iOSDC Japan 2019 Reject Conference days1[非公式]
by
Daisuke Nagata
PDF
Swift love party _meeting_materials
by
Daisuke Nagata
PDF
Swift愛好会vol37
by
Daisuke Nagata
PDF
Ios machine learning
by
Daisuke Nagata
PDF
Metalプログラミング
by
Daisuke Nagata
PDF
Swiftプログラミングを考える
by
Daisuke Nagata
PDF
Bluetooth connecting iot bluetooth
by
Daisuke Nagata
PDF
Machine learning at swift3
by
Daisuke Nagata
PDF
OpenCV→Swift3.0.1
by
Daisuke Nagata
PDF
実践業務を爆速でこなすtipsとgenerics
by
Daisuke Nagata
PDF
Realm,rx swift,repro を使ってみて
by
Daisuke Nagata
PDF
Realm meet up #17
by
Daisuke Nagata
PDF
キャリアとアプリの アップデート
by
Daisuke Nagata
iOSDC Japan 2019 Reject Conference days1[非公式]
by
Daisuke Nagata
Swift love party _meeting_materials
by
Daisuke Nagata
Swift愛好会vol37
by
Daisuke Nagata
Ios machine learning
by
Daisuke Nagata
Metalプログラミング
by
Daisuke Nagata
Swiftプログラミングを考える
by
Daisuke Nagata
Bluetooth connecting iot bluetooth
by
Daisuke Nagata
Machine learning at swift3
by
Daisuke Nagata
OpenCV→Swift3.0.1
by
Daisuke Nagata
実践業務を爆速でこなすtipsとgenerics
by
Daisuke Nagata
Realm,rx swift,repro を使ってみて
by
Daisuke Nagata
Realm meet up #17
by
Daisuke Nagata
キャリアとアプリの アップデート
by
Daisuke Nagata
Sansan様 登壇資料
1.
Reactive Extensions (Rx)
2.
マイクロソフト社 開発
3.
Rxは、2009年11月18日からマイクロソフト のボータルサイトが 解説されていた。
4.
様々に活用される関数型言語
5.
例えば
6.
その前に!!
7.
私は誰ですか?
8.
iosエンジニアです。 漫画アプリ、 RealmSDK、 セキュリティアプリ、 ニュースアプリ、 カメラアプリ、 アキパス 相続税アプリ、
9.
RxSwift
10.
RxJava
11.
RxJs
12.
ReactKit
13.
RxCocoa
14.
SwiftBond
15.
ReactiveCocoa
16.
RxRealm
17.
SwiftbondだけRxではないけど 関数型言語です。
18.
本日は何をするか?
19.
関数型言語で全般的に使える 思考、解釈、コード発表。
20.
RXのデザインパターンは Observerpattern
21.
Observerpattern とは?
22.
監視対象のオブジェクトを観測者オブジェクト が監視していて、監視対象が変化したのを観 測者が確認したら特定のアクションを起こすの が基本です。
23.
例えば
24.
Var a =
2 let b = a*3 b = 6
25.
Var a =
2 let b = a*3 b = 6 そこに a = 3 にすると b=9になります。
26.
実際にコードで!!
27.
import Foundation import UIKit #if
!RX_NO_MODULE import RxSwift import RxCocoa #endif class NumbersViewController: ViewController { @IBOutlet weak var number1: UITextField! @IBOutlet weak var number2: UITextField! @IBOutlet weak var number3: UITextField! @IBOutlet weak var result: UILabel! override func viewDidLoad() { super.viewDidLoad() Observable.combineLatest(number1.rx_text, number2.rx_text, number3.rx_text) { textValue1, textValue2, textValue3 -> Int in return (Int(textValue1) ?? 0) + (Int(textValue2) ?? 0) + (Int(textValue3) ?? 0) } .map { $0.description } .bindTo(result.rx_text) .addDisposableTo(disposeBag) } }
28.
実際にアプリで!!
29.
https: //github.com /ReactiveX/RxSwift こちらがおきまりのリンク先
30.
Observable??
31.
先ほどのa=3にして b=9になった流れが Observableです!!
32.
様々な呼び出す関数!! 機能は、今回は割愛!!
33.
●empty ●just ●of ●toObservable ●create ●error ●deffered
34.
そして!!!
35.
自分もコード書きました!!! https://github.com/daisukenagata/Dban k/tree/RxRealmTest
36.
usernameOutlet.delegate = self let
usernameValid = usernameOutlet.rx_text .map { $0 == self.userName} .shareReplay(1) usernameValid .bindTo(usernameValidOutlet.rx_hidden) .addDisposableTo(disposeBag) let url = "http://api.gnavi.co.jp/RestSearcht=json=name" /* Observable<Results<Lap>> - wrap Results as observable */ realm.objects(Lap).asObservable() .map {laps in "(laps.count) laps"} .subscribeNext {[unowned self]text in self.title = text } .addDisposableTo(disposeBag) /* Observable<Array<Lap>> - convert Results to Array and wrap as observable */ realm.objects(Lap).sorted("time", ascending: false).asObservableArray() .map {array in array.prefix(2) } .bindTo(tableView.rx_itemsWithCellIdentifier("Cell", cellType: UITableViewCell.self)) {row, element, cell in cell.textLabel!.text = formatter.stringFromDate(NSDate(timeIntervalSinceReferenceDate: element.time)) Alamofire.request(.GET, url) .responseJSON { response in }.addDisposableTo(disposeBag) addOneItemButton.rx_tap .map { Lap() } .bindTo(Realm.rx_add()) .addDisposableTo(disposeBag) }
37.
何のコード???
38.
usernameOutlet.delegate = self let
usernameValid = usernameOutlet.rx_text .map { $0 == self.userName} .shareReplay(1) usernameValid .bindTo(usernameValidOutlet.rx_hidden) .addDisposableTo(disposeBag) let url = "http://api.gnavi.co.jp/RestSearcht=json=name" /* Observable<Results<Lap>> - wrap Results as observable */ realm.objects(Lap).asObservable() .map {laps in "(laps.count) laps"} .subscribeNext {[unowned self]text in self.title = text } .addDisposableTo(disposeBag) /* Observable<Array<Lap>> - convert Results to Array and wrap as observable */ realm.objects(Lap).sorted("time", ascending: false).asObservableArray() .map {array in array.prefix(2) } .bindTo(tableView.rx_itemsWithCellIdentifier("Cell", cellType: UITableViewCell.self)) {row, element, cell in cell.textLabel!.text = formatter.stringFromDate(NSDate(timeIntervalSinceReferenceDate: element.time)) Alamofire.request(.GET, url) .responseJSON { response in }.addDisposableTo(disposeBag) addOneItemButton.rx_tap .map { Lap() } .bindTo(Realm.rx_add()) .addDisposableTo(disposeBag) }
39.
RxRealm
40.
提供する反応コレクション型の非常に薄いラッ パーです。
41.
usernameOutlet.delegate = self let
usernameValid = usernameOutlet.rx_text .map { $0 == self.userName} .shareReplay(1) usernameValid .bindTo(usernameValidOutlet.rx_hidden) .addDisposableTo(disposeBag) let url = "http://api.gnavi.co.jp/RestSearcht=json=name" /* Observable<Results<Lap>> - wrap Results as observable */ realm.objects(Lap).asObservable() .map {laps in "(laps.count) laps"} .subscribeNext {[unowned self]text in self.title = text } .addDisposableTo(disposeBag) /* Observable<Array<Lap>> - convert Results to Array and wrap as observable */ realm.objects(Lap).sorted("time", ascending: false).asObservableArray() .map {array in array.prefix(2) } .bindTo(tableView.rx_itemsWithCellIdentifier("Cell", cellType: UITableViewCell.self)) {row, element, cell in cell.textLabel!.text = formatter.stringFromDate(NSDate(timeIntervalSinceReferenceDate: element.time)) Alamofire.request(.GET, url) .responseJSON { response in }.addDisposableTo(disposeBag) addOneItemButton.rx_tap .map { Lap() } .bindTo(Realm.rx_add()) .addDisposableTo(disposeBag) }
42.
realm.objects(Lap).asObservable()
43.
コレクションが 変更するたびに発行します。
44.
.shareReplay(1)
45.
Hot変換オペレータの1つ!
46.
Hot???
47.
Hotって何?
48.
ストリームを内の変換名称
49.
HotとColdがあります。
50.
Hotはストリームを稼働さ せる性質 Rxのストリームは基本的にSubscribeされた瞬間に各オペレータの動作が始まるようになっています。 ですがHot Observableをストリームの途中に挟むことで、Subscribeを実行するより前にストリームを稼働させることができます。
51.
Subscribeされるまで動作 しない性質 Cold Observableは、Subscribeされる(またはHot変換される)まで動作しないObservableです。稼働していないCold Observableに渡されたメッ セージは全て処理すらされることなく消滅してしまいます。
52.
で、何で.shareReplay(1)?
53.
replayとrefCountという2つのオペレーター について知る必要があります。 引用しました。
54.
realm.objects(Lap).sorted("time", ascending: false).asObservableArray()
55.
.asObservableArray()?
56.
collection上のarray方式を使用する場合など 配列の値に変換します。
57.
今回のサンプルアプリケーションは、 配列に代入するBlock文の中に、 合わせてJsonから取得した情報をデータに書 き込みました。
58.
/* Observable<Array<Lap>> - convert
Results to Array and wrap as observable */ realm.objects(Lap).sorted("time", ascending: false).asObservableArray() .map {array in array.prefix(2) } .bindTo(tableView.rx_itemsWithCellIdentifier("Cell", cellType: UITableViewCell.self)) {row, element, cell in cell.textLabel!.text = formatter.stringFromDate(NSDate(timeIntervalSinceReferenceDate: element.time)) Alamofire.request(.GET, url) .responseJSON { response in こちらにJsonデータ を代入しています。 }.addDisposableTo(disposeBag) addOneItemButton.rx_tap .map { Lap() } .bindTo(Realm.rx_add()) .addDisposableTo(disposeBag) }
59.
実際に動かします。 JsonのURL設定する際に、ぐるなび登録する 必要があります。
60.
感じた利点。
61.
可読性、保守性
62.
反射性、汎用性
63.
今後の課題
64.
なぜ必要か?を明確にすること
65.
気づいたこと
66.
Sansan様で登壇する際は、 BackGroundColorはWhiteにすること。
67.
Thank you Sansan!!!
Download