--- name: ios-ia-navigation description: | iOSアプリの情報設計(IA)と画面遷移(ナビゲーション)を設計するスキル。Apple HIGとWWDCセッションに基づき、 タブ/階層push/モーダルを情報階層とタスク構造から逆算して選定し、根拠と未確定事項を可視化しながら設計を完遂する。 使用タイミング: (1) 新規アプリの情報設計時、(2) 画面遷移設計時、(3) 「IAを設計したい」「ナビゲーション構造を決めたい」、 (4) iPad/iPhone両対応の構造設計時、(5) ディープリンク対応設計時、(6) 既存アプリのリファクタリング時 --- # iOS Information Architecture & Navigation Design iOSアプリの情報設計(IA)と画面遷移を、Apple HIGの原則に基づいて設計するスキル。 ## ミッション ユーザー提供のドキュメント(PRD、要件、ブランド、既存仕様)を根拠に: - **情報階層**(トップレベル〜詳細の粒度) - **画面構成**(スクリーン一覧と役割) - **画面遷移**(push/modal/tab/splitのルール) - **例外系**(ログイン、ディープリンク、復帰、空状態) をiOSのナビゲーション原則に一致する形で設計し、未確定情報は質問で埋めて設計を前進させる。 ## ワークフロー ### Phase 0: 事前確認(必須) 以下をユーザーに確認してから設計を開始: #### 1. 入力ドキュメントの確認 - [ ] 要件ドキュメント(PRD、ユーザーストーリー、機能一覧) - [ ] コンテンツ定義(扱う情報の種類、属性、関係) - [ ] 運用制約(権限、課金、規約、オフライン要否) - [ ] 既存資産(現行アプリ/サイト、分析データ) - [ ] プラットフォーム条件(iPhone/iPad、最小iOS) #### 2. 初期質問(Blocker解消) 最低限以下を確認: | # | 質問 | 影響範囲 | |---|------|---------| | 1 | 主要ユーザーは誰? | ペルソナ、タスク優先度 | | 2 | アプリを開いてやるTop3タスクは? | トップレベル構造 | | 3 | 扱う主役の情報(エンティティ)は? | コンテンツモデル | | 4 | 一覧→詳細で見る?作業(編集/作成)が主? | 遷移パターン | | 5 | トップレベルに分けるべき領域は? | タブ/サイドバー設計 | | 6 | ログイン必須?匿名でどこまで? | 認証フロー | | 7 | iPadを主要ターゲットにする? | Split View設計 | | 8 | 通知・外部リンクで特定画面に直接入る? | ディープリンク | ### Phase 1-7: 設計モジュール実行 各モジュールを順次実行し、成果物を生成: | Module | 目的 | 主要成果物 | |--------|------|-----------| | 0 | ドキュメント根拠化 | Evidence Map、用語集 | | 1 | タスクモデル化 | 主要タスクTop3-7、タスク分解 | | 2 | コンテンツモデル | エンティティ、関係、階層候補 | | 3 | トップレベル設計 | タブ/サイドバー構成、責務定義 | | 4 | 遷移設計 | 遷移種別ルール(push/modal) | | 5 | 状態保持設計 | タブごとの状態保持ポリシー | | 6 | iPad適応 | カラム割り当て、並列表示方針 | | 7 | ディープリンク | ルーティング表、状態復元規則 | 詳細は [references/modules-detail.md](references/modules-detail.md) を参照。 ### Phase 8: 成果物統合 すべてのモジュール成果物を統合し、最終ドキュメントを生成。 ## 最終成果物 ### A. IA成果物 - **A1. コンテンツモデル** - エンティティ、属性、関係(YAML形式) - **A2. 情報階層マップ** - サイトマップ(Mermaid図) - **A3. 命名規則** - タブ名・画面タイトルの語彙(表形式) ### B. 画面&遷移成果物 - **B1. 画面インベントリ** - 画面ID、目的、主要要素、入口/出口(表形式) - **B2. 遷移ルール表** - from→to、トリガ、遷移種別、戻り方(表形式) - **B3. ユーザーフロー** - 主要タスク別(Mermaid sequence図) - **B4. iPhone/iPad適応方針** - カラム構成、縮退時挙動(表形式) ### C. 不確定管理 - **Open Questions** - 優先度、仮定、影響範囲(表形式) テンプレート詳細は [references/output-templates.md](references/output-templates.md) を参照。 ## 規範資料(設計根拠) | 資料 | 用途 | |------|------| | [Apple HIG - Navigation](https://developer.apple.com/design/human-interface-guidelines/navigation) | 遷移原則 | | WWDC22「Explore navigation design for iOS」 | タブ設計、push/modal使い分け | | WWDC22「The SwiftUI cookbook for navigation」 | NavigationStack/SplitView実装 | 主要原則は [references/hig-navigation-principles.md](references/hig-navigation-principles.md) を参照。 ## 質問プロトコル ### 不足情報の分類 | 分類 | 定義 | 対応 | |------|------|------| | **Blocker** | 未回答だと構造が決まらない | 即時質問 | | **High-impact** | 後で直せるが手戻り大 | 早期質問 | | **Detail** | 後回し可能 | 暫定仮定で進行 | ### 質問形式 質問は「選択肢+影響」を添える: ``` Q: トップレベルはA/Bどちらが自然ですか? - A案: タブ3つ(Home/Search/Profile)→ シンプル、検索が独立 - B案: タブ5つ(上記+Notifications/Settings)→ 直接アクセス可、タブ多め 影響: 検索導線の置き場所、タブバーの密度 ``` ### 暫定仮定 返答がない場合は仮定で進め、ログに残す: ```yaml assumption: id: A001 content: "iPadはセカンダリターゲットとしてSplit View対応" impact: "変更時はModule 6再設計が必要" status: unconfirmed ``` ## 設計品質ゲート ### トップレベル設計チェック - [ ] タブが情報階層を反映している - [ ] 機能重複がない - [ ] タブ強制移動を前提にしていない - [ ] 各タブの責務が明確 ### 遷移設計チェック - [ ] push/modalの使い分けが一貫 - [ ] すべての画面に「出口」が定義 - [ ] 親状態の保持方法が明確 - [ ] modalの積み重ねを抑制 ### iPad適応チェック - [ ] Split View対応が構造として成立 - [ ] Compact時の縮退が自然 - [ ] カラム間の関係が明確 ### ディープリンクチェック - [ ] 全ルートが定義済み - [ ] 直リンクでも現在地が説明可能 - [ ] 戻り方が破綻しない