35
Sfbdujwf!Boespje

Reactive android

Embed Size (px)

DESCRIPTION

Reactive Programming with Android

Citation preview

Page 1: Reactive android
Page 2: Reactive android

!

• Reactive Programmingって何?

• Android で使えるの?

• 実際に作ってみる

• まとめ

Page 3: Reactive android
Page 4: Reactive android

Page 5: Reactive android

–Wiki (意訳)

“Reactive Programmingは データフローと変化の伝播を中心とした プログラミングパラダイムである”

Page 6: Reactive android

–@andrestaltz

“FRPは非同期データストリームを用いる プログラミングである”

Page 7: Reactive android

–Kugimiya

“Reactive Programmingとは Reactive Programming的考え方を 実現するプログラミング手法のこと”

プログラミング手法の話をしているのに、 名前のない考え方を

内包しているので伝えにくい

Page 8: Reactive android

データの流れや変化が自動でインタラクティブに Viewなどに反映させる考え方

Page 9: Reactive android

1, こんな状態

2, B2に =A1+A2をいれると

3, 加算されて3が表示される

4, A2を4に変更する

5, B2が反応して5になる!!

Page 10: Reactive android

時間順に並んだ進行中のイベントの列

ストリームという概念で物事をとらえる。

time

イベント イベント イベント イベント

 ストリームとは、

です。1つのストリーム

Page 11: Reactive android

time

A1に1 A2に2 A1に3

ストリームを考える事で、

B2を1 B2を3 B2を4

反応(Reactive)できる!

注: 画像はイメージです。 パフォーマンスがあがる訳ではありません

Page 12: Reactive android

Reactive Programmingとは

データの流れや変化が自動でインタラクティブに

Viewなどに反映させる考え方を

実現する為に

物事をストリームでとらえて

プログラミングする手法

です

Page 13: Reactive android
Page 14: Reactive android

・オブジェクト指向 ・関数型 >・MVC

・MVVM >Reactive Programming

> (=)

デザイン パターン > スニペット

Page 15: Reactive android
Page 16: Reactive android
Page 17: Reactive android

RxAndroidとはRxJavaのAndroid Moduleです。

RxJavaはJavaでReactive Programmingを行う為のライブラリです。

Page 18: Reactive android

Gradleファイルに下記を書くだけ

Page 19: Reactive android
Page 20: Reactive android

【仕様】 ボタン1かボタン2を 押すと カウントが1増える。 !

それだけ。

Page 21: Reactive android

time

InputAのストリーム

クリック

time

InputBのストリーム

time

見るべきのストリーム

二つをmerge!

クリック クリック クリック

クリック クリック

クリック クリック クリック クリック クリッククリック

Page 22: Reactive android

time

見るべきストリーム

ストリームを監視してoutputに出力する

表示 表示 表示 表示 表示 表示

Page 23: Reactive android

InputAのストリームを作成

ストリームをmerge!

Rx○○ではObserverパターンを適用していて、 ストリームが監視対象のため

ストリームの事をObservableと読んでます。

InputBのストリームを作成

Page 24: Reactive android

subscribeで監視し、 Actionにイベント追加時の処理を書く

Page 25: Reactive android

【仕様】 outputに常に A と Bの加算された値が 表示される。 !

ただそれだけ。

Page 26: Reactive android

time

値変更

InputAのストリーム

値変更 値変更 値変更

time

値変更

InputBのストリーム

値変更

time

値変更

見るべきのストリーム

値変更 値変更値変更 値変更 値変更

merge!!

Page 27: Reactive android

time

Bの値変更

見るべきのストリーム

Bの値変更 Aの値変更Aの値変更 Aの値変更 Aの値変更

19 1 20 22 5 9

19 + ?を表示 ?+5を表示

欲しいのは両方の値!

Page 28: Reactive android

time

値変更

InputAのストリーム

値変更 値変更 値変更

time

値変更

InputBのストリーム

値変更

time

値変更

見るべきのストリーム

値変更 値変更値変更 値変更 値変更

combineLatest!

Page 29: Reactive android

time

値変更

見るべきのストリーム

値変更 値変更値変更 値変更 値変更

あとはこのストリームを監視してoutputに出力するだけ

表示 表示 表示 表示 表示 表示

これで加算が可能。

Page 30: Reactive android

InputAのストリームを作成

InputBのストリームを作成

Page 31: Reactive android

見るべきストリームを作成

combineLatestを使って合体する

Page 32: Reactive android

subscribeで監視し、 Actionにイベント追加時の処理を書く

Page 33: Reactive android

Page 34: Reactive android
Page 35: Reactive android

!

!