swiftui-advanced について
SwiftUI の高度な開発を支援するリファレンスです。ジェスチャーの組み合わせ、アダプティブレイアウト、アーキテクチャ選定、性能改善を扱います。
主な機能
- 01同時・順次ジェスチャーの構成
- 02アダプティブレイアウト手法の選択
- 03アプリの複雑さに応じた設計選定
- 04ビュー本体の計算の最適化
- 05Instruments 26 による性能分析
活用シーン
- 01優先関係を定めたジェスチャーの組み合わせ
- 02利用可能な領域に応じたレイアウト調整
- 03新規アプリのアーキテクチャ選定
- 04不要なビュー更新の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ johnrogers/ claude-swift-engineering --skill swiftui-advancedインストール後、Claude Code で/swiftui-advancedを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/adaptive-layout.mdarchitecture.mdgestures.mdperformance.md詳細
SwiftUI の高度なパターン
ジェスチャーの合成、アダプティブレイアウト、アーキテクチャの選択、パフォーマンスの最適化に関する SwiftUI の高度なパターンです。
リファレンスの読み込みガイド
内容が必要になる可能性が少しでもある場合は、必ずリファレンスファイルを読み込んでください。 パターンを見落としたり、間違えたりするより、事前にコンテキストを把握しておくほうが適切です。
| リファレンス | 読み込むタイミング |
|---|---|
| Gestures | 複数のジェスチャーの合成、GestureState、カスタム認識器を扱う場合 |
| Adaptive Layout | ViewThatFits、AnyLayout、サイズクラス、iOS 26 のフリーフォームウィンドウを扱う場合 |
| Architecture | MVVM と TCA の選択、State-as-Bridge、プロパティラッパーの選定を行う場合 |
| Performance | Instruments 26、ビューの body の最適化、不要な更新を扱う場合 |
基本的なワークフロー
- ユーザーの質問からパターンのカテゴリを特定します
- 詳細なパターンとコード例について、関連するリファレンスを読み込みます
- 判断ツリーとアンチパターンに従ってパターンを適用します
- 提供されたチェックリストやプロファイリングの指針を使って検証します
判断ツリー
ジェスチャーの合成
- 2 つのジェスチャーを同時に認識する必要がありますか? ->
.simultaneously - 次のジェスチャーの前に、1 つ目を完了させる必要がありますか? ->
.sequenced - どちらか一方だけを優先する必要がありますか? ->
.exclusively
レイアウトの適応
- 最適なバリエーションを選びますか? ->
ViewThatFits - H/V の切り替えをアニメーション化しますか? ->
AnyLayout - 実際のサイズが必要ですか? ->
onGeometryChange
アーキテクチャの選択
- 小規模なアプリで、Apple のパターンを使いますか? -> @Observable + State-as-Bridge
- 複雑なプレゼンテーションロジックがありますか? -> @Observable を使った MVVM
- 厳密なテスト容易性が必要ですか? -> TCA
よくある間違い
-
ジェスチャーの合成順序は重要です —
.simultaneouslyと.sequencedでは、発火のタイミングが異なります。順序を入れ替えると、動作が気づかないうちに変わります。使用する前にジェスチャーのセマンティクスを理解してください。 -
ViewThatFits の過剰な使用 — ViewThatFits はビューが変わるたびに再計測を行います。アニメーション付きで H/V を切り替える場合は、代わりに
AnyLayoutを使用してください。ViewThatFits は静的なバリエーションの選択にのみ使用してください。 -
onGeometryChange による不要な更新 — ジオメトリを読み取るとジオメトリが変化し、それによって更新が発生し、さらにジオメトリが変化する……という循環が起こります。ループを避けるため、適切な状態管理のもとでのみ
.onGeometryChangeを使用してください。 -
プロジェクト途中でのアーキテクチャの不一致 — @Observable + State-as-Bridge で始めた後に TCA が必要だと気づくと、変更に大きなコストがかかります。複雑さに応じて、事前にアーキテクチャを選択してください(小規模なアプリ = @Observable、複雑なアプリ = TCA)。
-
ビューの body の最適化を怠る — ビューの body でコストの高い計算を繰り返し行うと、パフォーマンスが大きく低下します。計算はプロパティまたはモデルに移してください。時期尚早な最適化を避けるため、最適化の前に Instruments 26 でプロファイリングしてください。