OSS探訪GitHubでログイン

State・Action・Reducer・Storeを軸にSwiftUI/UIKitのfeatureを合成可能に設計する

スコアの見方

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

Stars
14,952
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/09/18
ページ内ナビ

概要

The Composable Architecture(TCA)は、アプリのstate、user action、side effect、testを一貫したmodelで扱うSwiftライブラリです。@Reducerと@ObservableStateでfeature domainを定義し、Storeを介してSwiftUI/UIKitからactionを送り、複数featureを合成できます。

特徴と向いている用途

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

主な特徴

State・Action・Reducerをfeature単位へ閉じ込める

@Reducerでfeatureを定義し、@ObservableStateのStateとAction enum、Reduce bodyへstate遷移とeffectを記述します。UI eventとbusiness logicの流れを同じdomain modelで追跡できます。

出典:[2]

StoreとTestStoreでruntimeとtestを同じreducerから駆動する

SwiftUIではStoreOf<Feature>をviewへ渡し、stateを観測しながらactionをsendします。TestStoreではaction送信後のstate変化やeffectから戻るactionを順にassertでき、featureをcomposeしたintegration testにも利用できます。

出典:[2]

向いている用途

複雑なstateとside effectを持つiOSアプリをfeature分割したい場合に向く

画面数が増え、navigation、dependency、非同期effect、shared stateを一定の規約で扱いたいSwiftUI/UIKitアプリに適します。小さなfeatureをmodule化して再合成する設計を取りやすくなります。

出典:[2]

導入前の確認

1.26.2はSwift tools 6.4・iOS 16以上で、2.0向けdeprecation traitも用意される

1.26.2のPackage.swiftはSwift tools 6.4とSwift 6 modeを使い、最低platformをiOS 16、macOS 13、tvOS 16、watchOS 9に設定しています。またComposableArchitecture2Deprecations等のtraitがあり、次期major releaseへ向けたmigrationを段階的に確認できます。

出典:[3][4]

参考にした公式資料

  1. [1]pointfreeco/swift-composable-architecture — GitHub repository(2026-10-06)
  2. [2]Composable Architecture 1.26.2 — README(2026-10-06)
  3. [3]Composable Architecture 1.26.2 — Package.swift(2026-10-06)
  4. [4]Composable Architecture 1.26.2 release(2026-10-06)
  5. [5]Composable Architecture MIT license(2026-10-06)
編集部からの補足

複雑なstate・navigation・dependency・非同期effectをfeature単位で整理したいSwiftUI/UIKitアプリに向きます。1.26.2はSwift tools 6.4とiOS 16以上が前提なので、既存projectのtoolchainとdeployment targetを先に確認してください。

3ステップで試す

  1. 1

    ComposableArchitecture 1.26.2を追加する

    確認済みreleaseを固定します。1.26.2はSwift tools 6.4、iOS 16以上が前提です。

    .package(url: "https://github.com/pointfreeco/swift-composable-architecture", exact: "1.26.2")
  2. 2

    最小のReducer featureを定義する

    READMEのBasic Usageに沿ってState・Action・Reducerを1つのfeature domainへまとめます。

    import ComposableArchitecture @Reducer struct CounterFeature { @ObservableState struct State: Equatable { var count = 0 } enum Action { case incrementButtonTapped } var body: some ReducerOf<Self> { Reduce { state, action in switch action { case .incrementButtonTapped: state.count += 1 return .none } } } }
  3. 3

    Storeを作りactionを送る

    同じreducerからStoreを作成し、action送信でstateが更新される最小経路を確認します。

    let store = Store(initialState: CounterFeature.State()) { CounterFeature() } store.send(.incrementButtonTapped)
公式READMEで確認

成長

成長の推移 · 直近30日

14,952 Stars

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

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
10

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

Built with

カテゴリとタグ

GitHubデータ

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

GitHub Topics

  • architecture
  • composition
  • modularity
  • testability
  • swiftui
  • uikit
Stars
14,952
Forks
1,679
Watchers
219
Open Issues
15
Contributors
242
所有者種別
Organization
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/09/18

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

情報の誤りを報告

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

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