swift-optimise について
SwiftおよびSwiftUIアプリの開発者向けパフォーマンスガイドです。並行処理、描画、スクロール、アニメーションを扱う19のルールがあり、iOS 26、Swift 6.2と所定のモジュール型MVVM-Cアーキテクチャを前提とします。
主な機能
- 013カテゴリ、19のルール
- 02Swift 6の並行処理ガイド
- 03SwiftUIの描画とスクロール
- 04アニメーション性能の実践
- 05モジュール型MVVM-Cを前提
活用シーン
- 01Swift 6の並行処理への移行
- 02Combineパブリッシャーをasync/awaitに置換
- 03スクロールと描画性能の改善
- 04SwiftUIアニメーション実装のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill swift-optimiseインストール後、Claude Code で/swift-optimiseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdanim-gesture-driven.mdanim-matchedgeometry.mdanim-spring.mdanim-transition-effects.mdanim-with-animation.mdconc-actor-for-shared-state.mdconc-asyncsequence-streams.mdconc-combine-to-async.mdconc-mainactor-isolation.mdconc-swift6-sendable.mdconc-task-id-pattern.mdperf-async-image.mdperf-canvas-timeline.mdperf-drawinggroup.mdperf-equatable-views.mdperf-instruments-profiling.mdperf-lazy-containers.mdperf-task-modifier.mdperf-view-decomposition.md詳細
Apple Swift/SwiftUI のパフォーマンス最適化のベストプラクティス
Swift と SwiftUI のパフォーマンス最適化に関する包括的なガイドです。モダンな並行処理、レンダリングパフォーマンス、アニメーションパフォーマンスを扱う、3 つのカテゴリにわたる 19 のルールをまとめています。@Observable と Swift 6 の厳格な並行処理を使用する iOS 26 / Swift 6.2 を対象としています。
Clinic アーキテクチャの契約(iOS 26 / Swift 6.2)
このスキルのすべてのガイダンスは、Clinic のモジュール型 MVVM-C アーキテクチャを前提としています。
- 機能モジュールがインポートできるのは
DomainとDesignSystemのみです(Dataや兄弟機能はインポートしません) - App ターゲットが合流点となり、
DependencyContainer、具象コーディネーター、Route Shell の配線を所有します Domainは純粋な Swift を維持し、モデルに加えて、リポジトリ、*Coordinating、ErrorRouting、AppErrorの契約を定義しますDataは SwiftData/ネットワーク/同期/再試行/バックグラウンド I/O を所有し、Domain のプロトコルを実装します- 読み取り/書き込みフローでは、デフォルトで stale-while-revalidate の読み取りと、キューに登録する楽観的な書き込みを使用します
- ViewModel はリポジトリのプロトコルを直接呼び出します(デフォルトのユースケース/インタラクター層は設けません)
適用する場面
次のような場合に、これらのガイドラインを参照してください。
- Swift 6 の厳格な並行処理(Sendable、アクター分離)に移行する
- Combine のパブリッシャーを async/await に置き換える
- @MainActor による分離と、アクターをベースとした並行処理を実装する
- ビューを分割して、状態無効化の影響範囲を縮小する
- 遅延コンテナーを使って、スクロールとレンダリングのパフォーマンスを最適化する
- 高パフォーマンスなレンダリングに Canvas/TimelineView を使用する
- 最適化の前に SwiftUI Instruments でプロファイリングする
- パフォーマンスに優れたスプリングアニメーションとトランジションを構築する
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 並行処理と非同期処理 | CRITICAL | conc- |
| 2 | レンダリングとスクロールのパフォーマンス | HIGH | perf- |
| 3 | アニメーションのパフォーマンス | MEDIUM | anim- |
クイックリファレンス
1. 並行処理と非同期処理(CRITICAL)
conc-combine-to-async- Combine のパブリッシャーを async/await に置き換えるconc-mainactor-isolation- DispatchQueue.main の代わりに @MainActor を使用するconc-swift6-sendable- Sendable と Swift 6 の厳格な並行処理を採用するconc-task-id-pattern- リアクティブなデータ読み込みに .task(id:) を使用するconc-actor-for-shared-state- ロックベースの共有状態をアクターに置き換えるconc-asyncsequence-streams- NotificationCenter のオブザーバーを AsyncSequence に置き換える
2. レンダリングとスクロールのパフォーマンス(HIGH)
perf-view-decomposition- ビューを分割して、状態無効化の影響範囲を抑えるperf-instruments-profiling- 最適化の前に SwiftUI Instruments でプロファイリングするperf-lazy-containers- 大規模なコレクションには遅延コンテナーを使用するperf-canvas-timeline- 高パフォーマンスなレンダリングに Canvas と TimelineView を使用するperf-drawinggroup- 複雑なグラフィックスに drawingGroup を使用するperf-equatable-views- 不要な再描画を防ぐため、Equatable への準拠を追加するperf-task-modifier- 非同期処理には .onAppear の代わりに .task 修飾子を使用するperf-async-image- リモート画像にはキャッシュ戦略を備えた AsyncImage を使用する
3. アニメーションのパフォーマンス(中)
anim-spring- スプリングアニメーションをデフォルトとして使用しますanim-matchedgeometry- 共有トランジションにはmatchedGeometryEffectを使用しますanim-gesture-driven- アニメーションをジェスチャーに連動させますanim-with-animation- 状態に応じたトランジションにはwithAnimationを使用しますanim-transition-effects- ビューの挿入と削除にトランジション効果を適用します
使用方法
詳しい説明とコード例については、個別のリファレンスファイルをお読みください。
- セクションの定義 - カテゴリー構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
コメント
Markdown 対応