mcpField
M
mobile-design

mobile-design

github.com/pixel-process-ugデザイン・UI389 回インストール33 週間前に更新
リポジトリ

mobile-design について

React Native、Flutter、SwiftUI を使ったモバイルアプリの設計・構築を支援するスキルです。各プラットフォームの指針、レスポンシブレイアウト、オフライン対応、ストア申請を段階的な確認とともに扱います。

主な機能

  1. 01プラットフォームとフレームワークの選定
  2. 02Apple HIG と Material Design のパターン
  3. 03ナビゲーションとコンポーネントの計画
  4. 04レスポンシブレイアウトとセーフエリア対応
  5. 05オフラインファースト設計の指針
  6. 06アプリストア申請の準備

活用シーン

  1. 01iOS または Android アプリのフレームワーク選定
  2. 02ナビゲーションと再利用可能なモバイルコンポーネントの計画
  3. 03スマートフォンとタブレット向けレイアウトの調整
  4. 04ネットワークが不安定な環境向けアプリの設計

インストール

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

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill mobile-design

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

詳細

モバイルデザイン

概要

各プラットフォームでネイティブアプリのように感じられるモバイルアプリを設計、構築します。このスキルでは、React Native、Flutter、SwiftUI を対象に、プラットフォーム固有のヒューマンインターフェイスガイドライン(Apple HIG)と Material Design、ジェスチャー処理、レスポンシブレイアウト、オフラインファーストのパターン、アプリストアへの申請要件について詳しく扱います。

フェーズ 1:プラットフォーム分析

  1. 対象プラットフォームを特定します(iOS、Android、両方)
  2. フレームワークを選択します(React Native、Flutter、SwiftUI、またはクロスプラットフォーム)
  3. プラットフォーム固有のデザインガイドラインを確認します
  4. ナビゲーションアーキテクチャを定義します
  5. オフライン要件を整理します

停止 — デザインに着手する前に、根拠を添えてプラットフォームとフレームワークの推奨案を提示します。

フレームワーク選択の判断表
要件React NativeFlutterSwiftUIKotlin/Compose
iOS のみ可能可能最適不可
Android のみ可能可能不可最適
クロスプラットフォーム良好最適不可不可
ネイティブ性能が重要良好良好最適最適
既存の React ウェブチーム最適学習コストあり学習コストあり学習コストあり
複雑なアニメーション良好最適良好良好
迅速なプロトタイピング良好良好最適(iOS)良好
大規模な既存コードベース(JS)最適書き換え書き換え書き換え

フェーズ 2:デザインの実装

  1. プラットフォーム別のバリエーションを備えたコンポーネントライブラリを構築します
  2. ナビゲーションを実装します(タブバー、スタック、ドロワー)
  3. セーフエリアとノッチに対応します
  4. ジェスチャー認識機能を追加します
  5. スマートフォン/タブレット向けのレスポンシブレイアウトを実装します

停止 — レビュー用に、ナビゲーションアーキテクチャとコンポーネント一覧を提示します。

プラットフォーム固有の HIG への準拠
Apple Human Interface Guidelines
領域ガイドライン
ナビゲーションUINavigationController(push/pop)、画面下部のタブバー(最大 5 個)
タイポグラフィSF Pro / SF Pro Rounded、Dynamic Type(全 11 サイズ)に対応
セーフエリアsafeAreaInsets を尊重します — ノッチやホームインジケーターの下に入り込ませません
ジェスチャーナビゲーション用のスワイプバック、コンテキストメニュー用の長押し
触覚フィードバックUIFeedbackGenerator(衝撃、選択、通知)
色セマンティックなシステムカラー(label、secondaryLabel、systemBackground)
モーダルドラッグで閉じられるシート(.sheet、.fullScreenCover)
リスト設定にはグループ化されたインセット形式、コンテンツフィードには標準形式
アイコンSF Symbols ライブラリ(5000 以上のアイコン、可変の太さ/サイズ)
Material Design(Android)
領域ガイドライン
ナビゲーションボトムナビゲーションバー、ナビゲーションドロワー、トップアプリバー
タイポグラフィRoboto / 製品フォント、Material のタイプスケール
エッジツーエッジシステムバーの背後まで描画し、ウィンドウインセットに対応します
ジェスチャー予測型戻るジェスチャー(Android 14 以降)、スワイプで閉じる
触覚フィードバックHapticFeedbackConstants(クリック、長押し、キーボード)
色壁紙から生成される Material You の動的カラー、トーンパレット
コンポーネントFAB、スナックバー、ボトムシート、チップ
モーション共有要素トランジション、コンテナ変形
クロスプラットフォームパターンの判断表
機能iOS のパターンAndroid のパターン
戻るナビゲーション左端からスワイプシステムの戻るボタン
主なアクション右側のナビゲーションバーボタンFAB
アラートUIAlertControllerMaterialAlertDialog
読み込みUIActivityIndicatorCircularProgressIndicator
セグメント選択UISegmentedControlタブ/チップ
日付選択ホイールピッカーカレンダーピッカー
引っ張って更新ネイティブ対応SwipeRefreshLayout
コンテキストメニュー長押し+触覚フィードバック長押し+ポップアップ
セーフエリアの処理
React Native
import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';

function Screen() {
  const insets = useSafeAreaInsets();
  return (
    <View style={{ flex: 1, paddingTop: insets.top, paddingBottom: insets.bottom }}>
      {/* Content */}
    </View>
  );
}
Flutter
Widget build(BuildContext context) {
  return Scaffold(
    body: SafeArea(
      child: // Content
    ),
  );
}
SwiftUI
var body: some View {
  VStack {
    // Content automatically respects safe areas
  }
  .ignoresSafeArea(.keyboard) // Only ignore keyboard if needed
}
ジェスチャーナビゲーションのパターン
ジェスチャー用途最小ターゲットサイズ
タップ主なアクション44x44pt
長押しコンテキストメニュー/二次アクション44x44pt
横スワイプナビゲーション、閉じる、アクションの表示行全体
縦スワイプスクロール、引っ張って更新、シートを閉じる領域全体
ピンチ画像/マップのズームコンテンツ領域
パン/ドラッグ並べ替え、要素の移動ドラッグハンドル
タッチターゲットのルール
ルール値
最小サイズ(iOS)44x44pt
最小サイズ(Android)48x48dp
最小間隔ターゲット間に8pt
視覚サイズとタッチサイズ視覚サイズは小さくても構いません。タッチ領域にはパディングを使用します
主なアクション画面下部の1/3(親指が届く範囲)

フェーズ3:プラットフォームごとの仕上げ

  1. プラットフォーム固有のアニメーションとトランジション
  2. 触覚フィードバックの統合
  3. アプリアイコンと起動画面
  4. ダークモードとDynamic Typeのサポート
  5. アプリストアのメタデータとスクリーンショット

停止 — 完了と宣言する前に、実機でテストしてください。

レスポンシブレイアウトの判断表
フォームファクターレイアウトナビゲーション
スマートフォン(縦向き)1列下部タブ
スマートフォン(横向き)1列または分割サイドタブ
タブレット(縦向き)2列サイドバー
タブレット(横向き)3列常時表示のサイドバー
React Nativeのレスポンシブ対応
import { useWindowDimensions } from 'react-native';

function useResponsive() {
  const { width } = useWindowDimensions();
  return {
    isPhone: width < 768,
    isTablet: width >= 768 && width < 1024,
    isDesktop: width >= 1024,
    columns: width < 768 ? 1 : width < 1024 ? 2 : 3,
  };
}
Flutterのレスポンシブ対応
class ResponsiveLayout extends StatelessWidget {
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraints) {
        if (constraints.maxWidth < 600) return MobileLayout();
        if (constraints.maxWidth < 1200) return TabletLayout();
        return DesktopLayout();
      },
    );
  }
}
オフラインファーストアーキテクチャ
レイヤーパターン実装
データローカル優先SQLite/Realmをプライマリストアとして使用し、サーバーを同期先とします
更新楽観的ローカルに適用し、バックグラウンドで同期します
競合解決戦略最終書き込み優先、またはフィールド単位のマージ
キュー永続化された操作保留中の操作を保存し、接続時に再試行します
キャッシュstale-while-revalidateキャッシュを提供し、バックグラウンドで更新します
実装チェックリスト
  • ネットワーク状態の検出とUIインジケーター
  • 重要なデータすべてを保存するローカルデータベース
  • 保留中の書き込みを処理する操作キュー
  • 指数バックオフを使用した再試行ロジック
  • 競合の検出と解決戦略
  • キャッシュの無効化ポリシー
  • UI上の同期状態インジケーター
  • ネットワーク接続が必要な機能の適切な縮退動作
アプリストアガイドラインの概要
要件Apple App StoreGoogle Play Store
スクリーンショット6.7インチと5.5インチが必須、iPadは12.9インチデバイスごとに最小2枚、最大8枚
アプリアイコン1024x1024px、アルファなし、角丸なし512x512px、アダプティブ形式を推奨
プライバシープライバシーラベルが必須データセーフティセクションが必須
審査時間通常24~48時間数時間~数日
よくある却下理由クラッシュ、プレースホルダーコンテンツポリシー違反、クラッシュ
パフォーマンス目標
指標目標
コールドスタート< 2秒
画面遷移< 300ms
タッチ応答< 100ms
スクロールFPS60fps(フレーム落ちなし)
メモリ使用量< 200MB(ベースライン)
アプリサイズ< 50MB(ダウンロード)

アンチパターン/よくある間違い

アンチパターン問題点代わりに行うこと
モバイルでのWebパターン(ホバー状態)タッチデバイスにはホバーがありません押下/タップ状態を使用します
小さすぎるタッチターゲット(< 44pt)操作しにくく、アクセシビリティ上の問題になります最小44x44ptのタッチ領域を確保します
AndroidでiOS風のボタンを使用違和感があり、ユーザーを混乱させますプラットフォーム標準のコンポーネントを使用します
画面サイズを1種類に固定したレイアウトタブレットや折りたたみ端末で崩れますブレークポイントを設けたレスポンシブレイアウトを使用します
I/OでメインスレッドをブロックUIがフリーズし、ANRダイアログが表示されます非同期I/Oとバックグラウンドスレッドを使用します
キーボードの表示を考慮しないキーボードの背後にコンテンツが隠れますキーボード表示時にレイアウトを調整します
常時接続を前提とするオフライン時にアプリがクラッシュまたはハングしますオフラインファーストアーキテクチャを採用します
dp/ptではなくピクセル値を使用画面によってサイズが異なります密度非依存の単位を使用します
触覚フィードバックを省略アプリが安っぽく、反応が鈍く感じられます重要な操作に触覚フィードバックを追加します

ドキュメントの検索(Context7)

最新のドキュメントを取得するには、mcp__context7__resolve-library-id、続いてmcp__context7__query-docsを使用します。取得したドキュメントは、記憶している知識より優先されます。

  • react-native — コンポーネント API、ナビゲーション、またはプラットフォーム固有のモジュール向け
  • flutter — ウィジェットカタログ、状態管理、またはプラットフォームチャネル向け

統合ポイント

スキル統合
ui-ux-pro-maxカラーパレット、タイポグラフィ、UX ガイドライン
ui-design-systemモバイル向けに調整されたデザイントークン
canvas-designモバイルのデータ可視化とチャート
ux-researcher-designerモバイルのユーザビリティテスト
senior-frontendReact Native コンポーネントの実装
deploymentアプリストアへの提出パイプライン
performance-optimizationモバイルのパフォーマンスプロファイリング

スキルの種類

柔軟 — 選択したフレームワークと対象プラットフォームに合わせてパターンを調整します。単一のプラットフォームを対象とする場合はプラットフォーム固有のガイドラインに従い、クロスプラットフォームアプリでは各プラットフォームの慣習を適切に組み合わせます。

コメント