Submit Search
Upload
FRP - Functional Reactive Programming
•
20 likes
•
4,555 views
Ryo Kamimura
Follow
関数リアクティブプログラミングをAndroidやiOSで使ってみた話
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 27
Download now
Download to read offline
Recommended
Pop star homework3
Pop star homework3
shipy02
Padrins i fillols de 5è B i 1r B
Padrins i fillols de 5è B i 1r B
ciclesuperiorescolapalau
Tend, Gather and Grow Curriculum: Berries
Tend, Gather and Grow Curriculum: Berries
Sheila Wilson
E&C Вrodaband 2015 Диалог бизнеса и государства
E&C Вrodaband 2015 Диалог бизнеса и государства
Expert and Consulting (EnC)
5-13_Satisfaction Level of the First Thai-Laos Friendship Bridge and Cross-Bo...
5-13_Satisfaction Level of the First Thai-Laos Friendship Bridge and Cross-Bo...
Sethapong Jarusombathi
Women Relationship
Women Relationship
broxtermanc
HENSCO_Tea
HENSCO_Tea
Amelia Hadin
#TIM 2015 Telecom IT Media Postrelease
#TIM 2015 Telecom IT Media Postrelease
Expert and Consulting (EnC)
Recommended
Pop star homework3
Pop star homework3
shipy02
Padrins i fillols de 5è B i 1r B
Padrins i fillols de 5è B i 1r B
ciclesuperiorescolapalau
Tend, Gather and Grow Curriculum: Berries
Tend, Gather and Grow Curriculum: Berries
Sheila Wilson
E&C Вrodaband 2015 Диалог бизнеса и государства
E&C Вrodaband 2015 Диалог бизнеса и государства
Expert and Consulting (EnC)
5-13_Satisfaction Level of the First Thai-Laos Friendship Bridge and Cross-Bo...
5-13_Satisfaction Level of the First Thai-Laos Friendship Bridge and Cross-Bo...
Sethapong Jarusombathi
Women Relationship
Women Relationship
broxtermanc
HENSCO_Tea
HENSCO_Tea
Amelia Hadin
#TIM 2015 Telecom IT Media Postrelease
#TIM 2015 Telecom IT Media Postrelease
Expert and Consulting (EnC)
Mussel Magic
Mussel Magic
Sheila Wilson
Video games, literacy, and identity
Video games, literacy, and identity
Nicky Rosi
The thin green line
The thin green line
Sheila Wilson
Nisqually National Wildlife Refuge - Habitat types
Nisqually National Wildlife Refuge - Habitat types
Sheila Wilson
Баян-Өлгий аймгийн Өлгий сумын 1дүгээр бүрэн дунд сургууль 2015.10.13
Баян-Өлгий аймгийн Өлгий сумын 1дүгээр бүрэн дунд сургууль 2015.10.13
lena lena
NREP Ohop Tree Planting -Fall 2013
NREP Ohop Tree Planting -Fall 2013
Sheila Wilson
ELS SECRETS DE L'AIGUA
ELS SECRETS DE L'AIGUA
ciclesuperiorescolapalau
Tips On Dating A Girl
Tips On Dating A Girl
wilbourntext
Ekologi yang terdera dari danau semi alami
Ekologi yang terdera dari danau semi alami
Devy Ratnasari
Updated version of media presentation 2
Updated version of media presentation 2
shipy02
Eye on nature 2014
Eye on nature 2014
Sheila Wilson
Els ordinadors de les classes
Els ordinadors de les classes
ciclesuperiorescolapalau
Padrins i fillols de 5èA i 1rA
Padrins i fillols de 5èA i 1rA
ciclesuperiorescolapalau
Intro biomimicry talk- edu
Intro biomimicry talk- edu
Sheila Wilson
Hardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with it
Alexander Roche
Rx java x retrofit
Rx java x retrofit
Shun Nakahara
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用
nmaro
React Native GUIDE
React Native GUIDE
dcubeio
ATN No.2 Scala事始め
ATN No.2 Scala事始め
AdvancedTechNight
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SmartNews, Inc.
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
Uehara Junji
More Related Content
Viewers also liked
Mussel Magic
Mussel Magic
Sheila Wilson
Video games, literacy, and identity
Video games, literacy, and identity
Nicky Rosi
The thin green line
The thin green line
Sheila Wilson
Nisqually National Wildlife Refuge - Habitat types
Nisqually National Wildlife Refuge - Habitat types
Sheila Wilson
Баян-Өлгий аймгийн Өлгий сумын 1дүгээр бүрэн дунд сургууль 2015.10.13
Баян-Өлгий аймгийн Өлгий сумын 1дүгээр бүрэн дунд сургууль 2015.10.13
lena lena
NREP Ohop Tree Planting -Fall 2013
NREP Ohop Tree Planting -Fall 2013
Sheila Wilson
ELS SECRETS DE L'AIGUA
ELS SECRETS DE L'AIGUA
ciclesuperiorescolapalau
Tips On Dating A Girl
Tips On Dating A Girl
wilbourntext
Ekologi yang terdera dari danau semi alami
Ekologi yang terdera dari danau semi alami
Devy Ratnasari
Updated version of media presentation 2
Updated version of media presentation 2
shipy02
Eye on nature 2014
Eye on nature 2014
Sheila Wilson
Els ordinadors de les classes
Els ordinadors de les classes
ciclesuperiorescolapalau
Padrins i fillols de 5èA i 1rA
Padrins i fillols de 5èA i 1rA
ciclesuperiorescolapalau
Intro biomimicry talk- edu
Intro biomimicry talk- edu
Sheila Wilson
Hardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with it
Alexander Roche
Viewers also liked
(15)
Mussel Magic
Mussel Magic
Video games, literacy, and identity
Video games, literacy, and identity
The thin green line
The thin green line
Nisqually National Wildlife Refuge - Habitat types
Nisqually National Wildlife Refuge - Habitat types
Баян-Өлгий аймгийн Өлгий сумын 1дүгээр бүрэн дунд сургууль 2015.10.13
Баян-Өлгий аймгийн Өлгий сумын 1дүгээр бүрэн дунд сургууль 2015.10.13
NREP Ohop Tree Planting -Fall 2013
NREP Ohop Tree Planting -Fall 2013
ELS SECRETS DE L'AIGUA
ELS SECRETS DE L'AIGUA
Tips On Dating A Girl
Tips On Dating A Girl
Ekologi yang terdera dari danau semi alami
Ekologi yang terdera dari danau semi alami
Updated version of media presentation 2
Updated version of media presentation 2
Eye on nature 2014
Eye on nature 2014
Els ordinadors de les classes
Els ordinadors de les classes
Padrins i fillols de 5èA i 1rA
Padrins i fillols de 5èA i 1rA
Intro biomimicry talk- edu
Intro biomimicry talk- edu
Hardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with it
Similar to FRP - Functional Reactive Programming
Rx java x retrofit
Rx java x retrofit
Shun Nakahara
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用
nmaro
React Native GUIDE
React Native GUIDE
dcubeio
ATN No.2 Scala事始め
ATN No.2 Scala事始め
AdvancedTechNight
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SmartNews, Inc.
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
Uehara Junji
GraphQL with React
GraphQL with React
Taketoshi 青野健利
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
TanUkkii
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
Yuji Kubota
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Rescale Japan株式会社
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
Rx swift,Repro framewolrk
Rx swift,Repro framewolrk
Daisuke Nagata
Sansan様 登壇資料
Sansan様 登壇資料
Daisuke Nagata
React Redux Storybook Swagger でフロント爆速開発
React Redux Storybook Swagger でフロント爆速開発
ShotaOd
Reactを使ったVR環境
Reactを使ったVR環境
KatsuyaENDOH
Similar to FRP - Functional Reactive Programming
(18)
Rx java x retrofit
Rx java x retrofit
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用
React Native GUIDE
React Native GUIDE
ATN No.2 Scala事始め
ATN No.2 Scala事始め
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
GraphQL with React
GraphQL with React
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
Scala on Hadoop
Scala on Hadoop
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Rx swift,Repro framewolrk
Rx swift,Repro framewolrk
Sansan様 登壇資料
Sansan様 登壇資料
React Redux Storybook Swagger でフロント爆速開発
React Redux Storybook Swagger でフロント爆速開発
Reactを使ったVR環境
Reactを使ったVR環境
Recently uploaded
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Recently uploaded
(8)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FRP - Functional Reactive Programming
1.
FRP Functional Reactive Programming 2014/08/01 Ryo
Kamimura
2.
いいか、みんな (゚д゚ ) (| y
|) 関数型プログラミングの要素をリアクティブプログラミングに合わせると 関数型 (゚д゚) リアクティブ \/| y |\/ FRPになるのだ ( ゚д゚) FRP (\/\/
3.
(reactive) ( ) ( )
(behavior)
4.
(stateless) (immutable) (map, filter, fold)
5.
Java Objective-C FRP RxJava compile 'com.netflix.rxjava:rxjava-core:+' ReactiveCocoa pod
'ReactiveCocoa'
6.
Push Pull Push Pull
7.
( ) Pull java.lang.Iterable, RACSequence(ReactiveCocoa) Push rx.Observable(RxJava),
RACSignal(ReactiveCocoa) Push
8.
Push UI 3 next completed error
9.
10.
(Java) ViewObservable.input(mEditText, false) .subscribe(new Action1<String>()
{ @Override public void call(String s) { Log.d("LOG", "New value: " + s); } }, new Action1<Throwable>() { @Override public void call(Throwable t) { Log.d("LOG", "Error: " + t.getMessage()); } }, new Action0() { Override public void call() { Log.d("LOG", "Completed."); } });
11.
(Objective-C) [self.textField.rac_textSignal subscribeNext:^(id x){ NSLog(@"New
value: %@", x); } error:^(NSError *error){ NSLog(@"Error: %@", error); } completed:^{ NSLog(@"Completed."); }];
12.
FRP KVO UI
13.
Transformation Filtering Combining Injection
14.
Transformation map() / map: flatMap()
/ flattenMap:
15.
Filtering filter() / filter: skip()
/ skip: throttleWithTimeout() / throttle:
16.
Combining merge() / merge: zip()
/ zip:reduce:
17.
Injection doOnEach() / doNext: doOnCompleted()
/ doCompleted: doOnError() / doError:
18.
FRP 1. 2. 3. 500 4. 5.
19.
Java 8 ViewObservable.input(mEditText, false) .filter(text
-> { // 入力値をチェックして return isValidText(text); }) .throttleWithTimeout(500, TimeUnit.MILLISECONDS) // 500ミリ秒以内 .flatMap(text -> { // 入力値をサーバーに送信 return sendTextObservable(text); }) .flatMap(jsonResponse -> { // レスポンスの値を使って再度サーバーからデータ取得 return resultObservable(jsonResponse.get("result")); }) .observeOn(AndroidSchedulers.mainThread()) // UIスレッドで .subscribe(jsonResponse -> { // UIを更新 }, throwable -> { Log.d("LOG", "An error occurred: " + throwable.getMessage()); });
20.
Objective-C [[[[[[[self.textField rac_textSignal] filter:^BOOL(NSString *text)
{ // 入力値をチェックして @strongify(self) return [self isValidText:text]; }] throttle:0.5] // 500ミリ秒以内 flattenMap:^RACStream*(NSString *text) { // 入力値をサーバーに送信 @strongify(self) return [self signalForSendText:text]; }] flattenMap:^RACStream*(NSDictionary *jsonResponse) { // レスポンスの値を使って再度サーバーからデータ取得 @strongify(self) return [self signalForResult:jsonResponse[@"result"]] }] deliverOn:[RACScheduler mainThreadScheduler]] // UIスレッドで subscribeNext:^(NSDictionary *jsonRespoonse) { // UIを更新 } error:^(NSError *error) { NSLog(@"An error occurred: %@", error); }];
21.
FRP GUI UI Push
22.
GUI ON/OFF (Spinner/UIPickerView)
23.
24.
Non-FRP UI
25.
FRP
26.
iOS Android Java Java8
(+ Retrolambda) Objective-C Groovy Swift
27.
THE END
Download now