OSS探訪GitHubでログイン

Composeを土台にPresenter・Ui・Screenを分離し、Kotlinアプリの状態と画面遷移を組み立てる

スコアの見方

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

Stars
1,857
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

CircuitはKotlin・Android向けのCompose駆動アプリケーションフレームワークです。画面をScreenで識別し、PresenterとUiを状態・イベントだけで接続する一方向データフローを中心に、画面表示やnavigationを構成します。

特徴と向いている用途

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

主な特徴

PresenterとUiを状態・イベントだけで接続する

PresenterとUiは互いを直接参照せず、CircuitUiStateとイベントを介して通信します。Presenter側でもCompose runtimeを使い、状態生成と画面描画の責務を分離できます。

出典:[2]

CircuitContentとnavigationを共通構成から提供する

Circuit.BuilderでUi/Presenter factory等を設定し、CircuitCompositionLocalsとCircuitContentから画面を実行できます。backstackやnavigation、retained state等は用途別artifactとして組み合わせられます。

出典:[3]

向いている用途

Compose中心の画面構成と状態管理を同じ規約へ揃えたいアプリに向く

画面ごとにPresenter・Ui・Screenの境界を統一し、navigationや状態保持を共通化したいAndroid/Kotlinアプリに適します。マルチプラットフォーム向けの主要APIも提供されています。

出典:[3][2]

導入前の確認

0.39.0のKotlin・Compose・AGP更新条件を確認する

0.39.0ではKotlin 2.4.20、Compose Multiplatform 1.12.0、AndroidX Compose 1.12.1、AGP 9.4.0へ更新されています。既存プロジェクトへ導入する前にビルド環境との互換性を確認してください。

出典:[4]

参考にした公式資料

  1. [1]slackhq/circuit — GitHub repository(2026-10-06)
  2. [2]Circuit 0.39.0 — Overview(2026-10-06)
  3. [3]Circuit 0.39.0 — Setup(2026-10-06)
  4. [4]Circuit 0.39.0 release(2026-10-06)
  5. [5]Circuit Apache-2.0 license(2026-10-06)
編集部からの補足

Compose UIだけでなくPresenter側にもCompose runtimeを使う設計が特徴です。既存のDI・navigation・状態管理をどこまでCircuitへ寄せるかを決めてから、画面単位で段階導入すると評価しやすくなります。

3ステップで試す

  1. 1

    Circuit Foundation 0.39.0を追加する

    Presenter、Ui、Screen、navigationの基本APIをまとめたfoundation artifactを追加します。

    implementation("com.slack.circuit:circuit-foundation:0.39.0")
  2. 2

    UiとPresenterのFactoryをCircuitへ登録する

    公式setup例に沿って、対象Screenを処理するUi/Presenter factoryを共通Circuit設定へ登録します。

    val circuit = Circuit.Builder() .addUiFactory(AddFavoritesUiFactory()) .addPresenterFactory(AddFavoritesPresenterFactory()) .build()
  3. 3

    Compose階層からScreenを実行する

    Circuit設定をCompositionLocalへ渡し、Screenに対応するPresenterとUiが接続されることを確認します。

    CircuitCompositionLocals(circuit) { CircuitContent(AddFavoritesScreen()) }
公式READMEで確認

成長

成長の推移 · 直近30日

1,857 Stars

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

開発アクティビティ

直近90日・週次

Commit(直近30日)
40
Open PR
7

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

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • architecture
  • compose
  • kotlin
  • android
  • mvi
  • udf
Stars
1,857
Forks
122
Watchers
20
Open Issues
5
Contributors
46
所有者種別
Organization
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/05

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

情報の誤りを報告

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

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