SwiftUI Academy · レッスン

ViewModelを設計する

画面用の@ObservableなViewModelを作成します。

レッスン 2/413 ステップ

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

ViewModelは単なるクラス

ViewModelは通常、1つの画面の状態とロジックを保持するクラスです。クラスを使うと、複数のビューで同じ実体を共有できます。

class ProfileViewModel {
    var name: String = ""
}

監視可能にする

@Observableマクロを追加すると、SwiftUIがプロパティの変更を追跡し、状態が更新されたときにビューを自動的に再描画します。

@Observable
class ProfileViewModel {
    var name = ""
}

ビュー用の状態を公開する

フォーマット済みのgreetingなど、ビューが直接読み取れるプロパティをViewModelに用意します。こうすれば、ビュー自身が文字列を組み立てる必要はありません。

var greeting: String {
    "Hi, " + name
}

読み込みフラグを保持する

UIの状態をViewModel内で管理します。単純なisLoadingの真偽値によって、ビューはスピナーとコンテンツのどちらを表示するか決められます。

var isLoading = false

意図をメソッドにまとめる

load()やsave()のように、操作をメソッドとして公開します。ビューはタップ時に呼び出し、何をするかはViewModelが正確に決めます。

func load() {
    isLoading = true
}

UIに合わせてプロパティ名を付ける

buttonTitleやrowsのように、生のデータではなく画面に表示するものに基づいて状態の名前を付けます。これにより、ビューをほぼ宣言的に保てます。

複雑な詳細を隠す

解析、計算、エッジケースへの対応はViewModelの中に置きます。ビューには整えられた値だけを見せ、複雑な処理には触れさせません。

画面ごとに1つのViewModel

各画面に、役割を絞ったViewModelを1つ用意します。単一の目的に集中した小さなモデルは、読みやすく、理解しやすく、テストもしやすくなります。

空の状態から始めて、後から埋める

ViewModelは適切な空のデフォルト値で初期化し、データが届いたら値を設定します。その間、ビューには落ち着いた空状態を表示します。

ビューのコードを持ち込まない

ViewModelにビューの型やレイアウトコードを決してimportしないでください。UIから切り離すことで、持ち運びやすく、ユニットテストもしやすくなります。✨

小さな完全な例

この小さなViewModelは、countとそれを変更するメソッドを公開します。ビューに必要なものが、明確な2つのメンバーにまとまっています。

@Observable
class CounterViewModel {
    var count = 0
    func increment() { count += 1 }
}

確認問題

ViewModelクラスにSwiftUIの更新を発生させるマクロはどれでしょうか。

まとめ:ViewModelを設計する

ビュー用の状態と意図を表すメソッドを公開し、複雑な詳細を隠す@Observableクラスを作成しました。次はビューを接続します。

無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「ViewModelを設計する」レッスンは無料ですか?

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

「ViewModelを設計する」で何を学びますか?

画面用の@ObservableなViewModelを作成します。 ブラウザで直接実行するハンズオンコードでSwiftUI Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ViewModelを設計する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. MVVMがSwiftUIに適している理由
  2. ViewModelを設計する
  3. ビューをViewModelにバインドする
  4. ViewModelの依存性注入
← SwiftUI Academyに戻る