reactive android
DESCRIPTION
Reactive Programming with AndroidTRANSCRIPT
!
• Reactive Programmingって何?
• Android で使えるの?
• 実際に作ってみる
• まとめ
訳
–Wiki (意訳)
“Reactive Programmingは データフローと変化の伝播を中心とした プログラミングパラダイムである”
–@andrestaltz
“FRPは非同期データストリームを用いる プログラミングである”
–Kugimiya
“Reactive Programmingとは Reactive Programming的考え方を 実現するプログラミング手法のこと”
プログラミング手法の話をしているのに、 名前のない考え方を
内包しているので伝えにくい
データの流れや変化が自動でインタラクティブに Viewなどに反映させる考え方
1, こんな状態
2, B2に =A1+A2をいれると
3, 加算されて3が表示される
4, A2を4に変更する
5, B2が反応して5になる!!
時間順に並んだ進行中のイベントの列
ストリームという概念で物事をとらえる。
time
イベント イベント イベント イベント
ストリームとは、
です。1つのストリーム
time
A1に1 A2に2 A1に3
ストリームを考える事で、
B2を1 B2を3 B2を4
反応(Reactive)できる!
注: 画像はイメージです。 パフォーマンスがあがる訳ではありません
Reactive Programmingとは
データの流れや変化が自動でインタラクティブに
Viewなどに反映させる考え方を
実現する為に
物事をストリームでとらえて
プログラミングする手法
です
・オブジェクト指向 ・関数型 >・MVC
・MVVM >Reactive Programming
> (=)
デザイン パターン > スニペット
RxAndroidとはRxJavaのAndroid Moduleです。
RxJavaはJavaでReactive Programmingを行う為のライブラリです。
Gradleファイルに下記を書くだけ
【仕様】 ボタン1かボタン2を 押すと カウントが1増える。 !
それだけ。
time
InputAのストリーム
クリック
time
InputBのストリーム
time
見るべきのストリーム
二つをmerge!
クリック クリック クリック
クリック クリック
クリック クリック クリック クリック クリッククリック
time
見るべきストリーム
ストリームを監視してoutputに出力する
表示 表示 表示 表示 表示 表示
InputAのストリームを作成
ストリームをmerge!
Rx○○ではObserverパターンを適用していて、 ストリームが監視対象のため
ストリームの事をObservableと読んでます。
InputBのストリームを作成
subscribeで監視し、 Actionにイベント追加時の処理を書く
【仕様】 outputに常に A と Bの加算された値が 表示される。 !
ただそれだけ。
time
値変更
InputAのストリーム
値変更 値変更 値変更
time
値変更
InputBのストリーム
値変更
time
値変更
見るべきのストリーム
値変更 値変更値変更 値変更 値変更
merge!!
time
Bの値変更
見るべきのストリーム
Bの値変更 Aの値変更Aの値変更 Aの値変更 Aの値変更
19 1 20 22 5 9
19 + ?を表示 ?+5を表示
欲しいのは両方の値!
time
値変更
InputAのストリーム
値変更 値変更 値変更
time
値変更
InputBのストリーム
値変更
time
値変更
見るべきのストリーム
値変更 値変更値変更 値変更 値変更
combineLatest!
time
値変更
見るべきのストリーム
値変更 値変更値変更 値変更 値変更
あとはこのストリームを監視してoutputに出力するだけ
表示 表示 表示 表示 表示 表示
これで加算が可能。
InputAのストリームを作成
InputBのストリームを作成
見るべきストリームを作成
combineLatestを使って合体する
subscribeで監視し、 Actionにイベント追加時の処理を書く
・
・
・
!
・
!
・