Reactive android

Preview:

DESCRIPTION

Reactive Programming with Android

Citation preview

!

• 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にイベント追加時の処理を書く

!

!