Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mobile Factory x RxJava

842aaadff6e13fbf372c9b17b49b031c?s=47 Pine Mizune
February 08, 2016

Mobile Factory x RxJava

2/8 に開催された、株式会社モバイルファクトリー・ナイル株式会社合同勉強会の発表資料です。

842aaadff6e13fbf372c9b17b49b031c?s=128

Pine Mizune

February 08, 2016
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

  1. Mobile Factory x RxJava 8 Feb, 2016 18:00 〜 19:00

    Mobile Factory x Nyle 合同勉強会 Kazuki Matsushita / Mobile Factory, Inc.
  2. 自己紹介 n ID / HN: @pine613 n 仕事: iOS /

    Android 開発 ü Perl / Swift / Kotlin n 趣味: JavaScript / Crystal n Mobile Factory, Inc
  3. 目次 n 現在の仕事の技術領域 n RxJava とは ? n RxJava の利用シーン

    n 他の言語での Rx n まとめ
  4. 目次 n 現在の仕事の技術領域 n RxJava とは ? n RxJava の利用シーン

    n 他の言語での Rx n まとめ
  5. 現在の仕事の技術領域 ソーシャルアプリの開発 p サーバーサイド: Perl p ネイティブアプリ側: ü iOS: Swift

    ü Android: Kotlin 本日は Android 側の話
  6. 目次 n 現在の仕事の技術領域 n RxJava とは ? n RxJava の利用シーン

    n 他の言語での Rx n まとめ
  7. RxJava とは ? (1/4) RxJava をヒトコトで言うと... 非同期ストリームのライブラリ n 非同期データを抽象化して同一に扱える n

    複数の言語での実装があり n Netflix が開発 • UI イベント (タップ / スワイプ / etc ...) • ネットワークリクエスト
  8. RxJava とは ? (2/4) 3Yͱࣅͨ֓೦ͱɺҐஔ͚ͮ͸ 一つの値 複数の値 同期 Object Iterables

    (Array, Hash, etc ...) 非同期 Promise / Future Observable Observable = Rx でストリームを扱う単位
  9. RxJava とは ? (3/4) val odds = Observable.just(1, 3, 5)

    val evens = Observable.just(2, 4, 6) val results = Observable.zip( odds, evens, { a, b -> a + b } ) results.subscribe { x -> println(x) } # => 3, 7, 11 ※ 諸事情により Kotlin
  10. 変換処理の一例 変換処理の一例

  11. 目次 n 現在の仕事の技術領域 n RxJava とは ? n RxJava の利用シーン

    n 他の言語での Rx n まとめ
  12. RxJava の利用シーン (1/3) ネットワーク リソース UI イベント UI コンポーネント ビューの状態

    すべてのデータを非同期に結合
  13. RxJava の利用シーン (2/3) あるデータのモデル UI コンポーネント ある状態変数 すべてのデータを非同期に結合 Observable<ModelFoo> タップのタイミング

    Observable<Unit> Observable<Int> 変換処理
  14. RxJava の利用シーン (3/3) 実際のアプリでの利用箇所 n ネットワークリソースの取得 n UI イベント (タップ

    / テキスト変更) n 位置情報の取得 n タイマー処理 ほぼ全ての場所で利用
  15. 目次 n 現在の仕事の技術領域 n RxJava とは ? n RxJava の利用シーン

    n 他の言語での Rx n まとめ
  16. ଞͷݴޠͰͷ 3FBDUJWF9  特に iOS / Android 業界で利用が活発 n Reactive

    Extension (.NET) n RxJava (10,849 stars) n RxSwift (3,176 stars) n RxJS (1,311 stars) n 他 Ruby, Python, PHP の実装有り 元祖
  17. 言語が違っても、 同じインターフェイスで扱える!

  18. 目次 n 現在の仕事の技術領域 n RxJava とは ? n RxJava の利用シーン

    n 他の言語での Rx n まとめ
  19. ·ͱΊ n 最近の Android 開発 -> RxJava を利用 n RxJava

    -> 非同期ストリーム ü 非同期処理が楽に記述可能 n Rx は複数言語の実装あり ü 知識の流用が可能