0Pricing
Swift Academy · レッスン

単一の信頼できる情報源と単方向フロー

1つの信頼できる状態モデルを使ってSwiftUIアプリを設計します。

「単一の信頼できる情報源と単方向フロー」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

単方向データフローでは、状態はビュー階層を下方向に流れ、イベントは上方向に流れます。信頼できる唯一の情報源を一つにすることで、不整合をなくせます。

原則

``` State → View → Event → State mutation → View re-renders ``` ビューは状態の純粋な関数です。状態がどうあるべきかを決めるのではなく、状態を表示してイベントを発生させるだけです。

モデル駆動UI

```swift struct AppState { var count = 0; var filter: Filter = .all } struct AppView: View { @State var state = AppState() var body: some View { CounterView(state: state, onIncrement: { state.count += 1 }) } } ```

状態の重複を避ける

```swift // ❌ Duplicate state — can drift out of sync: @State var isLoading = false @ObservedObject var viewModel: ViewModel // also has isLoading // ✓ Single source: @ObservedObject var viewModel: ViewModel // owns all state ```

アクション/イベントパターン

```swift enum CounterAction { case increment, decrement, reset } func reduce(state: inout AppState, action: CounterAction) { switch action { case .increment: state.count += 1 case .decrement: state.count -= 1 case .reset: state.count = 0 } } ```

TCA(The Composable Architecture)

The Composable Architecture(オープンソース)は、reducer、effect、storeを使ってこのパターンをSwiftで体系化したものです。ReactのReduxに似ています。

双方向の競合を避ける

```swift // ✓ Clear ownership: parent owns, child observes: struct Parent: View { @State private var text = "" var body: some View { Child(text: $text) } } struct Child: View { @Binding var text: String var body: some View { TextField("", text: $text) } } ```

変更を上方向へ伝播させる

イベントを上方向へ伝播させるには、クロージャ(コールバック)を使用します。 ```swift struct Child: View { var onDelete: () -> Void var body: some View { Button("Delete", action: onDelete) } } ```

単方向コードをテストする

状態とreducerがどちらも純粋であれば、簡単にテストできます。 ```swift var state = AppState() reduce(state: &state, action: .increment) XCTAssertEqual(state.count, 1) ```

メリット

• 予測可能: 同じ状態 → 同じUI • デバッグしやすい: すべてのアクションと状態変更を記録できます • テストしやすい: ロジックのテストにUIは必要ありません • タイムトラベルデバッグ: 状態の履歴を再生できます

確認問題

単方向データフローでは、何が状態の変更を引き起こしますか?

まとめ

重要なポイント: • 状態は下方向に流れ、イベントは上方向に流れます • 信頼できる唯一の情報源を一つにし、状態を重複させません • テスト可能な変更ロジックにはアクションとreducerを使用します • コールバックで子から親へイベントを伝播させます • 純粋な状態 + reducer = 簡単な単体テスト コース完了です!次はCombine Frameworkです。

よくある質問

「単一の信頼できる情報源と単方向フロー」レッスンは無料ですか?

はい。「単一の信頼できる情報源と単方向フロー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「単一の信頼できる情報源と単方向フロー」で何を学びますか?

1つの信頼できる状態モデルを使ってSwiftUIアプリを設計します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「単一の信頼できる情報源と単方向フロー」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. @Binding:双方向のデータフロー
  2. @ObservableObjectと@StateObject
  3. 共有状態のための@EnvironmentObject
  4. 単一の信頼できる情報源と単方向フロー
← Swift Academyに戻る