npx claudepluginhub caphtech/claude-marketplace --plugin design-pluginWant just this skill?
Then install: npx claudepluginhub u/[userId]/[slug]
iOS/Androidモバイルアプリのデザインを体系的に行うスキル。Apple HIG・Material Design 3などプラットフォームガイドラインに準拠し、ナビゲーション・レイアウト・コンポーネント・モーション・アクセシビリティを適切に設計する。Use when: 「モバイルアプリをデザインして」「iOSアプリのUIを設計して」「Androidアプリの画面を作って」「モバイルのナビゲーションを設計して」「タッチUIを改善して」「アプリのアクセシビリティを対応して」と言われた時。
This skill uses the workspace's default tool permissions.
references/mobile-components.mdreferences/platform-guidelines.mdMobile App Designer(モバイルアプリデザイナー)
iOS/Androidモバイルアプリのデザインを、プラットフォームガイドラインに準拠して体系的に行う。
ワークフロー概要
Phase 1: 要件・プラットフォーム確認
↓
Phase 2: デザイン手法・ガイドラインの選択
↓
Phase 3: デザイン実行
↓
Phase 4: アウトプット生成
Phase 1: 要件・プラットフォーム確認
ユーザーに以下を確認し、デザインの前提条件を明確化する。
Step 1.1: プラットフォーム特定
| 確認項目 | 選択肢 | デザインへの影響 |
|---|---|---|
| ターゲットOS | iOS / Android / 両方 / クロスプラットフォーム(Flutter/RN) | 適用ガイドライン決定 |
| デバイス種別 | Phone / Tablet / Foldable / 全対応 | レイアウト戦略決定 |
| 最小OSバージョン | iOS 15+ / iOS 16+ / iOS 26+ / Android 12+ / Android 13+ 等 | 利用可能APIと機能範囲 |
Step 1.2: アプリカテゴリ・目的
- アプリカテゴリ(SNS / EC / ツール / ゲーム / ビジネス / ヘルスケア / 教育 等)
- 主要ユーザーアクション(閲覧中心 / 入力中心 / コミュニケーション中心)
- オフライン利用の必要性
Step 1.3: 既存デザイン資産の確認
- 既存デザインシステム・ブランドガイドラインの有無
- カラーパレット・タイポグラフィの指定
- 既存アプリからのリデザインか新規か
Phase 2: デザイン手法・ガイドラインの選択
Phase 1の回答に基づき、以下のマトリクスから適用するガイドライン・手法を選定する。
ガイドライン選定マトリクス
| ユーザーの要求 | 適用ガイドライン | 主要ツール・トークン | 参照 |
|---|---|---|---|
| iOSアプリ | Apple HIG | SF Symbols / Dynamic Type / Safe Area | platform-guidelines.md |
| Androidアプリ | Material Design 3 | Dynamic Color / Material Icons / WindowInsets | platform-guidelines.md |
| iOS 26以降 | Apple HIG + Liquid Glass | 半透明ガラス素材 / 光反射・屈折UI | platform-guidelines.md |
| Android(M3 Expressive) | M3 Expressive | Variable fonts / Spring animation / Shape morphing | platform-guidelines.md |
| 両OS対応 | 共通UI + OS別UI分離 | 下記の分離判断基準を適用 | mobile-components.md |
| ナビゲーション設計 | iOS: Tab Bar / Android: Bottom Navigation | プラットフォーム別パターン | mobile-components.md |
| モーション設計 | iOS: Spring / Android: Material Motion | プラットフォーム別モーション仕様 | mobile-components.md |
| アクセシビリティ | iOS: VoiceOver+Dynamic Type / Android: TalkBack+Font Scale | WCAG AA基準 | platform-guidelines.md |
| タブレット・大画面 | iOS: Sidebar+Split View / Android: Navigation Rail+Canonical Layouts | レスポンシブレイアウト | platform-guidelines.md |
| クロスプラットフォーム(Flutter) | 独自レンダリング(Skia) | ピクセルパーフェクトUI / OS慣習との乖離に注意 | - |
| クロスプラットフォーム(React Native) | ネイティブコンポーネント使用 | .ios.js/.android.jsで分岐 | - |
両OS対応時の分離判断基準
| UI要素 | 共通化可能 | OS別にすべき |
|---|---|---|
| カラーパレット基本定義 | ○ | - |
| タイポグラフィ | - | ○(San Francisco vs Roboto) |
| アイコン | 汎用アイコンのみ | ○(SF Symbols vs Material Icons) |
| ナビゲーション構造 | - | ○(Tab Bar vs Bottom Navigation の挙動差) |
| アニメーション | - | ○(Spring vs Material Motion) |
| レイアウト基本構造 | ○ | - |
| システムUI統合 | - | ○(通知・ウィジェット・共有シート) |
| ジェスチャー | - | ○(スワイプバック等の挙動差) |
Phase 3: デザイン実行
Phase 2で選定した手法に基づき、以下の各領域を設計する。
Step 3.1: 画面レイアウト設計
Safe Area / WindowInsets対応:
- iOS: Safe Area内にコンテンツを配置(Top 44-47pt / Bottom 34pt目安)
- Android:
WindowInsets.safeDrawingで描画領域を確保、Edge-to-Edge対応 - Display Cutout / Dynamic Island領域にインタラクティブ要素を配置しない
タッチターゲット:
- iOS: 最小44×44pt
- Android: 最小48×48dp、要素間スペース最低8dp
単位系:
- iOS: pt(@1x/@2x/@3x)でアセット書き出し
- Android: dp(レイアウト)/ sp(テキスト)で指定
レスポンシブ対応:
- Phone: シングルカラム、ボトムナビゲーション
- Tablet(iOS): Sidebar + Split View
- Tablet(Android): Navigation Rail + Canonical Layouts(list-detail等)
- Foldable: 展開時/折りたたみ時の2レイアウト
Step 3.2: ナビゲーション設計
プラットフォーム別にナビゲーション構造を設計する。
iOS:
- Tab Bar(3-5項目、画面下部49pt、SF Symbols使用)
- Navigation Stack(階層遷移、スワイプバック対応)
- Modal Sheet(Detent: medium/large/custom)
- Sidebar(iPad向けSplit View)
Android:
- Bottom Navigation(3-5項目、コンテナ高さ56dp、Material Icons使用)
- Navigation Drawer(多数のデスティネーション対応)
- Top App Bar(タイトル・ナビ・アクション配置)
- Navigation Rail(タブレット・大画面用、画面左端)
挙動の違いに注意:
- iOS Tab Bar: タブ切替時に前回位置を保持
- Android Bottom Navigation: タブ切替時にスクリーン状態をリセット
Step 3.3: コンポーネント設計
references/mobile-components.md のコンポーネント比較表を参照し、プラットフォームに適したコンポーネントを選択する。
ボタン階層の設計:
- Primary(Filled): 画面の最重要アクション。1画面に1つ推奨
- Secondary(Outlined): 代替アクション
- Tertiary(Text): 低優先度アクション
- FAB(Android固有): 画面上の最重要アクション(56dp / 40dp / 96dp / Extended)
フォーム・入力フィールド:
- 適切なキーボードタイプを指定(email / phone / number 等)
- ラベルは常時表示
- エラーメッセージは即時表示
- iOS: TextField / SecureField / Picker / Toggle
- Android: OutlinedTextField / FilledTextField / Checkbox / Switch
Step 3.4: モーション設計
iOS:
- Spring Animation(SwiftUIデフォルト):
response/dampingFractionで制御 - iOS 26 Liquid Glass: 光の反射・屈折に基づく動的アニメーション
Android Material Motion 4パターン:
- Container Transform: 2要素間の視覚的接続(シームレス変形)
- Shared Axis: 空間的関係を持つ要素間の遷移(X/Y/Z軸共有、30dp/300ms)
- Fade Through: 関係性の弱い要素間(フェードアウト→フェードイン+スケール)
- Fade: シンプルなフェード
Reduce Motion対応:
- iOS:
@Environment(\.accessibilityReduceMotion)で検出、Spring→easeInOutに置換 - Android:
Settings.Global.ANIMATOR_DURATION_SCALEで検出 - 意味を持つモーションはdissolve/fade/色変化で代替(完全除去しない)
Step 3.5: オフライン・エラー・Empty State設計
3状態すべてを設計すること:
| 状態 | 設計方針 | パターン |
|---|---|---|
| ローディング | スケルトンスクリーン(スピナーより体感待ち時間が改善) | コンテナ→テキスト→画像の順で表示 |
| Empty State | 次のアクションを明確に提示 | イラスト + 説明テキスト + CTAボタン |
| エラー | 原因と対処法を分かりやすく提示 | エラーメッセージ + リトライボタン |
オプティミスティックUI: 操作が成功すると仮定し期待結果を即座に表示。失敗時はエレガントにロールバック。
プログレッシブローディング: ページ基本構造→テキスト→画像→インタラクティブ要素の順。
Step 3.6: アクセシビリティ対応
iOS:
- VoiceOver: 全UI要素にアクセシビリティラベル・ヒント・トレイトを設定
- Dynamic Type: コンテンツ欠損なくスケーリング(SF Symbolsも連動)
- Bold Text対応
- ライト/ダークモード両対応
Android:
- TalkBack:
contentDescriptionの設定必須 - Font Scale: sp単位使用で自動対応
- 高コントラストモード対応
- Switch Access対応
共通基準(WCAG):
- カラーコントラスト: AA基準(通常テキスト4.5:1以上、大テキスト3:1以上)
- 色のみに依存しない情報伝達
- POUR原則: Perceivable / Operable / Understandable / Robust
Phase 4: アウトプット形式
デザイン結果を以下の形式で出力する。
4.1 画面レイアウト仕様
## 画面名: [画面名]
- プラットフォーム: iOS / Android
- 画面サイズ: [幅]×[高]pt(dp)
- Safe Area: Top [値] / Bottom [値] / Left [値] / Right [値]
- レイアウトタイプ: シングルカラム / Split View / list-detail
### レイアウト構造
[ASCII図またはセクション説明]
### コンテンツ領域
- ヘッダー: [高さ]pt(dp)
- コンテンツ: スクロール可能 / 固定
- フッター: [高さ]pt(dp) / なし
4.2 コンポーネント仕様
## コンポーネント: [名前]
| 属性 | iOS | Android |
|------|-----|---------|
| SwiftUI/Compose名 | [名前] | [名前] |
| サイズ | [幅]×[高]pt | [幅]×[高]dp |
| タッチターゲット | 44×44pt以上 | 48×48dp以上 |
| 角丸 | [値]pt | [値]dp |
| 状態 | default / pressed / disabled / focused |
### 状態別仕様
- Default: [色・スタイル]
- Pressed: [色・スタイル]
- Disabled: [色・スタイル・opacity]
- Focused: [色・スタイル・ボーダー]
4.3 ナビゲーション構造図
## ナビゲーション構造
### メインナビゲーション
- Tab 1: [名前] → [画面一覧]
- Tab 2: [名前] → [画面一覧]
- Tab 3: [名前] → [画面一覧]
### 画面遷移
[画面A] → push → [画面B] → push → [画面C]
[画面A] → modal → [画面D](Detent: medium)
### ジェスチャー
- スワイプバック: [画面B] → [画面A]
- スワイプダウン: [画面D] dismiss
4.4 モーション仕様
## モーション: [名前]
| 属性 | iOS | Android |
|------|-----|---------|
| タイプ | Spring / easeInOut | Container Transform / Shared Axis / Fade Through / Fade |
| Duration | [値]s | [値]ms |
| Easing | spring(response:0.5, dampingFraction:0.8) | emphasizedDecelerate |
| Reduce Motion代替 | easeInOut / dissolve | fade / 即時切替 |
4.5 アクセシビリティチェックリスト
| カテゴリ | チェック項目 | iOS | Android | 状態 |
|---|---|---|---|---|
| スクリーンリーダー | 全要素にラベル設定 | VoiceOver | TalkBack | ☐ |
| スクリーンリーダー | 操作ヒント設定 | accessibilityHint | contentDescription | ☐ |
| テキストスケーリング | Dynamic Type対応 | Dynamic Type | Font Scale (sp) | ☐ |
| テキストスケーリング | レイアウト崩れなし | 最大カテゴリで確認 | 最大スケールで確認 | ☐ |
| コントラスト | WCAG AA準拠(4.5:1) | 全テキスト | 全テキスト | ☐ |
| タッチターゲット | 最小サイズ準拠 | 44×44pt | 48×48dp | ☐ |
| モーション | Reduce Motion対応 | 視差効果を減らす | アニメーション無効 | ☐ |
| カラー | 色以外でも情報伝達 | - | - | ☐ |
| ダークモード | 両モードで正常表示 | - | - | ☐ |
注意事項
- プラットフォームガイドラインの最新版を常に参照する。特にiOS 26(Liquid Glass)とM3 Expressive は仕様が進化中のため、公式ドキュメントで確認すること
- 両OS対応時は共通化できる部分とOS別にすべき部分を明確に分離する(Phase 2の分離判断基準参照)
- アクセシビリティは後付けではなく設計初期から組み込む
- タッチターゲットサイズは最低基準であり、重要なアクションにはより大きなサイズを使用する
- オフライン状態・Empty State・エラー状態の3状態は必ず設計する
連携スキル
| スキル | 連携タイミング |
|---|---|
/app-idea-workshop | アプリアイデアの具体化・機能定義 |
/spec-gen | デザイン仕様からコード仕様への変換 |
/ai-readability-analysis | 生成コードの可読性検証 |
/systematic-test-design | UIテスト設計 |
Similar Skills
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.