For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション
Codex

Codex use case

SwiftUI 画面のリファクタリング

Codex を使って、動作やレイアウトを変えずに、肥大化した SwiftUI 画面を小さなサブビューに分割します。

Difficulty 上級
Time horizon 1時間

Codex と Build iOS Apps プラグインを使って、長い SwiftUI ビューを専用のセクションビューに分割し、副作用を body の外へ移し、状態管理と Observation の使い方を安定させます。また、不要なビューモデルを導入せず、MV を優先してリファクタリングします。

最適な用途

  • `body` にレイアウト、分岐、非同期処理、インラインアクションが混在し、1 画面に詰め込まれてレビューしにくくなった巨大な SwiftUI ファイル
  • 内部実装を保守しやすくしつつ、見た目と動作は同一に保つ必要がある既存の iOS 機能
  • 計算プロパティとして定義された `some View` フラグメント、オプショナルなビューモデル、または複雑な状態の受け渡しを、明示的なサブビュー入力とコールバックに整理したい画面

Contents

    ← すべてのユースケース

    SwiftUI 画面のリファクタリング

    Codex を使って、動作やレイアウトを変えずに、肥大化した SwiftUI 画面を小さなサブビューに分割します。

    Codex と Build iOS Apps プラグインを使って、長い SwiftUI ビューを専用のセクションビューに分割し、副作用を body の外へ移し、状態管理と Observation の使い方を安定させます。また、不要なビューモデルを導入せず、MV を優先してリファクタリングします。

    上級
    1時間

    Codex と Build iOS Apps プラグインを使って、長い SwiftUI ビューを専用のセクションビューに分割し、副作用を body の外へ移し、状態管理と Observation の使い方を安定させます。また、不要なビューモデルを導入せず、MV を優先してリファクタリングします。

    上級
    1時間

    最適な用途

    • `body` にレイアウト、分岐、非同期処理、インラインアクションが混在し、1 画面に詰め込まれてレビューしにくくなった巨大な SwiftUI ファイル
    • 内部実装を保守しやすくしつつ、見た目と動作は同一に保つ必要がある既存の iOS 機能
    • 計算プロパティとして定義された `some View` フラグメント、オプショナルなビューモデル、または複雑な状態の受け渡しを、明示的なサブビュー入力とコールバックに整理したい画面

    スキルとプラグイン

    • SwiftUI ビューリファクタリングスキルを使用すると、Codex で大規模な SwiftUI 画面を編集しながら、専用のサブビューを抽出し、安定したデータフローを維持し、Observation の使い方を簡素化して、動作をそのまま保てます。
    Skill Why use it
    Build iOS Apps SwiftUI ビューリファクタリングスキルを使用すると、Codex で大規模な SwiftUI 画面を編集しながら、専用のサブビューを抽出し、安定したデータフローを維持し、Observation の使い方を簡素化して、動作をそのまま保てます。

    開始用プロンプト

    Build iOS Apps プラグインと、その SwiftUI ビューリファクタリングスキルを使用して、画面の動作や見た目を変えずに [NameOfScreen.swift] を整理してください。 制約事項: - 別途明記すべきバグが見つかった場合を除き、動作、レイアウト、ナビゲーション、ビジネスロジックを維持してください。 - MVVM ではなく MV をデフォルトにしてください。新しいビューモデルを導入する前に、`@State`、`@Environment`、`@Query`、`.task`、`.task(id:)`、`onChange` を優先し、この機能に明らかに必要な場合に限ってビューモデルを残してください。 - ビュー内の順序を、格納プロパティ、計算状態、`init`、`body`、ビューヘルパー、ヘルパーメソッドの順に並べ替え、上から下まで把握しやすくしてください。 - 意味のあるセクションを専用の `View` 型として抽出し、必要最小限の明示的な入力、`@Binding`、コールバックを持たせてください。1 つの巨大な `body` を、大きな `some View` 型の計算プロパティの寄せ集めに置き換えないでください。 - 複雑なボタンアクションと副作用は `body` から小さなメソッドに移し、実際のビジネスロジックはサービスまたはモデルに移してください。 - ルートのビューツリーを安定させてください。セクション内の局所的な条件分岐やモディファイアーで十分な場合は、画面全体を入れ替えるトップレベルの `if/else` 分岐を避けてください。 - リファクタリング時に Observation の所有関係を修正してください。iOS 17+ では、ルートの `@Observable` モデルを `@State` で保持し、UI にその状態構造が本当に必要な場合を除いて、オプショナルなビューモデルや初期化を遅延させるビューモデルを避けてください。 - 各抽出の後に、画面の動作が同じであることを確認できる最小限のビルドまたはテストを実行してください。 成果物: - リファクタリングした画面と、抽出したすべてのサブビュー - 新しいサブビューの境界とデータフローに関する簡潔な説明 - ビューモデルを意図的に残した箇所と、その理由 - 動作が維持されたことを確認するために実行した検証チェック
    Build iOS Apps プラグインと、その SwiftUI ビューリファクタリングスキルを使用して、画面の動作や見た目を変えずに [NameOfScreen.swift] を整理してください。 制約事項: - 別途明記すべきバグが見つかった場合を除き、動作、レイアウト、ナビゲーション、ビジネスロジックを維持してください。 - MVVM ではなく MV をデフォルトにしてください。新しいビューモデルを導入する前に、`@State`、`@Environment`、`@Query`、`.task`、`.task(id:)`、`onChange` を優先し、この機能に明らかに必要な場合に限ってビューモデルを残してください。 - ビュー内の順序を、格納プロパティ、計算状態、`init`、`body`、ビューヘルパー、ヘルパーメソッドの順に並べ替え、上から下まで把握しやすくしてください。 - 意味のあるセクションを専用の `View` 型として抽出し、必要最小限の明示的な入力、`@Binding`、コールバックを持たせてください。1 つの巨大な `body` を、大きな `some View` 型の計算プロパティの寄せ集めに置き換えないでください。 - 複雑なボタンアクションと副作用は `body` から小さなメソッドに移し、実際のビジネスロジックはサービスまたはモデルに移してください。 - ルートのビューツリーを安定させてください。セクション内の局所的な条件分岐やモディファイアーで十分な場合は、画面全体を入れ替えるトップレベルの `if/else` 分岐を避けてください。 - リファクタリング時に Observation の所有関係を修正してください。iOS 17+ では、ルートの `@Observable` モデルを `@State` で保持し、UI にその状態構造が本当に必要な場合を除いて、オプショナルなビューモデルや初期化を遅延させるビューモデルを避けてください。 - 各抽出の後に、画面の動作が同じであることを確認できる最小限のビルドまたはテストを実行してください。 成果物: - リファクタリングした画面と、抽出したすべてのサブビュー - 新しいサブビューの境界とデータフローに関する簡潔な説明 - ビューモデルを意図的に残した箇所と、その理由 - 動作が維持されたことを確認するために実行した検証チェック

    動作を変えない単一画面のリファクタリング

    SwiftUI ファイルが 1 つの巨大な画面へと肥大化し、どんな小さな編集にもリスクを感じるようになったときに役立つユースケースです。目的は、機能を再設計したり、新しいアーキテクチャを考案したりすることではありません。動作とレイアウトを維持したまま、明示的なデータフローを持つ小さなサブビューへ画面を分割するよう Codex に依頼すれば、その後の変更をレビューしやすくなります。

    この種の整理には、Build iOS Apps プラグイン を使用してください。このプラグインの SwiftUI ビューリファクタリングスキルには、MVVM より MV を優先し、ビジネスロジックはサービスまたはモデルに置き、まずビューのローカル状態と環境依存関係を使用し、機能に明らかに必要な場合に限ってビューモデルを残すという実用的で明確な方針があります。

    Codex への依頼内容

    まず、対象となる具体的な画面ファイルを 1 つ指定し、動作を維持しながら構造を改善するよう Codex に依頼します。プロンプトに直接含めると効果的なリファクタリングルールは次のとおりです:

    • ファイル内の順序を、環境依存関係、格納プロパティ、ビューを返さない計算プロパティ、initbody、ビューヘルパー、ヘルパーメソッドの順に並べ替え、上から下へ追いやすくしてください。
    • 意味のあるセクションを専用の View 型として抽出し、必要最小限の明示的な入力、@Binding、コールバックを持たせてください。
    • 計算プロパティとして定義する some View ヘルパーは、必要最小限の小さなものにしてください。1 つの巨大な画面を、private な計算プロパティのビューフラグメントを長々と並べるだけの構成に作り直さないでください。
    • 複雑なボタンアクションや副作用は body の外に移し、実際のビジネスロジックはサービスまたはモデルに移してください。
    • ルートのビューツリーを安定させてください。画面全体を入れ替えるトップレベルの if/else 分岐ではなく、セクションやモディファイアーで局所的に条件を適用する方法を優先してください。
    • 作業を進めながら Observation の所有関係を修正してください。iOS 17+ でルートの @Observable モデルを所有するビューは、そのモデルを @State で保持してください。従来の Observable ラッパーは、デプロイメントターゲットの都合で必要な場合にのみ使用してください。

    小さな検証ループの実行を依頼

    動作を維持するリファクタリングには、裏付けが必要です。意味のある抽出を行うたびに、画面の動作を確認できる最小限のビルド、プレビュー、テスト、またはシミュレーターチェックを実行し、続けて構造上の変更点と意図的に維持した点をまとめるよう Codex に依頼してください。

    実践的なヒント

    まず分割、アーキテクチャの検討はその後

    画面が大きすぎる場合は、新しい抽象化レイヤーを導入する前にセクションビューを抽出するよう Codex に依頼してください。ビューツリーを短く明示的にするだけで、ビューモデルを追加する必要性そのものが解消されることもよくあります。

    各サブビューに渡すインターフェースを必要最小限に

    各子ビューに親モデル全体を渡すのではなく、let 値、@Binding、単一用途のコールバックを優先してください。これにより、抽出した各セクションをプレビューしやすくなり、画面全体へ誤って再び密結合させることも避けやすくなります。

    意図的に変えなかった点の明記を Codex に依頼

    安全なリファクタリングでは、変更しなかったもの、つまりビジネスルール、ナビゲーションの動作、永続化、アナリティクスのセマンティクス、ユーザーに見えるレイアウトを Codex が明示的に列挙すると役立ちます。これにより、レビューを大幅に迅速化できます。

    Tech stack

    Need

    UI アーキテクチャ

    Default options

    @State@Environment、小さな専用 View 型に分割する MV 優先の SwiftUI 構成

    Why it's needed

    大規模画面は、ビューモデルのレイヤーをさらに導入する前に Codex でビューツリーと状態フローを簡素化すると、通常は保守しやすくなります。

    Need

    リファクタリングのワークフロー

    Why it's needed

    このプラグインの SwiftUI ビューリファクタリングスキルにより、Codex は動作を維持しながら、ビューの抽出、Observation の扱い、副作用の整理に関する明確なルールに従えます。

    Need

    検証

    Default options

    xcodebuild、プレビュー、対象を絞った UI チェック

    Why it's needed

    各抽出の後に小規模なビルドまたはシミュレーターによるチェックを行うと、一度に全面的に書き換える場合より、動作を維持できていると確信しやすくなります。

    Need Default options Why it's needed
    UI アーキテクチャ @State @Environment 、小さな専用 View 型に分割する MV 優先の SwiftUI 構成 大規模画面は、ビューモデルのレイヤーをさらに導入する前に Codex でビューツリーと状態フローを簡素化すると、通常は保守しやすくなります。
    リファクタリングのワークフロー Build iOS Apps プラグイン このプラグインの SwiftUI ビューリファクタリングスキルにより、Codex は動作を維持しながら、ビューの抽出、Observation の扱い、副作用の整理に関する明確なルールに従えます。
    検証 xcodebuild 、プレビュー、対象を絞った UI チェック 各抽出の後に小規模なビルドまたはシミュレーターによるチェックを行うと、一度に全面的に書き換える場合より、動作を維持できていると確信しやすくなります。

    関連するユースケース