UX/UI設計には決まった思考順序がある。この順番を守ることで手戻りを防げる。
ユーザー理解 → UX設計 → UI設計 → 実装
↑ ↑ ↑ ↑
"誰が" "どう動く" "どう見せる" "どう作る"
"何に困ってる" (体験) (画面) (コード)
| ステップ | 問い | アウトプット |
|---|---|---|
| ユーザー理解 | 誰が・何に困っているか | ペルソナ・課題定義 |
| UX設計 | どう解決するか(体験の流れ) | ユーザーフロー・IA |
| UI設計 | どう見せるか(画面) | ワイヤーフレーム・モックアップ |
| 実装 | どう作るか | コード・コンポーネント |
実装 → UI設計 → (ユーザー理解は後回し)
→ 誰に向けて作ったかわからないものができる
→ リリース後に「使われない機能」が生まれる
💡 ポイント: UXとUIは別物。UXは「体験の流れ」、UIは「その画面表現」。UXなきUIはただの絵。4工程に分けている理由は「スキップしやすい工程を意識させるため」。
ユーザー理解とは「思い込みをデータに置き換える工程」。
【定量ツール】何が起きているかを数値で把握
Google Analytics / Pendo / Mixpanel など
【定性ツール】なぜ起きているかを言葉で把握
ユーザーインタビュー / アンケート / セッション録画(FullStory等)
| ツール | 役割 | 用途例 |
|---|---|---|
| GA4 | 入口〜到達の分析 | 機能Aのページへ到達しているか |
| Pendo | 機能内の行動分析 | 到達した人が実際に使っているか・どこで止まっているか |
Step1: GA4 → 「機能Aに辿り着いているか」を確認
Step2: Pendo → 「辿り着いた人が使っているか」を確認
Step3: 定性 → 「なぜ使わないか」をインタビューで確認
ログイン頻度 → 月1回以下 = ライトユーザーの目安
機能利用数 → 全機能中2〜3つしか使っていない
セッション時間 → 短い・目的達成後すぐ離脱
💡 ポイント: GA4は「入口〜到達」、Pendoは「機能内の行動」と役割分担する。全員にアンケートするのではなく、セグメント分析で「どの層がしないか」を絞ってから定性調査に入る。
ライトユーザー = 「目的を達成したらすぐ離脱するユーザー」
ヘビーユーザー向け設計 ライトユーザー向け設計
─────────────────────────────────────────────
機能の豊富さ → 機能の少なさ・シンプルさ
カスタマイズ性 → デフォルトの完成度
学習コストOK → ゼロ学習で使える
滞在時間を伸ばす → 素早くゴール達成させる
原則1|ゴールまでのステップを最小化
❌ 悪い例: トップ → メニュー開く → 投稿ボタン探す → カテゴリ選択 → 本文 → 投稿(6ステップ)
✅ 良い例: トップに投稿欄が最初から表示 → 本文入力 → 投稿(2ステップ)
原則2|迷わせない(ヒックの法則)
選択肢が増えるほど意思決定に時間がかかる
→ ライトユーザーは迷った瞬間に離脱する
→ ナビゲーション項目は5つ以内・初期表示は1〜2アクションに絞る
原則3|再訪問を設計する
過剰な通知 = ストレス = 離脱
→ 週1サマリーメール等、低頻度・高価値な通知が有効
投稿する人(少数・ヘビー寄り)< 閲覧する人(大多数・ライト)
→ 閲覧UXへの投資対効果が圧倒的に高い
💡 ポイント: 「作る人」より「読む人」の方が多い。優先順位は「使用頻度 × ユーザー数」で決める。エンジニアは実装しやすい機能から作りがちなので注意。
UX設計 = 「ユーザーがゴールに辿り着くまでの道筋を設計すること」
UX設計のアウトプット:
├ ユーザーフロー(画面遷移の流れ)
├ 情報アーキテクチャ/IA(情報の構造)
└ ワイヤーフレーム(画面の骨格)
① ゴールを決める(例: 投稿を読んでいいねする)
② スタート地点を決める(例: トップページ)
③ 最短経路を描く
④ 分岐・エラーを追加する
[トップ]
└─ 投稿一覧を見る
└─ [投稿詳細]
├─ いいねする → [完了]
└─ コメントする → [入力画面] → [完了]
ユーザーフローを見てAPIの設計が変わる
IAを見てルーティング設計が変わる
→ UXフローを読めると「この画面遷移、API1本じゃ足りない」と
実装前に気づける = 手戻りゼロ
💡 ポイント: エンジニアがUXフローを読めると、スプリント計画時に早期に問題を発見できる。設計段階のレビューに積極的に入ることが重要。
UX設計で決めたこと UI設計で決めること
─────────────────────────────────────────
ユーザーフロー → 画面遷移図
情報の優先順位 → レイアウト・配置
ゴールまでのステップ → ボタン・インタラクション
| 種類 | 内容 | ツール例 |
|---|---|---|
| ワイヤーフレーム | 色なし・構造のみ | Figma・手書き |
| モックアップ | 色・フォント・アイコンあり | Figma |
| プロトタイプ | クリック/タップできる状態 | Figma・Framer |
// ① コンポーネントの粒度 → Reactのコンポーネント設計に直結
// ② Stateの数 → 実装コストに直結
const [isLiked, setIsLiked] = useState(false) // いいね済みか
const [likeCount, setLikeCount] = useState(0) // いいね数
const [commentCount, setCommentCount] = useState(0) // コメント数
const [isPending, setIsPending] = useState(false) // API待ち
const [error, setError] = useState<string | null>(null) // エラー
// ③ APIの呼び出しタイミング → 無限スクロール or ページネーション
💡 ポイント: UIを「見た目」として受け取るのではなく、「Stateの数」と「APIの呼び出し構造」として読む。Stateが多い = 複雑な実装 = 工数大、と判断できる。
設計情報をタスクに変換する。
設計フロー スプリントへの変換
─────────────────────────────────────────
ユーザーフロー → エピック(大きな機能単位)
画面単位のUI → ストーリー(ユーザー視点のタスク)
Stateの数 → タスク(実装単位)
APIの呼び出し → タスク(バックエンド)
【エピック】投稿へのリアクション機能
【ストーリー】"ユーザーとして、投稿にいいねして気持ちを伝えたい"
【タスク】
フロントエンド:
├ いいねボタンコンポーネントの実装
├ いいね済み/未いいねのState管理
├ いいね数のリアルタイム表示
├ オプティミスティックUI実装
└ エラー時のロールバック処理
バックエンド:
├ POST /likes APIの実装
├ DELETE /likes APIの実装
└ いいね数取得エンドポイントの実装
その他:
├ Pendoのイベントトラッキング設置
└ エラーハンドリングのテスト
判断軸:ユーザー数 × 使用頻度 × 実装コスト
Sprint 1(基盤): タイムライン表示・閲覧UX
Sprint 2(反応): いいね機能(ワンタップ・低コスト)
Sprint 3(対話): コメント機能(実装コスト高め)
Sprint 4(計測): Pendo/GA4トラッキング設置
→ データを見て次のスプリントを決める
💡 ポイント: Sprint 4でデータを取り始めて初めて「次に何を作るか」をデータドリブンで決められる。設計→実装→計測→改善のループがUI/UXの本質。
| ミス | 改善策 |
|---|---|
| UIから先に作り始める | ユーザーフロー・IA確定後にUI設計に入る |
| 大手SNSのUX思想をそのまま流用する | UIパターンは借りてOK。UX思想(滞在時間を伸ばす等)は目的に合わせて取捨選択 |
| 全ユーザーにアンケートを送る | セグメント分析で対象を絞ってから定性調査に入る |
| 機能数で価値を出そうとする | ライトユーザーには機能の少なさ・シンプルさが価値になる |
| UXレビューをエンジニアがスキップする | 設計段階でAPIとState構造を読み取り、手戻りを防ぐ |
| 計測なしで次の機能を作り始める | Sprint後にPendo/GA4でデータを取り、改善の根拠を作る |
- UXとUIは連続しているが、あえて分けて語るのは「スキップを防ぐため」という理由が腑に落ちた
- 社内SNSはエンタメSNSと目的が真逆。滞在時間を伸ばす設計ではなく「素早くゴール達成させる」設計が正解
- Stateの数をUIから読み取れると工数見積もりの精度が上がる。これはNext.js開発に即使える
- 大手サービスはUIパターンの参考にはなるが、UX思想はプロダクトの目的に合わせて取捨選択する
- 計測ツール(Pendo/GA4)の設置をSprintに組み込んでおくことで、次のSprintの判断をデータで行える