コンテンツにスキップ

検索条件と結果を別画面にする

典型の画面遷移

GET /projects 案件一覧
GET /projects/search 検索画面
POST /projects/search 検索実行 → 検索結果画面へ
GET /projects/search/results 検索結果一覧
  • 毎回条件を入力し直す - よく使う検索条件があるのに、毎回15項目の画面を見て入力する
  • 結果を見るまでに時間がかかる - 検索画面→検索実行→結果画面と3ステップ必要
  • 条件の微調整がしにくい - 検索結果を見て条件を変えたい場合、検索画面に戻ってやり直し
  • URLが共有できない - 検索結果を同僚に見せたいが、セッションに依存していてURLを送れない
  • 検索条件のセッション管理が複雑 - 条件を保持するためにセッションを使うと、タイムアウトや複数タブ問題が発生
  • ルートが多い - 検索条件画面、検索実行、検索結果と3つのルートが必要
  • テストが多くなる - 検索条件の組み合わせ × 画面遷移のパターンをすべてテストする必要がある
  • 「戻る」ボタンの挙動が複雑 - POSTで遷移しているため、ブラウザバックで警告が出る

適用する原則: モードレスを優先する画面名は「何を見ているか」で名付ける

再設計の画面遷移

GET /projects 案件一覧(フィルタ内蔵)
GET /projects?q=...&status=... フィルタ適用(URL直接)
  • インクリメンタル検索: 入力と同時に絞り込み
  • スマートフィルタ: よく使う3条件だけ表示、詳細は展開
  • 保存済み検索: よく使う条件をワンクリックで適用
  • URLで状態保持: 検索条件がURLに反映、共有可能

画面遷移の比較

観点典型再設計
画面数3画面1画面
検索条件15項目表示3項目 + 展開
結果表示画面遷移後リアルタイム
条件変更検索画面に戻るその場で変更
条件保存なし保存済み検索
テストケース多い(3ルート × 状態 × 遷移)少ない(1ルート × 状態)
起きやすい不具合セッション切れ、戻るボタン警告構造的に発生しない

再設計には2つの変更がある。一度にやる必要はない。

変更内容効果
1検索条件と結果を同一画面に統合画面遷移が減る、URLで共有可能
2保存済み検索を追加繰り返し入力が不要になる

変更1だけでも大きな効果がある。変更2はユーザーの利用状況を見てから追加してもよい。

変更1: 検索条件と結果を統合する

Section titled “変更1: 検索条件と結果を統合する”
  • /search/search/results ルートを削除する
  • 一覧画面にフィルタUIを追加する
  • 検索条件をクエリパラメータで管理する(?status=active&q=...
  • 画面遷移がなくなり、操作が軽快になる
  • URLに条件が含まれるため共有できる
  • セッション管理が不要になる
パターン説明
上部フィルタ一覧の上部によく使う条件を配置
サイドバー条件が多い場合はサイドに配置
モーダル詳細条件のみモーダルで入力

変更2: 保存済み検索を追加する

Section titled “変更2: 保存済み検索を追加する”
  • ユーザーが検索条件に名前を付けて保存できるようにする
  • 保存した条件をワンクリックで適用できるUIを追加する
  • 毎回の条件入力が不要になる
  • 同じ条件を使う他のユーザーと共有できる
  1. 利用ログを分析する: よく使う検索条件を把握する
  2. 小さく試す: 一部の一覧画面でフィルタUIを試す
  3. フィードバックを得る: 使いやすいか、何が足りないかを聞く

表示する条件を減らしても、実際に困る人がほとんどいないケースが多い。

  1. 現行の使い方を確認する: 顧客がどんな条件で検索しているか
  2. よく使う条件を提案する: 「これだけ表示しませんか」と具体案を出す
  3. 保存済み検索は後回し: 最初は統合だけ、必要なら追加

顧客が「全条件を見たい」と言う場合でも、「展開式」で対応できることが多い。


すべての条件を表示する必要はない。利用ログを見て、実際に使われている条件を把握する。

よく使う条件(常に表示):
- キーワード
- ステータス
- 担当者
たまに使う条件(展開時に表示):
- 期間
- 金額範囲
- カテゴリ
ほぼ使わない条件(廃止を検討):
- 作成者
- 更新日
[自分の案件] → status=active & assignee=me
[今月受注] → status=won & date=this_month
[要対応] → status=pending & priority=high
[フォロー中] → tag=follow_up

ユーザーが自分でよく使う条件を保存できるようにすると、検索画面自体が不要になることが多い。