mcpField
M
motion-design

motion-design

github.com/planetabhiデザイン・UI165 回インストール7 週間前に更新
リポジトリ

motion-design について

ランタイム依存を増やさず、目的に沿ったアクセシブルなアニメーションを実装するためのスキルです。CSS、Web Animations API、View Transitions API の判断基準と実装指針を示します。

主な機能

  1. 01頻度と目的の確認
  2. 02CSS とブラウザー API の技法選定
  3. 03動きを抑えた代替案
  4. 04中断可能なアニメーションの指針
  5. 05パフォーマンスと品質のチェックリスト

活用シーン

  1. 01画面変化にアニメーションが必要か判断
  2. 02アクセシブルなモーダルやドロワーの遷移作成
  3. 03アニメーション技法の選定
  4. 04動きの性能と挙動の確認

インストール

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

$npx skills add https://github.com/planetabhi/skills --skill motion-design

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

同梱ファイル

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

reference/
accessibility.md
checklist.md
credits.md
entrances-and-exits.md
interactivity.md
motion-tokens.md
patterns.md
performance.md
principles.md
techniques.md

詳細

モーションデザイン

すべてのアニメーションとトランジションに、これらのルールを適用してください。例として、依存関係のない CSS、Web Animations API、View Transitions API があります。これらのルールは、どのフレームワークやユーティリティシステムにもそのまま適用できます。詳細なルールとパターンは ./reference/ にまとめられています。ルールを適用または引用する前に、関連するファイルを読んでください。

基本方針

明確な目的がある場合に限ってアニメーションを使用し、すべてのアニメーションをアクセシブルにし、ランタイム依存関係を追加しないでください。モーションは変化を明確にするためのものであり、装飾ではありません。目的を果たす最も低コストな手法を選び、プロジェクト既存のモーショントークンを再利用し、アニメーションと同時に視覚効果を抑えた代替手段も提供してください。後回しにしてはいけません。

確認

レビューのみの場合は、作業を中断せずに指摘事項を報告してください。既存ファイルを編集する前に、まず変更内容を確認し、正しく判断するために必要な情報があれば、推測せずに尋ねてください。

判断の手順

すべてのアニメーションについて、以下の手順を順番に進め、いずれかの段階を通過できなければそこで中止してください。

  1. アニメーションを使用するか判断します。次のセクションにある頻度と目的の条件を適用し、アニメーションを使用しない選択肢も検討してください。reference/principles.md を参照してください。
  2. 何を動かすか選びます。transform と opacity のみをアニメーションさせ、レイアウトプロパティは避けてください。reference/performance.md を参照してください。
  3. 手法を選びます。状態の変化には CSS トランジション、ループには CSS アニメーション、スクリプト制御または中断可能なモーションには Web Animations API、フォールバックを用意した DOM の変更には View Transitions API を使用してください。reference/techniques.md を参照してください。
  4. 登場と退出の動きを設計します。登場時は減速させ、退出時はより速くし、ポップオーバーではトリガーの位置を transform-origin に設定し、短いリストには時間差をつけてください。reference/entrances-and-exits.md を参照してください。
  5. 視覚効果を抑えた代替手段を定義します。単にオフにするのではなく、クロスフェードのような実際の代替手段を用意してください。reference/accessibility.md を参照してください。
  6. 中断可能にします。ユーザーが動きの途中で逆方向にしたり、別の動きに切り替えたりできるようにしてください。それが期待される場面で適用します。reference/interactivity.md を参照してください。
  7. パフォーマンスと品質を確認します。ミドルレンジのデバイスで 60fps を維持してから、チェックリストを実行してください。コードの確認だけではフレームレートや滑らかさを確認できないため、実際にページを動かす必要がある項目は、合格ではなく検証待ちとして記録してください。reference/performance.md と reference/checklist.md を参照してください。

判断基準

すべてのアニメーションは、次の 2 つの問いを順番に通過する必要があります。いずれかに該当しなければ、アニメーションを使用しないでください。

  1. 頻度。この体験をユーザーがどのくらいの頻度で目にするかを考えます。1 日に何百回も目にするものは、アニメーションさせないでください。たまに目にする画面や初回に表示される画面には、アニメーションの予算を使えます。
  2. 目的。次のいずれかを 1 つ挙げます。フィードバック、空間的一貫性、状態の提示、唐突な変化の防止、または楽しさ。楽しさを目的にできるのは、まれに表示される画面や初回に表示される画面に限ります。
頻度判断
1 日に何百回も(キーボードショートカット、コマンドパレット)アニメーションなし
1 日に何十回も(ホバー、リスト内の移動)ごくわずかなアニメーションのみ、またはアニメーションなし
たまに(モーダル、ドロワー、トースト)標準的なアニメーション
まれ、または初回(オンボーディング、成功時)ここで楽しさのための予算を使います

ユーザーが読んでいる、または操作しているコンテンツを、スタイル目的で動かしてはいけません。詳細は reference/principles.md を参照してください。

モーショントークン

プロジェクトに既存のトークンがある場合は、それを再利用してください。ない場合は、この組み込みのスケールを使用してください。これだけで完結するため、ほかのスキルをインストールする必要はありません。スケール全体とコピー可能な _tokens.css は reference/motion-tokens.md にあります。

期間値用途
--motion-duration-1100msマイクロフィードバック、ホバー、アイコン
--motion-duration-2150ms終了、ツールチップの終了
--motion-duration-3200msドロップダウン、ポップオーバー、小さな要素の表示
--motion-duration-4300msモーダル、ドロワー、ページ遷移
--motion-duration-5500ms大きな強調、または初回の強調
イージング値用途
--motion-ease-outcubic-bezier(0.22, 1, 0.36, 1)表示時、デフォルト
--motion-ease-standardcubic-bezier(0.4, 0, 0.2, 1)画面内での移動
--motion-ease-incubic-bezier(0.4, 0, 1, 1)画面外へ移動する終了時

リファレンス一覧

ルールを適用または引用する前に、関連ファイルを読んでください。

アンチパターン

  • width、height、top、left などのレイアウトプロパティをアニメーションさせる。
  • 動きを減らす設定を、実用的な代替手段ではなく単なるオフスイッチとして扱う。
  • コマンドパレットなど、更新頻度の高い画面要素をアニメーションさせる。
  • ユーザーが現在読んでいる、または操作しているコンテンツを動かす。

@planetabhi による執筆

コメント