mcpField
M
motion

motion

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

motion について

Motionは、インタラクティブな画面を開発する人向けのReactアニメーションライブラリです。ジェスチャー、スクロール効果、レイアウト遷移、SVG描画、スプリングアニメーションに対応し、バンドルサイズの最適化手段も備えています。

主な機能

  1. 01宣言的なReactアニメーション
  2. 02ジェスチャーとドラッグ操作
  3. 03スクロール連動・トリガー効果
  4. 04レイアウトと共有要素の遷移
  5. 05SVGパスアニメーション
  6. 06バンドルサイズの最適化機能

活用シーン

  1. 01ページやレイアウトの遷移アニメーション
  2. 02スクロール連動効果やパララックスの追加
  3. 03ドラッグ、ホバー、タップ操作の実装

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill motion

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

同梱ファイル

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

references/
accessibility-css.md
core-patterns.md
library-selection.md
nextjs-integration.md
performance.md
scroll-animations.md
troubleshooting.md

詳細

Motion

概要

Motion(パッケージ:motion、旧称:framer-motion)は、標準的な React アニメーションライブラリです。motion/react からインポートします。ジェスチャー、スクロール連動アニメーション、レイアウト遷移、SVG パスの描画、スプリング物理演算のための宣言的なプロパティを提供します。ハイブリッドアニメーションエンジンを使用しています(変形/不透明度には WAAPI、スクロール連動効果には ScrollTimeline を使用)。バンドルサイズは 2.3 KB(useAnimate mini)から 34 KB(フル版)までで、LazyMotion を使うと 4.6 KB まで最適化できます。React 18.2 以降、React 19、Next.js App Router、Vite に対応しています。

単純なリスト項目の追加/削除アニメーションには Motion を使用しないでください(代わりに 3.28 KB の AutoAnimate を使用してください)。3D には使用しないでください(代わりに Three.js / React Three Fiber を使用してください)。

クイックリファレンス

パターンAPI /プロパティ
マウント時にフェードインinitial、animate、transition
終了アニメーションAnimatePresence + exit プロパティ(固有の key が必要)
リストのスタッガー表示staggerChildren を指定した variants
ホバー/タップ/フォーカスwhileHover、whileTap、whileFocus
ドラッグdrag、dragConstraints、dragElastic
スクロールをトリガーにするwhileInView、viewport={{ once: true }}
スクロール連動/視差効果useScroll + useTransform
進捗インジケーターscrollYProgress + scaleX
レイアウトアニメーションlayout プロパティ(FLIP 技法)
共有要素layoutId(ビュー間で同じ ID を使用)
レイアウトグループ同階層のリストを囲む LayoutGroup
ページ遷移AnimatePresence + key={pathname}
SVG パスの描画motion.path の pathLength
カウンターアニメーションuseSpring + useTransform
命令型の制御useAnimate フックが [scope, animate] を返す
カスタムコンポーネントmotion.create(Component) で任意のコンポーネントをラップ
バンドルの最適化LazyMotion + domAnimation + m コンポーネント(4.6 KB)
モーションの低減MotionConfig reducedMotion="user"

よくある間違い

間違い正しいパターン
条件分岐の内側に AnimatePresence を置くAnimatePresence をマウントしたままにし、条件付きコンテンツをその内側に置く
AnimatePresence の子に固有の key がない終了アニメーションのため、各直接の子に固有の key を追加する
Motion の animate プロパティと Tailwind の transition-* クラスを併用するカクつきを防ぐため、Tailwind の transition クラスを削除する
framer-motion からインポートするimport { motion } from "motion/react" を使用する(2024 年後半に名称変更)
仮想化せずに 50 個以上の項目をアニメーションさせる大きなリストには react-window または @tanstack/react-virtual を使用する
単純なアニメーションにフル版の 34 KB バンドルを使うLazyMotion + domAnimation(4.6 KB)または useAnimate(2.3 KB)を使用する
Next.js App Router で "use client" を指定していないディレクティブを追加するか、motion/react-client からインポートする
width/height を直接アニメーションさせるGPU アクセラレーションのために layout プロパティまたは transform: scale を使用する
prefers-reduced-motion に対応していないアプリを MotionConfig reducedMotion="user" でラップする

委任

  • アニメーションのパフォーマンスとバンドルサイズを監査する:Explore エージェントを使用して、サイズの大きいインポート、LazyMotion の不足、リフローを引き起こすプロパティを見つけます
  • 複雑な複数ステップのアニメーションを構築する:Task エージェントを使用して、スクロール連動の視差効果、共有レイアウトのトランジション、段階的なシーケンスを構築します
  • 新しいプロジェクトのアニメーションアーキテクチャを計画する:Plan エージェントを使用して、要件に基づいて Motion、AutoAnimate、CSS のみの方式を評価します

design-system スキルが利用可能な場合は、アニメーションのトークン定義とモーションデザインのガイドラインを委任します。

参考資料

  • コアパターン -- アニメーションパターン:フェード、終了、段階表示、ジェスチャー、モーダル、アコーディオン、タブ、スクロール、レイアウト、ドラッグ、SVG、読み込み
  • スクロールアニメーション -- useScroll、useTransform、スクロールトリガー、視差効果、進行状況インジケーター、オフセット設定
  • パフォーマンス -- LazyMotion、useAnimate、ハードウェアアクセラレーション、仮想化、本番環境向けチェックリスト
  • Next.js との統合 -- App Router のパターン、motion/react-client、Pages Router、既知の問題
  • アクセシビリティと CSS -- prefers-reduced-motion、MotionConfig、useReducedMotion、CSS キーフレーム、Tailwind アニメーション
  • ライブラリ選定ガイド -- Motion と AutoAnimate の選定ガイド。機能比較とユースケースの推奨事項を掲載
  • トラブルシューティング -- AnimatePresence の不具合、Tailwind との競合、レイアウトの問題、React 19 の問題、命名の移行

コメント