OSS探訪GitHubでログイン

StateとViewModelを軸にAndroid画面の状態更新を一方向に整理する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
5,926
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/09/25
ページ内ナビ

概要

MavericksはAirbnbが開発するAndroid向けMVIフレームワークです。画面に必要なデータをMavericksStateへまとめ、MavericksViewModelのsetStateで更新し、FragmentやComposeが状態を購読してUIへ反映する流れを作ります。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

immutableなStateとViewModelで画面状態を更新する

MavericksStateを実装したdata classへ画面状態を集約し、MavericksViewModelのsetStateからcopyで新しい状態を生成します。状態更新の入口をViewModelへ寄せやすくなります。

出典:[2][3]

FragmentとComposeの両方から状態を購読する

FragmentではMavericksViewとwithState、ComposeではmavericksViewModel()とcollectAsState()を使えます。UI方式を変えてもMavericksの状態層を継続して利用できます。

出典:[2][5]

向いている用途

状態や非同期処理が増えるAndroid画面を一貫した規約で扱いたい場合に向く

複数の状態、API結果、ユーザー操作が組み合わさる画面で、状態の正本と更新経路を統一したいアプリに適します。Android JetpackとKotlin Coroutinesを土台として利用できます。

出典:[3]

導入前の確認

Application初期化と既存アーキテクチャとの責務分担を決める

利用時は依存関係を追加し、View/LifecycleOwner側をMavericksへ接続してMavericks.initialize(this)をApplicationから呼び出します。既存のViewModel、navigation、DIとの役割が重複する場合は移行単位を明確にしてください。

出典:[4][6]

参考にした公式資料

  1. [1]airbnb/mavericks — GitHub repository(2026-10-06)
  2. [2]Mavericks 3.1.1 — README(2026-10-06)
  3. [3]Mavericks 3.1.1 — Documentation overview(2026-10-06)
  4. [4]Mavericks 3.1.1 — Setup(2026-10-06)
  5. [5]Mavericks 3.1.1 — Jetpack Compose(2026-10-06)
  6. [6]Mavericks 3.1.1 release(2026-10-06)
  7. [7]Mavericks Apache-2.0 license(2026-10-06)
編集部からの補足

画面状態をimmutableなStateへ集約し、複雑な画面でも更新経路を追いやすくする設計です。既存のViewModel・navigation・DIとの責務境界を確認し、状態量の多い画面から試すと導入効果を判断しやすくなります。

3ステップで試す

  1. 1

    Mavericks 3.1.1を追加する

    確認済みの安定版をAndroidアプリの依存関係へ追加します。

    implementation("com.airbnb.android:mavericks:3.1.1")
  2. 2

    画面のLifecycleOwnerをMavericksViewへ接続する

    公式setupの2段階目に沿って、既存のbase FragmentへMavericksViewを実装します。

    abstract class BaseFragment : Fragment(), MavericksView
  3. 3

    ApplicationでMavericksを初期化する

    Application.onCreateで一度初期化し、MavericksViewModelと状態購読を利用できるようにします。

    override fun onCreate() { super.onCreate() Mavericks.initialize(this) }
公式READMEで確認

成長

成長の推移 · 直近30日

5,926 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
2
Open PR
4

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
5,926
Forks
510
Watchers
100
Open Issues
57
Contributors
64
所有者種別
Organization
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/09/25

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?