Reactive android
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Reactive android

  • 125 views
Uploaded on

Reactive Programming with Android

Reactive Programming with Android

More in: Engineering
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
125
On Slideshare
115
From Embeds
10
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 10

http://shotalow.hateblo.jp 8
https://twitter.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 4GCEVKXG#PFTQKF
  • 2. #IGPFC ! • Reactive Programmingって何? • Android で使えるの? • 実際に作ってみる • まとめ
  • 3. 4GCEVKXG2TQITCOOKPI闋闎∶獑
  • 4. 䧕訳闁闳闐 ⚮㊽䥥防陈阋附阺陎阋
  • 5. “Reactive Programmingは データフローと変化の伝播を中心とした プログラミングパラダイムである” –Wiki (意訳)
  • 6. “FRPは非同期データストリームを用いる プログラミングである” –@andrestaltz
  • 7. “Reactive Programmingとは Reactive Programming的考え方を 実現するプログラミング手法のこと” –Kugimiya プログラミング手法の話をしているのに、 名前のない考え方を 内包しているので伝えにくい
  • 8. 4GCEVKXG2TQITCOOKPI䥥勤閰㢚 闐闗獑 データの流れや変化が自動でインタラクティブに Viewなどに反映させる考え方
  • 9. 1, こんな状態 ≬閰闘閻闻闒㐀闀 2, B2に =A1+A2をいれると 3, 加算されて3が表示される 4, A2を4に変更する 5, B2が反応して5になる!!
  • 10. 閻间闺銙䛟闁闳䎛闓㧕闓箞㹫闒Ⅼ闺勤閰闳 ストリームという概念で物事をとらえる。  ストリームとは、 時間順に並んだ進行中のイベントの列 time です。 1つのストリーム イベントイベントイベントイベント
  • 11. time ストリームを考える事で、 A1に1 A2に2 A1に3 B2を1 B2を3 B2を4 反応(Reactive)できる! 注: 画像はイメージです。 パフォーマンスがあがる訳ではありません
  • 12. 㡕䛧闁闳闐 Reactive Programmingとは データの流れや変化が自動でインタラクティブに Viewなどに反映させる考え方を 実現する為に 物事をストリームでとらえて プログラミングする手法 です
  • 13. 闉闒闧闓珯珯珯
  • 14. 4GCEVKXG2TQITCOKPI闖∮剏闍閹闗 㐀屻䥥闓閻闻闒㐀闀 ・オブジェクト指向 ・関数型> ・MVC ・MVVM > Reactive > (=) Programming デザイン パターン> スニペット
  • 15. 4GCEVKXG2TQITCOOKPI闗 #PFTQKF闏≠閰闳闖獑
  • 16. ≠閰闦闁
  • 17. 4Z#PFTQKF闺瞪⑆闁闳閻闐闏伂☹闓 4GCEVKXG2TQITCOOKPI闏銙蜐閴闏閵闦闁 RxAndroidとはRxJavaのAndroid Moduleです。 RxJavaはJavaでReactive Programmingを行う為の ライブラリです。
  • 18. 瞪⑆闗伂☹ Gradleファイルに下記を書くだけ
  • 19. 銙楼闓∽闋闎闧闳猳
  • 20. 伂☹闒闪闖闺∽闋闎闧闳镩 【仕様】 ボタン1かボタン2を 押すと カウントが1増える。 ! それだけ。
  • 21. 4GCEVKXG2TQITCOOKPI闋闥閷勤閰闎闧闳 time InputAのストリーム クリック time InputBのストリーム time 見るべきのストリーム クリッククリッククリック 二つをmerge! クリッククリック クリッククリッククリッククリッククリッククリック
  • 22. 4GCEVKXG2TQITCOOKPI闋闥閷勤閰闎闧闳 time 見るべきストリーム 表示表示表示表示表示表示 ストリームを監視してoutputに出力する
  • 23. 銙蜐猳 InputAのストリームを作成 InputBのストリームを作成 ストリームをmerge! Rx○○ではObserverパターンを適用していて、 ストリームが監視対象のため ストリームの事をObservableと読んでます。
  • 24. 屬闳闡閵阔阣际閥阻闺簬屷閿闎 QWVRWV闓孉䰛闁闳 subscribeで監視し、 Actionにイベント追加時の処理を書く
  • 25. 伂☹闒闪闖闺∽闋闎闧闳镪 【仕様】 outputに常に A と Bの加算された値が 表示される。 ! ただそれだけ。
  • 26. 4GCEVKXG2TQITCOOKPI闋闥閷勤閰闎闧闳 time 値変更 InputAのストリーム 値変更値変更値変更 time 値変更 InputBのストリーム 値変更 time 値変更 見るべきのストリーム 値変更値変更値変更値変更値変更 merge!!
  • 27. time OGTIG閿闇⬕⛩珮閻閮闒闳 Bの値変更 見るべきのストリーム Aの値変更Bの値変更Aの値変更Aの値変更Aの値変更 19 1 20 22 5 9 19 + ?を表示?+5を表示 欲しいのは両方の値!
  • 28. EQODKPG.CVGUV闺≠閲閮 time 値変更 InputAのストリーム 値変更値変更値変更 time 値変更 InputBのストリーム 値変更 combineLatest! time 値変更 見るべきのストリーム 値変更値変更値変更値変更値変更
  • 29. ㄙ闓闪閮䔨㢚闖磷砒闖闿阴陎阣闐 time 阖阞阣闓閿闎閷间闳 値変更 見るべきのストリーム 値変更値変更値変更値変更値変更 表示表示表示表示表示表示 これで加算が可能。 あとはこのストリームを監視してoutputに出力するだけ
  • 30. 銙蜐猳 InputAのストリームを作成 InputBのストリームを作成
  • 31. ⛩∴猳 見るべきストリームを作成 combineLatestを使って合体する
  • 32. 屬闳闡閵阔阣际閥阻闺簬屷閿闎 QWVRWV闓孉䰛闁闳 subscribeで監視し、 Actionにイベント追加時の処理を書く
  • 33. ↷闓闗閵闋闐閻闻闒Ⅼ闓≠閰闳 闖闏闗闒閳闵閮閳 ・/QFGN%QPVTQNNGT闖闌闒閶 ・*VVR聆⋂闖际阊阃阔阣陇阔阸陎阔 闒闑闒闑 闐闗閬閰珮 'XGT[VJKPIKUUVTGCO闱閿閬闖闏闒闻闏闪閬閹闳闗闂珯
  • 34. 闦闐闩
  • 35. ・4GCEVKXG2TQITCOKPI闋闎∶闆闬闺䛧缷閿闒閬闐 ֺ哋ⓧ閴∶閿闎闳閳闰閷闷閳闱闒閬珮㨍㈴闓 ! ・倱⼡阸闿陎阣闗∶闺阔阣际閥阻闐闁闳閳闈闐㋾閮 ! ・∶闺阔阣际閥阻闐閿闎㕒閮閳闒闑闖 ֺ阴阔阣防附阊阡闾阔闗闦闈闧闻闒㴂倃ℎ㐀