LoginSignup
1
0

More than 3 years have passed since last update.

RxFirebaseでRxJava + Firebaseを手軽に始める

Last updated at Posted at 2019-12-09

はじめに

RxJavaを簡単な例(OkHttpとか)で触っているうちは、OkHttpやその補助ライブラリで容易にRx化できるかと思います。
ただし、いざ、自分で他のライブラリと組み合わせて書いていこうとすると、辛い部分が多く存在します。

特に、Firebaseと組み合わせようとすると、RxJavaに慣れていないうちは

  • どう書けばいいかがわからないこと
  • 記事が圧倒的に少ない

ためにつらい思いをすると思います。

(たとえばこちらの記事にのっています)

そこで

RxFirebaseというライブラリを使うことで
簡単にRxJava+Firebaseを始めることができます。

実際に使ってみる

ここからは実際のプロジェクトでの使用方法を説明していきます。
また、Firebaseなどの呼び出しはモジュールとして切り出している例を紹介します。

インストール方法

RxFirebaseのREADMEに書いている通りに導入していきます。

build.gradle
dependencies {
  compile 'com.github.FrangSierra:RxFirebase:1.5.6'
}
build.gradle
allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

FirebaseAuthの場合

今回は単純なemailでの認証を考えます。

FirebaseAuthService.kt
object FirebaseAuthService: AuthService {
    val auth: FirebaseAuth
    init {
        auth = FirebaseAuth.getInstance()
    }
    override fun signIn(email: String, password: String): Maybe<AuthResult?> {
        return RxFirebaseAuth.signInWithEmailAndPassword(auth, email, password)
    }
}

例えば、emailでのシンプルな認証の場合、RxFirebaseが用意しているメソッドsignInWithEmailAndPassword
Firebaseのインスタンスを噛ませるだけでできます。

これをもし、自分でやる場合は、自分でSingleやObservableを作ったりと、なれていないとわかりづらいところが多々あります。

あとは、Observerを加えるだけですが、MainActivityで呼び出したりするとき

MainActivity.kt
FirebaseAuthService.signIn(email, password)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
        .subscribe(object : MaybeObserver<AuthResult?> {
            override fun onSuccess(t: AuthResult) {
               // うまくいったときー
            }
            override fun onComplete() {
              // 完了したときー
            }
            override fun onSubscribe(d: Disposable) {
              // こうどくしはじめたときー
            }
            override fun onError(e: Throwable) {
              // エラーがでちゃったとき
            }
        })

というふうに呼び出してやるだけで簡単に使えます。

最後に

最近のAndroid開発ではRxJavaがよく出てきますがとっつきづらい部分が多々あると思います。
今回のように、RxFirebaseを用いることで、初心者にとって実装が難しい部分をライブラリに任せるながら
FirebaseとRxJavaを利用することができるため、「ちょっとRxJavaをさわってみようかな」といった方には
ベターな選択肢だと思います。

また、今回のようにサービス層側の実装をきれいに書いてあげることで、
RxJavaに慣れてからRxFirebaseに依存しないものに置き換えることも簡単であり、
RxFirebaseを利用するもの、しないものの共存もできるので、非常に便利です。

それでは、RxFirebaseでよきRxJava Lifeを!!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0