name: ios-ux-audit description: iPhoneユーザー向けのUX監査を実行し、問題点と改善案をレポートする。「UX監査して」「iOS UXチェック」「画面を監査」などのリクエストで使用する。 allowed-tools: Read, Glob, Grep argument-hint: [対象画面名 or 省略で全画面]
iOS UX 監査スキル
指定された画面(または全画面)を走査し、iPhoneユーザーのUX品質を監査する。
デザイン前提: Liquid Glass
本プロジェクトは Apple iOS 26 の Liquid Glass デザインを前提とする。
監査時は @callstack/liquid-glass (LiquidGlassView, LiquidGlassContainerView) の使用状況も確認する。
監査対象
対象ファイル:
src/screens/**/*.tsx— 画面コンポーネントsrc/components/**/*.tsx— UIコンポーネントsrc/App.tsx— ナビゲーション構造
引数が指定された場合はその画面のみ、省略時は全画面を対象とする。
監査チェックリスト
以下の7カテゴリを順にチェックし、問題があれば具体的なファイル名・行番号と改善案を報告する。
1. Safe Area & デバイス対応
-
SafeAreaViewがルートで使用されているか - ノッチ / Dynamic Island 領域に要素が被っていないか
- ホームインジケータ領域(画面下部)にボタン等が被っていないか
-
useSafeAreaInsets()で動的にパディングを取得しているか - ステータスバーのスタイル(
light/dark)が背景色と適切か
2. キーボード処理
-
TextInputを含む画面にKeyboardAvoidingViewがあるか(iOS:behavior="padding") -
ScrollViewにkeyboardShouldPersistTaps="handled"が設定されているか -
returnKeyTypeが適切に設定されているか(done,next,search等) - キーボードを閉じる手段があるか(
Keyboard.dismiss()等)
3. ハプティクス
- ボタンのプレスに触覚フィードバックがあるか
- 破壊的アクション(削除等)に
notificationAsync(Warning)があるか - タブ切り替え・トグルに
selectionAsync()があるか - 成功・完了時に
notificationAsync(Success)があるか
4. アクセシビリティ
- すべての
Pressable/TouchableOpacityにaccessibilityLabelがあるか - アイコンのみのボタンに
accessibilityLabelがあるか - 画像に
accessibilityLabelまたはaccessible={false}(装飾的)があるか -
accessibilityRoleが適切に設定されているか(button,link,header等) - 絵文字アイコンがアクセシビリティラベルで補完されているか
5. パフォーマンス
- リスト表示に
FlatList/SectionListを使っているか(.map()ではなく) - 画像に適切な
resizeModeと遅延読み込みがあるか - 不要な再レンダリングを防ぐ
React.memo/useMemo/useCallbackがあるか -
keyprop に配列のインデックスではなく一意のIDを使っているか
6. iOS HIG 準拠
- 絵文字ではなくアイコンライブラリ(
@expo/vector-icons等)を使っているか - 戻るボタンがiOS標準のシェブロン(
<)スタイルか - モーダル/シート表示が適切か(設定画面等)
- タッチターゲットが最低44x44ptあるか
- フォントサイズがiOSの推奨範囲内か(本文: 17pt, キャプション: 12pt以上)
7. Liquid Glass デザイン準拠
- カード・ツールバー・モーダルに
LiquidGlassViewが適用されているか - 近接するガラス要素が
LiquidGlassContainerViewでグループ化されているか -
effectプロパティが適切か(カード:regular, オーバーレイ:clear) - ガラス背景上のテキストが十分なコントラストを持つか(WCAG AA以上)
-
isLiquidGlassSupportedで非対応デバイスにフォールバックがあるか - フォールバック時に半透明背景色(例:
rgba(255,255,255,0.8))が設定されているか - 全画面ガラス背景を避け、アクセント的に使用しているか
- ガラス要素に
borderRadiusが設定されているか - 「透明度を下げる」設定 (
AccessibilityInfo) を尊重しているか - ガラス要素の高さが65px超の場合、テキストに
PlatformColor('labelColor')を使用しているか
8. ジェスチャー & インタラクション
- スワイプバック(←方向)でナビゲーション戻りができるか
- リストにプルトゥリフレッシュ (
RefreshControl) があるか - ロングプレスでコンテキストメニューが出るか(必要な箇所)
- ボタンにプレス状態のフィードバック(opacity/scale)があるか
出力フォーマット
## iOS UX 監査レポート
### 対象: [画面名 or 全画面]
#### 🔴 Critical(即座に修正すべき)
- **[カテゴリ]** `ファイル名:行番号` — 問題の説明
→ 改善案: ...
#### 🟡 Warning(改善推奨)
- **[カテゴリ]** `ファイル名:行番号` — 問題の説明
→ 改善案: ...
#### 🟢 Good(問題なし)
- [カテゴリ]: ✓ 適切に実装済み
#### 📊 スコア: X / 8 カテゴリ合格
ルール
- コードの変更は行わない。監査とレポートのみ
- 問題箇所は必ずファイルパスと行番号を含める
- 改善案は具体的なコード例を含める
- プロジェクトの
src/theme/tokens.tsのデザイントークンを考慮する - 既存の依存パッケージで対応可能な改善を優先する