RORK LABEN
FUNDING — Rorkが$15Mのシード資金調達を完了。Left Lane Capitalが主導し、Peak XV・True Ventures・Goodwater・a16z Speedrunが参加しましたSCALE — 1年未満でWebトラフィック上は世界最大級のAIモバイルアプリ構築プラットフォームに成長しましたMAX — Rork MaxはネイティブSwiftアプリを生成し、Claude Code・Claude Opus 4.6で駆動しますNATIVE — Rork MaxはAR/LiDAR・Metalの3D・ウィジェット・Live Activities・HealthKit・Core MLなどXcode相当の領域まで到達しますSTACK — 通常のRorkはReact Native(Expo)でiOSとAndroidを同時に生成し、非エンジニアでも実機アプリを作れますPRICE — 料金は無料から用意され、有料プランは月$25から、Rork Maxは月$200ですFUNDING — Rorkが$15Mのシード資金調達を完了。Left Lane Capitalが主導し、Peak XV・True Ventures・Goodwater・a16z Speedrunが参加しましたSCALE — 1年未満でWebトラフィック上は世界最大級のAIモバイルアプリ構築プラットフォームに成長しましたMAX — Rork MaxはネイティブSwiftアプリを生成し、Claude Code・Claude Opus 4.6で駆動しますNATIVE — Rork MaxはAR/LiDAR・Metalの3D・ウィジェット・Live Activities・HealthKit・Core MLなどXcode相当の領域まで到達しますSTACK — 通常のRorkはReact Native(Expo)でiOSとAndroidを同時に生成し、非エンジニアでも実機アプリを作れますPRICE — 料金は無料から用意され、有料プランは月$25から、Rork Maxは月$200です
記事一覧/開発ツール
開発ツール/2026-07-06上級

Rork Max の SwiftUI を @Observable へ移す — ObservableObject で広がっていた再描画を絞り込む

Rork Max が生成する SwiftUI アプリは ObservableObject と @Published をよく使いますが、状態が一つ変わるだけで購読しているビュー全体が再評価されます。Observation フレームワークの @Observable へ移すことで、プロパティ単位に再描画を絞り込む手順と、Instruments で実測したビュー実行回数の変化を、個人開発の作業ログとしてまとめました。

Rork Max216SwiftUI61Observationパフォーマンス29iOS104リファクタリング3

プレミアム記事

Rork Max で生成した SwiftUI の一覧画面を実機で触っていて、スクロールの終わり際にわずかな引っかかりを感じたのが、この記事を書くきっかけでした。フレームレートを落とすほどではありません。ただ、指を離した瞬間に一拍遅れるあの感触が、どうにも気になっていました。

Instruments の SwiftUI テンプレートを当ててみて、理由がはっきりしました。セルを一つタップしてお気に入り状態を切り替えるだけで、画面に並んだ数十枚のカードの body がまとめて再評価されていたのです。原因は Rork Max が生成した ViewModel の作りにありました。ObservableObject@Published を並べる、あの定番の形です。

扱うのは、その ViewModel を Observation フレームワークの @Observable へ移し替え、再描画をプロパティ単位まで絞り込む手順です。私自身が個人開発で実際に移行してみて、どこが素直に置き換えられて、どこが静かに壊れるのかを、作業ログとして残しておきます。

なぜ ObservableObject は再描画を広げてしまうのか

ObservableObject の仕組みはシンプルです。@Published なプロパティのいずれかが変わると、そのオブジェクトが持つ objectWillChange パブリッシャーが一度だけ発火します。SwiftUI 側でこのオブジェクトを @ObservedObject@StateObject として購読しているビューは、どのプロパティが変わったかを区別できません。オブジェクトが「変わった」という事実だけを受け取り、自分の body を無効化します。

つまり、一覧のフィルタ文字列を一文字打ち込んだだけでも、同じ ViewModel を見ているカード群がすべて再評価の対象になります。SwiftUI は差分計算で最終的な描画を最小化してくれますが、body の実行そのものは走ります。body の中で重い整形やフォーマッタ生成をしていれば、その回数だけコストが積み上がります。

Rork Max のようなコード生成では、状態をまとめて一つの ViewModel に集約する傾向があります。集約は読みやすい一方で、objectWillChange の粒度が粗いという ObservableObject の弱点をそのまま増幅してしまいます。

@Observable が変えるのは「追跡の粒度」

Observation フレームワークの @Observable マクロは、この粒度を根本から変えます。ビューの body が実行されるとき、その中で実際に読み取ったプロパティだけが、そのビューの依存として記録されます。あるカードが wallpaper.isFavorite しか読んでいなければ、isFavorite が変わったときにだけ再評価されます。フィルタ文字列が変わっても、その文字列を読んでいないカードは無傷です。

言い換えると、ObservableObject が「オブジェクト単位」で無効化するのに対し、@Observable は「読み取ったプロパティ単位」で無効化します。この差が、一覧画面のような同一オブジェクトを大量のビューが共有する場面で効いてきます。

Observation は iOS 17 以降で利用できます。Rork Max が生成するアプリの多くは最近の iOS をターゲットにしているため、移行の前提はたいてい満たせます。デプロイメントターゲットだけは最初に確認しておいてください。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
ObservableObject が再描画を広げる仕組みと、@Observable がプロパティ単位に絞り込む理由を Before/After のコードで示します
Instruments の SwiftUI テンプレートで実測した、移行前後のビュー body 実行回数(スクロール中の一覧画面で約 3.6 倍から 1.0 倍へ)
@Bindable・Optional な @Environment・didSet など、移行時に静かに壊れる 5 か所と、その回避パターン
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-06-30
Rork Max で StandBy モードに最適化したウィジェットを実装する
充電中の横向き表示で使われる StandBy モード向けに、WidgetKit ウィジェットを最適化する実装手順です。常時表示の調光・ナイトモード・コンテナ背景の扱いを、Rork Max が生成したコードへどう手で加えるかまで含めて解説します。
開発ツール2026-06-24
Rork Max の SwiftUI グリッドが画像でカクつくときに効く、スクロール最適化
Rork Max が生成した SwiftUI の画像グリッドがスクロールでカクつく原因を計測し、ImageIO のダウンサンプリング・デコードのバックグラウンド化・セルの安定化で実機のヒッチを減らす実装手順をまとめました。
開発ツール2026-06-24
発熱と省電力モードに合わせて、重い処理を静かに落とす設計
ProcessInfo の thermalState と省電力モードを監視し、発熱時やバッテリー残量が少ないときに重い処理を段階的に落とす実装を、Swift のコードとともに整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →