StateFlowを積極的に採用すべき?
(株)ライトコードでモバイルアプリケーションメインで色々開発している笹川(ささがわ)です!
Jetpack Composeが主流となりつつある現代のAndroid開発において、ViewModelでの状態管理も進化しています。
LiveDataとStateFlow、どちらも強力なツールですが、なぜ私たちはStateFlowを積極的に採用すべきなのでしょうか?
今回はその理由を掘り下げて解説していきます。
1. 過去のストリームライブラリから見る技術の変遷
LiveDataが生まれる以前、Android開発では非同期処理やイベント通知のために様々なライブラリが使われていました。
RxJava / RxAndroid(Rx)
これはリアクティブプログラミングの概念をAndroidにもたらした、非常に強力なライブラリです。
RxJavaは、イベントストリームを扱う「コールドストリーム」と「ホットストリーム」の両方をサポートしていました。
- コールドストリームは、Flowのように購読者(Subscriber)が現れるまで処理を開始しないもので、データベースからのデータ取得やAPIコールなど、毎回新しい処理を行うのに適していました。
- ホットストリームは、購読者の有無に関わらず常にイベントを発行し続けるもので、RxJavaではPublishSubjectやBehaviorSubjectといったクラスがそれに該当します。これはUIイベントや状態管理に適していましたが、扱いがやや複雑でした。
EventBus
これはPublish/Subscribeモデルを採用したイベントバスライブラリです。
特定のイベントを購読しているすべてのコンポーネントにイベントをブロードキャストする、ホットストリームの一種と見なせます。
コードがシンプルになる反面、イベントの発行元と購読元が疎結合になりすぎるため、デバッグが難しくなるという課題もありました。
これらのライブラリは強力でしたが、RxJavaは学習コストが高く、EventBusはデバッグの難しさが課題でした。
Googleはこれらの反省点を踏まえ、よりシンプルでAndroidのライフサイクルに最適化されたLiveDataを導入しました。
LiveDataは、RxJavaのホットストリーム的な役割を、ライフサイクルと連携させることで、より安全に利用できるようにしたものです。
そして、coroutineがKotlinの標準機能として登場したことで、FlowとStateFlowが生まれました。
これは、RxJavaが提供していた機能(コールドストリームとホットストリーム)を、より簡潔で直感的なcoroutineベースで実現するものと言えます。
2. coroutineとのネイティブな親和性
LiveDataはAndroidの初期から存在するため、coroutineが普及する以前の設計思想に基づいています。
そのため、coroutineと組み合わせて使う際には、asLiveData()などのアダプター関数を介する必要がありました。
一方、StateFlowはcoroutineとシームレスに連携できるように設計されています。
Flowをベースにしたホットストリームであるため、viewModelScope.launchやFlowの演算子(map、filterなど)を自然に使うことができます。
これにより、ViewModel内の非同期処理が非常に簡潔かつ安全に記述でき、コードの可読性が大幅に向上します。
3. ホットストリームとしての優位性
LiveDataは「コールドストリーム」のように振る舞います。
…
記事の続きは下のURLをクリック!
https://rightcode.co.jp/blogs/53080
エンジニア積極採用中です!
現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!
採用ページはこちら:https://rightcode.co.jp/recruit
社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life
フリーランスエンジニア大募集中!
現在、「WEBエンジニア」「フロントエンジニア」「データサイエンティスト」など、様々な職種のフリーランスエンジニア様を募集中です。まずは以下よりお気軽にご応募ください!
採用ページはこちら:https://itanken.com/register
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!
ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。
Wantedly:https://www.wantedly.com/companies/rightcode
コーポレート:https://rightcode.co.jp/