はじめに
RxJavaを簡単な例(OkHttpとか)で触っているうちは、OkHttpやその補助ライブラリで容易にRx化できるかと思います。
ただし、いざ、自分で他のライブラリと組み合わせて書いていこうとすると、辛い部分が多く存在します。
特に、Firebaseと組み合わせようとすると、RxJavaに慣れていないうちは
どう書けばいいかがわからないこと
記事が圧倒的に少ない
ためにつらい思いをすると思います。
(たとえばこちらの記事にのっています)
そこで
RxFirebaseというライブラリを使うことで
簡単にRxJava+Firebaseを始めることができます。
実際に使ってみる
ここからは実際のプロジェクトでの使用方法を説明していきます。
また、Firebaseなどの呼び出しはモジュールとして切り出している例を紹介します。
インストール方法
RxFirebaseのREADMEに書いている通りに導入していきます。
dependencies {
compile 'com.github.FrangSierra:RxFirebase:1.5.6'
}
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
FirebaseAuthの場合
今回は単純なemailでの認証を考えます。
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で呼び出したりするとき
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を!!