# Material 3 Expressive M3 Expressiveは、Googleが2024-2025年に導入したMaterial 3の進化版で、より魅力的で感情的に共鳴するインターフェースを実現します。 ## Table of Contents 1. [Overview](#overview) 2. [Usability Principles](#usability-principles) 3. [Design Tactics](#design-tactics) 4. [Expressive Motion](#expressive-motion) 5. [Shape and Form](#shape-and-form) 6. [Implementation Guidelines](#implementation-guidelines) --- ## Overview ### What is M3 Expressive? M3 Expressiveは、標準のMaterial 3を拡張し、以下を実現します: - **Engaging**: ユーザーの注意を引き、関心を維持 - **Emotionally resonant**: 感情的なつながりを生む - **User-friendly**: 使いやすさを犠牲にしない - **Brand expression**: ブランドの個性を表現 ### Key Differences from Standard M3 | Aspect | Standard M3 | M3 Expressive | |--------|-------------|---------------| | Motion | 控えめ、機能的 | 大胆、表現豊か | | Shapes | 一貫した角丸 | 動的な形状変形 | | Emphasis | 明確、シンプル | ドラマチック、インパクト | | Timing | 速い(200-300ms) | やや長め(400-700ms) | URL: https://m3.material.io/blog/building-with-m3-expressive --- ## Usability Principles ### Creating Engaging Products M3 Expressiveは、以下のusability原則に基づきます: #### 1. Guide Users ユーザーを適切に誘導する: - **Motion paths**: アニメーションでフローを示す - **Visual hierarchy**: 動きで注意を引く - **Staged reveal**: 段階的に情報を開示 #### 2. Emphasize Actions 重要なアクションを強調: - **Scale changes**: サイズ変化で重要性を示す - **Color dynamics**: 色の変化で状態を表現 - **Focused attention**: 1つの要素に注意を集中 #### 3. Provide Feedback ユーザーのアクションに対する明確なフィードバック: - **Immediate response**: 即座の視覚的反応 - **State transitions**: 状態変化を明確に表現 - **Completion signals**: アクション完了を示す URL: https://m3.material.io/foundations/usability/overview --- ## Design Tactics M3 Expressiveを実装するための具体的なデザイン戦術。 URL: https://m3.material.io/foundations/usability/applying-m-3-expressive ### 1. Emphasized Easing **Standard easing**よりも劇的な**Emphasized easing**を使用: ``` Emphasized Decelerate: cubic-bezier(0.05, 0.7, 0.1, 1.0) Emphasized Accelerate: cubic-bezier(0.3, 0.0, 0.8, 0.15) ``` **When to use:** - 重要なトランジション - ユーザーの注意を引く必要がある場合 - ブランド表現を強化したい場合 **Example:** ```css .expressive-enter { animation: enter 500ms cubic-bezier(0.05, 0.7, 0.1, 1.0); } ``` ### 2. Extended Duration 標準より長いアニメーション時間: | Element | Standard | Expressive | |---------|----------|------------| | Small changes | 100ms | 150-200ms | | Medium changes | 250ms | 400-500ms | | Large transitions | 300ms | 500-700ms | **Caution:** 1000msを超えないこと ### 3. Exaggerated Scale スケール変化を誇張: **Standard:** - Scale: 1.0 → 1.05(+5%) **Expressive:** - Scale: 1.0 → 1.15(+15%) - Scale: 1.0 → 0.9 → 1.1(bounce effect) **Example use case:** - FABのタップアニメーション - カードの選択状態 - アイコンのアクティブ状態 ### 4. Dynamic Color Transitions 色の動的な変化: **Techniques:** - Gradient animations: グラデーションの動的変化 - Color pulse: 色のパルス効果 - Hue rotation: 色相の変化 **Example:** ```css .expressive-button:active { background: linear-gradient(45deg, primary, tertiary); transition: background 400ms cubic-bezier(0.05, 0.7, 0.1, 1.0); } ``` ### 5. Layered Motion 複数の要素が異なるタイミングで動く: **Stagger animations:** - 遅延: 50-100ms per item - リストアイテムの順次表示 - カードグリッドの表示 **Example timing:** ``` Item 1: 0ms Item 2: 80ms Item 3: 160ms Item 4: 240ms ``` ### 6. Shape Morphing 形状の動的な変形(後述) --- ## Expressive Motion M3 Expressiveの中核となるモーションシステム。 URL: https://m3.material.io/blog/m3-expressive-motion-theming ### Motion Theming System カスタマイズ可能な新しいモーションテーマシステム: #### Motion Tokens **Duration tokens:** ``` motion.duration.short: 150ms motion.duration.medium: 400ms motion.duration.long: 600ms motion.duration.extra-long: 1000ms ``` **Easing tokens:** ``` motion.easing.emphasized: cubic-bezier(0.05, 0.7, 0.1, 1.0) motion.easing.emphasizedDecelerate: cubic-bezier(0.05, 0.7, 0.1, 1.0) motion.easing.emphasizedAccelerate: cubic-bezier(0.3, 0.0, 0.8, 0.15) motion.easing.standard: cubic-bezier(0.2, 0.0, 0, 1.0) ``` ### Expressive Transition Patterns #### 1. Container Transform (Enhanced) **Standard container transform:** - Duration: 300ms - Easing: standard **Expressive container transform:** - Duration: 500ms - Easing: emphasized - 追加効果: 軽いスケール変化、色の変化 #### 2. Shared Axis (Enhanced) **Expressive enhancements:** - より大きいスライド距離(+20%) - フェード+スケール効果の組み合わせ - ステージングされた要素の動き #### 3. Morph Transition 新しいトランジションタイプ: - 形状の滑らかな変形 - 複数プロパティの同時変化(サイズ、色、形状) - 有機的な動き **Example:** ``` Circle → Rounded Rectangle → Full Screen (300ms) → (200ms) ``` ### Micro-interactions 小さいが印象的なインタラクション: #### Button Press ``` 1. Scale down: 0.95 (50ms) 2. Scale up: 1.0 (150ms, emphasized easing) 3. Ripple effect: expanded, slower ``` #### Icon State Change ``` 1. Scale out: 0.8 + rotate 15deg (100ms) 2. Icon swap 3. Scale in: 1.0 + rotate 0deg (200ms, emphasized) ``` #### Loading States ``` - Pulse animation: 1.0 → 1.1 → 1.0 (800ms, loop) - Color shift: primary → tertiary → primary ``` --- ## Shape and Form ### Shape Morph 動的な形状変形でブランド表現を強化。 URL: https://m3.material.io/styles/shape/shape-morph #### Basic Shape Morph 形状の滑らかな変化: **Example scenarios:** 1. **FAB → Dialog** - Circle (56dp) → Rounded rectangle (280×400dp) - Duration: 500ms - Easing: emphasized decelerate 2. **Chip → Card** - Small rounded (32dp) → Medium rounded (card size) - Duration: 400ms 3. **Button → Full Width** - Fixed width → Full screen width - Corner radius維持 #### Advanced Techniques **Path morphing:** - SVGパスの変形 - ベジェ曲線の補間 - 複雑な形状間の遷移 **Example SVG morph:** ```svg ``` ### Organic Shapes より自然で有機的な形状: **Characteristics:** - 非対称な角丸 - 流動的なライン - 自然界からのインスピレーション **Use cases:** - ブランド要素 - ヒーローセクション - イラストレーション --- ## Implementation Guidelines ### When to Use M3 Expressive #### Good Use Cases ✓ - **Consumer apps**: エンターテイメント、ソーシャル、ゲーム - **Brand-forward products**: ブランド表現が重要 - **Engagement-critical flows**: オンボーディング、チュートリアル - **Hero moments**: 重要なマイルストーン、達成 #### Use with Caution ⚠ - **Productivity apps**: 過度なアニメーションは避ける - **Frequent actions**: 繰り返し使用される操作 - **Data-heavy interfaces**: 情報が優先される場合 #### Avoid ✗ - **Accessibility concerns**: 動きに敏感なユーザー - **Performance-constrained**: 低スペックデバイス - **Critical tasks**: エラーや警告の表示 ### Balancing Expressiveness and Usability #### The 80/20 Rule - **80%**: 標準のM3(速く、機能的) - **20%**: M3 Expressive(印象的、ブランド表現) **Example distribution:** - Standard M3: リスト項目タップ、フォーム入力、設定変更 - M3 Expressive: 画面遷移、主要アクション(FAB)、初回体験 ### Respect User Preferences #### Reduced Motion `prefers-reduced-motion`メディアクエリを尊重: ```css @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } } ``` #### Accessibility - **Vestibular disorders**: 大きい動きを避ける - **Cognitive load**: 同時に動く要素を制限 - **Focus management**: アニメーション中もフォーカス可能 --- ## Practical Examples ### Example 1: Expressive FAB Tap ```css .fab { transition: transform 150ms cubic-bezier(0.05, 0.7, 0.1, 1.0), box-shadow 150ms cubic-bezier(0.05, 0.7, 0.1, 1.0); } .fab:active { transform: scale(0.92); } .fab:not(:active) { transform: scale(1.0); } /* Ripple with longer duration */ .fab::after { animation: ripple 600ms cubic-bezier(0.05, 0.7, 0.1, 1.0); } ``` ### Example 2: Card to Detail Transition ```javascript // Container transform with expressive timing const expandCard = (card) => { card.animate([ { transform: 'scale(1)', borderRadius: '12px' }, { transform: 'scale(1.02)', borderRadius: '28px', offset: 0.3 }, { transform: 'scale(1)', borderRadius: '0px' } ], { duration: 500, easing: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)', fill: 'forwards' }); }; ``` ### Example 3: Staggered List Animation ```css .list-item { opacity: 0; transform: translateY(20px); animation: fadeInUp 400ms cubic-bezier(0.05, 0.7, 0.1, 1.0) forwards; } .list-item:nth-child(1) { animation-delay: 0ms; } .list-item:nth-child(2) { animation-delay: 80ms; } .list-item:nth-child(3) { animation-delay: 160ms; } .list-item:nth-child(4) { animation-delay: 240ms; } @keyframes fadeInUp { to { opacity: 1; transform: translateY(0); } } ``` --- ## Resources and Tools ### Design Tools - **Material Theme Builder**: M3 Expressiveモーションプリセット - **Figma Plugins**: Motion timing visualization - **After Effects**: プロトタイプアニメーション ### Code Libraries - **Web**: Material Web Components (M3 support) - **Flutter**: Material 3 with custom motion - **Android**: Jetpack Compose Material3 ### References - M3 Expressive announcement: https://m3.material.io/blog/building-with-m3-expressive - Motion theming: https://m3.material.io/blog/m3-expressive-motion-theming - Usability tactics: https://m3.material.io/foundations/usability/applying-m-3-expressive --- ## Summary Checklist When implementing M3 Expressive, ensure: - [ ] Emphasized easing for key transitions - [ ] Extended durations (but <1000ms) - [ ] Exaggerated scale changes where appropriate - [ ] Layered/staggered animations for lists - [ ] Shape morphing for container transforms - [ ] Color dynamics for feedback - [ ] Respect `prefers-reduced-motion` - [ ] 80/20 balance (Standard M3 vs Expressive) - [ ] Test on lower-end devices - [ ] Validate accessibility