mcpField
M
mobile-design

mobile-design

github.com/liuchiaweiデザイン・UI237 回インストール36 週間前に更新
リポジトリ

mobile-design について

モバイルアプリの設計と開発を支援するスキルです。実装前にプラットフォーム、操作性、性能、オフライン対応、アクセシビリティの制約を確認し、要件の明確化やプラットフォーム別の指針、リリース確認を促します。

主な機能

  1. 01モバイル実現性とリスクの評価
  2. 02作業前の要件確認
  3. 03プラットフォーム別の設計資料
  4. 04性能とタッチ操作の指針
  5. 05セキュリティとリリースのチェック

活用シーン

  1. 01モバイル機能の実装リスク評価
  2. 02iOS と Android の違いの計画
  3. 03操作性、性能、オフライン設計の確認
  4. 04リリース前の安全性とアクセシビリティ確認

インストール

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

$npx skills add https://github.com/liuchiawei/agent-skills --skill mobile-design

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

同梱ファイル

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

decision-trees.md
mobile-backend.md
mobile-color-system.md
mobile-debugging.md
mobile-design-thinking.md
mobile-navigation.md
mobile-performance.md
mobile-testing.md
mobile-typography.md
platform-android.md
platform-ios.md
touch-psychology.md
scripts/
mobile_audit.py

詳細

モバイルデザインシステム

(モバイルファースト · タッチファースト · プラットフォーム尊重)

哲学: タッチファースト。バッテリーに配慮。プラットフォームを尊重。オフライン対応。 核心原則: モバイルは小さなデスクトップではない。 運用ルール: まず制約を考え、美しさは二の次に。

このスキルは、モバイルアプリケーションを設計・構築する際にデスクトップ的な思考、AI のデフォルト、安全でない前提を防ぐために存在します。


1. モバイル実現可能性・リスク指数 (MFRI)

あらゆるモバイル機能や画面を設計または実装する前に、実現可能性を評価してください。

MFRI の評価軸 (1〜5)
評価軸問い
プラットフォームの明確さ対象プラットフォーム (iOS / Android / 両方) は明示的に定義されていますか?
インタラクションの複雑さジェスチャー、フロー、ナビゲーションはどれほど複雑ですか?
パフォーマンスリスクリスト、アニメーション、重い状態、メディアを含みますか?
オフライン依存ネットワークがないとこの機能は壊れたり劣化したりしますか?
アクセシビリティリスク運動、視覚、認知のアクセシビリティに影響しますか?
スコア計算式
MFRI = (Platform Clarity + Accessibility Readiness)
       − (Interaction Complexity + Performance Risk + Offline Dependence)

範囲: -10 → +10

解釈
MFRI意味必要な対応
6〜10安全通常どおり進める
3〜5中程度パフォーマンス + UX の検証を追加する
0〜2リスクありインタラクションまたはアーキテクチャを簡素化する
< 0危険実装前に再設計する

2. 作業前に必須の思考

⛔ STOP: 前提を置く前に質問する (必須)

以下のいずれかが明示されていない場合、進める前に必ず質問しなければなりません:

項目問い理由
プラットフォームiOS、Android、それとも両方?ナビゲーション、ジェスチャー、タイポグラフィに影響
フレームワークReact Native、Flutter、それともネイティブ?パフォーマンスとパターンを決定する
ナビゲーションタブ、スタック、ドロワー?中核となる UX アーキテクチャ
オフラインオフラインで動作する必要がありますか?データと同期の戦略
デバイススマートフォンのみ、タブレットも?レイアウトと密度のルール
対象ユーザーコンシューマー、エンタープライズ、アクセシビリティ要件?タッチと可読性

🚫 好みのスタックやパターンをデフォルトにしないでください。


3. 必須の参照文献 (強制)

共通 (常に最初に読む)
ファイル目的ステータス
mobile-design-thinking.md丸暗記の防止、コンテキストの強制🔴 最初に必須
touch-psychology.mdフィッツの法則、親指ゾーン、ジェスチャー🔴 必須
mobile-performance.md60fps、メモリ、バッテリー🔴 必須
mobile-backend.mdオフライン同期、プッシュ、API🔴 必須
mobile-testing.mdデバイス & E2E テスト🔴 必須
mobile-debugging.mdネイティブ vs JS のデバッグ🔴 必須
プラットフォーム固有 (条件付き)
プラットフォームファイル
iOSplatform-ios.md
Androidplatform-android.md
クロスプラットフォーム上記の両方

❌ プラットフォームのファイルを読んでいない場合、UI を設計する資格はありません。


4. AI モバイルアンチパターン (厳格な禁止事項)

🚫 パフォーマンス上の禁忌(妥協不可)
❌ 禁止事項理由✅ 必ず実施すること
長いリストにScrollViewを使うメモリの異常な増加FlatList / FlashList / ListView.builder
renderItemをインラインで定義するすべての行が再レンダリングされるuseCallback + memo
キーにインデックスを使う並べ替え時に不具合が起きる安定したID
JSスレッドでアニメーションを実行するカクつきネイティブドライバー / GPU
本番環境でconsole.logを使うJSスレッドをブロックするログを削除する
メモ化しないバッテリー消費とパフォーマンス低下React.memo / const widgets

🚫 タッチ操作とUX上の禁忌
❌ 禁止事項理由✅ 必ず実施すること
タッチ領域が44~48px未満タップを逃す最小タッチ領域を確保
ジェスチャーのみの操作ユーザーを排除するボタンによる代替操作
読み込み状態がない壊れているように感じる明確なフィードバック
エラーからの復旧手段がない行き止まりになる再試行 + メッセージ
プラットフォームの慣習を無視する操作の慣れが損なわれるiOS ≠ Android

🚫 セキュリティ上の禁忌
❌ 禁止事項理由✅ 必ず実施すること
AsyncStorageにトークンを保存する簡単に盗まれるSecureStore / Keychain
シークレットをハードコードするリバースエンジニアリングされるEnv + セキュアストレージ
SSLピンニングを行わないMITMのリスク証明書ピンニング
機密データをログに記録する個人情報の漏えいシークレットは絶対にログに記録しない

5. プラットフォームの統一と差異のマトリックス

UNIFY                          DIVERGE
──────────────────────────     ─────────────────────────
Business logic                Navigation behavior
Data models                    Gestures
API contracts                  Icons
Validation                     Typography
Error semantics                Pickers / dialogs
プラットフォームのデフォルト設定
要素iOSAndroid
フォントSF ProRoboto
最小タッチ領域44pt48dp
戻る操作端からのスワイプシステムの戻る操作
シートボトムシートダイアログ / シート
アイコンSF SymbolsMaterial Icons

6. モバイルUXの心理学(必須)

フィッツの法則(タッチ操作の現実)
  • 指 ≠ カーソル
  • 正確性は低い
  • 精密さよりも届きやすさが重要

ルール:

  • 主要なCTAは親指の届く範囲に配置する
  • 破壊的な操作は手の届きにくい位置に置く
  • ホバーを前提にしない

7. パフォーマンスの原則

React Native(必須パターン)
const Row = React.memo(({ item }) => (
  <View><Text>{item.title}</Text></View>
));

const renderItem = useCallback(
  ({ item }) => <Row item={item} />,
  []
);

<FlatList
  data={items}
  renderItem={renderItem}
  keyExtractor={(i) => i.id}
  getItemLayout={(_, i) => ({
    length: ITEM_HEIGHT,
    offset: ITEM_HEIGHT * i,
    index: i,
  })}
/>
Flutter(必須パターン)
class Item extends StatelessWidget {
  const Item({super.key});

  @override
  Widget build(BuildContext context) {
    return const Text('Static');
  }
}
  • 可能な限りすべてにconstを使う
  • 対象を絞って再ビルドする

8. 必須のモバイルチェックポイント

**コードを書く前に、**次の項目を完了してください。

🧠 MOBILE CHECKPOINT

Platform:     ___________
Framework:    ___________
Files Read:   ___________

3 Principles I Will Apply:
1.
2.
3.

Anti-Patterns I Will Avoid:
1.
2.

❌ 完了できない場合 → 戻って読み直してください。


9. フレームワークの決定ツリー(標準)

Need OTA + web team → React Native + Expo
High-perf UI → Flutter
iOS only → SwiftUI
Android only → Compose

正当な理由なしに議論してはいけません。


10. リリース準備チェックリスト

リリース前
  • タッチ領域 ≥ 44~48px
  • オフライン時の処理がある
  • セキュアストレージを使用している
  • リストが最適化されている
  • ログが削除されている
  • 低価格帯のデバイスでテストしている
  • アクセシビリティラベルが設定されている
  • MFRI ≥ 3

11. 関連スキル

  • frontend-design – ビジュアルシステムとコンポーネント
  • frontend-dev-guidelines – RN/TSアーキテクチャ
  • backend-dev-guidelines – モバイル対応API
  • error-tracking – クラッシュとパフォーマンスのテレメトリー

最終原則: モバイルユーザーは気が散りやすく、中断されやすく、せっかちです。通信環境が悪く、バッテリー残量が少ない状態で、片手だけで使うこともよくあります。 その現実に合わせて設計しなければ、アプリはひっそりと失敗します。


コメント