mcpField
I
ios-animations

ios-animations

github.com/pproencaデザイン・UI218345 回インストール11 週間前に更新
リポジトリ

ios-animations について

ios-animationsは、SwiftUI開発者向けのアニメーション実践ガイドです。モーション設計、ジェスチャー、トランジションを中心に、パフォーマンス、アクセシビリティ、デザインシステムの制約に沿った指針を示します。

主な機能

  1. 018カテゴリのアニメーションルール
  2. 02スプリングとアニメーション時間の指針
  3. 03ジェスチャーの連続性と空間トランジション
  4. 04マイクロインタラクションとシーケンスのパターン
  5. 05視差効果の低減とデザイントークンの指針

活用シーン

  1. 01SwiftUIビューへのアニメーション追加
  2. 02ドラッグやスワイプ操作の構築
  3. 03展開、折りたたみ、ナビゲーションのトランジション設計
  4. 04アニメーションの性能とアクセシビリティの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill ios-animations

インストール後、Claude Code で/ios-animationsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

metadata.json
assets/templates/
_template.md
references/
_sections.md
content-numeric-text.md
content-scroll-transition.md
content-symbol-replace.md
content-text-renderer.md
content-visual-effect.md
craft-blur-bridge.md
craft-drawing-group.md
craft-geometry-group.md
craft-reduce-motion.md
craft-transaction-debug.md
feel-250ms-max.md
feel-asymmetric-enter-exit.md
feel-distance-proportional.md
feel-faster-better.md
feel-haptic-sync.md
feel-stagger-timing.md
gesture-interruptible.md
gesture-momentum-dismiss.md
gesture-projected-landing.md
gesture-rubber-band.md
gesture-scroll-drag-conflict.md
gesture-snap-points.md
gesture-state-transient.md
micro-button-press-scale.md
micro-haptic-pairing.md
micro-loading-phase.md
micro-long-press-fill.md

詳細

dot-skills — Airbnb iOS SwiftUI アニメーションのベストプラクティス

SwiftUI iOS 26/Swift 6.2 アプリ向けの、明確な方針に基づく厳格なアニメーション制作ガイドです。影響度順に優先順位付けされた、8 カテゴリにわたる 50 のルールが含まれています。Airbnb Engineering のモーションパターン、Apple WWDC セッション、Apple Human Interface Guidelines をもとに作成されています。アニメーション対象のすべてのビューに @Equatable を適用し、すべてのスプリング値とタイミング値にモーショントークンを使用し、レイアウトにはデザインシステムのトークンを使用することを必須としています。

必須のアーキテクチャ整合性

このスキルは、swift-ui-architect および ios-design-system と併用することを想定しています。すべてのコード例は、次の譲れない制約に従っています。

  • すべてのビューに @Equatable マクロを適用する(Airbnb の測定では、スクロール時のカクつきが 15% 減少)
  • ビジネスロジックのトリガーを伴う複雑なアニメーション状態には @Observable を使用する
  • ビューが所有するアニメーション状態(トグルの真偽値、ドラッグオフセット)には @State を使用する
  • デザインシステムのトークン:Spacing.xs/sm/md/lg、Radius.sm/md/lg — ハードコードされたレイアウト数値は使用しない
  • モーショントークン:Motion.standard/responsive/playful — スプリング値を散在させない
  • セマンティックカラー:.backgroundSurface、.accentPrimary — ビュー内で生の Color リテラルを使用しない
  • 機能のアニメーションはプレゼンテーション専用とし、データ/ネットワーク関連の処理は Data パッケージに保持する

対象範囲と関連する兄弟スキル

このスキルはモーションレイヤーです。滑らかで高パフォーマンスなアニメーションの構築方法を解説します。兄弟スキルと併用する場合:

兄弟スキルそのスキルの対象このスキルの対象
swift-ui-architectアーキテクチャ(モジュール化された MVVM-C、ルートシェル、プロトコル境界)アニメーションアーキテクチャ(モーショントークン、スプリングの選択、オーケストレーション)
ios-design-systemデザインシステムの基盤(トークン、スタイル、ガバナンス)モーショントークンとアニメーションコンポーネントのパターン
ios-higHIG 準拠のパターンモーション固有の HIG(モーションの抑制、空間的連続性)

対象外: デザイナーが作成したベクターアニメーション(After Effects の書き出しには Lottie を使用してください)。複雑な UIKit のトランジションコントローラー(Airbnb の宣言的なトランジションフレームワークを参照してください)。このスキルが対象とするのは、プログラムで作成する SwiftUI アニメーションのみです。

Clinic アーキテクチャ契約(iOS 26/Swift 6.2)

このスキルのすべてのガイダンスは、Clinic のモジュール化された MVVM-C アーキテクチャを前提としています。

  • Feature モジュールがインポートするのは Domain と DesignSystem のみです(Data や兄弟 Feature はインポートしません)
  • App ターゲットが各要素の収束点となり、DependencyContainer、具象コーディネーター、Route Shell の配線を所有します
  • Domain は純粋な Swift を保ち、モデルに加えて、リポジトリ、*Coordinating、ErrorRouting、AppError の契約を定義します
  • Data は SwiftData/ネットワーク/同期/再試行/バックグラウンド I/O を所有し、Domain のプロトコルを実装します
  • 読み取り/書き込みフローの既定動作は、古いデータを表示しながら再検証する読み取りと、キューに登録する楽観的な書き込みです
  • ViewModel はリポジトリのプロトコルを直接呼び出します(既定のユースケース/インタラクター層は設けません)

適用する場面

次の場合に、これらのガイドラインを参照してください。

  • SwiftUI のビューやトランジションにアニメーションを追加するとき
  • ジェスチャー駆動のインタラクション(ドラッグ、スワイプ、パン)を構築するとき
  • 空間トランジション(展開/折りたたみ、ナビゲーションのモーフィング)でビューをつなぐとき
  • マイクロインタラクション(ボタンの押下、トグル、読み込み状態)を設計するとき
  • コンテンツの変更に物理的な感覚を持たせるとき(数字の回転表示、シンボルの置き換え)
  • 複数要素のアニメーションシーケンス(KeyframeAnimator、PhaseAnimator)を振り付けるとき
  • デザインシステムのモーショントークンを定義するとき
  • パフォーマンス、アクセシビリティ、アーキテクチャへの準拠の観点から、アニメーションコードをレビューするとき

優先度別ルールカテゴリ

優先度カテゴリ影響度プレフィックスルール数
1スプリング物理重大spring-8
2タイミングと感覚重大feel-6
3ジェスチャーの連続性高gesture-7
4空間的なトランジション高spatial-6
5マイクロインタラクション高micro-6
6オーケストレーション高orch-5
7細部の作り込みと仕上げ高craft-5
8コンテンツのモーション中〜高content-5

クイックリファレンス

1. スプリング物理(重大)
  • spring-motion-tokens — すべてのスプリングプリセットのモーショントークンを、ケースレスな列挙型として定義します
  • spring-smooth-default — すべての UI トランジションで、デフォルトとして .smooth スプリングを使用します
  • spring-snappy-responsive — 応答性が求められるインタラクションには .snappy スプリングを使用します
  • spring-bouncy-celebration — 遊び心のある場面や祝福の演出には .bouncy スプリングを使用します
  • spring-custom-parameters — response と dampingFraction を使ってカスタムスプリングを調整します
  • spring-velocity-preservation — スプリングは中断時に速度を維持します
  • spring-never-linear — インタラクティブな UI では、linear や easeInOut を決して使用しないでください
  • spring-completion-chaining — シーケンスを連結するには withAnimation completion を使用します
2. タイミングと感覚(重大)
3. ジェスチャーの連続性(高)
4. 空間的なトランジション(高)
5. マイクロインタラクション(HIGH)
  • micro-button-press-scale — 押したときにボタンを 0.97 に縮小し、触覚的なフィードバックを与えます
  • micro-haptic-pairing — すべての視覚状態の変化に触覚フィードバックを組み合わせます
  • micro-symbol-effect — SF Symbol のアニメーションには symbolEffect を使用します
  • micro-toggle-bounce — トグルの状態変化にバウンスを追加します
  • micro-long-press-fill — 長押しアクションで段階的に塗りつぶされるアニメーションを追加します
  • micro-loading-phase — 自然なローディング状態には、繰り返しのスプリングアニメーションを使用します
6. オーケストレーション(HIGH)
7. 仕上げと磨き込み(HIGH)
  • craft-reduce-motion — クロスフェードによる代替表示を用意し、accessibilityReduceMotion を尊重します
  • craft-blur-bridge — うまくつながらない遷移状態をぼかしで補います
  • craft-drawing-group — Metal を利用した複雑なアニメーションには drawingGroup() を使用します
  • craft-geometry-group — geometryGroup() を使用して、レイアウトアニメーションの伝播を分離します
  • craft-transaction-debug — Transaction を使用して、アニメーションの動作をデバッグおよび上書きします
8. コンテンツの動き(MEDIUM-HIGH)

使用方法

誤ったコード例と正しいコード例を含む詳しい説明は、個別のリファレンスファイルをお読みください。

リファレンスファイル

ファイル説明
references/_sections.mdカテゴリーの定義と順序
assets/templates/_template.md新しいルール用のテンプレート
metadata.jsonバージョンとリファレンス情報

コメント